@opentiny/fluent-editor 3.19.0 → 3.19.1-alpha.1

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/style.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,457 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const Quill = require("quill");
4
+ const editor_config = require("../../config/editor.config.cjs.js");
5
+ const index = require("../utils/index.cjs.js");
6
+ const tableConfig = require("../table-config.cjs.js");
7
+ const MENU_ITEMS_DEFAULT = {
8
+ copyCells: {
9
+ text: "Copy Cells",
10
+ handler() {
11
+ this.onCopy("copy");
12
+ }
13
+ },
14
+ copyTable: {
15
+ text: "Copy Table",
16
+ handler() {
17
+ this.tableColumnTool.destroy();
18
+ this.tableScrollBar.destroy();
19
+ this.tableSelection.clearSelection();
20
+ const dom = this.table.cloneNode(true);
21
+ const trArr = dom.querySelectorAll("tr[data-row]");
22
+ trArr.forEach((tr) => tr.removeAttribute("data-row"));
23
+ dom.style.position = "fixed";
24
+ dom.style.top = 0;
25
+ dom.style.left = 0;
26
+ dom.style.clip = "rect(0,0,0,0)";
27
+ document.body.appendChild(dom);
28
+ this.setCopyRange(dom);
29
+ document.execCommand("copy");
30
+ dom.remove();
31
+ }
32
+ },
33
+ cutCells: {
34
+ text: "Cut Cells",
35
+ handler() {
36
+ this.onCopy("cut");
37
+ }
38
+ },
39
+ emptyCells: {
40
+ text: "Empty Cells",
41
+ handler() {
42
+ const tableContainer = Quill.find(this.table);
43
+ const { selectedTds } = this.tableSelection;
44
+ tableContainer.emptyCells(selectedTds);
45
+ }
46
+ },
47
+ insertColumnRight: {
48
+ text: "Insert Column After",
49
+ handler() {
50
+ const tableContainer = Quill.find(this.table);
51
+ const colIndex = getColToolCellIndexByBoundary(
52
+ this.columnToolCells,
53
+ this.boundary,
54
+ (cellRect, boundary) => {
55
+ return Math.abs(cellRect.x + cellRect.width - boundary.x1) <= tableConfig.ERROR_LIMIT;
56
+ },
57
+ this.quill.root.parentNode
58
+ );
59
+ const newColumn = tableContainer.insertColumn(this.boundary, colIndex, true, this.quill.root.parentNode);
60
+ this.tableColumnTool.updateColToolCells();
61
+ this.quill.update(Quill.sources.USER);
62
+ this.tableSelection.setSelection(
63
+ newColumn[0].domNode.getBoundingClientRect(),
64
+ newColumn[0].domNode.getBoundingClientRect()
65
+ );
66
+ setTimeout(() => this.tableScrollBar.updateScrollBar());
67
+ }
68
+ },
69
+ insertColumnLeft: {
70
+ text: "Insert Column Before",
71
+ handler() {
72
+ const tableContainer = Quill.find(this.table);
73
+ const colIndex = getColToolCellIndexByBoundary(
74
+ this.columnToolCells,
75
+ this.boundary,
76
+ (cellRect, boundary) => {
77
+ return Math.abs(cellRect.x - boundary.x) <= tableConfig.ERROR_LIMIT;
78
+ },
79
+ this.quill.root.parentNode
80
+ );
81
+ const newColumn = tableContainer.insertColumn(this.boundary, colIndex, false, this.quill.root.parentNode);
82
+ this.tableColumnTool.updateColToolCells();
83
+ this.quill.update(Quill.sources.USER);
84
+ this.tableSelection.setSelection(
85
+ newColumn[0].domNode.getBoundingClientRect(),
86
+ newColumn[0].domNode.getBoundingClientRect()
87
+ );
88
+ setTimeout(() => this.tableScrollBar.updateScrollBar());
89
+ }
90
+ },
91
+ insertRowUp: {
92
+ text: "Insert Row Above",
93
+ handler() {
94
+ const tableContainer = Quill.find(this.table);
95
+ const affectedCells = tableContainer.insertRow(this.boundary, false, this.quill.root.parentNode);
96
+ this.tableColumnTool.updateRowToolCells();
97
+ this.quill.update(Quill.sources.USER);
98
+ this.tableSelection.setSelection(
99
+ affectedCells[0].domNode.getBoundingClientRect(),
100
+ affectedCells[0].domNode.getBoundingClientRect()
101
+ );
102
+ setTimeout(() => this.tableScrollBar.resetTableHeight(this.table));
103
+ }
104
+ },
105
+ insertRowDown: {
106
+ text: "Insert Row Below",
107
+ handler() {
108
+ const tableContainer = Quill.find(this.table);
109
+ const affectedCells = tableContainer.insertRow(this.boundary, true, this.quill.root.parentNode);
110
+ this.tableColumnTool.updateRowToolCells();
111
+ this.quill.update(Quill.sources.USER);
112
+ this.tableSelection.setSelection(
113
+ affectedCells[0].domNode.getBoundingClientRect(),
114
+ affectedCells[0].domNode.getBoundingClientRect()
115
+ );
116
+ setTimeout(() => this.tableScrollBar.resetTableHeight(this.table));
117
+ }
118
+ },
119
+ mergeCells: {
120
+ text: "Merge Cells",
121
+ handler() {
122
+ const tableContainer = Quill.find(this.table);
123
+ const rowspan = tableContainer.rows().reduce((sum, row) => {
124
+ const rowRect = index.getRelativeRect(row.domNode.getBoundingClientRect(), this.quill.root.parentNode);
125
+ if (rowRect.y > this.boundary.y - tableConfig.ERROR_LIMIT && rowRect.y + rowRect.height < this.boundary.y + this.boundary.height + tableConfig.ERROR_LIMIT) {
126
+ sum += 1;
127
+ }
128
+ return sum;
129
+ }, 0);
130
+ const colspan = this.columnToolCells.reduce((sum, cell) => {
131
+ const cellRect = index.getRelativeRect(cell.getBoundingClientRect(), this.quill.root.parentNode);
132
+ if (cellRect.x > this.boundary.x - tableConfig.ERROR_LIMIT && cellRect.x + cellRect.width < this.boundary.x + this.boundary.width + tableConfig.ERROR_LIMIT) {
133
+ sum += 1;
134
+ }
135
+ return sum;
136
+ }, 0);
137
+ const mergedCell = tableContainer.mergeCells(
138
+ this.boundary,
139
+ this.selectedTds,
140
+ rowspan,
141
+ colspan,
142
+ this.quill.root.parentNode
143
+ );
144
+ this.quill.update(Quill.sources.USER);
145
+ this.tableSelection.setSelection(
146
+ mergedCell.domNode.getBoundingClientRect(),
147
+ mergedCell.domNode.getBoundingClientRect()
148
+ );
149
+ }
150
+ },
151
+ unmergeCells: {
152
+ text: "Split Cells",
153
+ handler() {
154
+ const tableContainer = Quill.find(this.table);
155
+ tableContainer.unmergeCells(this.selectedTds, this.quill.root.parentNode);
156
+ this.quill.update(Quill.sources.USER);
157
+ this.tableSelection.clearSelection();
158
+ }
159
+ },
160
+ deleteColumn: {
161
+ text: "Delete Columns",
162
+ handler() {
163
+ const tableContainer = Quill.find(this.table);
164
+ const colIndexes = getColToolCellIndexesByBoundary(
165
+ this.columnToolCells,
166
+ this.boundary,
167
+ (cellRect, boundary) => {
168
+ return cellRect.x + tableConfig.ERROR_LIMIT > boundary.x && cellRect.x + cellRect.width - tableConfig.ERROR_LIMIT < boundary.x1;
169
+ },
170
+ this.quill.root.parentNode
171
+ );
172
+ const isDeleteTable = tableContainer.deleteColumns(this.boundary, colIndexes, this.quill.root.parentNode);
173
+ if (!isDeleteTable) {
174
+ this.tableColumnTool.updateColToolCells();
175
+ this.quill.update(Quill.sources.USER);
176
+ this.tableSelection.clearSelection();
177
+ }
178
+ setTimeout(() => this.tableScrollBar.updateScrollBar());
179
+ }
180
+ },
181
+ deleteRow: {
182
+ text: "Delete Rows",
183
+ handler() {
184
+ const tableContainer = Quill.find(this.table);
185
+ const isDeleteTable = tableContainer.deleteRow(this.boundary, this.quill.root.parentNode);
186
+ if (!isDeleteTable) {
187
+ this.tableColumnTool.updateRowToolCells();
188
+ this.quill.update(Quill.sources.USER);
189
+ this.tableSelection.clearSelection();
190
+ }
191
+ }
192
+ },
193
+ deleteTable: {
194
+ text: "Remove Table",
195
+ handler() {
196
+ const betterTableModule = this.quill.getModule("better-table");
197
+ const tableContainer = Quill.find(this.table);
198
+ betterTableModule.hideTableTools();
199
+ tableContainer.remove();
200
+ this.quill.update(Quill.sources.USER);
201
+ this.quill.focus();
202
+ }
203
+ }
204
+ };
205
+ const DEFAULT_CELL_COLORS = ["white", "red", "yellow", "blue"];
206
+ const NODE_EVENT_MAP = /* @__PURE__ */ new WeakMap();
207
+ const MENU_MIN_HEIHGT = 150;
208
+ const DEFAULT_COLOR_SUBTITLE = editor_config.LANG_CONF["subTitleBgColor"];
209
+ class TableOperationMenu {
210
+ constructor(params, quill, options) {
211
+ const betterTableModule = quill.getModule("better-table");
212
+ this.tableSelection = betterTableModule.tableSelection;
213
+ this.table = params.table;
214
+ this.quill = quill;
215
+ this.options = options;
216
+ this.menuItems = { ...MENU_ITEMS_DEFAULT, ...options.items };
217
+ this.tableColumnTool = betterTableModule.columnTool;
218
+ this.tableScrollBar = betterTableModule.tableScrollBar;
219
+ this.boundary = this.tableSelection.boundary;
220
+ this.selectedTds = this.tableSelection.selectedTds;
221
+ this.destroyHandler = this.destroy.bind(this);
222
+ this.columnToolCells = this.tableColumnTool.colToolCells();
223
+ this.colorSubTitle = options.color && options.color.text ? options.color.text : DEFAULT_COLOR_SUBTITLE;
224
+ this.cellColors = options.color && options.color.colors ? options.color.colors : DEFAULT_CELL_COLORS;
225
+ this.menuInitial(params);
226
+ this.mount();
227
+ document.addEventListener("click", this.destroyHandler, false);
228
+ }
229
+ mount() {
230
+ this.quill.root.parentNode.appendChild(this.domNode);
231
+ }
232
+ destroy() {
233
+ const menuItems = index.arrayFrom(
234
+ this.domNode.querySelectorAll("." + tableConfig.OPERATE_MENU_ITEM_CLASS)
235
+ );
236
+ const colorPickerItems = index.arrayFrom(
237
+ this.domNode.querySelectorAll("." + tableConfig.OPERATE_MENU_COLORPICKER_ITEM_CLASS)
238
+ );
239
+ const nodes = menuItems.concat(colorPickerItems);
240
+ nodes.forEach((node) => {
241
+ if (NODE_EVENT_MAP.has(node)) {
242
+ const unregister = NODE_EVENT_MAP.get(node);
243
+ if (unregister && typeof unregister === "function") {
244
+ unregister();
245
+ }
246
+ }
247
+ });
248
+ index.elementRemove(this.domNode);
249
+ document.removeEventListener("mousedown", this.destroyHandler, false);
250
+ return null;
251
+ }
252
+ menuInitial({ cell, left, top }) {
253
+ const rowspan = cell.getAttribute("rowspan");
254
+ const colspan = cell.getAttribute("colspan");
255
+ const winHeight = window.innerHeight || Math.max(document.documentElement.clientHeight, document.body.clientHeight);
256
+ const num = Object.keys(this.menuItems) || [];
257
+ const menuHeight = tableConfig.MENU_ITEM_HEIGHT * num.length || tableConfig.MENU_MIN_HEIGHT;
258
+ const transformOffset = checkAndGetViewPointChange(this.quill.root.parentNode, left, top);
259
+ const leftPos = left - transformOffset.offsetX;
260
+ const topPos = top - transformOffset.offsetY;
261
+ const cssContent = {
262
+ "left": `${leftPos}px`,
263
+ "top": `${topPos}px`,
264
+ "min-height": `${tableConfig.MENU_MIN_HEIGHT}px`,
265
+ "width": `${tableConfig.MENU_WIDTH}px`
266
+ };
267
+ if (menuHeight + top > winHeight && menuHeight < winHeight) {
268
+ delete cssContent.top;
269
+ cssContent["bottom"] = "10px";
270
+ }
271
+ this.domNode = document.createElement("div");
272
+ this.domNode.classList.add("qlbt-operation-menu");
273
+ index.css(this.domNode, cssContent);
274
+ for (const name in this.menuItems) {
275
+ if (this.menuItems[name]) {
276
+ const item = { ...MENU_ITEMS_DEFAULT[name], ...this.menuItems[name] };
277
+ const dom = this.menuItemCreator(item);
278
+ if (name === "mergeCells" && this.tableSelection.selectedTds.length === 1 || name === "unmergeCells" && rowspan === 1 && colspan === 1) {
279
+ dom.classList.add("qlbt-operation-menu-disabled");
280
+ } else {
281
+ dom.addEventListener("mouseup", item.handler.bind(this), false);
282
+ }
283
+ this.domNode.appendChild(dom);
284
+ }
285
+ }
286
+ if (this.options.color && this.options.color !== false) {
287
+ this.domNode.appendChild(dividingCreator());
288
+ this.domNode.appendChild(subTitleCreator(this.colorSubTitle));
289
+ this.domNode.appendChild(this.colorsItemCreator(this.cellColors));
290
+ }
291
+ function dividingCreator() {
292
+ const dividing = document.createElement("div");
293
+ dividing.classList.add(tableConfig.OPERATE_MENU_DIVIDING_CLASS);
294
+ return dividing;
295
+ }
296
+ function subTitleCreator(title) {
297
+ const subTitle = document.createElement("div");
298
+ subTitle.classList.add(tableConfig.OPERATE_MENU_SUBTITLE_CLASS);
299
+ subTitle.innerText = title;
300
+ return subTitle;
301
+ }
302
+ }
303
+ colorsItemCreator(colors) {
304
+ const self = this;
305
+ const node = document.createElement("div");
306
+ node.classList.add(tableConfig.OPERATE_MENU_COLORPICKER_CLASS);
307
+ colors.forEach((color) => {
308
+ const colorBox = colorBoxCreator(color);
309
+ node.appendChild(colorBox);
310
+ });
311
+ function colorBoxCreator(color) {
312
+ const box = document.createElement("div");
313
+ box.classList.add(tableConfig.OPERATE_MENU_COLORPICKER_ITEM_CLASS);
314
+ box.setAttribute("data-color", color);
315
+ box.style.backgroundColor = color;
316
+ const clickHandler = function() {
317
+ const selectedTds = self.tableSelection.selectedTds;
318
+ if (selectedTds && selectedTds.length > 0) {
319
+ selectedTds.forEach((tableCell) => {
320
+ tableCell.domNode.children[0].setAttribute("data-parent-bg", color);
321
+ tableCell.format("cell-bg", color);
322
+ });
323
+ }
324
+ };
325
+ box.addEventListener("click", clickHandler, false);
326
+ NODE_EVENT_MAP.set(box, () => {
327
+ box.removeEventListener("click", clickHandler, false);
328
+ });
329
+ return box;
330
+ }
331
+ return node;
332
+ }
333
+ menuItemCreator({ text }) {
334
+ const node = document.createElement("div");
335
+ node.classList.add("qlbt-operation-menu-item");
336
+ node.innerText = text;
337
+ return node;
338
+ }
339
+ onCopy(operation) {
340
+ const { selectedTds } = this.tableSelection;
341
+ const virtualTable = this.createVirtualTable(selectedTds, operation);
342
+ document.body.appendChild(virtualTable);
343
+ this.setCopyRange(virtualTable);
344
+ this.tableSelection.preSelectedTable = virtualTable;
345
+ this.tableSelection.preSelectedTds = selectedTds;
346
+ document.execCommand("copy");
347
+ virtualTable.remove();
348
+ if (operation === "cut") {
349
+ const tableContainer = Quill.find(this.table);
350
+ tableContainer.emptyCells(selectedTds);
351
+ }
352
+ }
353
+ createVirtualTable(selectedTds, _operation) {
354
+ const virtualTable = document.createElement("table");
355
+ virtualTable.style.position = "fixed";
356
+ virtualTable.style.top = 0;
357
+ virtualTable.style.left = 0;
358
+ virtualTable.style.clip = "rect(0,0,0,0)";
359
+ let preParentSign = "";
360
+ let virtualTr = null;
361
+ selectedTds.forEach((selectedCell) => {
362
+ const { domNode, parent } = selectedCell;
363
+ const currentParentSign = parent.domNode.getAttribute("data-row");
364
+ const rowspan = domNode.firstChild.dataset.rowspan;
365
+ const colspan = domNode.firstChild.dataset.colspan;
366
+ const row = domNode.firstChild.dataset.row;
367
+ const cell = domNode.firstChild.dataset.cell;
368
+ selectedCell.dataCell = cell;
369
+ selectedCell.dataRow = row;
370
+ selectedCell.dataColSpan = colspan;
371
+ selectedCell.dataRowSpan = rowspan;
372
+ if (currentParentSign !== preParentSign) {
373
+ if (preParentSign !== "") {
374
+ virtualTable.appendChild(virtualTr);
375
+ }
376
+ virtualTr = document.createElement("tr");
377
+ preParentSign = currentParentSign;
378
+ }
379
+ const domNodeWidth = domNode.offsetWidth;
380
+ const cloneNode = domNode.cloneNode(true);
381
+ cloneNode.setAttribute("width", domNodeWidth);
382
+ virtualTr.appendChild(cloneNode);
383
+ });
384
+ virtualTable.appendChild(virtualTr);
385
+ return virtualTable;
386
+ }
387
+ setCopyRange(selectedNodes) {
388
+ const range = document.createRange();
389
+ const windowSelectionRange = window.getSelection();
390
+ range.selectNodeContents(selectedNodes);
391
+ windowSelectionRange.removeAllRanges();
392
+ windowSelectionRange.addRange(range);
393
+ }
394
+ groupTableCell(selectedTds) {
395
+ const rowGroup = [];
396
+ let dataRow = "";
397
+ let preDataRow = "";
398
+ let index2 = 0;
399
+ selectedTds.forEach((tableCell) => {
400
+ dataRow = tableCell.parent.domNode.getAttribute("data-row");
401
+ if (dataRow !== preDataRow) {
402
+ if (preDataRow !== "") {
403
+ index2++;
404
+ }
405
+ rowGroup[index2] = [];
406
+ preDataRow = dataRow;
407
+ }
408
+ rowGroup[index2].push(tableCell);
409
+ });
410
+ return rowGroup;
411
+ }
412
+ }
413
+ function getColToolCellIndexByBoundary(cells, boundary, conditionFn, container) {
414
+ return cells.reduce((findIndex, cell) => {
415
+ const cellRect = index.getRelativeRect(cell.getBoundingClientRect(), container);
416
+ if (conditionFn(cellRect, boundary)) {
417
+ findIndex = cells.indexOf(cell);
418
+ }
419
+ return findIndex;
420
+ }, false);
421
+ }
422
+ function getColToolCellIndexesByBoundary(cells, boundary, conditionFn, container) {
423
+ return cells.reduce((findIndexes, cell) => {
424
+ const cellRect = index.getRelativeRect(cell.getBoundingClientRect(), container);
425
+ if (conditionFn(cellRect, boundary)) {
426
+ findIndexes.push(cells.indexOf(cell));
427
+ }
428
+ return findIndexes;
429
+ }, []);
430
+ }
431
+ function checkAndGetViewPointChange(parentContainer, left, top) {
432
+ if (!parentContainer) {
433
+ return {
434
+ offsetX: 0,
435
+ offsetY: 0
436
+ };
437
+ }
438
+ const testEl = document.createElement("div");
439
+ index.css(testEl, {
440
+ opacity: "0",
441
+ position: "fixed",
442
+ left: `${left}px`,
443
+ top: `${top}px`,
444
+ width: "1px",
445
+ height: "1px",
446
+ zIndex: "-999999"
447
+ });
448
+ parentContainer.appendChild(testEl);
449
+ const testElPosition = testEl.getBoundingClientRect();
450
+ parentContainer.removeChild(testEl);
451
+ return {
452
+ offsetX: testElPosition.left - left,
453
+ offsetY: testElPosition.top - top
454
+ };
455
+ }
456
+ exports.default = TableOperationMenu;
457
+ //# sourceMappingURL=table-operation-menu.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-operation-menu.cjs.js","sources":["../../../../src/table/modules/table-operation-menu.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { LANG_CONF } from '../../config/editor.config'\r\nimport { elementRemove, arrayFrom, css, getRelativeRect } from '../utils'\r\nimport {\r\n OPERATE_MENU_ITEM_CLASS,\r\n OPERATE_MENU_COLORPICKER_ITEM_CLASS,\r\n OPERATE_MENU_DIVIDING_CLASS,\r\n OPERATE_MENU_SUBTITLE_CLASS,\r\n OPERATE_MENU_COLORPICKER_CLASS,\r\n} from '../table-config'\r\n\r\nimport {\r\n ERROR_LIMIT,\r\n MENU_ITEM_HEIGHT,\r\n MENU_MIN_HEIGHT,\r\n MENU_WIDTH,\r\n} from '../table-config'\r\n\r\nconst MENU_ITEMS_DEFAULT = {\r\n copyCells: {\r\n text: 'Copy Cells',\r\n handler() {\r\n this.onCopy('copy')\r\n },\r\n },\r\n copyTable: {\r\n text: 'Copy Table',\r\n handler() {\r\n this.tableColumnTool.destroy()\r\n this.tableScrollBar.destroy()\r\n this.tableSelection.clearSelection()\r\n const dom = this.table.cloneNode(true)\r\n const trArr = dom.querySelectorAll('tr[data-row]')\r\n trArr.forEach(tr => tr.removeAttribute('data-row'))\r\n dom.style.position = 'fixed'\r\n dom.style.top = 0\r\n dom.style.left = 0\r\n dom.style.clip = 'rect(0,0,0,0)'\r\n document.body.appendChild(dom)\r\n this.setCopyRange(dom)\r\n document.execCommand('copy')\r\n dom.remove()\r\n },\r\n },\r\n cutCells: {\r\n text: 'Cut Cells',\r\n handler() {\r\n this.onCopy('cut')\r\n },\r\n },\r\n emptyCells: {\r\n text: 'Empty Cells',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const { selectedTds } = this.tableSelection\r\n tableContainer.emptyCells(selectedTds)\r\n },\r\n },\r\n insertColumnRight: {\r\n text: 'Insert Column After',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x + cellRect.width - boundary.x1) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: the scroll bar will go to the top when insert row/column to the table\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n\r\n insertColumnLeft: {\r\n text: 'Insert Column Before',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndex = getColToolCellIndexByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return Math.abs(cellRect.x - boundary.x) <= ERROR_LIMIT\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(newColumn[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n newColumn[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n\r\n insertRowUp: {\r\n text: 'Insert Row Above',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, false, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n\r\n insertRowDown: {\r\n text: 'Insert Row Below',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const affectedCells = tableContainer.insertRow(this.boundary, true, this.quill.root.parentNode)\r\n\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n // this.quill.setSelection(\r\n // this.quill.getIndex(affectedCells[0]),\r\n // 0,\r\n // Quill.sources.SILENT\r\n // )\r\n this.tableSelection.setSelection(\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n affectedCells[0].domNode.getBoundingClientRect(),\r\n )\r\n\r\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\r\n },\r\n },\r\n\r\n mergeCells: {\r\n text: 'Merge Cells',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n // compute merged Cell rowspan, equal to length of selected rows\r\n const rowspan = tableContainer.rows().reduce((sum, row) => {\r\n const rowRect = getRelativeRect(row.domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n rowRect.y > this.boundary.y - ERROR_LIMIT\r\n && rowRect.y + rowRect.height < this.boundary.y + this.boundary.height + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n // compute merged cell colspan, equal to length of selected cols\r\n const colspan = this.columnToolCells.reduce((sum, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), this.quill.root.parentNode)\r\n if (\r\n cellRect.x > this.boundary.x - ERROR_LIMIT\r\n && cellRect.x + cellRect.width < this.boundary.x + this.boundary.width + ERROR_LIMIT\r\n ) {\r\n sum += 1\r\n }\r\n return sum\r\n }, 0)\r\n\r\n const mergedCell = tableContainer.mergeCells(\r\n this.boundary,\r\n this.selectedTds,\r\n rowspan,\r\n colspan,\r\n this.quill.root.parentNode,\r\n )\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.setSelection(\r\n mergedCell.domNode.getBoundingClientRect(),\r\n mergedCell.domNode.getBoundingClientRect(),\r\n )\r\n },\r\n },\r\n\r\n unmergeCells: {\r\n text: 'Split Cells',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.unmergeCells(this.selectedTds, this.quill.root.parentNode)\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n },\r\n },\r\n\r\n deleteColumn: {\r\n text: 'Delete Columns',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const colIndexes = getColToolCellIndexesByBoundary(\r\n this.columnToolCells,\r\n this.boundary,\r\n (cellRect, boundary) => {\r\n return cellRect.x + ERROR_LIMIT > boundary.x && cellRect.x + cellRect.width - ERROR_LIMIT < boundary.x1\r\n },\r\n this.quill.root.parentNode,\r\n )\r\n\r\n const isDeleteTable = tableContainer.deleteColumns(this.boundary, colIndexes, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateColToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n\r\n setTimeout(() => this.tableScrollBar.updateScrollBar())\r\n },\r\n },\r\n\r\n deleteRow: {\r\n text: 'Delete Rows',\r\n handler() {\r\n const tableContainer = Quill.find(this.table)\r\n const isDeleteTable = tableContainer.deleteRow(this.boundary, this.quill.root.parentNode)\r\n if (!isDeleteTable) {\r\n this.tableColumnTool.updateRowToolCells()\r\n this.quill.update(Quill.sources.USER)\r\n this.tableSelection.clearSelection()\r\n }\r\n },\r\n },\r\n\r\n deleteTable: {\r\n text: 'Remove Table',\r\n handler() {\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableContainer = Quill.find(this.table)\r\n betterTableModule.hideTableTools()\r\n tableContainer.remove()\r\n this.quill.update(Quill.sources.USER)\r\n // fix: 右键菜单删除表格后编辑器失焦\r\n this.quill.focus()\r\n },\r\n },\r\n}\r\nconst DEFAULT_CELL_COLORS = ['white', 'red', 'yellow', 'blue']\r\nconst NODE_EVENT_MAP = new WeakMap()\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst MENU_MIN_HEIHGT = 150\r\nconst DEFAULT_COLOR_SUBTITLE = LANG_CONF['subTitleBgColor']\r\nexport default class TableOperationMenu {\r\n tableSelection: any\r\n table: any\r\n quill: any\r\n options: any\r\n menuItems: any\r\n tableColumnTool: any\r\n tableScrollBar: any\r\n boundary: any\r\n selectedTds: any\r\n destroyHandler: any\r\n columnToolCells: any\r\n colorSubTitle: any\r\n cellColors: any\r\n domNode: any\r\n\r\n constructor(params, quill, options) {\r\n const betterTableModule = quill.getModule('better-table')\r\n this.tableSelection = betterTableModule.tableSelection\r\n this.table = params.table\r\n this.quill = quill\r\n this.options = options\r\n this.menuItems = { ...MENU_ITEMS_DEFAULT, ...options.items }\r\n this.tableColumnTool = betterTableModule.columnTool\r\n // this.tableRowTool = betterTableModule.rowTool\r\n this.tableScrollBar = betterTableModule.tableScrollBar\r\n this.boundary = this.tableSelection.boundary\r\n this.selectedTds = this.tableSelection.selectedTds\r\n this.destroyHandler = this.destroy.bind(this)\r\n this.columnToolCells = this.tableColumnTool.colToolCells()\r\n this.colorSubTitle\r\n = options.color && options.color.text\r\n ? options.color.text\r\n : DEFAULT_COLOR_SUBTITLE\r\n this.cellColors\r\n = options.color && options.color.colors\r\n ? options.color.colors\r\n : DEFAULT_CELL_COLORS\r\n\r\n this.menuInitial(params)\r\n this.mount()\r\n document.addEventListener('click', this.destroyHandler, false)\r\n }\r\n\r\n mount() {\r\n this.quill.root.parentNode.appendChild(this.domNode)\r\n }\r\n\r\n destroy() {\r\n const menuItems = arrayFrom(\r\n this.domNode.querySelectorAll('.' + OPERATE_MENU_ITEM_CLASS),\r\n )\r\n const colorPickerItems = arrayFrom(\r\n this.domNode.querySelectorAll('.' + OPERATE_MENU_COLORPICKER_ITEM_CLASS),\r\n )\r\n const nodes = menuItems.concat(colorPickerItems)\r\n\r\n nodes.forEach((node) => {\r\n if (NODE_EVENT_MAP.has(node)) {\r\n const unregister = NODE_EVENT_MAP.get(node)\r\n\r\n if (unregister && typeof unregister === 'function') {\r\n unregister()\r\n }\r\n }\r\n })\r\n\r\n elementRemove(this.domNode)\r\n document.removeEventListener('mousedown', this.destroyHandler, false)\r\n\r\n return null\r\n }\r\n\r\n menuInitial({ cell, left, top }) {\r\n const rowspan = cell.getAttribute('rowspan')\r\n const colspan = cell.getAttribute('colspan')\r\n const winHeight = window.innerHeight || Math.max(document.documentElement.clientHeight, document.body.clientHeight)\r\n const num = Object.keys(this.menuItems) || []\r\n const menuHeight = MENU_ITEM_HEIGHT * num.length || MENU_MIN_HEIGHT\r\n const transformOffset = checkAndGetViewPointChange(this.quill.root.parentNode, left, top)\r\n const leftPos = left - transformOffset.offsetX\r\n const topPos = top - transformOffset.offsetY\r\n const cssContent = {\r\n 'left': `${leftPos}px`,\r\n 'top': `${topPos}px`,\r\n 'min-height': `${MENU_MIN_HEIGHT}px`,\r\n 'width': `${MENU_WIDTH}px`,\r\n }\r\n\r\n if (menuHeight + top > winHeight && menuHeight < winHeight) {\r\n delete cssContent.top\r\n cssContent['bottom'] = '10px'\r\n }\r\n\r\n this.domNode = document.createElement('div')\r\n this.domNode.classList.add('qlbt-operation-menu')\r\n css(this.domNode, cssContent)\r\n\r\n for (const name in this.menuItems) {\r\n if (this.menuItems[name]) {\r\n const item = { ...MENU_ITEMS_DEFAULT[name], ...this.menuItems[name] }\r\n const dom = this.menuItemCreator(item)\r\n if (\r\n (name === 'mergeCells' && this.tableSelection.selectedTds.length === 1)\r\n || (name === 'unmergeCells' && rowspan === 1 && colspan === 1)\r\n ) {\r\n dom.classList.add('qlbt-operation-menu-disabled')\r\n }\r\n else {\r\n dom.addEventListener('mouseup', item.handler.bind(this), false)\r\n }\r\n this.domNode.appendChild(dom)\r\n }\r\n }\r\n\r\n // if colors option is false, disabled bg color\r\n if (this.options.color && this.options.color !== false) {\r\n this.domNode.appendChild(dividingCreator())\r\n this.domNode.appendChild(subTitleCreator(this.colorSubTitle))\r\n this.domNode.appendChild(this.colorsItemCreator(this.cellColors))\r\n }\r\n\r\n // create dividing line\r\n function dividingCreator() {\r\n const dividing = document.createElement('div')\r\n dividing.classList.add(OPERATE_MENU_DIVIDING_CLASS)\r\n return dividing\r\n }\r\n\r\n // create subtitle for menu\r\n function subTitleCreator(title) {\r\n const subTitle = document.createElement('div')\r\n subTitle.classList.add(OPERATE_MENU_SUBTITLE_CLASS)\r\n subTitle.innerText = title\r\n return subTitle\r\n }\r\n }\r\n\r\n colorsItemCreator(colors) {\r\n const self = this\r\n const node = document.createElement('div')\r\n node.classList.add(OPERATE_MENU_COLORPICKER_CLASS)\r\n\r\n colors.forEach((color) => {\r\n const colorBox = colorBoxCreator(color)\r\n node.appendChild(colorBox)\r\n })\r\n\r\n function colorBoxCreator(color) {\r\n const box = document.createElement('div')\r\n box.classList.add(OPERATE_MENU_COLORPICKER_ITEM_CLASS)\r\n box.setAttribute('data-color', color)\r\n box.style.backgroundColor = color\r\n\r\n const clickHandler = function () {\r\n const selectedTds = self.tableSelection.selectedTds\r\n if (selectedTds && selectedTds.length > 0) {\r\n selectedTds.forEach((tableCell) => {\r\n tableCell.domNode.children[0].setAttribute('data-parent-bg', color)\r\n tableCell.format('cell-bg', color)\r\n })\r\n }\r\n }\r\n\r\n box.addEventListener('click', clickHandler, false)\r\n\r\n NODE_EVENT_MAP.set(box, () => {\r\n box.removeEventListener('click', clickHandler, false)\r\n })\r\n\r\n return box\r\n }\r\n\r\n return node\r\n }\r\n\r\n menuItemCreator({ text }) {\r\n const node = document.createElement('div')\r\n node.classList.add('qlbt-operation-menu-item')\r\n node.innerText = text\r\n // node.addEventListener('click', handler.bind(this), false)\r\n return node\r\n }\r\n\r\n onCopy(operation) {\r\n const { selectedTds } = this.tableSelection\r\n const virtualTable = this.createVirtualTable(selectedTds, operation)\r\n document.body.appendChild(virtualTable)\r\n this.setCopyRange(virtualTable)\r\n this.tableSelection.preSelectedTable = virtualTable\r\n this.tableSelection.preSelectedTds = selectedTds\r\n document.execCommand('copy')\r\n virtualTable.remove()\r\n if (operation === 'cut') {\r\n const tableContainer = Quill.find(this.table)\r\n tableContainer.emptyCells(selectedTds)\r\n }\r\n }\r\n\r\n createVirtualTable(selectedTds, _operation) {\r\n const virtualTable: any = document.createElement('table')\r\n virtualTable.style.position = 'fixed'\r\n virtualTable.style.top = 0\r\n virtualTable.style.left = 0\r\n virtualTable.style.clip = 'rect(0,0,0,0)'\r\n let preParentSign = ''\r\n let virtualTr = null\r\n selectedTds.forEach((selectedCell) => {\r\n const { domNode, parent } = selectedCell\r\n const currentParentSign = parent.domNode.getAttribute('data-row')\r\n const rowspan = domNode.firstChild.dataset.rowspan\r\n const colspan = domNode.firstChild.dataset.colspan\r\n const row = domNode.firstChild.dataset.row\r\n const cell = domNode.firstChild.dataset.cell\r\n\r\n selectedCell.dataCell = cell\r\n selectedCell.dataRow = row\r\n selectedCell.dataColSpan = colspan\r\n selectedCell.dataRowSpan = rowspan\r\n\r\n if (currentParentSign !== preParentSign) {\r\n if (preParentSign !== '') {\r\n virtualTable.appendChild(virtualTr)\r\n }\r\n virtualTr = document.createElement('tr')\r\n preParentSign = currentParentSign\r\n }\r\n\r\n const domNodeWidth = domNode.offsetWidth\r\n const cloneNode = domNode.cloneNode(true)\r\n cloneNode.setAttribute('width', domNodeWidth)\r\n\r\n virtualTr.appendChild(cloneNode)\r\n })\r\n virtualTable.appendChild(virtualTr)\r\n return virtualTable\r\n }\r\n\r\n setCopyRange(selectedNodes) {\r\n const range = document.createRange()\r\n const windowSelectionRange = window.getSelection()\r\n range.selectNodeContents(selectedNodes)\r\n windowSelectionRange.removeAllRanges()\r\n windowSelectionRange.addRange(range)\r\n }\r\n\r\n groupTableCell(selectedTds) {\r\n const rowGroup = []\r\n let dataRow = ''\r\n let preDataRow = ''\r\n let index = 0\r\n selectedTds.forEach((tableCell) => {\r\n dataRow = tableCell.parent.domNode.getAttribute('data-row')\r\n\r\n if (dataRow !== preDataRow) {\r\n if (preDataRow !== '') {\r\n index++\r\n }\r\n rowGroup[index] = []\r\n preDataRow = dataRow\r\n }\r\n\r\n rowGroup[index].push(tableCell)\r\n })\r\n return rowGroup\r\n }\r\n}\r\n\r\nfunction getColToolCellIndexByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndex, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndex = cells.indexOf(cell)\r\n }\r\n return findIndex\r\n }, false)\r\n}\r\n\r\nfunction getColToolCellIndexesByBoundary(cells, boundary, conditionFn, container) {\r\n return cells.reduce((findIndexes, cell) => {\r\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\r\n if (conditionFn(cellRect, boundary)) {\r\n findIndexes.push(cells.indexOf(cell))\r\n }\r\n return findIndexes\r\n }, [])\r\n}\r\n\r\nfunction checkAndGetViewPointChange(parentContainer: HTMLElement, left: number, top: number) {\r\n if (!parentContainer) {\r\n return {\r\n offsetX: 0,\r\n offsetY: 0,\r\n }\r\n }\r\n // 模拟一个元素测预测位置和最终位置是否符合,如果不符合则是有transform等造成的偏移\r\n const testEl = document.createElement('div')\r\n css(testEl, {\r\n opacity: '0',\r\n position: 'fixed',\r\n left: `${left}px`,\r\n top: `${top}px`,\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n })\r\n parentContainer.appendChild(testEl)\r\n const testElPosition = testEl.getBoundingClientRect()\r\n parentContainer.removeChild(testEl)\r\n return {\r\n offsetX: testElPosition.left - left,\r\n offsetY: testElPosition.top - top,\r\n }\r\n}\r\n"],"names":["ERROR_LIMIT","getRelativeRect","LANG_CONF","arrayFrom","OPERATE_MENU_ITEM_CLASS","OPERATE_MENU_COLORPICKER_ITEM_CLASS","elementRemove","MENU_ITEM_HEIGHT","MENU_MIN_HEIGHT","MENU_WIDTH","css","OPERATE_MENU_DIVIDING_CLASS","OPERATE_MENU_SUBTITLE_CLASS","OPERATE_MENU_COLORPICKER_CLASS","index"],"mappings":"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"}