@opentiny/fluent-editor 3.25.3 → 4.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/es/attributors/font-style.es.js +1 -1
  2. package/es/attributors/font-style.es.js.map +1 -1
  3. package/es/attributors/line-height.es.js +1 -1
  4. package/es/attributors/line-height.es.js.map +1 -1
  5. package/es/config/editor.utils.es.js +0 -9
  6. package/es/config/editor.utils.es.js.map +1 -1
  7. package/es/config/i18n/en-us.es.js +33 -4
  8. package/es/config/i18n/en-us.es.js.map +1 -1
  9. package/es/config/i18n/zh-cn.es.js +33 -4
  10. package/es/config/i18n/zh-cn.es.js.map +1 -1
  11. package/es/config/index.es.js +1 -2
  12. package/es/core/fluent-editor.es.js +3 -0
  13. package/es/core/fluent-editor.es.js.map +1 -1
  14. package/es/fluent-editor.es.js +12 -9
  15. package/es/fluent-editor.es.js.map +1 -1
  16. package/es/index.es.js +5 -2
  17. package/es/index.es.js.map +1 -1
  18. package/es/modules/custom-clipboard.es.js +1 -57
  19. package/es/modules/custom-clipboard.es.js.map +1 -1
  20. package/es/modules/custom-image/image-bar.es.js +2 -1
  21. package/es/modules/custom-image/image-bar.es.js.map +1 -1
  22. package/es/modules/i18n.es.js +4 -3
  23. package/es/modules/i18n.es.js.map +1 -1
  24. package/es/modules/link/index.es.js +0 -17
  25. package/es/modules/link/index.es.js.map +1 -1
  26. package/es/modules/mathlive/tooltip.es.js +8 -3
  27. package/es/modules/mathlive/tooltip.es.js.map +1 -1
  28. package/es/modules/shortcut-key/index.es.js +213 -0
  29. package/es/modules/shortcut-key/index.es.js.map +1 -0
  30. package/es/modules/table-up/index.es.js +61 -0
  31. package/es/modules/table-up/index.es.js.map +1 -0
  32. package/es/modules/toolbar/better-picker.es.js +21 -269
  33. package/es/modules/toolbar/better-picker.es.js.map +1 -1
  34. package/es/modules/toolbar/index.es.js +0 -1
  35. package/es/modules/toolbar/index.es.js.map +1 -1
  36. package/es/modules/toolbar/toolbar-tip.es.js +38 -8
  37. package/es/modules/toolbar/toolbar-tip.es.js.map +1 -1
  38. package/es/themes/snow.es.js +185 -46
  39. package/es/themes/snow.es.js.map +1 -1
  40. package/es/ui/icons.config.es.js +6 -5
  41. package/es/ui/icons.config.es.js.map +1 -1
  42. package/es/ui/icons.es.js +3 -12
  43. package/es/ui/icons.es.js.map +1 -1
  44. package/lib/attributors/font-style.cjs.js +1 -1
  45. package/lib/attributors/font-style.cjs.js.map +1 -1
  46. package/lib/attributors/line-height.cjs.js +1 -1
  47. package/lib/attributors/line-height.cjs.js.map +1 -1
  48. package/lib/config/editor.utils.cjs.js +0 -9
  49. package/lib/config/editor.utils.cjs.js.map +1 -1
  50. package/lib/config/i18n/en-us.cjs.js +33 -4
  51. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  52. package/lib/config/i18n/zh-cn.cjs.js +33 -4
  53. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  54. package/lib/config/index.cjs.js +0 -1
  55. package/lib/config/index.cjs.js.map +1 -1
  56. package/lib/core/fluent-editor.cjs.js +3 -0
  57. package/lib/core/fluent-editor.cjs.js.map +1 -1
  58. package/lib/fluent-editor.cjs.js +12 -9
  59. package/lib/fluent-editor.cjs.js.map +1 -1
  60. package/lib/index.cjs.js +7 -1
  61. package/lib/index.cjs.js.map +1 -1
  62. package/lib/modules/custom-clipboard.cjs.js +0 -56
  63. package/lib/modules/custom-clipboard.cjs.js.map +1 -1
  64. package/lib/modules/custom-image/image-bar.cjs.js +2 -1
  65. package/lib/modules/custom-image/image-bar.cjs.js.map +1 -1
  66. package/lib/modules/i18n.cjs.js +4 -3
  67. package/lib/modules/i18n.cjs.js.map +1 -1
  68. package/lib/modules/link/index.cjs.js +0 -17
  69. package/lib/modules/link/index.cjs.js.map +1 -1
  70. package/lib/modules/mathlive/tooltip.cjs.js +8 -3
  71. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
  72. package/lib/modules/shortcut-key/index.cjs.js +213 -0
  73. package/lib/modules/shortcut-key/index.cjs.js.map +1 -0
  74. package/lib/modules/table-up/index.cjs.js +61 -0
  75. package/lib/modules/table-up/index.cjs.js.map +1 -0
  76. package/lib/modules/toolbar/better-picker.cjs.js +21 -270
  77. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
  78. package/lib/modules/toolbar/index.cjs.js +0 -1
  79. package/lib/modules/toolbar/index.cjs.js.map +1 -1
  80. package/lib/modules/toolbar/toolbar-tip.cjs.js +38 -8
  81. package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -1
  82. package/lib/themes/snow.cjs.js +187 -48
  83. package/lib/themes/snow.cjs.js.map +1 -1
  84. package/lib/ui/icons.cjs.js +2 -11
  85. package/lib/ui/icons.cjs.js.map +1 -1
  86. package/lib/ui/icons.config.cjs.js +6 -5
  87. package/lib/ui/icons.config.cjs.js.map +1 -1
  88. package/package.json +5 -3
  89. package/style.css +315 -2135
  90. package/types/attributors/font-style.d.ts +1 -1
  91. package/types/config/editor.config.d.ts +62 -6
  92. package/types/config/editor.utils.d.ts +0 -1
  93. package/types/config/i18n/en-us.d.ts +31 -3
  94. package/types/config/i18n/zh-cn.d.ts +31 -3
  95. package/types/config/types/toolbar-item.interface.d.ts +11 -11
  96. package/types/core/fluent-editor.d.ts +1 -0
  97. package/types/index.d.ts +2 -0
  98. package/types/modules/i18n.d.ts +1 -1
  99. package/types/modules/shortcut-key/index.d.ts +97 -0
  100. package/types/modules/table-up/index.d.ts +66 -0
  101. package/types/modules/toolbar/better-picker.d.ts +15 -0
  102. package/types/themes/snow.d.ts +10 -2
  103. package/types/ui/icons.config.d.ts +2 -2
  104. package/es/modules/global-link/constants.es.js +0 -9
  105. package/es/modules/global-link/constants.es.js.map +0 -1
  106. package/es/modules/global-link/formats/customer-widget-link.es.js +0 -28
  107. package/es/modules/global-link/formats/customer-widget-link.es.js.map +0 -1
  108. package/es/modules/global-link/formats/doc-link.es.js +0 -42
  109. package/es/modules/global-link/formats/doc-link.es.js.map +0 -1
  110. package/es/modules/global-link/formats/wiki-link.es.js +0 -34
  111. package/es/modules/global-link/formats/wiki-link.es.js.map +0 -1
  112. package/es/modules/global-link/formats/work-item-link.es.js +0 -36
  113. package/es/modules/global-link/formats/work-item-link.es.js.map +0 -1
  114. package/es/modules/global-link/global-link-panel.es.js +0 -2
  115. package/es/modules/global-link/global-link-panel.es.js.map +0 -1
  116. package/es/modules/global-link/index.es.js +0 -139
  117. package/es/modules/global-link/index.es.js.map +0 -1
  118. package/es/modules/global-link/utils/createTable.es.js +0 -50
  119. package/es/modules/global-link/utils/createTable.es.js.map +0 -1
  120. package/es/modules/quick-menu.es.js +0 -82
  121. package/es/modules/quick-menu.es.js.map +0 -1
  122. package/es/modules/table/better-table.es.js +0 -485
  123. package/es/modules/table/better-table.es.js.map +0 -1
  124. package/es/modules/table/formats/header.es.js +0 -94
  125. package/es/modules/table/formats/header.es.js.map +0 -1
  126. package/es/modules/table/formats/list.es.js +0 -163
  127. package/es/modules/table/formats/list.es.js.map +0 -1
  128. package/es/modules/table/formats/table.es.js +0 -969
  129. package/es/modules/table/formats/table.es.js.map +0 -1
  130. package/es/modules/table/modules/table-column-tool.es.js +0 -400
  131. package/es/modules/table/modules/table-column-tool.es.js.map +0 -1
  132. package/es/modules/table/modules/table-operation-menu.es.js +0 -475
  133. package/es/modules/table/modules/table-operation-menu.es.js.map +0 -1
  134. package/es/modules/table/modules/table-scroll-bar.es.js +0 -190
  135. package/es/modules/table/modules/table-scroll-bar.es.js.map +0 -1
  136. package/es/modules/table/modules/table-selection.es.js +0 -305
  137. package/es/modules/table/modules/table-selection.es.js.map +0 -1
  138. package/es/modules/table/modules/table-selector.es.js +0 -158
  139. package/es/modules/table/modules/table-selector.es.js.map +0 -1
  140. package/es/modules/table/table-config.es.js +0 -74
  141. package/es/modules/table/table-config.es.js.map +0 -1
  142. package/es/modules/table/utils/index.es.js +0 -54
  143. package/es/modules/table/utils/index.es.js.map +0 -1
  144. package/es/modules/table/utils/node-matchers.es.js +0 -292
  145. package/es/modules/table/utils/node-matchers.es.js.map +0 -1
  146. package/lib/modules/global-link/constants.cjs.js +0 -9
  147. package/lib/modules/global-link/constants.cjs.js.map +0 -1
  148. package/lib/modules/global-link/formats/customer-widget-link.cjs.js +0 -28
  149. package/lib/modules/global-link/formats/customer-widget-link.cjs.js.map +0 -1
  150. package/lib/modules/global-link/formats/doc-link.cjs.js +0 -42
  151. package/lib/modules/global-link/formats/doc-link.cjs.js.map +0 -1
  152. package/lib/modules/global-link/formats/wiki-link.cjs.js +0 -34
  153. package/lib/modules/global-link/formats/wiki-link.cjs.js.map +0 -1
  154. package/lib/modules/global-link/formats/work-item-link.cjs.js +0 -36
  155. package/lib/modules/global-link/formats/work-item-link.cjs.js.map +0 -1
  156. package/lib/modules/global-link/global-link-panel.cjs.js +0 -2
  157. package/lib/modules/global-link/global-link-panel.cjs.js.map +0 -1
  158. package/lib/modules/global-link/index.cjs.js +0 -139
  159. package/lib/modules/global-link/index.cjs.js.map +0 -1
  160. package/lib/modules/global-link/utils/createTable.cjs.js +0 -50
  161. package/lib/modules/global-link/utils/createTable.cjs.js.map +0 -1
  162. package/lib/modules/quick-menu.cjs.js +0 -82
  163. package/lib/modules/quick-menu.cjs.js.map +0 -1
  164. package/lib/modules/table/better-table.cjs.js +0 -485
  165. package/lib/modules/table/better-table.cjs.js.map +0 -1
  166. package/lib/modules/table/formats/header.cjs.js +0 -94
  167. package/lib/modules/table/formats/header.cjs.js.map +0 -1
  168. package/lib/modules/table/formats/list.cjs.js +0 -163
  169. package/lib/modules/table/formats/list.cjs.js.map +0 -1
  170. package/lib/modules/table/formats/table.cjs.js +0 -969
  171. package/lib/modules/table/formats/table.cjs.js.map +0 -1
  172. package/lib/modules/table/modules/table-column-tool.cjs.js +0 -400
  173. package/lib/modules/table/modules/table-column-tool.cjs.js.map +0 -1
  174. package/lib/modules/table/modules/table-operation-menu.cjs.js +0 -475
  175. package/lib/modules/table/modules/table-operation-menu.cjs.js.map +0 -1
  176. package/lib/modules/table/modules/table-scroll-bar.cjs.js +0 -190
  177. package/lib/modules/table/modules/table-scroll-bar.cjs.js.map +0 -1
  178. package/lib/modules/table/modules/table-selection.cjs.js +0 -305
  179. package/lib/modules/table/modules/table-selection.cjs.js.map +0 -1
  180. package/lib/modules/table/modules/table-selector.cjs.js +0 -158
  181. package/lib/modules/table/modules/table-selector.cjs.js.map +0 -1
  182. package/lib/modules/table/table-config.cjs.js +0 -74
  183. package/lib/modules/table/table-config.cjs.js.map +0 -1
  184. package/lib/modules/table/utils/index.cjs.js +0 -54
  185. package/lib/modules/table/utils/index.cjs.js.map +0 -1
  186. package/lib/modules/table/utils/node-matchers.cjs.js +0 -292
  187. package/lib/modules/table/utils/node-matchers.cjs.js.map +0 -1
  188. package/types/modules/global-link/constants.d.ts +0 -3
  189. package/types/modules/global-link/formats/customer-widget-link.d.ts +0 -14
  190. package/types/modules/global-link/formats/doc-link.d.ts +0 -17
  191. package/types/modules/global-link/formats/wiki-link.d.ts +0 -16
  192. package/types/modules/global-link/formats/work-item-link.d.ts +0 -16
  193. package/types/modules/global-link/global-link-panel.d.ts +0 -19
  194. package/types/modules/global-link/index.d.ts +0 -18
  195. package/types/modules/global-link/utils/createTable.d.ts +0 -1
  196. package/types/modules/quick-menu.d.ts +0 -22
  197. package/types/modules/table/better-table.d.ts +0 -35
  198. package/types/modules/table/formats/header.d.ts +0 -23
  199. package/types/modules/table/formats/list.d.ts +0 -34
  200. package/types/modules/table/formats/table.d.ts +0 -147
  201. package/types/modules/table/modules/table-column-tool.d.ts +0 -23
  202. package/types/modules/table/modules/table-operation-menu.d.ts +0 -38
  203. package/types/modules/table/modules/table-scroll-bar.d.ts +0 -33
  204. package/types/modules/table/modules/table-selection.d.ts +0 -37
  205. package/types/modules/table/modules/table-selector.d.ts +0 -22
  206. package/types/modules/table/table-config.d.ts +0 -38
  207. package/types/modules/table/utils/index.d.ts +0 -17
  208. package/types/modules/table/utils/node-matchers.d.ts +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiki-link.es.js","sources":["../../../../../src/modules/global-link/formats/wiki-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_WIKI_LINK_REMOVE } from '../constants'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\n\r\n// @dynamic\r\nclass WikiLink extends Embed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n wikiData: any\r\n scroll: any\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('href', value.link)\r\n node.setAttribute('target', '_blank')\r\n node.setAttribute('title', value.text)\r\n node.textContent = value.text\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n link: domNode.getAttribute('href'),\r\n text: domNode.textContent,\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n this.wikiData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_WIKI_LINK_REMOVE, this.wikiData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nWikiLink.blotName = 'wiki-link'\r\nWikiLink.tagName = 'A'\r\nWikiLink.className = 'ql-wiki-link'\r\n\r\nexport default WikiLink\r\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,iBAAiB,MAAM;AAAA,EAO3B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,QAAQ,MAAM,IAAI;AAC/B,SAAA,aAAa,UAAU,QAAQ;AAC/B,SAAA,aAAa,SAAS,MAAM,IAAI;AACrC,SAAK,cAAc,MAAM;AAClB,WAAA;AAAA,EAAA;AAAA,EAGT,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,QAAQ;AAAA,IAChB;AAAA,EAAA;AAAA,EAGF,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,WAAW;AAAA,EAAA;AAAA,EAGlB,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,qBAAqB,KAAK,QAAQ;AAC3D,WAAO,MAAM,OAAO;AAAA,EAAA;AAExB;AAEA,SAAS,WAAW;AACpB,SAAS,UAAU;AACnB,SAAS,YAAY;"}
