4897dcc58480323c65bc29dfade200301cffe41d1bac36b590da75bb8d3e8571780baafc7506ee6f91146a0fd34a1f24a51b718ff41cf1b4cecc6412c49d00 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { EventEmitter } from 'eventemitter3';
  2. import instances from './instances.js';
  3. import logger from './logger.js';
  4. const debug = logger('quill:events');
  5. const EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];
  6. EVENTS.forEach(eventName => {
  7. document.addEventListener(eventName, function () {
  8. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  9. args[_key] = arguments[_key];
  10. }
  11. Array.from(document.querySelectorAll('.ql-container')).forEach(node => {
  12. const quill = instances.get(node);
  13. if (quill && quill.emitter) {
  14. quill.emitter.handleDOM(...args);
  15. }
  16. });
  17. });
  18. });
  19. class Emitter extends EventEmitter {
  20. static events = {
  21. EDITOR_CHANGE: 'editor-change',
  22. SCROLL_BEFORE_UPDATE: 'scroll-before-update',
  23. SCROLL_BLOT_MOUNT: 'scroll-blot-mount',
  24. SCROLL_BLOT_UNMOUNT: 'scroll-blot-unmount',
  25. SCROLL_OPTIMIZE: 'scroll-optimize',
  26. SCROLL_UPDATE: 'scroll-update',
  27. SCROLL_EMBED_UPDATE: 'scroll-embed-update',
  28. SELECTION_CHANGE: 'selection-change',
  29. TEXT_CHANGE: 'text-change',
  30. COMPOSITION_BEFORE_START: 'composition-before-start',
  31. COMPOSITION_START: 'composition-start',
  32. COMPOSITION_BEFORE_END: 'composition-before-end',
  33. COMPOSITION_END: 'composition-end'
  34. };
  35. static sources = {
  36. API: 'api',
  37. SILENT: 'silent',
  38. USER: 'user'
  39. };
  40. constructor() {
  41. super();
  42. this.domListeners = {};
  43. this.on('error', debug.error);
  44. }
  45. emit() {
  46. for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  47. args[_key2] = arguments[_key2];
  48. }
  49. debug.log.call(debug, ...args);
  50. // @ts-expect-error
  51. return super.emit(...args);
  52. }
  53. handleDOM(event) {
  54. for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
  55. args[_key3 - 1] = arguments[_key3];
  56. }
  57. (this.domListeners[event.type] || []).forEach(_ref => {
  58. let {
  59. node,
  60. handler
  61. } = _ref;
  62. if (event.target === node || node.contains(event.target)) {
  63. handler(event, ...args);
  64. }
  65. });
  66. }
  67. listenDOM(eventName, node, handler) {
  68. if (!this.domListeners[eventName]) {
  69. this.domListeners[eventName] = [];
  70. }
  71. this.domListeners[eventName].push({
  72. node,
  73. handler
  74. });
  75. }
  76. }
  77. export default Emitter;
  78. //# sourceMappingURL=emitter.js.map