UNPKG

ming-demo1

Version:
155 lines (120 loc) 4.67 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _pick2 = _interopRequireDefault(require("lodash/pick")); var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty")); var _forEach2 = _interopRequireDefault(require("lodash/forEach")); var _isArray2 = _interopRequireDefault(require("lodash/isArray")); var _isFunction2 = _interopRequireDefault(require("lodash/isFunction")); var _indexOf2 = _interopRequireDefault(require("lodash/indexOf")); var _assign2 = _interopRequireDefault(require("lodash/assign")); var _isElement2 = _interopRequireDefault(require("lodash/isElement")); var _addDomEventListener = _interopRequireDefault(require("add-dom-event-listener")); var _Util = require("./Util"); var TEXT_NODE = 3; function getEventTarget(nativeEvent) { var target = nativeEvent.target || nativeEvent.srcElement || window; if (target.correspondingUseElement) { target = target.correspondingUseElement; } return target.nodeType === TEXT_NODE ? target.parentNode : target; } var Shortcut = function () { function Shortcut(options) { (0, _classCallCheck2["default"])(this, Shortcut); (0, _defineProperty2["default"])(this, "_options", { type: 'keydown', container: document }); (0, _defineProperty2["default"])(this, "shortcutCollection", {}); var container = options && options.container; if ((0, _isElement2["default"])(container)) { container.tabIndex < 0 && (container.tabIndex = 0); } else { container = document; } this._init(container, (0, _assign2["default"])({}, this._options, options)); } (0, _createClass2["default"])(Shortcut, [{ key: "_init", value: function _init(container, options) { var that = this; var func = function func(nativeEvent) { var target = getEventTarget(nativeEvent); var activeKeys = (0, _Util.getEventModifiers)(nativeEvent); var key = (0, _Util.getEventKey)(nativeEvent); if (key !== '' && (0, _indexOf2["default"])(['Ctrl', 'Shift', 'Alt', 'Meta'], key) < 0) { activeKeys.push(key); } var activeCombination = that._convertKey(activeKeys.join('+')); var item = that.shortcutCollection[activeCombination]; if (item && item.getEnableState(nativeEvent) && (0, _isFunction2["default"])(item['callback'])) { (0, _Util.preventDefault)(nativeEvent); (0, _Util.stopPropagation)(nativeEvent); item['callback'](nativeEvent); } }; that.handler = (0, _addDomEventListener["default"])(container, options.type, func); } }, { key: "_convertKey", value: function _convertKey(shortCut) { return shortCut.toLowerCase().split('+').sort().join('+'); } }, { key: "_toArray", value: function _toArray(obj) { return (0, _isArray2["default"])(obj) ? obj : [obj]; } }, { key: "add", value: function add(obj) { var that = this; var combinations = that._toArray(obj); (0, _forEach2["default"])(combinations, function (item) { if ((0, _isEmpty2["default"])(item.shortCut)) return; that.shortcutCollection[that._convertKey(item.shortCut)] = (0, _assign2["default"])({ getEnableState: function getEnableState(nativeEvent) { var tagName = getEventTarget(nativeEvent).tagName; return !(tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT'); }, callback: function callback() {} }, (0, _pick2["default"])(item, ['getEnableState', 'callback'])); }); } }, { key: "clear", value: function clear() { this.shortcutCollection = {}; } }, { key: "remove", value: function remove(obj) { var that = this; var result = that._toArray(obj); (0, _forEach2["default"])(result, function (item) { var k = that._convertKey(item); delete that.shortcutCollection[k]; }); } }, { key: "unbind", value: function unbind() { this.handler.remove(); } }, { key: "destroy", value: function destroy() { this.unbind(); } }]); return Shortcut; }(); exports["default"] = Shortcut; //# sourceMappingURL=Shortcut.js.map