@@ -1,36 +0,0 @@
1
- import Quill from "quill";
2
- import { ON_WORK_ITEM_LINK_REMOVE } from "../constants.es.js";
3
- import { createTable } from "../utils/createTable.es.js";
4
- const BlockEmbed = Quill.imports["blots/block/embed"];
5
- class WorkItemLink extends BlockEmbed {
6
- static create(value) {
7
- const node = super.create(value);
8
- node.setAttribute("contenteditable", "false");
9
- node.setAttribute("href", value.link);
10
- node.setAttribute("__work_item_data__", JSON.stringify(value.data));
11
- const table = createTable(value.data);
12
- node.appendChild(table);
13
- return node;
14
- }
15
- static value(domNode) {
16
- return {
17
- link: domNode.getAttribute("href"),
18
- data: JSON.parse(domNode.getAttribute("__work_item_data__"))
19
- };
20
- }
21
- constructor(scroll, domNode, data) {
22
- super(scroll, domNode, data);
23
- this.workItemData = data;
24
- }
25
- remove() {
26
- this.scroll.emitter.emit(ON_WORK_ITEM_LINK_REMOVE, this.workItemData);
27
- return super.remove();
28
- }
29
- }
30
- WorkItemLink.blotName = "work-item-link";
31
- WorkItemLink.tagName = "div";
32
- WorkItemLink.className = "ql-work-item-link";
33
- export {
34
- WorkItemLink as default
35
- };
36
- //# sourceMappingURL=work-item-link.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"work-item-link.es.js","sources":["../../../../../src/modules/global-link/formats/work-item-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_WORK_ITEM_LINK_REMOVE } from '../constants'\r\nimport { createTable } from '../utils/createTable'\r\n\r\nconst BlockEmbed = Quill.imports['blots/block/embed']\r\n\r\n// @dynamic\r\nclass WorkItemLink extends BlockEmbed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n workItemData: any\r\n scroll: any\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('contenteditable', 'false')\r\n node.setAttribute('href', value.link)\r\n node.setAttribute('__work_item_data__', JSON.stringify(value.data))\r\n const table = createTable(value.data)\r\n node.appendChild(table)\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n link: domNode.getAttribute('href'),\r\n data: JSON.parse(domNode.getAttribute('__work_item_data__')),\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n this.workItemData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_WORK_ITEM_LINK_REMOVE, this.workItemData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nWorkItemLink.blotName = 'work-item-link'\r\nWorkItemLink.tagName = 'div'\r\nWorkItemLink.className = 'ql-work-item-link'\r\n\r\nexport default WorkItemLink\r\n"],"names":[],"mappings":";;;AAIA,MAAM,aAAa,MAAM,QAAQ,mBAAmB;AAGpD,MAAM,qBAAqB,WAAW;AAAA,EAOpC,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,mBAAmB,OAAO;AACvC,SAAA,aAAa,QAAQ,MAAM,IAAI;AACpC,SAAK,aAAa,sBAAsB,KAAK,UAAU,MAAM,IAAI,CAAC;AAC5D,UAAA,QAAQ,YAAY,MAAM,IAAI;AACpC,SAAK,YAAY,KAAK;AACf,WAAA;AAAA,EAAA;AAAA,EAGT,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,KAAK,MAAM,QAAQ,aAAa,oBAAoB,CAAC;AAAA,IAC7D;AAAA,EAAA;AAAA,EAGF,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,eAAe;AAAA,EAAA;AAAA,EAGtB,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,0BAA0B,KAAK,YAAY;AACpE,WAAO,MAAM,OAAO;AAAA,EAAA;AAExB;AAEA,aAAa,WAAW;AACxB,aAAa,UAAU;AACvB,aAAa,YAAY;"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=global-link-panel.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-link-panel.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,139 +0,0 @@
1
- import Quill from "quill";
2
- import { getEventComposedPath } from "../../config/editor.utils.es.js";
3
- import CustomerWidgetLink from "./formats/customer-widget-link.es.js";
4
- import DocumentLink from "./formats/doc-link.es.js";
5
- import WikiLink from "./formats/wiki-link.es.js";
6
- import WorkItemLink from "./formats/work-item-link.es.js";
7
- const Module = Quill.imports["core/module"];
8
- const Delta = Quill.imports.delta;
9
- class GlobalLink extends Module {
10
- static register() {
11
- Quill.register("formats/wiki-link", WikiLink);
12
- Quill.register("formats/doc-link", DocumentLink);
13
- Quill.register("formats/work-item-link", WorkItemLink);
14
- Quill.register("formats/customer-widget-link", CustomerWidgetLink);
15
- }
16
- constructor(quill, options) {
17
- super(quill, options);
18
- const toolbar = quill.getModule("toolbar");
19
- this.open = false;
20
- this.panel = options.component;
21
- this.wrap = options.wrap;
22
- const globalLinkBtn = toolbar.container && toolbar.container.querySelector(".ql-global-link");
23
- toolbar.addHandler("global-link", this.handleGlobalLinkButtonClick.bind(this));
24
- quill.root.addEventListener("click", this.onEditorClick.bind(this));
25
- document.body.addEventListener("click", (evt) => {
26
- if (!this.wrap.contains(evt.target) && !(globalLinkBtn && globalLinkBtn.contains(evt.target))) {
27
- this.open = false;
28
- this.wrap.classList.add("global-link-hide");
29
- }
30
- });
31
- this.panel.wikiLink.subscribe(this.addWikiLink.bind(this));
32
- this.panel.docLink.subscribe(this.addDocLink.bind(this));
33
- this.panel.workItemLink.subscribe(this.addWorkItemLink.bind(this));
34
- if (this.panel.close) {
35
- this.panel.close.subscribe(this.closePanel.bind(this));
36
- }
37
- }
38
- onEditorClick(evt) {
39
- if (!evt.ctrlKey) return;
40
- const path = getEventComposedPath(evt);
41
- if (!path || path.length <= 0) return;
42
- const linkNode = path.filter((node) => {
43
- return node.classList && (node.classList.contains(WikiLink.className) || node.classList.contains(DocumentLink.className) || node.classList.contains(WorkItemLink.className));
44
- })[0];
45
- if (!linkNode) return;
46
- if (linkNode.classList.contains(WikiLink.className)) {
47
- this.handleLinkClick(linkNode);
48
- } else if (linkNode.classList.contains(DocumentLink.className)) {
49
- this.handleLinkClick(linkNode);
50
- } else if (linkNode.classList.contains(WorkItemLink.className)) {
51
- const tableRow = path.filter((node) => {
52
- return node.tagName && node.tagName.toUpperCase() === "TR";
53
- })[0];
54
- if (tableRow) {
55
- this.handleLinkClick(tableRow);
56
- }
57
- }
58
- }
59
- handleLinkClick(linkNode) {
60
- const href = linkNode.getAttribute("href");
61
- if (href) {
62
- window.open(href);
63
- }
64
- }
65
- handleGlobalLinkButtonClick(_value) {
66
- this.open = !this.open;
67
- this.triggerPanel();
68
- }
69
- triggerPanel() {
70
- if (this.open) {
71
- this.wrap.classList.remove("global-link-hide");
72
- } else {
73
- this.wrap.classList.add("global-link-hide");
74
- }
75
- }
76
- addWikiLink(wikiData) {
77
- const index = this.quill.getSelection(true).index;
78
- const arr = [];
79
- const delta = arr.reduce.call(wikiData, (op, wiki) => {
80
- op.insert({
81
- [WikiLink.blotName]: {
82
- link: wiki.link,
83
- text: wiki.text
84
- }
85
- });
86
- return op;
87
- }, new Delta().retain(index));
88
- this.quill.updateContents(delta, Quill.sources.USER);
89
- this.quill.setSelection(index + 1, Quill.sources.USER);
90
- if (this.panel.autoClose) {
91
- this.closePanel();
92
- }
93
- }
94
- addDocLink(docData) {
95
- const index = this.quill.getSelection(true).index;
96
- const arr = [];
97
- const delta = arr.reduce.call(docData, (op, doc) => {
98
- op.insert({
99
- [DocumentLink.blotName]: {
100
- link: doc.link,
101
- text: doc.text,
102
- icon: doc.icon
103
- }
104
- });
105
- return op;
106
- }, new Delta().retain(index));
107
- this.quill.updateContents(delta, Quill.sources.USER);
108
- this.quill.setSelection(index + 1, Quill.sources.USER);
109
- if (this.panel.autoClose) {
110
- this.closePanel();
111
- }
112
- }
113
- addWorkItemLink(workItemData) {
114
- const index = this.quill.getSelection(true).index;
115
- const arr = [];
116
- const delta = arr.reduce.call(workItemData, (op, workItem) => {
117
- op.insert({
118
- [WorkItemLink.blotName]: {
119
- link: workItem.url,
120
- data: workItem.table
121
- }
122
- });
123
- return op;
124
- }, new Delta().retain(index));
125
- this.quill.updateContents(delta, Quill.sources.USER);
126
- this.quill.setSelection(index + 1, Quill.sources.USER);
127
- if (this.panel.autoClose) {
128
- this.closePanel();
129
- }
130
- }
131
- closePanel() {
132
- this.open = false;
133
- this.triggerPanel();
134
- }
135
- }
136
- export {
137
- GlobalLink as default
138
- };
139
- //# sourceMappingURL=index.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../../src/modules/global-link/index.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { getEventComposedPath } from '../../config/editor.utils'\r\nimport CustomerWidgetLink from './formats/customer-widget-link'\r\nimport DocumentLink from './formats/doc-link'\r\nimport WikiLink from './formats/wiki-link'\r\nimport WorkItemLink from './formats/work-item-link'\r\n\r\nconst Module = Quill.imports['core/module']\r\nconst Delta = Quill.imports.delta\r\n\r\n// @dynamic\r\nclass GlobalLink extends Module {\r\n open: boolean\r\n wrap: any\r\n panel: any\r\n quill: any\r\n\r\n static register() {\r\n Quill.register('formats/wiki-link', WikiLink)\r\n Quill.register('formats/doc-link', DocumentLink)\r\n Quill.register('formats/work-item-link', WorkItemLink)\r\n Quill.register('formats/customer-widget-link', CustomerWidgetLink)\r\n }\r\n\r\n constructor(quill, options) {\r\n super(quill, options)\r\n const toolbar = quill.getModule('toolbar')\r\n this.open = false\r\n this.panel = options.component\r\n this.wrap = options.wrap\r\n const globalLinkBtn = toolbar.container && toolbar.container.querySelector('.ql-global-link')\r\n toolbar.addHandler('global-link', this.handleGlobalLinkButtonClick.bind(this))\r\n quill.root.addEventListener('click', this.onEditorClick.bind(this))\r\n document.body.addEventListener('click', (evt) => {\r\n if (!this.wrap.contains(evt.target) && !(globalLinkBtn && globalLinkBtn.contains(evt.target))) {\r\n this.open = false\r\n this.wrap.classList.add('global-link-hide')\r\n }\r\n })\r\n this.panel.wikiLink.subscribe(this.addWikiLink.bind(this))\r\n this.panel.docLink.subscribe(this.addDocLink.bind(this))\r\n this.panel.workItemLink.subscribe(this.addWorkItemLink.bind(this))\r\n if (this.panel.close) {\r\n this.panel.close.subscribe(this.closePanel.bind(this))\r\n }\r\n }\r\n\r\n onEditorClick(evt: any) {\r\n if (!evt.ctrlKey) return\r\n const path = getEventComposedPath(evt)\r\n if (!path || path.length <= 0) return\r\n const linkNode = path.filter((node) => {\r\n return node.classList && (node.classList.contains(WikiLink.className)\r\n || node.classList.contains(DocumentLink.className)\r\n || node.classList.contains(WorkItemLink.className))\r\n })[0]\r\n\r\n if (!linkNode) return\r\n\r\n if (linkNode.classList.contains(WikiLink.className)) {\r\n this.handleLinkClick(linkNode)\r\n }\r\n else if (linkNode.classList.contains(DocumentLink.className)) {\r\n this.handleLinkClick(linkNode)\r\n }\r\n else if (linkNode.classList.contains(WorkItemLink.className)) {\r\n const tableRow = path.filter((node) => {\r\n return node.tagName && node.tagName.toUpperCase() === 'TR'\r\n })[0]\r\n\r\n if (tableRow) {\r\n this.handleLinkClick(tableRow)\r\n }\r\n }\r\n }\r\n\r\n handleLinkClick(linkNode) {\r\n const href = linkNode.getAttribute('href')\r\n if (href) {\r\n window.open(href)\r\n }\r\n }\r\n\r\n handleGlobalLinkButtonClick(_value) {\r\n this.open = !this.open\r\n this.triggerPanel()\r\n }\r\n\r\n triggerPanel() {\r\n if (this.open) {\r\n this.wrap.classList.remove('global-link-hide')\r\n }\r\n else {\r\n this.wrap.classList.add('global-link-hide')\r\n }\r\n }\r\n\r\n addWikiLink(wikiData) {\r\n const index = this.quill.getSelection(true).index\r\n const arr: { link: any, text: any } [] = []\r\n const delta = arr.reduce.call(wikiData, (op: any, wiki) => {\r\n op.insert({\r\n [WikiLink.blotName]: {\r\n link: wiki.link,\r\n text: wiki.text,\r\n },\r\n })\r\n return op\r\n }, new Delta().retain(index))\r\n\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(index + 1, Quill.sources.USER)\r\n if (this.panel.autoClose) {\r\n this.closePanel()\r\n }\r\n }\r\n\r\n addDocLink(docData) {\r\n const index = this.quill.getSelection(true).index\r\n const arr: { link: any, text: any, icon: any } [] = []\r\n const delta = arr.reduce.call(docData, (op: any, doc) => {\r\n op.insert({\r\n [DocumentLink.blotName]: {\r\n link: doc.link,\r\n text: doc.text,\r\n icon: doc.icon,\r\n },\r\n })\r\n return op\r\n }, new Delta().retain(index))\r\n\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(index + 1, Quill.sources.USER)\r\n if (this.panel.autoClose) {\r\n this.closePanel()\r\n }\r\n }\r\n\r\n addWorkItemLink(workItemData) {\r\n const index = this.quill.getSelection(true).index\r\n const arr: { url: any, table: any } [] = []\r\n const delta = arr.reduce.call(workItemData, (op: any, workItem) => {\r\n op.insert({\r\n [WorkItemLink.blotName]: {\r\n link: workItem.url,\r\n data: workItem.table,\r\n },\r\n })\r\n return op\r\n }, new Delta().retain(index))\r\n\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(index + 1, Quill.sources.USER)\r\n if (this.panel.autoClose) {\r\n this.closePanel()\r\n }\r\n }\r\n\r\n closePanel() {\r\n this.open = false\r\n this.triggerPanel()\r\n }\r\n}\r\n\r\nexport default GlobalLink\r\n"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- const tableConfig = [
2
- { title: "Number", field: "id", width: "100" },
3
- { title: "Title", field: "subject", width: "200" },
4
- { title: "Priority", field: "priority", width: "100" },
5
- { title: "Iteration", field: "iteration", width: "100" },
6
- { title: "Status", field: "status", width: "100" },
7
- { title: "Conductor", field: "assigned_to", width: "100" }
8
- ];
9
- function createTable(data) {
10
- const table = document.createElement("table");
11
- createColGroup(table);
12
- createTableHead(table);
13
- createTableBody(table, data);
14
- return table;
15
- }
16
- function createColGroup(table) {
17
- const colGroup = document.createElement("colgroup");
18
- tableConfig.forEach(({ width }) => {
19
- const col = document.createElement("col");
20
- col.setAttribute("width", width);
21
- colGroup.appendChild(col);
22
- });
23
- table.insertAdjacentElement("afterbegin", colGroup);
24
- }
25
- function createTableHead(table) {
26
- const tHead = table.createTHead();
27
- const tRow = tHead.insertRow();
28
- tableConfig.forEach(({ title }) => {
29
- const tCell = tRow.insertCell();
30
- tCell.textContent = title;
31
- });
32
- return tHead;
33
- }
34
- function createTableBody(table, data) {
35
- const tBody = table.createTBody();
36
- [].forEach.call(data, (d) => {
37
- const tRow = tBody.insertRow();
38
- tRow.setAttribute("href", d.url);
39
- tableConfig.forEach(({ field }) => {
40
- const tCell = tRow.insertCell();
41
- tCell.classList.add(`work-item-${field}`);
42
- tCell.textContent = d[field];
43
- });
44
- });
45
- return tBody;
46
- }
47
- export {
48
- createTable
49
- };
50
- //# sourceMappingURL=createTable.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTable.es.js","sources":["../../../../../src/modules/global-link/utils/createTable.ts"],"sourcesContent":["const tableConfig = [\r\n { title: 'Number', field: 'id', width: '100' },\r\n { title: 'Title', field: 'subject', width: '200' },\r\n { title: 'Priority', field: 'priority', width: '100' },\r\n { title: 'Iteration', field: 'iteration', width: '100' },\r\n { title: 'Status', field: 'status', width: '100' },\r\n { title: 'Conductor', field: 'assigned_to', width: '100' },\r\n]\r\n\r\nexport function createTable(data: any[]) {\r\n const table = document.createElement<'table'>('table')\r\n createColGroup(table)\r\n createTableHead(table)\r\n createTableBody(table, data)\r\n return table\r\n}\r\n\r\nfunction createColGroup(table: HTMLTableElement) {\r\n const colGroup = document.createElement<'colgroup'>('colgroup')\r\n tableConfig.forEach(({ width }) => {\r\n const col = document.createElement<'col'>('col')\r\n col.setAttribute('width', width)\r\n colGroup.appendChild(col)\r\n })\r\n table.insertAdjacentElement('afterbegin', colGroup)\r\n}\r\n\r\nfunction createTableHead(table: HTMLTableElement) {\r\n const tHead = table.createTHead()\r\n const tRow = tHead.insertRow()\r\n tableConfig.forEach(({ title }) => {\r\n const tCell = tRow.insertCell()\r\n tCell.textContent = title\r\n })\r\n return tHead\r\n}\r\n\r\nfunction createTableBody(table: HTMLTableElement, data: any[]) {\r\n const tBody = table.createTBody();\r\n\r\n [].forEach.call(data, (d) => {\r\n const tRow = tBody.insertRow()\r\n // @ts-ignore\r\n tRow.setAttribute('href', d.url)\r\n tableConfig.forEach(({ field }) => {\r\n const tCell = tRow.insertCell()\r\n tCell.classList.add(`work-item-${field}`)\r\n // @ts-ignore\r\n tCell.textContent = d[field]\r\n })\r\n })\r\n\r\n return tBody\r\n}\r\n"],"names":[],"mappings":"AAAA,MAAM,cAAc;AAAA,EAClB,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO,MAAM;AAAA,EAC7C,EAAE,OAAO,SAAS,OAAO,WAAW,OAAO,MAAM;AAAA,EACjD,EAAE,OAAO,YAAY,OAAO,YAAY,OAAO,MAAM;AAAA,EACrD,EAAE,OAAO,aAAa,OAAO,aAAa,OAAO,MAAM;AAAA,EACvD,EAAE,OAAO,UAAU,OAAO,UAAU,OAAO,MAAM;AAAA,EACjD,EAAE,OAAO,aAAa,OAAO,eAAe,OAAO,MAAM;AAC3D;AAEO,SAAS,YAAY,MAAa;AACjC,QAAA,QAAQ,SAAS,cAAuB,OAAO;AACrD,iBAAe,KAAK;AACpB,kBAAgB,KAAK;AACrB,kBAAgB,OAAO,IAAI;AACpB,SAAA;AACT;AAEA,SAAS,eAAe,OAAyB;AACzC,QAAA,WAAW,SAAS,cAA0B,UAAU;AAC9D,cAAY,QAAQ,CAAC,EAAE,YAAY;AAC3B,UAAA,MAAM,SAAS,cAAqB,KAAK;AAC3C,QAAA,aAAa,SAAS,KAAK;AAC/B,aAAS,YAAY,GAAG;AAAA,EAAA,CACzB;AACK,QAAA,sBAAsB,cAAc,QAAQ;AACpD;AAEA,SAAS,gBAAgB,OAAyB;AAC1C,QAAA,QAAQ,MAAM,YAAY;AAC1B,QAAA,OAAO,MAAM,UAAU;AAC7B,cAAY,QAAQ,CAAC,EAAE,YAAY;AAC3B,UAAA,QAAQ,KAAK,WAAW;AAC9B,UAAM,cAAc;AAAA,EAAA,CACrB;AACM,SAAA;AACT;AAEA,SAAS,gBAAgB,OAAyB,MAAa;AACvD,QAAA,QAAQ,MAAM,YAAY;AAEhC,GAAA,EAAG,QAAQ,KAAK,MAAM,CAAC,MAAM;AACrB,UAAA,OAAO,MAAM,UAAU;AAExB,SAAA,aAAa,QAAQ,EAAE,GAAG;AAC/B,gBAAY,QAAQ,CAAC,EAAE,YAAY;AAC3B,YAAA,QAAQ,KAAK,WAAW;AAC9B,YAAM,UAAU,IAAI,aAAa,KAAK,EAAE;AAElC,YAAA,cAAc,EAAE,KAAK;AAAA,IAAA,CAC5B;AAAA,EAAA,CACF;AAEM,SAAA;AACT;"}
@@ -1,82 +0,0 @@
1
- class QuickMenu {
2
- // @ts-ignore
3
- constructor(quill, options) {
4
- this.quill = quill;
5
- this.options = options;
6
- this.handleSlashKeyDown = (_range, context) => {
7
- const index = this.quill.selection.savedRange.index;
8
- this.quill.insertText(index, "/");
9
- const shouldTriggerQuickMenu = context.prefix === "" && Object.keys(context.format).length === 0;
10
- if (shouldTriggerQuickMenu) {
11
- const cursorIndex = this.quill.selection.savedRange.index;
12
- const cursorBounds = this.quill.getBounds(cursorIndex);
13
- const { left, top } = cursorBounds;
14
- const { left: editorLeft, top: editorTop } = this.container.getBoundingClientRect();
15
- const { left: hostElementLeft, top: hostElementTop } = this.hostElement.getBoundingClientRect();
16
- const relativeLeft = editorLeft - hostElementLeft;
17
- const relativeTop = editorTop - hostElementTop;
18
- const menuLeft = left + relativeLeft - 5;
19
- const menuTop = top + relativeTop + 20;
20
- this.quickMenu.style.display = "block";
21
- const zIndex = this.quill.options.modules.quickmenu.zIndex;
22
- let style = `left:${menuLeft}px;top:${menuTop}px;`;
23
- if (zIndex || zIndex === 0) {
24
- style += `z-index:${zIndex}`;
25
- }
26
- this.quickMenuContainer.setAttribute("style", style);
27
- this.options.component.activeIndex = 0;
28
- } else {
29
- this.quickMenu.style.display = "none";
30
- }
31
- };
32
- this.hideQuickMenu = (event) => {
33
- if (this.quickMenuContainer && !this.quickMenuContainer.contains(event.target)) {
34
- this.quickMenuContainer.style.display = "none";
35
- }
36
- };
37
- this.handleArrowUpKey = (_range, _context) => {
38
- if (this.isOpen()) {
39
- const index = this.options.component.activeIndex;
40
- const total = this.options.component.quickMenus.length;
41
- this.options.component.activeIndex = (index + total - 1) % total;
42
- return false;
43
- }
44
- return true;
45
- };
46
- this.handleArrowDownKey = (_range, _context) => {
47
- if (this.isOpen()) {
48
- const index = this.options.component.activeIndex;
49
- const total = this.options.component.quickMenus.length;
50
- this.options.component.activeIndex = (index + 1) % total;
51
- return false;
52
- }
53
- return true;
54
- };
55
- this.handleEnterKey = (_range, _context) => {
56
- if (this.isOpen()) {
57
- this.options.component.onEnter();
58
- return false;
59
- }
60
- return true;
61
- };
62
- this.quill = quill;
63
- this.options = options;
64
- this.container = this.quill.container;
65
- this.hostElement = this.container.parentNode;
66
- this.quickMenu = this.hostElement.querySelector(".quick-menu");
67
- this.quickMenuContainer = this.quickMenu.querySelector(".quick-menu-container");
68
- quill.keyboard.addBinding({ key: "/" }, this.handleSlashKeyDown);
69
- quill.keyboard.addBinding({ key: "ArrowUp" }, this.handleArrowUpKey);
70
- quill.keyboard.addBinding({ key: "ArrowDown" }, this.handleArrowDownKey);
71
- quill.keyboard.addBinding({ key: "Enter" }, this.handleEnterKey);
72
- quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop());
73
- document.body.addEventListener("click", this.hideQuickMenu.bind(this));
74
- }
75
- isOpen() {
76
- return this.quickMenuContainer.style.display !== "none" && this.quickMenu.style.display === "block";
77
- }
78
- }
79
- export {
80
- QuickMenu as default
81
- };
82
- //# sourceMappingURL=quick-menu.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-menu.es.js","sources":["../../../src/modules/quick-menu.ts"],"sourcesContent":["import type Quill from 'quill'\r\n\r\ninterface QuickMenuOptions {\r\n container: string\r\n component: any\r\n}\r\n\r\nclass QuickMenu {\r\n private container: HTMLDivElement\r\n private hostElement: HTMLDivElement\r\n private quickMenu: HTMLDivElement\r\n private quickMenuContainer: HTMLDivElement\r\n\r\n // @ts-ignore\r\n constructor(private quill: Quill, private options: QuickMenuOptions) {\r\n this.quill = quill\r\n this.options = options\r\n this.container = this.quill.container\r\n this.hostElement = this.container.parentNode as HTMLDivElement\r\n this.quickMenu = this.hostElement.querySelector('.quick-menu')\r\n this.quickMenuContainer = this.quickMenu.querySelector('.quick-menu-container')\r\n quill.keyboard.addBinding({ key: '/' }, this.handleSlashKeyDown)\r\n quill.keyboard.addBinding({ key: 'ArrowUp' }, this.handleArrowUpKey)\r\n quill.keyboard.addBinding({ key: 'ArrowDown' }, this.handleArrowDownKey)\r\n quill.keyboard.addBinding({ key: 'Enter' }, this.handleEnterKey)\r\n quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop())\r\n document.body.addEventListener('click', this.hideQuickMenu.bind(this))\r\n }\r\n\r\n handleSlashKeyDown = (_range, context) => {\r\n const index = this.quill.selection.savedRange.index\r\n this.quill.insertText(index, '/')\r\n\r\n // 一行的第一个字符为 '/',且没有格式化,则触发快捷菜单\r\n const shouldTriggerQuickMenu = context.prefix === '' && Object.keys(context.format).length === 0\r\n if (shouldTriggerQuickMenu) {\r\n const cursorIndex = this.quill.selection.savedRange.index\r\n const cursorBounds = this.quill.getBounds(cursorIndex)\r\n const { left, top } = cursorBounds\r\n const { left: editorLeft, top: editorTop } = this.container.getBoundingClientRect()\r\n const { left: hostElementLeft, top: hostElementTop } = this.hostElement.getBoundingClientRect()\r\n const relativeLeft = editorLeft - hostElementLeft\r\n const relativeTop = editorTop - hostElementTop\r\n const menuLeft = left + relativeLeft - 5\r\n const menuTop = top + relativeTop + 20\r\n\r\n this.quickMenu.style.display = 'block'\r\n const zIndex = this.quill.options.modules.quickmenu.zIndex\r\n let style = `left:${menuLeft}px;top:${menuTop}px;`\r\n if (zIndex || zIndex === 0) {\r\n style += `z-index:${zIndex}`\r\n }\r\n this.quickMenuContainer.setAttribute('style', style)\r\n this.options.component.activeIndex = 0\r\n }\r\n else {\r\n this.quickMenu.style.display = 'none'\r\n }\r\n }\r\n\r\n private isOpen() {\r\n return this.quickMenuContainer.style.display !== 'none' && this.quickMenu.style.display === 'block'\r\n }\r\n\r\n hideQuickMenu = (event) => {\r\n if (this.quickMenuContainer && !this.quickMenuContainer.contains(event.target)) {\r\n this.quickMenuContainer.style.display = 'none'\r\n }\r\n }\r\n\r\n handleArrowUpKey = (_range, _context) => {\r\n if (this.isOpen()) {\r\n const index = this.options.component.activeIndex\r\n const total = this.options.component.quickMenus.length\r\n this.options.component.activeIndex = (index + total - 1) % total\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n handleArrowDownKey = (_range, _context) => {\r\n if (this.isOpen()) {\r\n const index = this.options.component.activeIndex\r\n const total = this.options.component.quickMenus.length\r\n this.options.component.activeIndex = (index + 1) % total\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n handleEnterKey = (_range, _context) => {\r\n if (this.isOpen()) {\r\n this.options.component.onEnter()\r\n return false\r\n }\r\n return true\r\n }\r\n}\r\n\r\nexport default QuickMenu\r\n"],"names":[],"mappings":"AAOA,MAAM,UAAU;AAAA;AAAA,EAOd,YAAoB,OAAsB,SAA2B;AAAjD,SAAA,QAAA;AAAsB,SAAA,UAAA;AAerB,SAAA,qBAAA,CAAC,QAAQ,YAAY;AACxC,YAAM,QAAQ,KAAK,MAAM,UAAU,WAAW;AACzC,WAAA,MAAM,WAAW,OAAO,GAAG;AAG1B,YAAA,yBAAyB,QAAQ,WAAW,MAAM,OAAO,KAAK,QAAQ,MAAM,EAAE,WAAW;AAC/F,UAAI,wBAAwB;AAC1B,cAAM,cAAc,KAAK,MAAM,UAAU,WAAW;AACpD,cAAM,eAAe,KAAK,MAAM,UAAU,WAAW;AAC/C,cAAA,EAAE,MAAM,IAAA,IAAQ;AAChB,cAAA,EAAE,MAAM,YAAY,KAAK,cAAc,KAAK,UAAU,sBAAsB;AAC5E,cAAA,EAAE,MAAM,iBAAiB,KAAK,mBAAmB,KAAK,YAAY,sBAAsB;AAC9F,cAAM,eAAe,aAAa;AAClC,cAAM,cAAc,YAAY;AAC1B,cAAA,WAAW,OAAO,eAAe;AACjC,cAAA,UAAU,MAAM,cAAc;AAE/B,aAAA,UAAU,MAAM,UAAU;AAC/B,cAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ,UAAU;AACpD,YAAI,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AACzC,YAAA,UAAU,WAAW,GAAG;AAC1B,mBAAS,WAAW,MAAM;AAAA,QAAA;AAEvB,aAAA,mBAAmB,aAAa,SAAS,KAAK;AAC9C,aAAA,QAAQ,UAAU,cAAc;AAAA,MAAA,OAElC;AACE,aAAA,UAAU,MAAM,UAAU;AAAA,MAAA;AAAA,IAEnC;AAMA,SAAA,gBAAgB,CAAC,UAAU;AACrB,UAAA,KAAK,sBAAsB,CAAC,KAAK,mBAAmB,SAAS,MAAM,MAAM,GAAG;AACzE,aAAA,mBAAmB,MAAM,UAAU;AAAA,MAAA;AAAA,IAE5C;AAEmB,SAAA,mBAAA,CAAC,QAAQ,aAAa;AACnC,UAAA,KAAK,UAAU;AACX,cAAA,QAAQ,KAAK,QAAQ,UAAU;AACrC,cAAM,QAAQ,KAAK,QAAQ,UAAU,WAAW;AAChD,aAAK,QAAQ,UAAU,eAAe,QAAQ,QAAQ,KAAK;AACpD,eAAA;AAAA,MAAA;AAEF,aAAA;AAAA,IACT;AAEqB,SAAA,qBAAA,CAAC,QAAQ,aAAa;AACrC,UAAA,KAAK,UAAU;AACX,cAAA,QAAQ,KAAK,QAAQ,UAAU;AACrC,cAAM,QAAQ,KAAK,QAAQ,UAAU,WAAW;AAChD,aAAK,QAAQ,UAAU,eAAe,QAAQ,KAAK;AAC5C,eAAA;AAAA,MAAA;AAEF,aAAA;AAAA,IACT;AAEiB,SAAA,iBAAA,CAAC,QAAQ,aAAa;AACjC,UAAA,KAAK,UAAU;AACZ,aAAA,QAAQ,UAAU,QAAQ;AACxB,eAAA;AAAA,MAAA;AAEF,aAAA;AAAA,IACT;AAjFE,SAAK,QAAQ;AACb,SAAK,UAAU;AACV,SAAA,YAAY,KAAK,MAAM;AACvB,SAAA,cAAc,KAAK,UAAU;AAClC,SAAK,YAAY,KAAK,YAAY,cAAc,aAAa;AAC7D,SAAK,qBAAqB,KAAK,UAAU,cAAc,uBAAuB;AAC9E,UAAM,SAAS,WAAW,EAAE,KAAK,IAAI,GAAG,KAAK,kBAAkB;AAC/D,UAAM,SAAS,WAAW,EAAE,KAAK,UAAU,GAAG,KAAK,gBAAgB;AACnE,UAAM,SAAS,WAAW,EAAE,KAAK,YAAY,GAAG,KAAK,kBAAkB;AACvE,UAAM,SAAS,WAAW,EAAE,KAAK,QAAQ,GAAG,KAAK,cAAc;AACzD,UAAA,SAAS,SAAS,MAAM,QAAQ,MAAM,SAAS,SAAS,MAAM,KAAK;AACzE,aAAS,KAAK,iBAAiB,SAAS,KAAK,cAAc,KAAK,IAAI,CAAC;AAAA,EAAA;AAAA,EAkC/D,SAAS;AACR,WAAA,KAAK,mBAAmB,MAAM,YAAY,UAAU,KAAK,UAAU,MAAM,YAAY;AAAA,EAAA;AAoChG;"}