@opentiny/fluent-editor 3.19.0 → 3.19.1-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 (388) hide show
  1. package/README.md +97 -96
  2. package/es/config/base64-image.es.js +9 -0
  3. package/es/config/base64-image.es.js.map +1 -0
  4. package/es/config/editor.config.es.js +86 -0
  5. package/es/config/editor.config.es.js.map +1 -0
  6. package/es/config/editor.utils.es.js +141 -0
  7. package/es/config/editor.utils.es.js.map +1 -0
  8. package/es/config/i18n/en-us.es.js +90 -0
  9. package/es/config/i18n/en-us.es.js.map +1 -0
  10. package/es/config/i18n/zh-cn.es.js +90 -0
  11. package/es/config/i18n/zh-cn.es.js.map +1 -0
  12. package/es/config/icons.config.es.js +301 -0
  13. package/es/config/icons.config.es.js.map +1 -0
  14. package/es/config/types/additional-toolbar-item.interface.es.js +2 -0
  15. package/es/config/types/additional-toolbar-item.interface.es.js.map +1 -0
  16. package/es/config/types/content-change.interface.es.js +2 -0
  17. package/es/config/types/content-change.interface.es.js.map +1 -0
  18. package/es/config/types/content-save.interface.es.js +2 -0
  19. package/es/config/types/content-save.interface.es.js.map +1 -0
  20. package/es/config/types/counter-option.interface.es.js +2 -0
  21. package/es/config/types/counter-option.interface.es.js.map +1 -0
  22. package/es/config/types/editor-config.interface.es.js +2 -0
  23. package/es/config/types/editor-config.interface.es.js.map +1 -0
  24. package/es/config/types/editor-modules.interface.es.js +2 -0
  25. package/es/config/types/editor-modules.interface.es.js.map +1 -0
  26. package/es/config/types/file-operation.interface.es.js +2 -0
  27. package/es/config/types/file-operation.interface.es.js.map +1 -0
  28. package/es/config/types/focus-change.interface.es.js +2 -0
  29. package/es/config/types/focus-change.interface.es.js.map +1 -0
  30. package/es/config/types/fullscreen-module.interface.es.js +2 -0
  31. package/es/config/types/fullscreen-module.interface.es.js.map +1 -0
  32. package/es/config/types/help-panel-item.interface.es.js +2 -0
  33. package/es/config/types/help-panel-item.interface.es.js.map +1 -0
  34. package/es/config/types/help-panel-option.interface.es.js +2 -0
  35. package/es/config/types/help-panel-option.interface.es.js.map +1 -0
  36. package/es/config/types/image-module.interface.es.js +2 -0
  37. package/es/config/types/image-module.interface.es.js.map +1 -0
  38. package/es/config/types/image-upload.interface.es.js +2 -0
  39. package/es/config/types/image-upload.interface.es.js.map +1 -0
  40. package/es/config/types/index.es.js +23 -0
  41. package/es/config/types/index.es.js.map +1 -0
  42. package/es/config/types/load-on-demand-module.interface.es.js +2 -0
  43. package/es/config/types/load-on-demand-module.interface.es.js.map +1 -0
  44. package/es/config/types/mention-module.interface.es.js +2 -0
  45. package/es/config/types/mention-module.interface.es.js.map +1 -0
  46. package/es/config/types/paste-change.interface.es.js +2 -0
  47. package/es/config/types/paste-change.interface.es.js.map +1 -0
  48. package/es/config/types/quick-menu-module.interface.es.js +2 -0
  49. package/es/config/types/quick-menu-module.interface.es.js.map +1 -0
  50. package/es/config/types/range.interface.es.js +2 -0
  51. package/es/config/types/range.interface.es.js.map +1 -0
  52. package/es/config/types/registry-options.interface.es.js +2 -0
  53. package/es/config/types/registry-options.interface.es.js.map +1 -0
  54. package/es/config/types/selection-change.interface.es.js +2 -0
  55. package/es/config/types/selection-change.interface.es.js.map +1 -0
  56. package/es/config/types/toolbar-item.interface.es.js +2 -0
  57. package/es/config/types/toolbar-item.interface.es.js.map +1 -0
  58. package/es/config/types/type.es.js +2 -0
  59. package/es/config/types/type.es.js.map +1 -0
  60. package/es/config/types/validate-error.interface.es.js +2 -0
  61. package/es/config/types/validate-error.interface.es.js.map +1 -0
  62. package/es/config.es.js +168 -0
  63. package/es/config.es.js.map +1 -0
  64. package/es/counter/index.es.js +60 -0
  65. package/es/counter/index.es.js.map +1 -0
  66. package/es/custom-clipboard.es.js +469 -0
  67. package/es/custom-clipboard.es.js.map +1 -0
  68. package/es/custom-image/BlotFormatter.es.js +136 -0
  69. package/es/custom-image/BlotFormatter.es.js.map +1 -0
  70. package/es/custom-image/Options.es.js +95 -0
  71. package/es/custom-image/Options.es.js.map +1 -0
  72. package/es/custom-image/actions/Action.es.js +15 -0
  73. package/es/custom-image/actions/Action.es.js.map +1 -0
  74. package/es/custom-image/actions/CustomResizeAction.es.js +158 -0
  75. package/es/custom-image/actions/CustomResizeAction.es.js.map +1 -0
  76. package/es/custom-image/actions/DeleteAction.es.js +31 -0
  77. package/es/custom-image/actions/DeleteAction.es.js.map +1 -0
  78. package/es/custom-image/image.es.js +95 -0
  79. package/es/custom-image/image.es.js.map +1 -0
  80. package/es/custom-image/specs/BlotSpec.es.js +27 -0
  81. package/es/custom-image/specs/BlotSpec.es.js.map +1 -0
  82. package/es/custom-image/specs/CustomImageSpec.es.js +117 -0
  83. package/es/custom-image/specs/CustomImageSpec.es.js.map +1 -0
  84. package/es/custom-image/specs/ImageSpec.es.js +29 -0
  85. package/es/custom-image/specs/ImageSpec.es.js.map +1 -0
  86. package/es/custom-uploader.es.js +161 -0
  87. package/es/custom-uploader.es.js.map +1 -0
  88. package/es/emoji/emoji-list/index.es.js +5 -0
  89. package/es/emoji/emoji-list/index.es.js.map +1 -0
  90. package/es/emoji/emoji-list/people.es.js +114 -0
  91. package/es/emoji/emoji-list/people.es.js.map +1 -0
  92. package/es/emoji/emoji-list.es.js +9 -0
  93. package/es/emoji/emoji-list.es.js.map +1 -0
  94. package/es/emoji/emoji-map.es.js +9 -0
  95. package/es/emoji/emoji-map.es.js.map +1 -0
  96. package/es/emoji/formats/emoji-blot.es.js +41 -0
  97. package/es/emoji/formats/emoji-blot.es.js.map +1 -0
  98. package/es/emoji/index.es.js +8 -0
  99. package/es/emoji/index.es.js.map +1 -0
  100. package/es/emoji/modules/emoji.es.js +248 -0
  101. package/es/emoji/modules/emoji.es.js.map +1 -0
  102. package/es/emoji/modules/toolbar-emoji.es.js +153 -0
  103. package/es/emoji/modules/toolbar-emoji.es.js.map +1 -0
  104. package/es/emoji/utils.es.js +19 -0
  105. package/es/emoji/utils.es.js.map +1 -0
  106. package/es/file/formats/file.es.js +56 -0
  107. package/es/file/formats/file.es.js.map +1 -0
  108. package/es/file/index.es.js +32 -0
  109. package/es/file/index.es.js.map +1 -0
  110. package/es/file/modules/file-bar.es.js +123 -0
  111. package/es/file/modules/file-bar.es.js.map +1 -0
  112. package/es/fluent-editor.es.js +163 -0
  113. package/es/fluent-editor.es.js.map +1 -0
  114. package/es/format-painter/index.es.js +66 -0
  115. package/es/format-painter/index.es.js.map +1 -0
  116. package/es/global-link/constants.es.js +9 -0
  117. package/es/global-link/constants.es.js.map +1 -0
  118. package/es/global-link/formats/customer-widget-link.es.js +28 -0
  119. package/es/global-link/formats/customer-widget-link.es.js.map +1 -0
  120. package/es/global-link/formats/doc-link.es.js +42 -0
  121. package/es/global-link/formats/doc-link.es.js.map +1 -0
  122. package/es/global-link/formats/wiki-link.es.js +34 -0
  123. package/es/global-link/formats/wiki-link.es.js.map +1 -0
  124. package/es/global-link/formats/work-item-link.es.js +36 -0
  125. package/es/global-link/formats/work-item-link.es.js.map +1 -0
  126. package/es/global-link/global-link-panel.es.js +2 -0
  127. package/es/global-link/global-link-panel.es.js.map +1 -0
  128. package/es/global-link/index.es.js +139 -0
  129. package/es/global-link/index.es.js.map +1 -0
  130. package/es/global-link/utils/createTable.es.js +50 -0
  131. package/es/global-link/utils/createTable.es.js.map +1 -0
  132. package/es/index.es.js +5 -0
  133. package/es/index.es.js.map +1 -0
  134. package/es/lineheight.es.js +11 -0
  135. package/es/lineheight.es.js.map +1 -0
  136. package/es/link/formats/link.es.js +34 -0
  137. package/es/link/formats/link.es.js.map +1 -0
  138. package/es/link/index.es.js +32 -0
  139. package/es/link/index.es.js.map +1 -0
  140. package/es/link/modules/tooltip.es.js +275 -0
  141. package/es/link/modules/tooltip.es.js.map +1 -0
  142. package/es/mention/Mention.es.js +329 -0
  143. package/es/mention/Mention.es.js.map +1 -0
  144. package/es/mention/MentionLink.es.js +37 -0
  145. package/es/mention/MentionLink.es.js.map +1 -0
  146. package/es/mention/constants.es.js +9 -0
  147. package/es/mention/constants.es.js.map +1 -0
  148. package/es/quick-menu/index.es.js +82 -0
  149. package/es/quick-menu/index.es.js.map +1 -0
  150. package/es/screenshot/index.es.js +147 -0
  151. package/es/screenshot/index.es.js.map +1 -0
  152. package/es/soft-break/index.es.js +23 -0
  153. package/es/soft-break/index.es.js.map +1 -0
  154. package/es/strike/index.es.js +12 -0
  155. package/es/strike/index.es.js.map +1 -0
  156. package/es/syntax/index.es.js +30 -0
  157. package/es/syntax/index.es.js.map +1 -0
  158. package/es/table/better-table.es.js +434 -0
  159. package/es/table/better-table.es.js.map +1 -0
  160. package/es/table/formats/header.es.js +94 -0
  161. package/es/table/formats/header.es.js.map +1 -0
  162. package/es/table/formats/list.es.js +163 -0
  163. package/es/table/formats/list.es.js.map +1 -0
  164. package/es/table/formats/table.es.js +970 -0
  165. package/es/table/formats/table.es.js.map +1 -0
  166. package/es/table/modules/table-column-tool.es.js +400 -0
  167. package/es/table/modules/table-column-tool.es.js.map +1 -0
  168. package/es/table/modules/table-operation-menu.es.js +457 -0
  169. package/es/table/modules/table-operation-menu.es.js.map +1 -0
  170. package/es/table/modules/table-scroll-bar.es.js +190 -0
  171. package/es/table/modules/table-scroll-bar.es.js.map +1 -0
  172. package/es/table/modules/table-selection.es.js +306 -0
  173. package/es/table/modules/table-selection.es.js.map +1 -0
  174. package/es/table/table-config.es.js +74 -0
  175. package/es/table/table-config.es.js.map +1 -0
  176. package/es/table/utils/index.es.js +54 -0
  177. package/es/table/utils/index.es.js.map +1 -0
  178. package/es/table/utils/node-matchers.es.js +292 -0
  179. package/es/table/utils/node-matchers.es.js.map +1 -0
  180. package/es/toolbar/better-picker.es.js +307 -0
  181. package/es/toolbar/better-picker.es.js.map +1 -0
  182. package/es/toolbar/index.es.js +139 -0
  183. package/es/toolbar/index.es.js.map +1 -0
  184. package/es/types/vue.d.es.js +2 -0
  185. package/es/types/vue.d.es.js.map +1 -0
  186. package/es/utils/debounce.es.js +112 -0
  187. package/es/utils/debounce.es.js.map +1 -0
  188. package/es/utils/method.es.js +68 -0
  189. package/es/utils/method.es.js.map +1 -0
  190. package/es/video/index.es.js +49 -0
  191. package/es/video/index.es.js.map +1 -0
  192. package/lib/config/base64-image.cjs.js +9 -0
  193. package/lib/config/base64-image.cjs.js.map +1 -0
  194. package/lib/config/editor.config.cjs.js +86 -0
  195. package/lib/config/editor.config.cjs.js.map +1 -0
  196. package/lib/config/editor.utils.cjs.js +141 -0
  197. package/lib/config/editor.utils.cjs.js.map +1 -0
  198. package/lib/config/i18n/en-us.cjs.js +90 -0
  199. package/lib/config/i18n/en-us.cjs.js.map +1 -0
  200. package/lib/config/i18n/zh-cn.cjs.js +90 -0
  201. package/lib/config/i18n/zh-cn.cjs.js.map +1 -0
  202. package/lib/config/icons.config.cjs.js +301 -0
  203. package/lib/config/icons.config.cjs.js.map +1 -0
  204. package/lib/config/types/additional-toolbar-item.interface.cjs.js +2 -0
  205. package/lib/config/types/additional-toolbar-item.interface.cjs.js.map +1 -0
  206. package/lib/config/types/content-change.interface.cjs.js +2 -0
  207. package/lib/config/types/content-change.interface.cjs.js.map +1 -0
  208. package/lib/config/types/content-save.interface.cjs.js +2 -0
  209. package/lib/config/types/content-save.interface.cjs.js.map +1 -0
  210. package/lib/config/types/counter-option.interface.cjs.js +2 -0
  211. package/lib/config/types/counter-option.interface.cjs.js.map +1 -0
  212. package/lib/config/types/editor-config.interface.cjs.js +2 -0
  213. package/lib/config/types/editor-config.interface.cjs.js.map +1 -0
  214. package/lib/config/types/editor-modules.interface.cjs.js +2 -0
  215. package/lib/config/types/editor-modules.interface.cjs.js.map +1 -0
  216. package/lib/config/types/file-operation.interface.cjs.js +2 -0
  217. package/lib/config/types/file-operation.interface.cjs.js.map +1 -0
  218. package/lib/config/types/focus-change.interface.cjs.js +2 -0
  219. package/lib/config/types/focus-change.interface.cjs.js.map +1 -0
  220. package/lib/config/types/fullscreen-module.interface.cjs.js +2 -0
  221. package/lib/config/types/fullscreen-module.interface.cjs.js.map +1 -0
  222. package/lib/config/types/help-panel-item.interface.cjs.js +2 -0
  223. package/lib/config/types/help-panel-item.interface.cjs.js.map +1 -0
  224. package/lib/config/types/help-panel-option.interface.cjs.js +2 -0
  225. package/lib/config/types/help-panel-option.interface.cjs.js.map +1 -0
  226. package/lib/config/types/image-module.interface.cjs.js +2 -0
  227. package/lib/config/types/image-module.interface.cjs.js.map +1 -0
  228. package/lib/config/types/image-upload.interface.cjs.js +2 -0
  229. package/lib/config/types/image-upload.interface.cjs.js.map +1 -0
  230. package/lib/config/types/index.cjs.js +24 -0
  231. package/lib/config/types/index.cjs.js.map +1 -0
  232. package/lib/config/types/load-on-demand-module.interface.cjs.js +2 -0
  233. package/lib/config/types/load-on-demand-module.interface.cjs.js.map +1 -0
  234. package/lib/config/types/mention-module.interface.cjs.js +2 -0
  235. package/lib/config/types/mention-module.interface.cjs.js.map +1 -0
  236. package/lib/config/types/paste-change.interface.cjs.js +2 -0
  237. package/lib/config/types/paste-change.interface.cjs.js.map +1 -0
  238. package/lib/config/types/quick-menu-module.interface.cjs.js +2 -0
  239. package/lib/config/types/quick-menu-module.interface.cjs.js.map +1 -0
  240. package/lib/config/types/range.interface.cjs.js +2 -0
  241. package/lib/config/types/range.interface.cjs.js.map +1 -0
  242. package/lib/config/types/registry-options.interface.cjs.js +2 -0
  243. package/lib/config/types/registry-options.interface.cjs.js.map +1 -0
  244. package/lib/config/types/selection-change.interface.cjs.js +2 -0
  245. package/lib/config/types/selection-change.interface.cjs.js.map +1 -0
  246. package/lib/config/types/toolbar-item.interface.cjs.js +2 -0
  247. package/lib/config/types/toolbar-item.interface.cjs.js.map +1 -0
  248. package/lib/config/types/type.cjs.js +2 -0
  249. package/lib/config/types/type.cjs.js.map +1 -0
  250. package/lib/config/types/validate-error.interface.cjs.js +2 -0
  251. package/lib/config/types/validate-error.interface.cjs.js.map +1 -0
  252. package/lib/config.cjs.js +168 -0
  253. package/lib/config.cjs.js.map +1 -0
  254. package/lib/counter/index.cjs.js +60 -0
  255. package/lib/counter/index.cjs.js.map +1 -0
  256. package/lib/custom-clipboard.cjs.js +469 -0
  257. package/lib/custom-clipboard.cjs.js.map +1 -0
  258. package/lib/custom-image/BlotFormatter.cjs.js +136 -0
  259. package/lib/custom-image/BlotFormatter.cjs.js.map +1 -0
  260. package/lib/custom-image/Options.cjs.js +95 -0
  261. package/lib/custom-image/Options.cjs.js.map +1 -0
  262. package/lib/custom-image/actions/Action.cjs.js +15 -0
  263. package/lib/custom-image/actions/Action.cjs.js.map +1 -0
  264. package/lib/custom-image/actions/CustomResizeAction.cjs.js +158 -0
  265. package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -0
  266. package/lib/custom-image/actions/DeleteAction.cjs.js +31 -0
  267. package/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -0
  268. package/lib/custom-image/image.cjs.js +95 -0
  269. package/lib/custom-image/image.cjs.js.map +1 -0
  270. package/lib/custom-image/specs/BlotSpec.cjs.js +27 -0
  271. package/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -0
  272. package/lib/custom-image/specs/CustomImageSpec.cjs.js +117 -0
  273. package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -0
  274. package/lib/custom-image/specs/ImageSpec.cjs.js +29 -0
  275. package/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -0
  276. package/lib/custom-uploader.cjs.js +161 -0
  277. package/lib/custom-uploader.cjs.js.map +1 -0
  278. package/lib/emoji/emoji-list/index.cjs.js +5 -0
  279. package/lib/emoji/emoji-list/index.cjs.js.map +1 -0
  280. package/lib/emoji/emoji-list/people.cjs.js +114 -0
  281. package/lib/emoji/emoji-list/people.cjs.js.map +1 -0
  282. package/lib/emoji/emoji-list.cjs.js +9 -0
  283. package/lib/emoji/emoji-list.cjs.js.map +1 -0
  284. package/lib/emoji/emoji-map.cjs.js +9 -0
  285. package/lib/emoji/emoji-map.cjs.js.map +1 -0
  286. package/lib/emoji/formats/emoji-blot.cjs.js +41 -0
  287. package/lib/emoji/formats/emoji-blot.cjs.js.map +1 -0
  288. package/lib/emoji/index.cjs.js +8 -0
  289. package/lib/emoji/index.cjs.js.map +1 -0
  290. package/lib/emoji/modules/emoji.cjs.js +248 -0
  291. package/lib/emoji/modules/emoji.cjs.js.map +1 -0
  292. package/lib/emoji/modules/toolbar-emoji.cjs.js +153 -0
  293. package/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -0
  294. package/lib/emoji/utils.cjs.js +19 -0
  295. package/lib/emoji/utils.cjs.js.map +1 -0
  296. package/lib/file/formats/file.cjs.js +56 -0
  297. package/lib/file/formats/file.cjs.js.map +1 -0
  298. package/lib/file/index.cjs.js +32 -0
  299. package/lib/file/index.cjs.js.map +1 -0
  300. package/lib/file/modules/file-bar.cjs.js +123 -0
  301. package/lib/file/modules/file-bar.cjs.js.map +1 -0
  302. package/lib/fluent-editor.cjs.js +163 -0
  303. package/lib/fluent-editor.cjs.js.map +1 -0
  304. package/lib/format-painter/index.cjs.js +66 -0
  305. package/lib/format-painter/index.cjs.js.map +1 -0
  306. package/lib/global-link/constants.cjs.js +9 -0
  307. package/lib/global-link/constants.cjs.js.map +1 -0
  308. package/lib/global-link/formats/customer-widget-link.cjs.js +28 -0
  309. package/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -0
  310. package/lib/global-link/formats/doc-link.cjs.js +42 -0
  311. package/lib/global-link/formats/doc-link.cjs.js.map +1 -0
  312. package/lib/global-link/formats/wiki-link.cjs.js +34 -0
  313. package/lib/global-link/formats/wiki-link.cjs.js.map +1 -0
  314. package/lib/global-link/formats/work-item-link.cjs.js +36 -0
  315. package/lib/global-link/formats/work-item-link.cjs.js.map +1 -0
  316. package/lib/global-link/global-link-panel.cjs.js +2 -0
  317. package/lib/global-link/global-link-panel.cjs.js.map +1 -0
  318. package/lib/global-link/index.cjs.js +139 -0
  319. package/lib/global-link/index.cjs.js.map +1 -0
  320. package/lib/global-link/utils/createTable.cjs.js +50 -0
  321. package/lib/global-link/utils/createTable.cjs.js.map +1 -0
  322. package/lib/index.cjs.js +5 -0
  323. package/lib/index.cjs.js.map +1 -0
  324. package/lib/lineheight.cjs.js +11 -0
  325. package/lib/lineheight.cjs.js.map +1 -0
  326. package/lib/link/formats/link.cjs.js +34 -0
  327. package/lib/link/formats/link.cjs.js.map +1 -0
  328. package/lib/link/index.cjs.js +32 -0
  329. package/lib/link/index.cjs.js.map +1 -0
  330. package/lib/link/modules/tooltip.cjs.js +275 -0
  331. package/lib/link/modules/tooltip.cjs.js.map +1 -0
  332. package/lib/mention/Mention.cjs.js +329 -0
  333. package/lib/mention/Mention.cjs.js.map +1 -0
  334. package/lib/mention/MentionLink.cjs.js +37 -0
  335. package/lib/mention/MentionLink.cjs.js.map +1 -0
  336. package/lib/mention/constants.cjs.js +9 -0
  337. package/lib/mention/constants.cjs.js.map +1 -0
  338. package/lib/quick-menu/index.cjs.js +82 -0
  339. package/lib/quick-menu/index.cjs.js.map +1 -0
  340. package/lib/screenshot/index.cjs.js +147 -0
  341. package/lib/screenshot/index.cjs.js.map +1 -0
  342. package/lib/soft-break/index.cjs.js +23 -0
  343. package/lib/soft-break/index.cjs.js.map +1 -0
  344. package/lib/strike/index.cjs.js +12 -0
  345. package/lib/strike/index.cjs.js.map +1 -0
  346. package/lib/syntax/index.cjs.js +30 -0
  347. package/lib/syntax/index.cjs.js.map +1 -0
  348. package/lib/table/better-table.cjs.js +434 -0
  349. package/lib/table/better-table.cjs.js.map +1 -0
  350. package/lib/table/formats/header.cjs.js +94 -0
  351. package/lib/table/formats/header.cjs.js.map +1 -0
  352. package/lib/table/formats/list.cjs.js +163 -0
  353. package/lib/table/formats/list.cjs.js.map +1 -0
  354. package/lib/table/formats/table.cjs.js +970 -0
  355. package/lib/table/formats/table.cjs.js.map +1 -0
  356. package/lib/table/modules/table-column-tool.cjs.js +400 -0
  357. package/lib/table/modules/table-column-tool.cjs.js.map +1 -0
  358. package/lib/table/modules/table-operation-menu.cjs.js +457 -0
  359. package/lib/table/modules/table-operation-menu.cjs.js.map +1 -0
  360. package/lib/table/modules/table-scroll-bar.cjs.js +190 -0
  361. package/lib/table/modules/table-scroll-bar.cjs.js.map +1 -0
  362. package/lib/table/modules/table-selection.cjs.js +306 -0
  363. package/lib/table/modules/table-selection.cjs.js.map +1 -0
  364. package/lib/table/table-config.cjs.js +74 -0
  365. package/lib/table/table-config.cjs.js.map +1 -0
  366. package/lib/table/utils/index.cjs.js +54 -0
  367. package/lib/table/utils/index.cjs.js.map +1 -0
  368. package/lib/table/utils/node-matchers.cjs.js +292 -0
  369. package/lib/table/utils/node-matchers.cjs.js.map +1 -0
  370. package/lib/toolbar/better-picker.cjs.js +308 -0
  371. package/lib/toolbar/better-picker.cjs.js.map +1 -0
  372. package/lib/toolbar/index.cjs.js +139 -0
  373. package/lib/toolbar/index.cjs.js.map +1 -0
  374. package/lib/types/vue.d.cjs.js +2 -0
  375. package/lib/types/vue.d.cjs.js.map +1 -0
  376. package/lib/utils/debounce.cjs.js +112 -0
  377. package/lib/utils/debounce.cjs.js.map +1 -0
  378. package/lib/utils/method.cjs.js +68 -0
  379. package/lib/utils/method.cjs.js.map +1 -0
  380. package/lib/video/index.cjs.js +49 -0
  381. package/lib/video/index.cjs.js.map +1 -0
  382. package/package.json +63 -65
  383. package/theme/index.css +4742 -0
  384. package/index.cjs.js +0 -374
  385. package/index.cjs.js.map +0 -1
  386. package/index.es.js +0 -51095
  387. package/index.es.js.map +0 -1
  388. package/style.css +0 -7
