event.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.hasEventKey = exports.GlobalEvent = exports.EVENT_KEYS = void 0;
  6. var _xeUtils = _interopRequireDefault(require("xe-utils"));
  7. var _dom = require("./dom");
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. var EVENT_KEYS = {
  10. F2: 'F2',
  11. ESCAPE: 'Escape',
  12. ENTER: 'Enter',
  13. TAB: 'Tab',
  14. DELETE: 'Delete',
  15. BACKSPACE: 'Backspace',
  16. SPACEBAR: ' ',
  17. CONTEXT_MENU: 'ContextMenu',
  18. ARROW_UP: 'ArrowUp',
  19. ARROW_DOWN: 'ArrowDown',
  20. ARROW_LEFT: 'ArrowLeft',
  21. ARROW_RIGHT: 'ArrowRight',
  22. PAGE_UP: 'PageUp',
  23. PAGE_DOWN: 'PageDown'
  24. };
  25. exports.EVENT_KEYS = EVENT_KEYS;
  26. var convertEventKeys = {
  27. ' ': 'Spacebar',
  28. Apps: EVENT_KEYS.CONTEXT_MENU,
  29. Del: EVENT_KEYS.DELETE,
  30. Up: EVENT_KEYS.ARROW_UP,
  31. Down: EVENT_KEYS.ARROW_DOWN,
  32. Left: EVENT_KEYS.ARROW_LEFT,
  33. Right: EVENT_KEYS.ARROW_RIGHT
  34. }; // 监听全局事件
  35. var wheelName = _dom.browse.firefox ? 'DOMMouseScroll' : 'mousewheel';
  36. var eventStore = [];
  37. var hasEventKey = function hasEventKey(evnt, targetKey) {
  38. var key = evnt.key;
  39. targetKey = targetKey.toLowerCase();
  40. return key ? targetKey === key.toLowerCase() || !!(convertEventKeys[key] && convertEventKeys[key].toLowerCase() === targetKey) : false;
  41. };
  42. exports.hasEventKey = hasEventKey;
  43. var GlobalEvent = {
  44. on: function on(comp, type, cb) {
  45. if (cb) {
  46. eventStore.push({
  47. comp: comp,
  48. type: type,
  49. cb: cb
  50. });
  51. }
  52. },
  53. off: function off(comp, type) {
  54. _xeUtils.default.remove(eventStore, function (item) {
  55. return item.comp === comp && item.type === type;
  56. });
  57. },
  58. trigger: function trigger(evnt) {
  59. var isWheel = evnt.type === wheelName;
  60. eventStore.forEach(function (_ref) {
  61. var comp = _ref.comp,
  62. type = _ref.type,
  63. cb = _ref.cb;
  64. // 如果被取消冒泡,不再执行
  65. if (!evnt.cancelBubble) {
  66. if (type === evnt.type || isWheel && type === 'mousewheel') {
  67. cb.call(comp, evnt);
  68. }
  69. }
  70. });
  71. },
  72. eqKeypad: function eqKeypad(evnt, keyVal) {
  73. var key = evnt.key;
  74. if (keyVal.toLowerCase() === key.toLowerCase()) {
  75. return true;
  76. }
  77. return false;
  78. }
  79. };
  80. exports.GlobalEvent = GlobalEvent;
  81. if (_dom.browse.isDoc) {
  82. if (!_dom.browse.msie) {
  83. document.addEventListener('copy', GlobalEvent.trigger, false);
  84. document.addEventListener('cut', GlobalEvent.trigger, false);
  85. document.addEventListener('paste', GlobalEvent.trigger, false);
  86. }
  87. document.addEventListener('keydown', GlobalEvent.trigger, false);
  88. document.addEventListener('contextmenu', GlobalEvent.trigger, false);
  89. window.addEventListener('mousedown', GlobalEvent.trigger, false);
  90. window.addEventListener('blur', GlobalEvent.trigger, false);
  91. window.addEventListener('resize', GlobalEvent.trigger, false);
  92. window.addEventListener(wheelName, _xeUtils.default.throttle(GlobalEvent.trigger, 100, {
  93. leading: true,
  94. trailing: false
  95. }), false);
  96. }