Files
railwaysystem/RuoYi-Vue/ruoyi-ui/node_modules1/@antv/x6-plugin-keyboard/lib/keyboard.js
T
2026-09-10 15:40:10 +08:00

160 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.KeyboardImpl = void 0;
const mousetrap_1 = __importDefault(require("mousetrap"));
const x6_1 = require("@antv/x6");
class KeyboardImpl extends x6_1.Disposable {
get graph() {
return this.options.graph;
}
constructor(options) {
super();
this.options = options;
const scroller = this.graph.getPlugin('scroller');
this.container = scroller ? scroller.container : this.graph.container;
if (options.global) {
this.target = document;
}
else {
this.target = this.container;
if (!this.disabled) {
// ensure the container focusable
this.target.setAttribute('tabindex', '-1');
}
// change to mouseup event,prevent page stalling caused by focus
this.graph.on('cell:mouseup', this.focus, this);
this.graph.on('blank:mouseup', this.focus, this);
}
this.mousetrap = KeyboardImpl.createMousetrap(this);
}
get disabled() {
return this.options.enabled !== true;
}
enable() {
if (this.disabled) {
this.options.enabled = true;
if (this.target instanceof HTMLElement) {
this.target.setAttribute('tabindex', '-1');
}
}
}
disable() {
if (!this.disabled) {
this.options.enabled = false;
if (this.target instanceof HTMLElement) {
this.target.removeAttribute('tabindex');
}
}
}
on(keys, callback, action) {
this.mousetrap.bind(this.getKeys(keys), callback, action);
}
off(keys, action) {
this.mousetrap.unbind(this.getKeys(keys), action);
}
clear() {
this.mousetrap.reset();
}
trigger(key, action) {
this.mousetrap.trigger(key, action);
}
focus(e) {
const isInputEvent = this.isInputEvent(e.e);
if (isInputEvent) {
return;
}
const target = this.target;
target.focus({
preventScroll: true,
});
}
getKeys(keys) {
return (Array.isArray(keys) ? keys : [keys]).map((key) => this.formatkey(key));
}
formatkey(key) {
const formated = key
.toLocaleLowerCase()
.replace(/\s/g, '')
.replace('delete', 'del')
.replace('cmd', 'command')
.replace('arrowup', 'up')
.replace('arrowright', 'right')
.replace('arrowdown', 'down')
.replace('arrowleft', 'left');
const formatFn = this.options.format;
if (formatFn) {
return x6_1.FunctionExt.call(formatFn, this.graph, formated);
}
return formated;
}
isGraphEvent(e) {
const target = e.target;
const currentTarget = e.currentTarget;
if (target) {
if (target === this.target ||
currentTarget === this.target ||
target === document.body) {
return true;
}
return x6_1.Dom.contains(this.container, target);
}
return false;
}
isInputEvent(e) {
var _a;
const target = e.target;
const tagName = (_a = target === null || target === void 0 ? void 0 : target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
let isInput = ['input', 'textarea'].includes(tagName);
if (x6_1.Dom.attr(target, 'contenteditable') === 'true') {
isInput = true;
}
return isInput;
}
isEnabledForEvent(e) {
const allowed = !this.disabled && this.isGraphEvent(e);
const isInputEvent = this.isInputEvent(e);
if (allowed) {
if (isInputEvent && (e.key === 'Backspace' || e.key === 'Delete')) {
return false;
}
if (this.options.guard) {
return x6_1.FunctionExt.call(this.options.guard, this.graph, e);
}
}
return allowed;
}
dispose() {
this.mousetrap.reset();
}
}
__decorate([
x6_1.Disposable.dispose()
], KeyboardImpl.prototype, "dispose", null);
exports.KeyboardImpl = KeyboardImpl;
(function (KeyboardImpl) {
function createMousetrap(keyboard) {
const mousetrap = new mousetrap_1.default(keyboard.target);
const stopCallback = mousetrap.stopCallback;
mousetrap.stopCallback = (e, elem, combo) => {
if (keyboard.isEnabledForEvent(e)) {
if (stopCallback) {
return stopCallback.call(mousetrap, e, elem, combo);
}
return false;
}
return true;
};
return mousetrap;
}
KeyboardImpl.createMousetrap = createMousetrap;
})(KeyboardImpl = exports.KeyboardImpl || (exports.KeyboardImpl = {}));
//# sourceMappingURL=keyboard.js.map