main.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /* eslint-disable no-param-reassign */
  2. import { Core } from './core';
  3. import { Util } from './util';
  4. export var Event;
  5. (function (Event) {
  6. function on(elem, events, selector, data, handler) {
  7. Private.on(elem, events, selector, data, handler);
  8. return elem;
  9. }
  10. Event.on = on;
  11. function once(elem, events, selector, data, handler) {
  12. Private.on(elem, events, selector, data, handler, true);
  13. return elem;
  14. }
  15. Event.once = once;
  16. function off(elem, events, selector, handler) {
  17. Private.off(elem, events, selector, handler);
  18. return elem;
  19. }
  20. Event.off = off;
  21. function trigger(elem, event, args,
  22. /**
  23. * When onlyHandlers is `true`
  24. * - Will not call `.event()` on the element it is triggered on. This means
  25. * `.trigger('submit', [], true)` on a form will not call `.submit()` on
  26. * the form.
  27. * - Events will not bubble up the DOM hierarchy; if they are not handled
  28. * by the target element directly, they do nothing.
  29. */
  30. onlyHandlers) {
  31. Core.trigger(event, args, elem, onlyHandlers);
  32. return elem;
  33. }
  34. Event.trigger = trigger;
  35. })(Event || (Event = {}));
  36. var Private;
  37. (function (Private) {
  38. function on(elem, types, selector, data, fn, once) {
  39. // Types can be a map of types/handlers
  40. if (typeof types === 'object') {
  41. // ( types-Object, selector, data )
  42. if (typeof selector !== 'string') {
  43. // ( types-Object, data )
  44. data = data || selector;
  45. selector = undefined;
  46. }
  47. Object.keys(types).forEach((type) => on(elem, type, selector, data, types[type], once));
  48. return;
  49. }
  50. if (data == null && fn == null) {
  51. // ( types, fn )
  52. fn = selector;
  53. data = selector = undefined;
  54. }
  55. else if (fn == null) {
  56. if (typeof selector === 'string') {
  57. // ( types, selector, fn )
  58. fn = data;
  59. data = undefined;
  60. }
  61. else {
  62. // ( types, data, fn )
  63. fn = data;
  64. data = selector;
  65. selector = undefined;
  66. }
  67. }
  68. if (fn === false) {
  69. fn = Util.returnFalse;
  70. }
  71. else if (!fn) {
  72. return;
  73. }
  74. if (once) {
  75. const originHandler = fn;
  76. fn = function (event, ...args) {
  77. // Can use an empty set, since event contains the info
  78. Private.off(elem, event);
  79. return originHandler.call(this, event, ...args);
  80. };
  81. // Use same guid so caller can remove using origFn
  82. Util.setHandlerId(fn, Util.ensureHandlerId(originHandler));
  83. }
  84. Core.on(elem, types, fn, data, selector);
  85. }
  86. Private.on = on;
  87. function off(elem, events, selector, fn) {
  88. const evt = events;
  89. if (evt && evt.preventDefault != null && evt.handleObj != null) {
  90. const obj = evt.handleObj;
  91. off(evt.delegateTarget, obj.namespace ? `${obj.originType}.${obj.namespace}` : obj.originType, obj.selector, obj.handler);
  92. return;
  93. }
  94. if (typeof events === 'object') {
  95. // ( types-object [, selector] )
  96. const types = events;
  97. Object.keys(types).forEach((type) => off(elem, type, selector, types[type]));
  98. return;
  99. }
  100. if (selector === false || typeof selector === 'function') {
  101. // ( types [, fn] )
  102. fn = selector;
  103. selector = undefined;
  104. }
  105. if (fn === false) {
  106. fn = Util.returnFalse;
  107. }
  108. Core.off(elem, events, fn, selector);
  109. }
  110. Private.off = off;
  111. })(Private || (Private = {}));
  112. //# sourceMappingURL=main.js.map