edf6e0dc44d36841df9947b3e954fe9dee6deaf9e2c2066e6cddd45e4bf431ede98a07a131f7d81bfbe830d03281a05a10a211f003ac73587ce12559b061d6 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import Block from '../blots/block.js';
  2. import Container from '../blots/container.js';
  3. import Quill from '../core/quill.js';
  4. class ListContainer extends Container {}
  5. ListContainer.blotName = 'list-container';
  6. ListContainer.tagName = 'OL';
  7. class ListItem extends Block {
  8. static create(value) {
  9. const node = super.create();
  10. node.setAttribute('data-list', value);
  11. return node;
  12. }
  13. static formats(domNode) {
  14. return domNode.getAttribute('data-list') || undefined;
  15. }
  16. static register() {
  17. Quill.register(ListContainer);
  18. }
  19. constructor(scroll, domNode) {
  20. super(scroll, domNode);
  21. const ui = domNode.ownerDocument.createElement('span');
  22. const listEventHandler = e => {
  23. if (!scroll.isEnabled()) return;
  24. const format = this.statics.formats(domNode, scroll);
  25. if (format === 'checked') {
  26. this.format('list', 'unchecked');
  27. e.preventDefault();
  28. } else if (format === 'unchecked') {
  29. this.format('list', 'checked');
  30. e.preventDefault();
  31. }
  32. };
  33. ui.addEventListener('mousedown', listEventHandler);
  34. ui.addEventListener('touchstart', listEventHandler);
  35. this.attachUI(ui);
  36. }
  37. format(name, value) {
  38. if (name === this.statics.blotName && value) {
  39. this.domNode.setAttribute('data-list', value);
  40. } else {
  41. super.format(name, value);
  42. }
  43. }
  44. }
  45. ListItem.blotName = 'list';
  46. ListItem.tagName = 'LI';
  47. ListContainer.allowedChildren = [ListItem];
  48. ListItem.requiredContainer = ListContainer;
  49. export { ListContainer, ListItem as default };
  50. //# sourceMappingURL=list.js.map