@@ -0,0 +1,123 @@
1
+ import Quill from "quill";
2
+ import { unshiftString } from "../../utils/method.es.js";
3
+ import File from "../formats/file.es.js";
4
+ import { Range } from "quill/core/selection";
5
+ const Delta = Quill.imports["delta"];
6
+ class FileBar {
7
+ constructor(quill, target) {
8
+ this.quill = quill;
9
+ this.file = target;
10
+ const fileBlot = Quill.find(target);
11
+ const index = this.quill.getIndex(fileBlot);
12
+ const [fileItem, offset] = this.quill.scroll.descendant(File, index);
13
+ const length = fileItem && fileItem.length();
14
+ this.fileRange = new Range(index - offset, length);
15
+ const timestamp = Number(this.file.dataset.lastModified);
16
+ const _lastModifiedDate = this.formatDate(timestamp);
17
+ this.template = [
18
+ // `<a class="ql-last-modified-date" href="${this.file.href}" target="_blank">${this.file.href}</a>`,
19
+ // '<span class="ql-split"></span>',
20
+ // `<a class="ql-file-preview"><i class="icon-preview"></i></a>`,
21
+ `<a class="ql-file-download"><i class="icon-download"></i></a>`,
22
+ '<a class="ql-file-delete"><i class="icon-delete"></i></a>'
23
+ ].join("");
24
+ this.createFileBar();
25
+ }
26
+ createFileBar() {
27
+ this.domNode = document.createElement("div");
28
+ this.domNode.className = "ql-file-bar";
29
+ this.domNode.innerHTML = this.template;
30
+ const filePreview = this.domNode.querySelector("a.ql-file-preview");
31
+ if (filePreview) {
32
+ filePreview.addEventListener("click", (event) => {
33
+ this.operateFile(event, "view");
34
+ });
35
+ }
36
+ const fileDownload = this.domNode.querySelector("a.ql-file-download");
37
+ if (fileDownload) {
38
+ fileDownload.addEventListener("click", (event) => {
39
+ this.operateFile(event, "download");
40
+ });
41
+ }
42
+ const fileDelete = this.domNode.querySelector("a.ql-file-delete");
43
+ if (fileDelete) {
44
+ fileDelete.addEventListener("click", (event) => {
45
+ this.operateFile(event, "delete");
46
+ const delta = new Delta().retain(this.fileRange.index).delete(this.fileRange.length);
47
+ this.quill.updateContents(delta, Quill.sources.USER);
48
+ this.quill.setSelection(this.fileRange.index);
49
+ });
50
+ }
51
+ this.setPosition();
52
+ this.quill.root.parentNode.appendChild(this.domNode);
53
+ }
54
+ destroy() {
55
+ if (this.domNode) {
56
+ this.domNode.remove();
57
+ this.domNode = null;
58
+ this.file = null;
59
+ }
60
+ }
61
+ operateFile(event, operate) {
62
+ event.preventDefault();
63
+ const fileId = this.file.dataset.id || "";
64
+ const fileDownloadUrl = this.file.href;
65
+ if (fileId) {
66
+ this.quill.emitter.emit("file-change", {
67
+ operation: operate,
68
+ data: { fileId, fileDownloadUrl }
69
+ });
70
+ }
71
+ if (operate === "download") {
72
+ const a = document.createElement("a");
73
+ a.href = fileDownloadUrl;
74
+ a.target = "_blank";
75
+ a.id = "exppub";
76
+ document.body.appendChild(a);
77
+ const alink = document.getElementById("exppub");
78
+ alink.click();
79
+ alink.parentNode.removeChild(a);
80
+ }
81
+ this.destroy();
82
+ }
83
+ setPosition() {
84
+ if (this.domNode && this.file) {
85
+ const parent = this.quill.root.parentNode;
86
+ const child = this.file.querySelector("span");
87
+ const containerRect = parent.getBoundingClientRect();
88
+ const fileRect = child.getBoundingClientRect();
89
+ this.css(this.domNode, {
90
+ left: `${fileRect.left - containerRect.left}px`,
91
+ top: `${fileRect.top - containerRect.top + 10}px`
92
+ });
93
+ }
94
+ }
95
+ css(domNode, rules) {
96
+ if (typeof rules === "object") {
97
+ for (const prop in rules) {
98
+ if (prop) {
99
+ if (Array.isArray(rules[prop])) {
100
+ rules[prop].forEach((val) => {
101
+ domNode.style[prop] = val;
102
+ });
103
+ } else {
104
+ domNode.style[prop] = rules[prop];
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ formatDate(timestamp) {
111
+ const date = new Date(timestamp);
112
+ const year = date.getFullYear();
113
+ const month = unshiftString(`${date.getMonth() + 1}`, 2, "0");
114
+ const day = unshiftString(`${date.getDate()}`, 2, "0");
115
+ const hour = unshiftString(`${date.getHours()}`, 2, "0");
116
+ const minute = unshiftString(`${date.getMinutes()}`, 2, "0");
117
+ return isNaN(year) ? "--" : `${year}/${month}/${day} ${hour}:${minute}`;
118
+ }
119
+ }
120
+ export {
121
+ FileBar as default
122
+ };
123
+ //# sourceMappingURL=file-bar.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-bar.es.js","sources":["../../../../src/file/modules/file-bar.ts"],"sourcesContent":["import Quill from 'quill'\r\n// devui-internal api: utils\\public-api.ts\r\n\r\nimport { unshiftString } from '../../utils/method'\r\nimport File from '../formats/file'\r\nconst Delta = Quill.imports['delta']\r\nimport { Range } from 'quill/core/selection'\r\n\r\nexport default class FileBar {\r\n quill: any\r\n file: any\r\n domNode: HTMLElement\r\n fileRange: any\r\n template: string\r\n\r\n constructor(quill, target) {\r\n this.quill = quill\r\n this.file = target\r\n const fileBlot = Quill.find(target)\r\n const index = this.quill.getIndex(fileBlot)\r\n const [fileItem, offset] = this.quill.scroll.descendant(File, index)\r\n const length = fileItem && fileItem.length()\r\n this.fileRange = new Range(index - offset, length)\r\n\r\n const timestamp = Number(this.file.dataset.lastModified)\r\n const _lastModifiedDate = this.formatDate(timestamp)\r\n this.template = [\r\n // `<a class=\"ql-last-modified-date\" href=\"${this.file.href}\" target=\"_blank\">${this.file.href}</a>`,\r\n // '<span class=\"ql-split\"></span>',\r\n // `<a class=\"ql-file-preview\"><i class=\"icon-preview\"></i></a>`,\r\n `<a class=\"ql-file-download\"><i class=\"icon-download\"></i></a>`,\r\n '<a class=\"ql-file-delete\"><i class=\"icon-delete\"></i></a>',\r\n ].join('')\r\n\r\n this.createFileBar()\r\n }\r\n\r\n createFileBar() {\r\n this.domNode = document.createElement('div')\r\n this.domNode.className = 'ql-file-bar'\r\n this.domNode.innerHTML = this.template\r\n // 查看文件\r\n const filePreview = this.domNode.querySelector('a.ql-file-preview')\r\n if (filePreview) {\r\n filePreview.addEventListener('click', (event) => {\r\n this.operateFile(event, 'view')\r\n })\r\n }\r\n // 下载文件\r\n const fileDownload = this.domNode.querySelector('a.ql-file-download')\r\n if (fileDownload) {\r\n fileDownload.addEventListener('click', (event) => {\r\n this.operateFile(event, 'download')\r\n })\r\n }\r\n // 删除文件\r\n const fileDelete = this.domNode.querySelector('a.ql-file-delete')\r\n if (fileDelete) {\r\n fileDelete.addEventListener('click', (event) => {\r\n this.operateFile(event, 'delete')\r\n const delta = new Delta()\r\n .retain(this.fileRange.index)\r\n .delete(this.fileRange.length)\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(this.fileRange.index)\r\n })\r\n }\r\n\r\n this.setPosition()\r\n this.quill.root.parentNode.appendChild(this.domNode)\r\n }\r\n\r\n destroy() {\r\n if (this.domNode) {\r\n this.domNode.remove()\r\n this.domNode = null\r\n this.file = null\r\n }\r\n }\r\n\r\n operateFile(event, operate) {\r\n event.preventDefault()\r\n const fileId = this.file.dataset.id || ''\r\n const fileDownloadUrl = this.file.href\r\n if (fileId) {\r\n this.quill.emitter.emit('file-change', {\r\n operation: operate,\r\n data: { fileId, fileDownloadUrl },\r\n })\r\n }\r\n if (operate === 'download') {\r\n const a = document.createElement('a')\r\n a.href = fileDownloadUrl\r\n a.target = '_blank'\r\n a.id = 'exppub'\r\n document.body.appendChild(a)\r\n const alink = document.getElementById('exppub')\r\n alink.click()\r\n alink.parentNode.removeChild(a)\r\n }\r\n this.destroy()\r\n }\r\n\r\n setPosition() {\r\n if (this.domNode && this.file) {\r\n const parent = this.quill.root.parentNode\r\n const child = this.file.querySelector('span')\r\n const containerRect = parent.getBoundingClientRect()\r\n const fileRect = child.getBoundingClientRect()\r\n this.css(this.domNode, {\r\n left: `${fileRect.left - containerRect.left}px`,\r\n top: `${fileRect.top - containerRect.top + 10}px`,\r\n })\r\n }\r\n }\r\n\r\n css(domNode, rules) {\r\n if (typeof rules === 'object') {\r\n for (const prop in rules) {\r\n if (prop) {\r\n if (Array.isArray(rules[prop])) {\r\n // 兼容IE11浏览器\r\n rules[prop].forEach((val) => {\r\n domNode.style[prop] = val\r\n })\r\n }\r\n else {\r\n domNode.style[prop] = rules[prop]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n formatDate(timestamp) {\r\n const date = new Date(timestamp)\r\n const year = date.getFullYear()\r\n // TODO\r\n const month = unshiftString(`${date.getMonth() + 1}`, 2, '0')\r\n const day = unshiftString(`${date.getDate()}`, 2, '0')\r\n const hour = unshiftString(`${date.getHours()}`, 2, '0')\r\n const minute = unshiftString(`${date.getMinutes()}`, 2, '0')\r\n return isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import Quill from "quill";
2
+ import { FONT_FAMILY_CONFIG, FONT_SIZE_CONFIG, ICONS_CONFIG, inputFile, getListValue, TABLE_RIGHT_MENU_CONFIG } from "./config.es.js";
3
+ import Counter from "./counter/index.es.js";
4
+ import CustomClipboard from "./custom-clipboard.es.js";
5
+ import BlotFormatter from "./custom-image/BlotFormatter.es.js";
6
+ import { CustomImageSpec } from "./custom-image/specs/CustomImageSpec.es.js";
7
+ import CustomUploader from "./custom-uploader.es.js";
8
+ import Emoji from "./emoji/index.es.js";
9
+ import FileModule from "./file/index.es.js";
10
+ import LineHeightStyle from "./lineheight.es.js";
11
+ import Link from "./link/index.es.js";
12
+ import Mention from "./mention/Mention.es.js";
13
+ import SoftBreak from "./soft-break/index.es.js";
14
+ import StrikeBlot from "./strike/index.es.js";
15
+ import BetterTable from "./table/better-table.es.js";
16
+ import CustomSyntax from "./syntax/index.es.js";
17
+ import BetterToolbar from "./toolbar/index.es.js";
18
+ import Video from "./video/index.es.js";
19
+ import { FormatPainter } from "./format-painter/index.es.js";
20
+ class FluentEditor extends Quill {
21
+ constructor(container, options = {}) {
22
+ super(container, options);
23
+ }
24
+ }
25
+ const registerModules = function() {
26
+ const FontClass = Quill.imports["formats/font"];
27
+ FontClass.whitelist = FONT_FAMILY_CONFIG;
28
+ const SizeStyle = Quill.imports["attributors/style/size"];
29
+ SizeStyle.whitelist = FONT_SIZE_CONFIG;
30
+ const Icons = Quill.imports["ui/icons"];
31
+ const iconKeys = Object.keys(ICONS_CONFIG);
32
+ iconKeys.forEach((iconKey) => {
33
+ Icons[iconKey] = ICONS_CONFIG[iconKey];
34
+ });
35
+ const SnowTheme = Quill.imports["themes/snow"];
36
+ SnowTheme.DEFAULTS = {
37
+ modules: {
38
+ "keyboard": {
39
+ bindings: {
40
+ ...BetterTable.keyboardBindings
41
+ }
42
+ },
43
+ "toolbar": {
44
+ handlers: {
45
+ ...SnowTheme.DEFAULTS.modules.toolbar.handlers,
46
+ "undo": function() {
47
+ this.quill.history.undo();
48
+ },
49
+ "redo": function() {
50
+ this.quill.history.redo();
51
+ },
52
+ "better-table": function() {
53
+ this.quill.getModule("better-table").insertTable(3, 3);
54
+ },
55
+ "file": function() {
56
+ var _a, _b;
57
+ const accept = (_b = (_a = this.quill.options) == null ? void 0 : _a.uploadOption) == null ? void 0 : _b.fileAccept;
58
+ inputFile.call(this, "file", accept);
59
+ },
60
+ "image": function() {
61
+ var _a, _b;
62
+ const accept = (_b = (_a = this.quill.options) == null ? void 0 : _a.uploadOption) == null ? void 0 : _b.imageAccept;
63
+ inputFile.call(this, "image", accept);
64
+ },
65
+ "emoji": function() {
66
+ },
67
+ "fullscreen": function() {
68
+ },
69
+ "list": function(value) {
70
+ var _a, _b;
71
+ const range = this.quill.getSelection();
72
+ const formats = this.quill.getFormat(range);
73
+ const preListValue = Array.isArray(formats.list) ? (_a = formats.list[0]) == null ? void 0 : _a.value : (_b = formats.list) == null ? void 0 : _b.value;
74
+ const curListValue = getListValue(value, preListValue);
75
+ const lines = this.quill.getLines(range.index, range.length);
76
+ const tableCols = lines.filter((line) => line.statics.blotName === "table-col" && !line.prev);
77
+ if (tableCols.length) {
78
+ let start = range.index;
79
+ tableCols.forEach((item, index) => {
80
+ const table = item.domNode.closest("table.quill-better-table");
81
+ const tableBlot = Quill.find(table);
82
+ const tableLength = tableBlot.length();
83
+ const tableStart = this.quill.getIndex(item);
84
+ const tableEnd = tableStart + tableLength;
85
+ const beforeTableRangeLength = tableStart - start;
86
+ this.quill.setSelection(start, beforeTableRangeLength, Quill.sources.SILENT);
87
+ this.quill.format("list", curListValue, Quill.sources.USER);
88
+ table.parentNode.classList.remove("quill-better-table-selected");
89
+ start = tableEnd;
90
+ if (index === tableCols.length - 1) {
91
+ this.quill.setSelection(tableEnd, range.index + range.length - tableEnd);
92
+ this.quill.format("list", curListValue, Quill.sources.USER);
93
+ }
94
+ });
95
+ } else {
96
+ this.quill.format("list", curListValue, Quill.sources.USER);
97
+ }
98
+ },
99
+ [FormatPainter.toolName]: FormatPainter
100
+ }
101
+ },
102
+ "better-table": {
103
+ operationMenu: {
104
+ items: TABLE_RIGHT_MENU_CONFIG,
105
+ color: true
106
+ }
107
+ },
108
+ "image": {
109
+ specs: [CustomImageSpec],
110
+ overlay: {
111
+ style: {
112
+ border: "1px dashed rgb(68, 68, 68)"
113
+ }
114
+ },
115
+ align: {
116
+ icons: {
117
+ left: '<i class="icon-text-align-left"></i>',
118
+ center: '<i class="icon-text-align-center"></i>',
119
+ right: '<i class="icon-text-align-right"></i>'
120
+ }
121
+ }
122
+ }
123
+ }
124
+ };
125
+ FluentEditor.register(
126
+ {
127
+ "modules/toolbar": BetterToolbar,
128
+ "modules/mention": Mention,
129
+ "modules/better-table": BetterTable,
130
+ "modules/clipboard": CustomClipboard,
131
+ "modules/uploader": CustomUploader,
132
+ // 三者关联性最强
133
+ "modules/image": BlotFormatter,
134
+ // 三者关联性最强
135
+ "modules/file": FileModule,
136
+ // 三者关联性最强
137
+ "modules/counter": Counter,
138
+ "formats/font": FontClass,
139
+ "formats/size": SizeStyle,
140
+ "formats/strike": StrikeBlot,
141
+ "formats/softBreak": SoftBreak,
142
+ "formats/lineheight": LineHeightStyle,
143
+ "formats/video": Video,
144
+ "formats/emoji": Emoji.EmojiBlot,
145
+ "modules/emoji-toolbar": Emoji.ToolbarEmoji,
146
+ "modules/emoji-shortname": Emoji.ShortNameEmoji,
147
+ // 'modules/global-link': GlobalLink,//暂未开发
148
+ "modules/link": Link,
149
+ // 报错
150
+ // 'modules/screenshot': Screenshot,//暂未开发
151
+ // 'modules/quickmenu': QuickMenu,//暂未开发
152
+ "modules/syntax": CustomSyntax
153
+ },
154
+ true
155
+ // 覆盖内部模块
156
+ );
157
+ return FluentEditor;
158
+ };
159
+ const FluentEditor$1 = registerModules();
160
+ export {
161
+ FluentEditor$1 as default
162
+ };
163
+ //# sourceMappingURL=fluent-editor.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluent-editor.es.js","sources":["../../src/fluent-editor.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport type { Module, Parchment as TypeParchment } from 'quill'\r\nimport { FONT_FAMILY_CONFIG, FONT_SIZE_CONFIG, ICONS_CONFIG, TABLE_RIGHT_MENU_CONFIG, inputFile, getListValue } from './config'\r\nimport Counter from './counter' // 字符统计\r\nimport CustomClipboard from './custom-clipboard' // 粘贴板\r\nimport CustomImage from './custom-image/BlotFormatter' // 图片\r\nimport { CustomImageSpec } from './custom-image/specs/CustomImageSpec' // 图片拉伸模块\r\nimport CustomUploader from './custom-uploader' // 上传\r\nimport Emoji from './emoji' // 表情\r\nimport FileModule from './file' // 文件\r\n// import GlobalLink from './global-link' // 全局链接\r\nimport LineHeightStyle from './lineheight'\r\nimport Link from './link' // 超链接0\r\nimport Mention from './mention/Mention' // @提醒\r\n// import QuickMenu from './quick-menu' // 快捷菜单\r\n// import Screenshot from './screenshot' // 截图\r\nimport SoftBreak from './soft-break' // 软回车\r\nimport Strike from './strike' // 删除线\r\nimport BetterTable from './table/better-table' // 表格\r\nimport CustomSyntax from './syntax' // 代码块高亮\r\nimport Toolbar from './toolbar' // 工具栏\r\nimport Video from './video' // 视频\r\nimport { FormatPainter } from './format-painter'\r\nimport { IEditorConfig } from './config/types'\r\n\r\nclass FluentEditor extends Quill {\r\n constructor(container: HTMLElement | string, options: IEditorConfig = {}) {\r\n super(container, options)\r\n }\r\n}\r\n\r\nconst registerModules = function () {\r\n const FontClass = Quill.imports['formats/font'] as TypeParchment.ClassAttributor\r\n FontClass.whitelist = FONT_FAMILY_CONFIG\r\n\r\n const SizeStyle = Quill.imports['attributors/style/size'] as TypeParchment.StyleAttributor\r\n // const SizeClass = Quill.imports['attributors/class/size']\r\n SizeStyle.whitelist = FONT_SIZE_CONFIG\r\n\r\n const Icons = Quill.imports['ui/icons']\r\n const iconKeys = Object.keys(ICONS_CONFIG)\r\n iconKeys.forEach((iconKey) => {\r\n Icons[iconKey] = ICONS_CONFIG[iconKey]\r\n })\r\n\r\n const SnowTheme = Quill.imports['themes/snow'] as typeof Module\r\n SnowTheme.DEFAULTS = {\r\n modules: {\r\n 'keyboard': {\r\n bindings: {\r\n ...BetterTable.keyboardBindings,\r\n },\r\n },\r\n 'toolbar': {\r\n handlers: {\r\n ...(SnowTheme.DEFAULTS as Record<string, any>).modules.toolbar.handlers,\r\n 'undo': function () {\r\n this.quill.history.undo()\r\n },\r\n 'redo': function () {\r\n this.quill.history.redo()\r\n },\r\n 'better-table': function () {\r\n this.quill.getModule('better-table').insertTable(3, 3)\r\n },\r\n 'file': function () {\r\n const accept = this.quill.options?.uploadOption?.fileAccept\r\n inputFile.call(this, 'file', accept)\r\n },\r\n 'image': function () {\r\n const accept = this.quill.options?.uploadOption?.imageAccept\r\n inputFile.call(this, 'image', accept)\r\n },\r\n 'emoji': function () {},\r\n 'fullscreen': function () {},\r\n 'list': function (value) {\r\n const range = this.quill.getSelection()\r\n const formats = this.quill.getFormat(range)\r\n const preListValue = Array.isArray(formats.list) ? formats.list[0]?.value : formats.list?.value\r\n const curListValue = getListValue(value, preListValue)\r\n // 如果设置list的选区中有表格,判断第一个table-col位置,将表格前的内容设置为list格式\r\n const lines = this.quill.getLines(range.index, range.length)\r\n const tableCols = lines.filter(line => line.statics.blotName === 'table-col' && !line.prev)\r\n if (tableCols.length) {\r\n let start = range.index\r\n // 遍历table-col群组,以之获取表格,将表格前选区设置为对应list格式\r\n tableCols.forEach((item, index) => {\r\n const table = item.domNode.closest('table.quill-better-table')\r\n const tableBlot = Quill.find(table) as TypeParchment.Blot\r\n const tableLength = tableBlot.length()\r\n const tableStart = this.quill.getIndex(item)\r\n const tableEnd = tableStart + tableLength\r\n const beforeTableRangeLength = tableStart - start\r\n // 在表格前设置列表\r\n this.quill.setSelection(start, beforeTableRangeLength, Quill.sources.SILENT)\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n table.parentNode.classList.remove('quill-better-table-selected')\r\n // 当前表格末尾为下一个选取的开始\r\n start = tableEnd\r\n if (index === tableCols.length - 1) {\r\n // 将最后一个表格之后所有选区内容设置list格式\r\n this.quill.setSelection(tableEnd, range.index + range.length - tableEnd)\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n }\r\n })\r\n }\r\n else {\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n }\r\n },\r\n [FormatPainter.toolName]: FormatPainter,\r\n },\r\n },\r\n 'better-table': {\r\n operationMenu: {\r\n items: TABLE_RIGHT_MENU_CONFIG,\r\n color: true,\r\n },\r\n },\r\n 'image': {\r\n specs: [CustomImageSpec],\r\n overlay: {\r\n style: {\r\n border: '1px dashed rgb(68, 68, 68)',\r\n },\r\n },\r\n align: {\r\n icons: {\r\n left: '<i class=\"icon-text-align-left\"></i>',\r\n center: '<i class=\"icon-text-align-center\"></i>',\r\n right: '<i class=\"icon-text-align-right\"></i>',\r\n },\r\n },\r\n },\r\n },\r\n }\r\n\r\n FluentEditor.register(\r\n {\r\n 'modules/toolbar': Toolbar,\r\n 'modules/mention': Mention,\r\n 'modules/better-table': BetterTable,\r\n 'modules/clipboard': CustomClipboard,\r\n 'modules/uploader': CustomUploader, // 三者关联性最强\r\n 'modules/image': CustomImage, // 三者关联性最强\r\n 'modules/file': FileModule, // 三者关联性最强\r\n 'modules/counter': Counter,\r\n 'formats/font': FontClass,\r\n 'formats/size': SizeStyle,\r\n 'formats/strike': Strike,\r\n 'formats/softBreak': SoftBreak,\r\n 'formats/lineheight': LineHeightStyle,\r\n 'formats/video': Video,\r\n 'formats/emoji': Emoji.EmojiBlot,\r\n 'modules/emoji-toolbar': Emoji.ToolbarEmoji,\r\n 'modules/emoji-shortname': Emoji.ShortNameEmoji,\r\n // 'modules/global-link': GlobalLink,//暂未开发\r\n 'modules/link': Link, // 报错\r\n // 'modules/screenshot': Screenshot,//暂未开发\r\n // 'modules/quickmenu': QuickMenu,//暂未开发\r\n 'modules/syntax': CustomSyntax,\r\n },\r\n true, // 覆盖内部模块\r\n )\r\n\r\n return FluentEditor\r\n}\r\n\r\nexport default registerModules()\r\n"],"names":["Toolbar","CustomImage","Strike"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import Quill from "quill";
2
+ function FormatPainter() {
3
+ if (!this.formatPainter) {
4
+ this.formatPainter = {
5
+ rangeFormat: {},
6
+ isFormatterLock: false,
7
+ isFormating: false,
8
+ prepareLock: false
9
+ };
10
+ }
11
+ const [, formatterBtn] = this.controls.find(([name]) => name === FormatPainter.toolName);
12
+ const formatRange = (range) => {
13
+ if (!range) return;
14
+ this.quill.removeFormat(range.index, range.length);
15
+ for (const format in this.formatPainter.rangeFormat) {
16
+ this.quill.format(format, this.formatPainter.rangeFormat[format], Quill.sources.USER);
17
+ }
18
+ if (!this.formatPainter.isFormatterLock) {
19
+ unbindFormatSelect();
20
+ } else {
21
+ btnActive();
22
+ }
23
+ };
24
+ const btnActive = () => {
25
+ setTimeout(() => {
26
+ formatterBtn.classList.add("ql-active");
27
+ }, 0);
28
+ };
29
+ const btnRemoveActive = () => {
30
+ setTimeout(() => {
31
+ formatterBtn.classList.remove("ql-active");
32
+ }, 0);
33
+ };
34
+ const bindFormatSelect = () => {
35
+ const range = this.quill.getSelection();
36
+ if (range.length === 0) return;
37
+ this.formatPainter.rangeFormat = this.quill.getFormat(range);
38
+ this.formatPainter.isFormating = true;
39
+ this.quill.on(Quill.events.SELECTION_CHANGE, formatRange);
40
+ btnActive();
41
+ };
42
+ const unbindFormatSelect = () => {
43
+ this.quill.off(Quill.events.SELECTION_CHANGE, formatRange);
44
+ this.formatPainter.rangeFormat = void 0;
45
+ btnRemoveActive();
46
+ this.formatPainter.isFormating = false;
47
+ this.formatPainter.isFormatterLock = false;
48
+ };
49
+ if (this.formatPainter.isFormatterLock || this.formatPainter.isFormating && !this.formatPainter.prepareLock) {
50
+ unbindFormatSelect();
51
+ } else if (this.formatPainter.isFormating && this.formatPainter.prepareLock) {
52
+ this.formatPainter.isFormatterLock = true;
53
+ btnActive();
54
+ } else {
55
+ this.formatPainter.prepareLock = true;
56
+ setTimeout(() => {
57
+ this.formatPainter.prepareLock = false;
58
+ }, 200);
59
+ bindFormatSelect();
60
+ }
61
+ }
62
+ FormatPainter.toolName = "format-painter";
63
+ export {
64
+ FormatPainter
65
+ };
66
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/format-painter/index.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport type { Range } from 'quill'\r\nimport type Toolbar from 'quill/modules/toolbar'\r\n\r\ntype FormatData = {\r\n formatPainter: {\r\n rangeFormat: Record<string, any>\r\n isFormatterLock: boolean\r\n isFormating: boolean\r\n prepareLock: boolean\r\n }\r\n}\r\nexport function FormatPainter(this: Toolbar & FormatData) {\r\n if (!this.formatPainter) {\r\n this.formatPainter = {\r\n rangeFormat: {},\r\n isFormatterLock: false,\r\n isFormating: false,\r\n prepareLock: false,\r\n }\r\n }\r\n const [, formatterBtn] = this.controls.find(([name]) => name === FormatPainter.toolName)\r\n const formatRange = (range: Range | null) => {\r\n if (!range) return\r\n this.quill.removeFormat(range.index, range.length)\r\n for (const format in this.formatPainter.rangeFormat) {\r\n this.quill.format(format, this.formatPainter.rangeFormat[format], Quill.sources.USER)\r\n }\r\n if (!this.formatPainter.isFormatterLock) {\r\n unbindFormatSelect()\r\n }\r\n else {\r\n btnActive()\r\n }\r\n }\r\n // setTime for Toolbar.update\r\n const btnActive = () => {\r\n setTimeout(() => {\r\n formatterBtn.classList.add('ql-active')\r\n }, 0)\r\n }\r\n const btnRemoveActive = () => {\r\n setTimeout(() => {\r\n formatterBtn.classList.remove('ql-active')\r\n }, 0)\r\n }\r\n const bindFormatSelect = () => {\r\n const range = this.quill.getSelection()\r\n if (range.length === 0) return\r\n this.formatPainter.rangeFormat = this.quill.getFormat(range)\r\n this.formatPainter.isFormating = true\r\n this.quill.on(Quill.events.SELECTION_CHANGE, formatRange)\r\n btnActive()\r\n }\r\n const unbindFormatSelect = () => {\r\n this.quill.off(Quill.events.SELECTION_CHANGE, formatRange)\r\n this.formatPainter.rangeFormat = undefined\r\n btnRemoveActive()\r\n this.formatPainter.isFormating = false\r\n this.formatPainter.isFormatterLock = false\r\n }\r\n\r\n if (this.formatPainter.isFormatterLock || (this.formatPainter.isFormating && !this.formatPainter.prepareLock)) {\r\n unbindFormatSelect()\r\n }\r\n else if (this.formatPainter.isFormating && this.formatPainter.prepareLock) {\r\n this.formatPainter.isFormatterLock = true\r\n btnActive()\r\n }\r\n else {\r\n // imitate double click\r\n this.formatPainter.prepareLock = true\r\n setTimeout(() => {\r\n this.formatPainter.prepareLock = false\r\n }, 200)\r\n bindFormatSelect()\r\n }\r\n}\r\nFormatPainter.toolName = 'format-painter'\r\n"],"names":[],"mappings":";AAYO,SAAS,gBAA0C;AACpD,MAAA,CAAC,KAAK,eAAe;AACvB,SAAK,gBAAgB;AAAA,MACnB,aAAa,CAAC;AAAA,MACd,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,EAEjB;AACA,QAAM,GAAG,YAAY,IAAI,KAAK,SAAS,KAAK,CAAC,CAAC,IAAI,MAAM,SAAS,cAAc,QAAQ;AACjF,QAAA,cAAc,CAAC,UAAwB;AAC3C,QAAI,CAAC,MAAO;AACZ,SAAK,MAAM,aAAa,MAAM,OAAO,MAAM,MAAM;AACtC,eAAA,UAAU,KAAK,cAAc,aAAa;AAC9C,WAAA,MAAM,OAAO,QAAQ,KAAK,cAAc,YAAY,MAAM,GAAG,MAAM,QAAQ,IAAI;AAAA,IACtF;AACI,QAAA,CAAC,KAAK,cAAc,iBAAiB;AACpB;IAAA,OAEhB;AACO;IACZ;AAAA,EAAA;AAGF,QAAM,YAAY,MAAM;AACtB,eAAW,MAAM;AACF,mBAAA,UAAU,IAAI,WAAW;AAAA,OACrC,CAAC;AAAA,EAAA;AAEN,QAAM,kBAAkB,MAAM;AAC5B,eAAW,MAAM;AACF,mBAAA,UAAU,OAAO,WAAW;AAAA,OACxC,CAAC;AAAA,EAAA;AAEN,QAAM,mBAAmB,MAAM;AACvB,UAAA,QAAQ,KAAK,MAAM,aAAa;AAClC,QAAA,MAAM,WAAW,EAAG;AACxB,SAAK,cAAc,cAAc,KAAK,MAAM,UAAU,KAAK;AAC3D,SAAK,cAAc,cAAc;AACjC,SAAK,MAAM,GAAG,MAAM,OAAO,kBAAkB,WAAW;AAC9C;EAAA;AAEZ,QAAM,qBAAqB,MAAM;AAC/B,SAAK,MAAM,IAAI,MAAM,OAAO,kBAAkB,WAAW;AACzD,SAAK,cAAc,cAAc;AACjB;AAChB,SAAK,cAAc,cAAc;AACjC,SAAK,cAAc,kBAAkB;AAAA,EAAA;AAGnC,MAAA,KAAK,cAAc,mBAAoB,KAAK,cAAc,eAAe,CAAC,KAAK,cAAc,aAAc;AAC1F;EAAA,WAEZ,KAAK,cAAc,eAAe,KAAK,cAAc,aAAa;AACzE,SAAK,cAAc,kBAAkB;AAC3B;EAAA,OAEP;AAEH,SAAK,cAAc,cAAc;AACjC,eAAW,MAAM;AACf,WAAK,cAAc,cAAc;AAAA,OAChC,GAAG;AACW;EACnB;AACF;AACA,cAAc,WAAW;"}
@@ -0,0 +1,9 @@
1
+ const ON_WIKI_LINK_REMOVE = "wiki-link/remove";
2
+ const ON_DOC_LINK_REMOVE = "doc-link/remove";
3
+ const ON_WORK_ITEM_LINK_REMOVE = "work-item-link/remove";
4
+ export {
5
+ ON_DOC_LINK_REMOVE,
6
+ ON_WIKI_LINK_REMOVE,
7
+ ON_WORK_ITEM_LINK_REMOVE
8
+ };
9
+ //# sourceMappingURL=constants.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.es.js","sources":["../../../src/global-link/constants.ts"],"sourcesContent":["export const ON_WIKI_LINK_REMOVE = 'wiki-link/remove'\r\nexport const ON_DOC_LINK_REMOVE = 'doc-link/remove'\r\nexport const ON_WORK_ITEM_LINK_REMOVE = 'work-item-link/remove'\r\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,2BAA2B;"}
@@ -0,0 +1,28 @@
1
+ import Quill from "quill";
2
+ const BlockEmbed = Quill.imports["blots/block/embed"];
3
+ class CustomerWidgetLink extends BlockEmbed {
4
+ static create(value) {
5
+ const node = super.create(value);
6
+ node.setAttribute("data-widget-type", value.type);
7
+ node.setAttribute("data-widget-id", value.id);
8
+ node.setAttribute("src", value.value);
9
+ return node;
10
+ }
11
+ static value(domNode) {
12
+ return {
13
+ type: domNode.getAttribute("data-widget-type"),
14
+ id: domNode.getAttribute("data-widget-id"),
15
+ value: domNode.getAttribute("src")
16
+ };
17
+ }
18
+ constructor(scroll, domNode, data) {
19
+ super(scroll, domNode, data);
20
+ }
21
+ }
22
+ CustomerWidgetLink.blotName = "customer-widget-link";
23
+ CustomerWidgetLink.tagName = "img";
24
+ CustomerWidgetLink.className = "ql-customer-widget-link";
25
+ export {
26
+ CustomerWidgetLink as default
27
+ };
28
+ //# sourceMappingURL=customer-widget-link.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer-widget-link.es.js","sources":["../../../../src/global-link/formats/customer-widget-link.ts"],"sourcesContent":["import Quill from 'quill'\r\n\r\nconst BlockEmbed = Quill.imports['blots/block/embed']\r\n\r\n// @dynamic\r\nclass CustomerWidgetLink extends BlockEmbed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('data-widget-type', value.type)\r\n node.setAttribute('data-widget-id', value.id)\r\n node.setAttribute('src', value.value)\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n type: domNode.getAttribute('data-widget-type'),\r\n id: domNode.getAttribute('data-widget-id'),\r\n value: domNode.getAttribute('src'),\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n }\r\n}\r\n\r\nCustomerWidgetLink.blotName = 'customer-widget-link'\r\nCustomerWidgetLink.tagName = 'img'\r\nCustomerWidgetLink.className = 'ql-customer-widget-link'\r\n\r\nexport default CustomerWidgetLink\r\n"],"names":[],"mappings":";AAEA,MAAM,aAAa,MAAM,QAAQ,mBAAmB;AAGpD,MAAM,2BAA2B,WAAW;AAAA,EAK1C,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,oBAAoB,MAAM,IAAI;AAC3C,SAAA,aAAa,kBAAkB,MAAM,EAAE;AACvC,SAAA,aAAa,OAAO,MAAM,KAAK;AAC7B,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,kBAAkB;AAAA,MAC7C,IAAI,QAAQ,aAAa,gBAAgB;AAAA,MACzC,OAAO,QAAQ,aAAa,KAAK;AAAA,IAAA;AAAA,EAErC;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAAA,EAC7B;AACF;AAEA,mBAAmB,WAAW;AAC9B,mBAAmB,UAAU;AAC7B,mBAAmB,YAAY;"}
@@ -0,0 +1,42 @@
1
+ import Quill from "quill";
2
+ import { ON_DOC_LINK_REMOVE } from "../constants.es.js";
3
+ const Embed = Quill.imports["blots/embed"];
4
+ class DocumentLink extends Embed {
5
+ static create(value) {
6
+ const node = super.create(value);
7
+ node.setAttribute("href", value.link);
8
+ node.setAttribute("title", value.text);
9
+ node.setAttribute("target", "_blank");
10
+ node.setAttribute("icon-link", value.icon);
11
+ const icon = document.createElement("span");
12
+ icon.classList.add("ql-doc-link-icon");
13
+ icon.style.background = `url(${value.icon}) no-repeat center`;
14
+ icon.style.backgroundSize = "contain";
15
+ node.insertAdjacentElement("afterbegin", icon);
16
+ const text = document.createTextNode(value.text);
17
+ node.appendChild(text);
18
+ return node;
19
+ }
20
+ static value(domNode) {
21
+ return {
22
+ link: domNode.getAttribute("href"),
23
+ icon: domNode.getAttribute("icon-link"),
24
+ text: domNode.textContent
25
+ };
26
+ }
27
+ constructor(scroll, domNode, data) {
28
+ super(scroll, domNode, data);
29
+ this.docData = data;
30
+ }
31
+ remove() {
32
+ this.scroll.emitter.emit(ON_DOC_LINK_REMOVE, this.docData);
33
+ return super.remove();
34
+ }
35
+ }
36
+ DocumentLink.blotName = "doc-link";
37
+ DocumentLink.tagName = "A";
38
+ DocumentLink.className = "ql-doc-link";
39
+ export {
40
+ DocumentLink as default
41
+ };
42
+ //# sourceMappingURL=doc-link.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-link.es.js","sources":["../../../../src/global-link/formats/doc-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_DOC_LINK_REMOVE } from '../constants'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\n\r\n// @dynamic\r\nclass DocumentLink extends Embed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n docData: 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('title', value.text)\r\n node.setAttribute('target', '_blank')\r\n node.setAttribute('icon-link', value.icon)\r\n\r\n const icon = document.createElement('span')\r\n icon.classList.add('ql-doc-link-icon')\r\n icon.style.background = `url(${value.icon}) no-repeat center`\r\n icon.style.backgroundSize = 'contain'\r\n\r\n node.insertAdjacentElement('afterbegin', icon)\r\n const text = document.createTextNode(value.text)\r\n node.appendChild(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 icon: domNode.getAttribute('icon-link'),\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.docData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_DOC_LINK_REMOVE, this.docData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nDocumentLink.blotName = 'doc-link'\r\nDocumentLink.tagName = 'A'\r\nDocumentLink.className = 'ql-doc-link'\r\n\r\nexport default DocumentLink\r\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,qBAAqB,MAAM;AAAA,EAO/B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,QAAQ,MAAM,IAAI;AAC/B,SAAA,aAAa,SAAS,MAAM,IAAI;AAChC,SAAA,aAAa,UAAU,QAAQ;AAC/B,SAAA,aAAa,aAAa,MAAM,IAAI;AAEnC,UAAA,OAAO,SAAS,cAAc,MAAM;AACrC,SAAA,UAAU,IAAI,kBAAkB;AACrC,SAAK,MAAM,aAAa,OAAO,MAAM,IAAI;AACzC,SAAK,MAAM,iBAAiB;AAEvB,SAAA,sBAAsB,cAAc,IAAI;AAC7C,UAAM,OAAO,SAAS,eAAe,MAAM,IAAI;AAC/C,SAAK,YAAY,IAAI;AACd,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,QAAQ,aAAa,WAAW;AAAA,MACtC,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,oBAAoB,KAAK,OAAO;AACzD,WAAO,MAAM;EACf;AACF;AAEA,aAAa,WAAW;AACxB,aAAa,UAAU;AACvB,aAAa,YAAY;"}
@@ -0,0 +1,34 @@
1
+ import Quill from "quill";
2
+ import { ON_WIKI_LINK_REMOVE } from "../constants.es.js";
3
+ const Embed = Quill.imports["blots/embed"];
4
+ class WikiLink extends Embed {
5
+ static create(value) {
6
+ const node = super.create(value);
7
+ node.setAttribute("href", value.link);
8
+ node.setAttribute("target", "_blank");
9
+ node.setAttribute("title", value.text);
10
+ node.textContent = value.text;
11
+ return node;
12
+ }
13
+ static value(domNode) {
14
+ return {
15
+ link: domNode.getAttribute("href"),
16
+ text: domNode.textContent
17
+ };
18
+ }
19
+ constructor(scroll, domNode, data) {
20
+ super(scroll, domNode, data);
21
+ this.wikiData = data;
22
+ }
23
+ remove() {
24
+ this.scroll.emitter.emit(ON_WIKI_LINK_REMOVE, this.wikiData);
25
+ return super.remove();
26
+ }
27
+ }
28
+ WikiLink.blotName = "wiki-link";
29
+ WikiLink.tagName = "A";
30
+ WikiLink.className = "ql-wiki-link";
31
+ export {
32
+ WikiLink as default
33
+ };
34
+ //# sourceMappingURL=wiki-link.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-link.es.js","sources":["../../../../src/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,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,qBAAqB,KAAK,QAAQ;AAC3D,WAAO,MAAM;EACf;AACF;AAEA,SAAS,WAAW;AACpB,SAAS,UAAU;AACnB,SAAS,YAAY;"}
@@ -0,0 +1,36 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-item-link.es.js","sources":["../../../../src/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\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":";;;AAGA,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,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,KAAK,MAAM,QAAQ,aAAa,oBAAoB,CAAC;AAAA,IAAA;AAAA,EAE/D;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,0BAA0B,KAAK,YAAY;AACpE,WAAO,MAAM;EACf;AACF;AAEA,aAAa,WAAW;AACxB,aAAa,UAAU;AACvB,aAAa,YAAY;"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=global-link-panel.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-link-panel.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}