@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,190 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const tableConfig = require("../table-config.cjs.js");
4
+ const index = require("../utils/index.cjs.js");
5
+ class TableScrollBar {
6
+ // 表格是否溢出开关,判断开关值后只改变样式一次,不重复修改
7
+ constructor(table, quill, dom) {
8
+ if (!table) {
9
+ return;
10
+ }
11
+ this.table = table;
12
+ this.quill = quill;
13
+ this.modulesContainer = dom;
14
+ this.domNode = null;
15
+ this.oldRootScrollTop = this.quill.root.scrollTop;
16
+ this.prev = 0;
17
+ const betterTableModule = this.quill.getModule("better-table");
18
+ const tableColumnTool = betterTableModule.columnTool;
19
+ this.columnToolDomNode = tableColumnTool.domNode;
20
+ this.columnCtrlPanel = tableColumnTool.columnCtrlPanel;
21
+ this.leftMask = tableColumnTool.leftMask;
22
+ this.updateScrollBar();
23
+ if (this.quill.root === this.quill.scrollingContainer) {
24
+ this.quill.root.addEventListener("scroll", this.handleQuillRootScroll.bind(this));
25
+ }
26
+ }
27
+ handleQuillRootScroll() {
28
+ if (!this.domNode) {
29
+ return;
30
+ }
31
+ const curTableRect = this.table.getBoundingClientRect();
32
+ const curContainerRect = this.quill.root.parentNode.getBoundingClientRect();
33
+ const tableTop = curTableRect.top + tableConfig.SCROLL_BAR_PANEL_HEIGHT;
34
+ const tableBottom = curTableRect.top + curTableRect.height - 1;
35
+ const containerBottom = curContainerRect.top + curContainerRect.height;
36
+ if (containerBottom < tableBottom && containerBottom > tableTop) {
37
+ if (!this.isTableOverflow) {
38
+ this.isTableOverflow = true;
39
+ index.css(this.domNode, {
40
+ display: "block",
41
+ top: `${this.containerRect.height - tableConfig.SCROLL_BAR_PANEL_HEIGHT}px`,
42
+ marginTop: "0px"
43
+ });
44
+ }
45
+ } else if (containerBottom <= tableTop) {
46
+ this.isTableOverflow = false;
47
+ this.domNode.style.display = "none";
48
+ } else {
49
+ this.setScrollBarToBottom();
50
+ index.css(this.domNode, { marginTop: `${this.oldRootScrollTop - this.quill.root.scrollTop}px` });
51
+ }
52
+ }
53
+ setScrollBarToBottom() {
54
+ if (this.isTableOverflow) {
55
+ this.isTableOverflow = false;
56
+ const barPos = this.tableRect.top + this.tableRect.height - this.containerRect.top - 1;
57
+ index.css(this.domNode, { display: "block", top: `${barPos}px` });
58
+ }
59
+ }
60
+ resetTableHeight(table) {
61
+ if (this.domNode) {
62
+ this.tableRect.height = table.getBoundingClientRect().height;
63
+ this.isTableOverflow = !this.isTableOverflow;
64
+ this.handleQuillRootScroll();
65
+ }
66
+ }
67
+ setScrollBarMove(pos, isMouse) {
68
+ const currentBarLeft = parseInt(getComputedStyle(this.scrollBar)["left"], 10);
69
+ let left = isMouse ? pos - this.prev + currentBarLeft : currentBarLeft + pos;
70
+ this.showMask(left);
71
+ left = this.getLimitedDistance(left);
72
+ const scale = this.tableViewRect.width / this.tableRect.width;
73
+ const move = left / scale;
74
+ const columnCtrlPanelLeft = this.tableViewRect.left - this.containerRect.left - move;
75
+ index.css(this.scrollBar, { left: `${left}px` });
76
+ index.css(this.columnCtrlPanel, { left: `${columnCtrlPanelLeft}px` });
77
+ this.table.parentNode.scrollLeft = move;
78
+ if (isMouse) {
79
+ this.prev = pos;
80
+ }
81
+ const tableSelection = this.quill.getModule("better-table").tableSelection;
82
+ if (tableSelection && tableSelection.selectedTds.length) {
83
+ tableSelection.refreshHelpLinesPosition();
84
+ }
85
+ }
86
+ handleScrollBarMouseDown(mouseDownEvent) {
87
+ mouseDownEvent.preventDefault();
88
+ this.prev = mouseDownEvent.clientX;
89
+ this.subscriber = (mouseMoveEvent) => {
90
+ mouseMoveEvent.preventDefault();
91
+ mouseMoveEvent.stopPropagation();
92
+ this.setScrollBarMove(mouseMoveEvent.clientX, true);
93
+ };
94
+ this.quill.root.parentNode.addEventListener("mousemove", this.subscriber, false);
95
+ document.addEventListener("mouseup", this.handleScrollBarMouseup.bind(this), false);
96
+ }
97
+ handleScrollBarMouseup(event) {
98
+ event.preventDefault();
99
+ this.quill.root.parentNode.removeEventListener("mousemove", this.subscriber);
100
+ document.removeEventListener("mouseup", this.handleScrollBarMouseup.bind(this), false);
101
+ }
102
+ handleWheel(event) {
103
+ if (event.shiftKey) {
104
+ const { deltaY } = event;
105
+ this.setScrollBarMove(deltaY, false);
106
+ }
107
+ }
108
+ showMask(distance) {
109
+ if (distance >= Math.floor(this.maxBarLeft)) {
110
+ index.css(this.leftMask, { display: "block" });
111
+ } else if (distance <= 0) {
112
+ index.css(this.leftMask, { display: "none" });
113
+ } else {
114
+ index.css(this.leftMask, { display: "block" });
115
+ }
116
+ }
117
+ getLimitedDistance(distance) {
118
+ if (distance >= Math.floor(this.maxBarLeft)) {
119
+ distance = this.maxBarLeft;
120
+ } else if (distance <= 0) {
121
+ distance = 0;
122
+ }
123
+ return distance;
124
+ }
125
+ updateScrollBar() {
126
+ var _a;
127
+ if (!((_a = this.table) == null ? void 0 : _a.parentNode)) {
128
+ return;
129
+ }
130
+ const tableRect = this.table.getBoundingClientRect();
131
+ const tableViewRect = this.table.parentNode.getBoundingClientRect();
132
+ const tableMoveDistance = tableRect.width - tableViewRect.width;
133
+ this.tableRect = tableRect;
134
+ this.tableViewRect = tableViewRect;
135
+ this.tableMoveDistance = tableMoveDistance;
136
+ this.oldRootScrollTop = this.quill.root.scrollTop;
137
+ if (tableMoveDistance > 0) {
138
+ this.createScrollBar();
139
+ } else {
140
+ this.destroyScrollBar();
141
+ }
142
+ }
143
+ createScrollBar() {
144
+ const parent = this.quill.root.parentNode;
145
+ const containerRect = parent.getBoundingClientRect();
146
+ this.containerRect = containerRect;
147
+ index.css(this.columnCtrlPanel, {
148
+ left: `${this.tableViewRect.left - containerRect.left - this.table.parentNode.scrollLeft}px`
149
+ });
150
+ if (this.domNode) {
151
+ this.domNode.remove();
152
+ }
153
+ this.domNode = document.createElement("div");
154
+ this.domNode.classList.add("qlbt-table-scroll-bar-panel");
155
+ this.scrollBar = document.createElement("div");
156
+ this.scrollBar.classList.add("qlbt-table-scroll-bar");
157
+ this.scrollBar.addEventListener("mousedown", this.handleScrollBarMouseDown.bind(this), false);
158
+ const scale = this.tableViewRect.width / this.tableRect.width;
159
+ const barWidth = this.tableViewRect.width - this.tableMoveDistance * scale;
160
+ index.css(this.scrollBar, { width: `${barWidth}px` });
161
+ this.domNode.appendChild(this.scrollBar);
162
+ const tableScrollLeft = this.table.parentNode.scrollLeft;
163
+ this.maxBarLeft = this.tableMoveDistance * scale;
164
+ if (tableScrollLeft) {
165
+ const barLeft = tableScrollLeft * scale;
166
+ this.showMask(barLeft);
167
+ index.css(this.scrollBar, { left: `${this.getLimitedDistance(barLeft)}px` });
168
+ }
169
+ const barPos = this.tableRect.top + this.tableRect.height - containerRect.top - 1;
170
+ this.isTableOverflow = containerRect.top + containerRect.height < this.tableRect.top + this.tableRect.height;
171
+ this.modulesContainer.appendChild(this.domNode);
172
+ index.css(this.domNode, { top: `${Math.min(containerRect.height - tableConfig.SCROLL_BAR_PANEL_HEIGHT, barPos)}px` });
173
+ document.addEventListener("wheel", this.handleWheel.bind(this));
174
+ }
175
+ destroyScrollBar() {
176
+ index.css(this.leftMask, { display: "none" });
177
+ this.columnCtrlPanel.removeAttribute("style");
178
+ this.maxBarLeft = null;
179
+ this.destroy();
180
+ }
181
+ destroy() {
182
+ if (this.domNode) {
183
+ this.domNode.remove();
184
+ }
185
+ this.quill.root.removeEventListener("scroll", this.handleQuillRootScroll.bind(this));
186
+ document.removeEventListener("wheel", this.handleWheel.bind(this));
187
+ }
188
+ }
189
+ exports.default = TableScrollBar;
190
+ //# sourceMappingURL=table-scroll-bar.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-scroll-bar.cjs.js","sources":["../../../../src/table/modules/table-scroll-bar.ts"],"sourcesContent":["import { SCROLL_BAR_PANEL_HEIGHT } from '../table-config'\r\nimport { css } from '../utils'\r\n\r\nexport default class TableScrollBar {\r\n table: any\r\n quill: any\r\n modulesContainer: any\r\n domNode: any\r\n oldRootScrollTop: any\r\n // @ts-ignore\r\n prev: number\r\n columnToolDomNode: any\r\n columnCtrlPanel: any\r\n leftMask: any\r\n tableViewRect: any\r\n tableRect: any\r\n containerRect: any\r\n subscriber: any\r\n // @ts-ignore\r\n tableMoveDistance: number\r\n // @ts-ignore\r\n maxBarLeft: number\r\n // @ts-ignore\r\n scrollBar: Element\r\n // @ts-ignore\r\n isTableOverflow: boolean // 表格是否溢出开关,判断开关值后只改变样式一次,不重复修改\r\n\r\n constructor(table, quill, dom) {\r\n if (!table) {\r\n return\r\n }\r\n this.table = table\r\n this.quill = quill\r\n this.modulesContainer = dom\r\n this.domNode = null\r\n this.oldRootScrollTop = this.quill.root.scrollTop\r\n this.prev = 0\r\n\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableColumnTool = betterTableModule.columnTool\r\n this.columnToolDomNode = tableColumnTool.domNode\r\n this.columnCtrlPanel = tableColumnTool.columnCtrlPanel\r\n this.leftMask = tableColumnTool.leftMask\r\n\r\n this.updateScrollBar()\r\n\r\n if (this.quill.root === this.quill.scrollingContainer) {\r\n this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n }\r\n }\r\n\r\n handleQuillRootScroll() {\r\n if (!this.domNode) {\r\n return\r\n }\r\n const curTableRect = this.table.getBoundingClientRect()\r\n const curContainerRect = this.quill.root.parentNode.getBoundingClientRect()\r\n const tableTop = curTableRect.top + SCROLL_BAR_PANEL_HEIGHT\r\n const tableBottom = curTableRect.top + curTableRect.height - 1\r\n const containerBottom = curContainerRect.top + curContainerRect.height\r\n if (containerBottom < tableBottom && containerBottom > tableTop) { // 表格下端溢出容器下端\r\n if (!this.isTableOverflow) {\r\n this.isTableOverflow = true\r\n css(this.domNode, {\r\n display: 'block',\r\n top: `${this.containerRect.height - SCROLL_BAR_PANEL_HEIGHT}px`,\r\n marginTop: '0px',\r\n })\r\n }\r\n }\r\n else if (containerBottom <= tableTop) { // 表格上端溢出容器下端\r\n this.isTableOverflow = false\r\n this.domNode.style.display = 'none'\r\n }\r\n else { // 表格下端在容器内\r\n this.setScrollBarToBottom()\r\n css(this.domNode, { marginTop: `${this.oldRootScrollTop - this.quill.root.scrollTop}px` })\r\n }\r\n }\r\n\r\n setScrollBarToBottom() {\r\n if (this.isTableOverflow) {\r\n this.isTableOverflow = false\r\n const barPos = this.tableRect.top + this.tableRect.height - this.containerRect.top - 1\r\n css(this.domNode, { display: 'block', top: `${barPos}px` })\r\n }\r\n }\r\n\r\n resetTableHeight(table) {\r\n if (this.domNode) {\r\n // 表格的高度改变,重置初始化tableRect的高度,但不重置其他坐标值\r\n this.tableRect.height = table.getBoundingClientRect().height\r\n this.isTableOverflow = !this.isTableOverflow\r\n this.handleQuillRootScroll()\r\n }\r\n }\r\n\r\n setScrollBarMove(pos, isMouse) {\r\n // 获取当前滑块左边距和鼠标两次事件节点之间的位移差,计算当前滑块位置及是否显示左右遮罩层,通过比例计算表格位移并赋值\r\n const currentBarLeft = parseInt(getComputedStyle(this.scrollBar)['left'], 10)\r\n let left = isMouse ? pos - this.prev + currentBarLeft : currentBarLeft + pos\r\n this.showMask(left)\r\n left = this.getLimitedDistance(left)\r\n const scale = this.tableViewRect.width / this.tableRect.width\r\n const move = left / scale\r\n const columnCtrlPanelLeft = this.tableViewRect.left - this.containerRect.left - move\r\n css(this.scrollBar, { left: `${left}px` }) // 移动表格滚动条\r\n css(this.columnCtrlPanel, { left: `${columnCtrlPanelLeft}px` }) // 移动顶部列宽控制条\r\n this.table.parentNode.scrollLeft = move // 移动表格\r\n if (isMouse) {\r\n this.prev = pos\r\n }\r\n\r\n // fix: 拖动滚动条时修正选区位置\r\n const tableSelection = this.quill.getModule('better-table').tableSelection\r\n if (tableSelection && tableSelection.selectedTds.length) {\r\n tableSelection.refreshHelpLinesPosition()\r\n }\r\n }\r\n\r\n handleScrollBarMouseDown(mouseDownEvent) {\r\n mouseDownEvent.preventDefault()\r\n\r\n this.prev = mouseDownEvent.clientX\r\n this.subscriber = (mouseMoveEvent: any) => {\r\n mouseMoveEvent.preventDefault()\r\n mouseMoveEvent.stopPropagation()\r\n this.setScrollBarMove(mouseMoveEvent.clientX, true)\r\n }\r\n this.quill.root.parentNode.addEventListener('mousemove', this.subscriber, false)\r\n document.addEventListener('mouseup', this.handleScrollBarMouseup.bind(this), false)\r\n }\r\n\r\n handleScrollBarMouseup(event) {\r\n event.preventDefault()\r\n this.quill.root.parentNode.removeEventListener('mousemove', this.subscriber)\r\n document.removeEventListener('mouseup', this.handleScrollBarMouseup.bind(this), false)\r\n }\r\n\r\n handleWheel(event) {\r\n // 按住 Shift 滚动鼠标滚轮,可以对表格进行横向滚动\r\n if (event.shiftKey) {\r\n const { deltaY } = event // 每次滚动鼠标滚轮移动的距离\r\n this.setScrollBarMove(deltaY, false)\r\n }\r\n }\r\n\r\n showMask(distance) {\r\n // 根据当前滑块左边距判断是否显示左右遮罩层\r\n if (distance >= Math.floor(this.maxBarLeft)) {\r\n css(this.leftMask, { display: 'block' })\r\n }\r\n else if (distance <= 0) {\r\n css(this.leftMask, { display: 'none' })\r\n }\r\n else {\r\n css(this.leftMask, { display: 'block' })\r\n }\r\n }\r\n\r\n getLimitedDistance(distance) {\r\n if (distance >= Math.floor(this.maxBarLeft)) {\r\n distance = this.maxBarLeft\r\n }\r\n else if (distance <= 0) {\r\n distance = 0\r\n }\r\n return distance\r\n }\r\n\r\n updateScrollBar() {\r\n if (!this.table?.parentNode) {\r\n return\r\n }\r\n // 获取表格尺寸和表格容器尺寸\r\n const tableRect = this.table.getBoundingClientRect()\r\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\r\n const tableMoveDistance = tableRect.width - tableViewRect.width // 表格最大移动距离\r\n this.tableRect = tableRect\r\n this.tableViewRect = tableViewRect\r\n this.tableMoveDistance = tableMoveDistance\r\n this.oldRootScrollTop = this.quill.root.scrollTop\r\n\r\n if (tableMoveDistance > 0) {\r\n this.createScrollBar()\r\n }\r\n else {\r\n this.destroyScrollBar()\r\n }\r\n }\r\n\r\n createScrollBar() {\r\n // 列控制条增加表格相应位移\r\n const parent = this.quill.root.parentNode\r\n const containerRect = parent.getBoundingClientRect() // 编辑器容器宽度\r\n this.containerRect = containerRect\r\n css(this.columnCtrlPanel, {\r\n left: `${this.tableViewRect.left - containerRect.left - this.table.parentNode.scrollLeft}px`,\r\n })\r\n\r\n // 创建滚动条\r\n if (this.domNode) {\r\n this.domNode.remove()\r\n }\r\n this.domNode = document.createElement('div')\r\n this.domNode.classList.add('qlbt-table-scroll-bar-panel')\r\n this.scrollBar = document.createElement('div')\r\n this.scrollBar.classList.add('qlbt-table-scroll-bar')\r\n this.scrollBar.addEventListener('mousedown', this.handleScrollBarMouseDown.bind(this), false)\r\n const scale = this.tableViewRect.width / this.tableRect.width\r\n const barWidth = this.tableViewRect.width - this.tableMoveDistance * scale // 滑块宽度\r\n css(this.scrollBar, { width: `${barWidth}px` })\r\n this.domNode.appendChild(this.scrollBar)\r\n\r\n // 判断当前表格是否存在位移,如存在通过比例计算滑块当前位移并赋值\r\n const tableScrollLeft = this.table.parentNode.scrollLeft\r\n this.maxBarLeft = this.tableMoveDistance * scale // 滑块最大移动距离\r\n if (tableScrollLeft) {\r\n const barLeft = tableScrollLeft * scale\r\n this.showMask(barLeft)\r\n css(this.scrollBar, { left: `${this.getLimitedDistance(barLeft)}px` })\r\n }\r\n\r\n // 将滚动条插入到 table control panel 中\r\n const barPos = this.tableRect.top + this.tableRect.height - containerRect.top - 1\r\n this.isTableOverflow = containerRect.top + containerRect.height < this.tableRect.top + this.tableRect.height\r\n this.modulesContainer.appendChild(this.domNode)\r\n css(this.domNode, { top: `${Math.min(containerRect.height - SCROLL_BAR_PANEL_HEIGHT, barPos)}px` })\r\n\r\n // 绑定鼠标滚轮事件:Shift+鼠标滚轮,滚动表格横向滚动条\r\n document.addEventListener('wheel', this.handleWheel.bind(this))\r\n }\r\n\r\n destroyScrollBar() {\r\n css(this.leftMask, { display: 'none' })\r\n this.columnCtrlPanel.removeAttribute('style')\r\n this.maxBarLeft = null\r\n this.destroy()\r\n }\r\n\r\n destroy() {\r\n if (this.domNode) {\r\n this.domNode.remove()\r\n }\r\n this.quill.root.removeEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n document.removeEventListener('wheel', this.handleWheel.bind(this))\r\n }\r\n}\r\n"],"names":["SCROLL_BAR_PANEL_HEIGHT","css"],"mappings":"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"}
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const Quill = require("quill");
4
+ const table = require("../formats/table.cjs.js");
5
+ const tableConfig = require("../table-config.cjs.js");
6
+ const index = require("../utils/index.cjs.js");
7
+ class TableSelection {
8
+ /* eslint-disable-next-line no-constructor-return */
9
+ constructor(table2, quill, dom) {
10
+ if (!table2) {
11
+ return null;
12
+ }
13
+ this.table = table2;
14
+ this.quill = quill;
15
+ this.modulesContainer = dom;
16
+ this.parent = this.quill.root.parentNode;
17
+ this.boundary = {};
18
+ this.selectedTds = [];
19
+ this.dragging = false;
20
+ this.preSelectedTable = null;
21
+ this.oldRootScrollTop = this.quill.root.scrollTop;
22
+ this.selectingHandler = this.mouseDownHandler.bind(this);
23
+ this.tdEditHandler = this.setTdEditable.bind(this);
24
+ this.tdResizeHandler = this.resizeTd.bind(this);
25
+ this.helpLinesInitial();
26
+ this.isEditorHasScrollBar();
27
+ this.quill.root.parentNode.addEventListener("mousedown", this.selectingHandler, false);
28
+ this.quill.on("text-change", this.tdResizeHandler);
29
+ if (this.quill.root === this.quill.scrollingContainer) {
30
+ this.quill.root.addEventListener("scroll", this.handleQuillRootScroll.bind(this));
31
+ }
32
+ }
33
+ handleQuillRootScroll() {
34
+ tableConfig.LINE_POSITIONS.forEach((direction) => {
35
+ const selectionLine = this[direction];
36
+ if (selectionLine) {
37
+ selectionLine.style.marginTop = `${this.oldRootScrollTop - this.quill.root.scrollTop}px`;
38
+ }
39
+ });
40
+ }
41
+ isEditorHasScrollBar() {
42
+ if (this.quill.root.scrollHeight > this.quill.root.clientHeight) {
43
+ index.css(this.modulesContainer, { width: "calc(100% - 23px)" });
44
+ } else {
45
+ this.modulesContainer.removeAttribute("style");
46
+ }
47
+ }
48
+ helpLinesInitial() {
49
+ tableConfig.LINE_POSITIONS.forEach((direction) => {
50
+ this[direction] = document.createElement("div");
51
+ this[direction].classList.add("qlbt-selection-line");
52
+ if (direction === "left") {
53
+ this[direction].classList.add("qlbt-selection-line-first");
54
+ const ctrlPointLeft = document.createElement("div");
55
+ this[direction].appendChild(ctrlPointLeft);
56
+ }
57
+ if (direction === "bottom") {
58
+ this[direction].classList.add("qlbt-selection-line-last");
59
+ const ctrlPointRight = document.createElement("div");
60
+ this[direction].appendChild(ctrlPointRight);
61
+ }
62
+ index.css(this[direction], {
63
+ "position": "absolute",
64
+ "display": "none",
65
+ "background-color": tableConfig.PRIMARY_COLOR
66
+ });
67
+ this.modulesContainer.appendChild(this[direction]);
68
+ });
69
+ }
70
+ mouseDownHandler(e) {
71
+ if (e.button !== 0) {
72
+ return;
73
+ }
74
+ const self = this;
75
+ const betterTableModule = this.quill.getModule("better-table");
76
+ const tableColumnTool = betterTableModule.columnTool;
77
+ if (tableColumnTool.activeToolCell) {
78
+ tableColumnTool.activeToolCell.classList.remove("qlbt-tool-cell-on");
79
+ tableColumnTool.activeToolCell = null;
80
+ }
81
+ if (e.target.closest(".quill-better-table")) {
82
+ if (e.shiftKey) {
83
+ this.endTd = e.target.closest("td[data-row]");
84
+ this.drawSelection(this, true);
85
+ if (this.startTd !== this.endTd) {
86
+ this.quill.blur();
87
+ }
88
+ } else {
89
+ this.startTd = e.target.closest("td[data-row]");
90
+ this.drawSelection(this, false);
91
+ this.dragging = true;
92
+ this.parent.addEventListener("mousemove", mouseMoveHandler, false);
93
+ document.addEventListener("mouseup", mouseUpHandler, false);
94
+ }
95
+ } else if (e.target.closest(".qlbt-selection-line")) {
96
+ this.parent.addEventListener("mousemove", mouseMoveHandler, false);
97
+ document.addEventListener("mouseup", mouseUpHandler, false);
98
+ }
99
+ function mouseMoveHandler(event) {
100
+ event.stopPropagation();
101
+ if (event.button !== 0 || !event.target.closest(".quill-better-table")) {
102
+ return;
103
+ }
104
+ self.endTd = event.target.closest("td[data-row]");
105
+ if (!self.endTd) {
106
+ return;
107
+ }
108
+ self.drawSelection(self, true);
109
+ if (self.startTd !== self.endTd) {
110
+ self.quill.blur();
111
+ }
112
+ }
113
+ function mouseUpHandler() {
114
+ self.parent.removeEventListener("mousemove", mouseMoveHandler, false);
115
+ document.removeEventListener("mouseup", mouseUpHandler, false);
116
+ self.dragging = false;
117
+ }
118
+ }
119
+ drawSelection(self, end) {
120
+ self.startTdRect = index.getRelativeRect(self.startTd.getBoundingClientRect(), self.quill.root.parentNode);
121
+ let endTdRect = self.startTdRect;
122
+ if (end) {
123
+ self.endTdRect = index.getRelativeRect(self.endTd.getBoundingClientRect(), self.quill.root.parentNode);
124
+ endTdRect = self.endTdRect;
125
+ }
126
+ self.boundary = computeBoundaryFromRects(self.startTdRect, endTdRect);
127
+ self.selectedTds = self.computeSelectedTds();
128
+ self.repositionHelpLines();
129
+ }
130
+ setTdEditable(e) {
131
+ if (!this.editTd) {
132
+ return;
133
+ }
134
+ this.parent.removeEventListener("keypress", this.tdEditHandler, false);
135
+ const dom = this.editTd.domNode;
136
+ dom.removeEventListener("click", this.tdEditHandler, false);
137
+ dom.classList.add("editing-select-able");
138
+ dom.setAttribute("contenteditable", true);
139
+ if (e.type === "keypress") {
140
+ if (dom.childNodes.length > 1 || dom.firstChild.innerHTML !== "<br>") {
141
+ const blank = dom.firstChild.cloneNode();
142
+ blank.innerHTML = "<br>";
143
+ dom.innerHTML = "";
144
+ dom.appendChild(blank);
145
+ }
146
+ dom.focus();
147
+ }
148
+ }
149
+ resizeTd() {
150
+ if (!this.editTd || this.left && !this.left.offsetParent) {
151
+ return;
152
+ }
153
+ if (this.selectedTds.length > 1) {
154
+ this.refreshHelpLinesPosition();
155
+ } else {
156
+ const dom = this.editTd.domNode;
157
+ const domRect = index.getRelativeRect(dom.getBoundingClientRect(), this.quill.root.parentNode);
158
+ this.boundary = computeBoundaryFromRects(domRect, domRect);
159
+ this.repositionHelpLines();
160
+ }
161
+ this.isEditorHasScrollBar();
162
+ const betterTableModule = this.quill.getModule("better-table");
163
+ const tableColumnTool = betterTableModule.columnTool;
164
+ if (tableColumnTool) {
165
+ tableColumnTool.updateRowToolCells();
166
+ const tableViewRect = this.table.parentNode.getBoundingClientRect();
167
+ if (tableColumnTool.leftMask) {
168
+ index.css(tableColumnTool.leftMask, { height: `${tableViewRect.height + 50}px` });
169
+ }
170
+ }
171
+ const tableScrollBar = betterTableModule.tableScrollBar;
172
+ tableScrollBar.resetTableHeight(this.table);
173
+ }
174
+ resetTd(e) {
175
+ const dom = e.target;
176
+ dom.classList.remove("editing-select-able");
177
+ dom.setAttribute("contenteditable", false);
178
+ dom.removeAttribute("contenteditable");
179
+ }
180
+ correctBoundary() {
181
+ const tableContainer = Quill.find(this.table);
182
+ const tableCells = tableContainer.descendants(table.TableCell);
183
+ tableCells.forEach((tableCell) => {
184
+ const { x, y, width, height } = index.getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode);
185
+ const isCellIntersected = (x + tableConfig.ERROR_LIMIT >= this.boundary.x && x + tableConfig.ERROR_LIMIT <= this.boundary.x1 || x - tableConfig.ERROR_LIMIT + width >= this.boundary.x && x - tableConfig.ERROR_LIMIT + width <= this.boundary.x1) && (y + tableConfig.ERROR_LIMIT >= this.boundary.y && y + tableConfig.ERROR_LIMIT <= this.boundary.y1 || y - tableConfig.ERROR_LIMIT + height >= this.boundary.y && y - tableConfig.ERROR_LIMIT + height <= this.boundary.y1);
186
+ if (isCellIntersected) {
187
+ this.boundary = computeBoundaryFromRects(this.boundary, { x, y, width, height });
188
+ }
189
+ });
190
+ }
191
+ computeSelectedTds() {
192
+ const tableContainer = Quill.find(this.table);
193
+ const tableCells = tableContainer.descendants(table.TableCell);
194
+ const result = tableCells.reduce((selectedCells, tableCell) => {
195
+ const { x, y, width, height } = index.getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode);
196
+ const isCellIncluded = x + tableConfig.ERROR_LIMIT >= this.boundary.x && x - tableConfig.ERROR_LIMIT + width <= this.boundary.x1 && y + tableConfig.ERROR_LIMIT >= this.boundary.y && y - tableConfig.ERROR_LIMIT + height <= this.boundary.y1;
197
+ if (isCellIncluded) {
198
+ selectedCells.push(tableCell);
199
+ }
200
+ return selectedCells;
201
+ }, []);
202
+ if (result.length === 1 && this.editTd !== result[0]) {
203
+ const resetTds = this.table.querySelectorAll("td[contenteditable=true]");
204
+ resetTds.forEach((td) => this.resetTd({ target: td }));
205
+ this.editTd = result[0];
206
+ this.editTd.domNode.addEventListener("mousedown", this.tdEditHandler, false);
207
+ this.parent.addEventListener("keypress", this.tdEditHandler, false);
208
+ }
209
+ return result;
210
+ }
211
+ repositionHelpLines() {
212
+ this.oldRootScrollTop = this.quill.root.scrollTop;
213
+ if (!this.left) {
214
+ return;
215
+ }
216
+ index.css(this.left, {
217
+ "display": "block",
218
+ "left": `${this.boundary.x - 1}px`,
219
+ "top": `${this.boundary.y}px`,
220
+ "height": `${this.boundary.height + 1}px`,
221
+ "width": "1px",
222
+ "margin-top": "0px"
223
+ });
224
+ index.css(this.right, {
225
+ "display": "block",
226
+ "left": `${this.boundary.x1}px`,
227
+ "top": `${this.boundary.y - 1}px`,
228
+ "height": `${this.boundary.height + 1}px`,
229
+ "width": "1px",
230
+ "margin-top": "0px"
231
+ });
232
+ index.css(this.top, {
233
+ "display": "block",
234
+ "left": `${this.boundary.x - 1}px`,
235
+ "top": `${this.boundary.y - 1}px`,
236
+ "width": `${this.boundary.width + 1}px`,
237
+ "height": "1px",
238
+ "margin-top": "0px"
239
+ });
240
+ index.css(this.bottom, {
241
+ "display": "block",
242
+ "left": `${this.boundary.x - 1}px`,
243
+ "top": `${this.boundary.y1}px`,
244
+ "width": `${this.boundary.width + 1}px`,
245
+ "height": "1px",
246
+ "margin-top": "0px"
247
+ });
248
+ }
249
+ // based on selectedTds compute positions of help lines
250
+ // It is useful when selectedTds are not changed
251
+ refreshHelpLinesPosition() {
252
+ const startRect = index.getRelativeRect(this.selectedTds[0].domNode.getBoundingClientRect(), this.quill.root.parentNode);
253
+ const endRect = index.getRelativeRect(
254
+ this.selectedTds[this.selectedTds.length - 1].domNode.getBoundingClientRect(),
255
+ this.quill.root.parentNode
256
+ );
257
+ this.boundary = computeBoundaryFromRects(startRect, endRect);
258
+ this.repositionHelpLines();
259
+ }
260
+ destroy() {
261
+ const resetTds = this.table.querySelectorAll("td[contenteditable=true]");
262
+ resetTds.forEach((td) => this.resetTd({ target: td }));
263
+ tableConfig.LINE_POSITIONS.forEach((direction) => {
264
+ if (this[direction]) {
265
+ this[direction].remove();
266
+ this[direction] = null;
267
+ }
268
+ });
269
+ this.quill.root.parentNode.removeEventListener("mousedown", this.selectingHandler, false);
270
+ delete this.editTd;
271
+ return null;
272
+ }
273
+ setSelection(startRect, endRect) {
274
+ this.boundary = computeBoundaryFromRects(
275
+ index.getRelativeRect(startRect, this.quill.root.parentNode),
276
+ index.getRelativeRect(endRect, this.quill.root.parentNode)
277
+ );
278
+ this.correctBoundary();
279
+ this.selectedTds = this.computeSelectedTds();
280
+ this.repositionHelpLines();
281
+ }
282
+ clearSelection() {
283
+ const resetTds = this.table.querySelectorAll("td[contenteditable=true]");
284
+ resetTds.forEach((td) => this.resetTd({ target: td }));
285
+ this.boundary = {};
286
+ this.selectedTds = [];
287
+ tableConfig.LINE_POSITIONS.forEach((direction) => {
288
+ if (this[direction]) {
289
+ index.css(this[direction], {
290
+ display: "none"
291
+ });
292
+ }
293
+ });
294
+ }
295
+ }
296
+ function computeBoundaryFromRects(startRect, endRect) {
297
+ const x = Math.min(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1);
298
+ const x1 = Math.max(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1);
299
+ const y = Math.min(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1);
300
+ const y1 = Math.max(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1);
301
+ const width = x1 - x;
302
+ const height = y1 - y;
303
+ return { x, x1, y, y1, width, height };
304
+ }
305
+ exports.default = TableSelection;
306
+ //# sourceMappingURL=table-selection.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-selection.cjs.js","sources":["../../../../src/table/modules/table-selection.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { TableCell } from '../formats/table'\r\nimport { ERROR_LIMIT, LINE_POSITIONS, PRIMARY_COLOR } from '../table-config'\r\nimport { css, getRelativeRect } from '../utils'\r\n\r\nexport default class TableSelection {\r\n table: any\r\n quill: any\r\n modulesContainer: any\r\n parent: any\r\n boundary: any\r\n // @ts-ignore\r\n selectedTds: any[]\r\n // @ts-ignore\r\n dragging: boolean\r\n preSelectedTable: any\r\n oldRootScrollTop: any\r\n selectingHandler: any\r\n tdEditHandler: any\r\n tdResizeHandler: any\r\n endTd: any\r\n startTd: any\r\n editTd: any\r\n left: any\r\n bottom: any\r\n top: any\r\n right: any\r\n /* eslint-disable-next-line no-constructor-return */\r\n constructor(table, quill, dom) {\r\n if (!table) {\r\n return null\r\n }\r\n this.table = table\r\n this.quill = quill\r\n this.modulesContainer = dom\r\n this.parent = this.quill.root.parentNode\r\n this.boundary = {} // params for selected square\r\n this.selectedTds = [] // array for selected table-cells\r\n this.dragging = false\r\n this.preSelectedTable = null\r\n this.oldRootScrollTop = this.quill.root.scrollTop\r\n\r\n this.selectingHandler = this.mouseDownHandler.bind(this)\r\n\r\n this.tdEditHandler = this.setTdEditable.bind(this)\r\n this.tdResizeHandler = this.resizeTd.bind(this)\r\n\r\n this.helpLinesInitial()\r\n this.isEditorHasScrollBar()\r\n\r\n this.quill.root.parentNode.addEventListener('mousedown', this.selectingHandler, false)\r\n this.quill.on('text-change', this.tdResizeHandler)\r\n if (this.quill.root === this.quill.scrollingContainer) {\r\n this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n }\r\n }\r\n\r\n handleQuillRootScroll() {\r\n LINE_POSITIONS.forEach((direction) => {\r\n const selectionLine = this[direction]\r\n if (selectionLine) {\r\n selectionLine.style.marginTop = `${this.oldRootScrollTop - this.quill.root.scrollTop}px`\r\n }\r\n })\r\n }\r\n\r\n isEditorHasScrollBar() {\r\n if (this.quill.root.scrollHeight > this.quill.root.clientHeight) {\r\n css(this.modulesContainer, { width: 'calc(100% - 23px)' })\r\n }\r\n else {\r\n this.modulesContainer.removeAttribute('style')\r\n }\r\n }\r\n\r\n helpLinesInitial() {\r\n LINE_POSITIONS.forEach((direction) => {\r\n this[direction] = document.createElement('div')\r\n this[direction].classList.add('qlbt-selection-line')\r\n if (direction === 'left') {\r\n this[direction].classList.add('qlbt-selection-line-first')\r\n const ctrlPointLeft = document.createElement('div')\r\n this[direction].appendChild(ctrlPointLeft)\r\n }\r\n if (direction === 'bottom') {\r\n this[direction].classList.add('qlbt-selection-line-last')\r\n const ctrlPointRight = document.createElement('div')\r\n this[direction].appendChild(ctrlPointRight)\r\n }\r\n css(this[direction], {\r\n 'position': 'absolute',\r\n 'display': 'none',\r\n 'background-color': PRIMARY_COLOR,\r\n })\r\n this.modulesContainer.appendChild(this[direction])\r\n })\r\n }\r\n\r\n mouseDownHandler(e) {\r\n if (e.button !== 0) {\r\n return\r\n }\r\n const self: any = this\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableColumnTool = betterTableModule.columnTool\r\n if (tableColumnTool.activeToolCell) {\r\n tableColumnTool.activeToolCell.classList.remove('qlbt-tool-cell-on')\r\n tableColumnTool.activeToolCell = null\r\n }\r\n if (e.target.closest('.quill-better-table')) {\r\n if (e.shiftKey) {\r\n this.endTd = e.target.closest('td[data-row]')\r\n this.drawSelection(this, true)\r\n // avoid select text in multiple table-cell\r\n if (this.startTd !== this.endTd) {\r\n this.quill.blur()\r\n }\r\n }\r\n else {\r\n this.startTd = e.target.closest('td[data-row]')\r\n this.drawSelection(this, false)\r\n this.dragging = true\r\n\r\n this.parent.addEventListener('mousemove', mouseMoveHandler, false)\r\n document.addEventListener('mouseup', mouseUpHandler, false)\r\n }\r\n }\r\n else if (e.target.closest('.qlbt-selection-line')) {\r\n this.parent.addEventListener('mousemove', mouseMoveHandler, false)\r\n document.addEventListener('mouseup', mouseUpHandler, false)\r\n }\r\n\r\n function mouseMoveHandler(event) {\r\n event.stopPropagation()\r\n\r\n if (event.button !== 0 || !event.target.closest('.quill-better-table')) {\r\n return\r\n }\r\n self.endTd = event.target.closest('td[data-row]')\r\n if (!self.endTd) {\r\n return\r\n }\r\n self.drawSelection(self, true)\r\n // avoid select text in multiple table-cell\r\n if (self.startTd !== self.endTd) {\r\n self.quill.blur()\r\n }\r\n }\r\n\r\n function mouseUpHandler() {\r\n self.parent.removeEventListener('mousemove', mouseMoveHandler, false)\r\n document.removeEventListener('mouseup', mouseUpHandler, false)\r\n self.dragging = false\r\n }\r\n }\r\n\r\n drawSelection(self, end) {\r\n // fix: 如果滚动条拖动,startTd的位置已经改变了,需要重置startTdRect\r\n self.startTdRect = getRelativeRect(self.startTd.getBoundingClientRect(), self.quill.root.parentNode)\r\n let endTdRect = self.startTdRect\r\n if (end) {\r\n self.endTdRect = getRelativeRect(self.endTd.getBoundingClientRect(), self.quill.root.parentNode)\r\n endTdRect = self.endTdRect\r\n }\r\n self.boundary = computeBoundaryFromRects(self.startTdRect, endTdRect)\r\n self.selectedTds = self.computeSelectedTds()\r\n self.repositionHelpLines()\r\n }\r\n\r\n setTdEditable(e) {\r\n if (!this.editTd) {\r\n return\r\n }\r\n this.parent.removeEventListener('keypress', this.tdEditHandler, false)\r\n const dom = this.editTd.domNode\r\n dom.removeEventListener('click', this.tdEditHandler, false)\r\n dom.classList.add('editing-select-able')\r\n dom.setAttribute('contenteditable', true)\r\n if (e.type === 'keypress') {\r\n if (dom.childNodes.length > 1 || dom.firstChild.innerHTML !== '<br>') {\r\n const blank = dom.firstChild.cloneNode()\r\n blank.innerHTML = '<br>'\r\n dom.innerHTML = ''\r\n dom.appendChild(blank)\r\n }\r\n dom.focus()\r\n }\r\n }\r\n\r\n resizeTd() {\r\n if (!this.editTd || (this.left && !this.left.offsetParent)) {\r\n return\r\n }\r\n if (this.selectedTds.length > 1) {\r\n this.refreshHelpLinesPosition()\r\n }\r\n else {\r\n const dom = this.editTd.domNode\r\n const domRect = getRelativeRect(dom.getBoundingClientRect(), this.quill.root.parentNode)\r\n this.boundary = computeBoundaryFromRects(domRect, domRect)\r\n this.repositionHelpLines()\r\n }\r\n\r\n // 判断编辑器是否有滚动条,调整遮罩宽度\r\n this.isEditorHasScrollBar()\r\n\r\n // 更新行高 更新滑块位置\r\n const betterTableModule = this.quill.getModule('better-table')\r\n const tableColumnTool = betterTableModule.columnTool\r\n if (tableColumnTool) {\r\n tableColumnTool.updateRowToolCells()\r\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\r\n if (tableColumnTool.leftMask) {\r\n css(tableColumnTool.leftMask, { height: `${tableViewRect.height + 50}px` })\r\n }\r\n }\r\n\r\n const tableScrollBar = betterTableModule.tableScrollBar\r\n tableScrollBar.resetTableHeight(this.table)\r\n }\r\n\r\n resetTd(e) {\r\n const dom = e.target\r\n dom.classList.remove('editing-select-able')\r\n dom.setAttribute('contenteditable', false)\r\n dom.removeAttribute('contenteditable')\r\n }\r\n\r\n correctBoundary() {\r\n const tableContainer = Quill.find(this.table)\r\n const tableCells = tableContainer.descendants(TableCell)\r\n\r\n tableCells.forEach((tableCell) => {\r\n const { x, y, width, height } = getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n const isCellIntersected\r\n = ((x + ERROR_LIMIT >= this.boundary.x && x + ERROR_LIMIT <= this.boundary.x1)\r\n || (x - ERROR_LIMIT + width >= this.boundary.x && x - ERROR_LIMIT + width <= this.boundary.x1))\r\n && ((y + ERROR_LIMIT >= this.boundary.y && y + ERROR_LIMIT <= this.boundary.y1)\r\n || (y - ERROR_LIMIT + height >= this.boundary.y && y - ERROR_LIMIT + height <= this.boundary.y1))\r\n if (isCellIntersected) {\r\n this.boundary = computeBoundaryFromRects(this.boundary, { x, y, width, height })\r\n }\r\n })\r\n }\r\n\r\n computeSelectedTds() {\r\n const tableContainer = Quill.find(this.table)\r\n const tableCells = tableContainer.descendants(TableCell)\r\n\r\n const result = tableCells.reduce((selectedCells, tableCell) => {\r\n const { x, y, width, height } = getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n const isCellIncluded\r\n = x + ERROR_LIMIT >= this.boundary.x\r\n && x - ERROR_LIMIT + width <= this.boundary.x1\r\n && y + ERROR_LIMIT >= this.boundary.y\r\n && y - ERROR_LIMIT + height <= this.boundary.y1\r\n\r\n if (isCellIncluded) {\r\n selectedCells.push(tableCell)\r\n }\r\n\r\n return selectedCells\r\n }, [])\r\n\r\n if (result.length === 1 && this.editTd !== result[0]) {\r\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\r\n resetTds.forEach(td => this.resetTd({ target: td }))\r\n this.editTd = result[0]\r\n this.editTd.domNode.addEventListener('mousedown', this.tdEditHandler, false)\r\n this.parent.addEventListener('keypress', this.tdEditHandler, false)\r\n }\r\n\r\n return result\r\n }\r\n\r\n repositionHelpLines() {\r\n this.oldRootScrollTop = this.quill.root.scrollTop\r\n if (!this.left) {\r\n return\r\n }\r\n\r\n css(this.left, {\r\n 'display': 'block',\r\n 'left': `${this.boundary.x - 1}px`,\r\n 'top': `${this.boundary.y}px`,\r\n 'height': `${this.boundary.height + 1}px`,\r\n 'width': '1px',\r\n 'margin-top': '0px',\r\n })\r\n\r\n css(this.right, {\r\n 'display': 'block',\r\n 'left': `${this.boundary.x1}px`,\r\n 'top': `${this.boundary.y - 1}px`,\r\n 'height': `${this.boundary.height + 1}px`,\r\n 'width': '1px',\r\n 'margin-top': '0px',\r\n })\r\n\r\n css(this.top, {\r\n 'display': 'block',\r\n 'left': `${this.boundary.x - 1}px`,\r\n 'top': `${this.boundary.y - 1}px`,\r\n 'width': `${this.boundary.width + 1}px`,\r\n 'height': '1px',\r\n 'margin-top': '0px',\r\n })\r\n\r\n css(this.bottom, {\r\n 'display': 'block',\r\n 'left': `${this.boundary.x - 1}px`,\r\n 'top': `${this.boundary.y1}px`,\r\n 'width': `${this.boundary.width + 1}px`,\r\n 'height': '1px',\r\n 'margin-top': '0px',\r\n })\r\n }\r\n\r\n // based on selectedTds compute positions of help lines\r\n // It is useful when selectedTds are not changed\r\n refreshHelpLinesPosition() {\r\n const startRect = getRelativeRect(this.selectedTds[0].domNode.getBoundingClientRect(), this.quill.root.parentNode)\r\n const endRect = getRelativeRect(\r\n this.selectedTds[this.selectedTds.length - 1].domNode.getBoundingClientRect(),\r\n this.quill.root.parentNode,\r\n )\r\n this.boundary = computeBoundaryFromRects(startRect, endRect)\r\n this.repositionHelpLines()\r\n }\r\n\r\n destroy() {\r\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\r\n resetTds.forEach(td => this.resetTd({ target: td }))\r\n\r\n LINE_POSITIONS.forEach((direction) => {\r\n if (this[direction]) {\r\n this[direction].remove()\r\n this[direction] = null\r\n }\r\n })\r\n\r\n this.quill.root.parentNode.removeEventListener('mousedown', this.selectingHandler, false)\r\n\r\n delete this.editTd\r\n\r\n return null\r\n }\r\n\r\n setSelection(startRect, endRect) {\r\n this.boundary = computeBoundaryFromRects(\r\n getRelativeRect(startRect, this.quill.root.parentNode),\r\n getRelativeRect(endRect, this.quill.root.parentNode),\r\n )\r\n this.correctBoundary()\r\n this.selectedTds = this.computeSelectedTds()\r\n this.repositionHelpLines()\r\n }\r\n\r\n clearSelection() {\r\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\r\n resetTds.forEach(td => this.resetTd({ target: td }))\r\n this.boundary = {}\r\n this.selectedTds = []\r\n LINE_POSITIONS.forEach((direction) => {\r\n if (this[direction]) {\r\n css(this[direction], {\r\n display: 'none',\r\n })\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction computeBoundaryFromRects(startRect, endRect) {\r\n const x = Math.min(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1)\r\n\r\n const x1 = Math.max(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1)\r\n\r\n const y = Math.min(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1)\r\n\r\n const y1 = Math.max(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1)\r\n\r\n const width = x1 - x\r\n const height = y1 - y\r\n\r\n return { x, x1, y, y1, width, height }\r\n}\r\n"],"names":["table","LINE_POSITIONS","css","PRIMARY_COLOR","getRelativeRect","TableCell","ERROR_LIMIT"],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const TABLE_CELL_LINE_CLASS = "qlrte__better-table-cell-line";
4
+ const ROW_TOOL_CLASS = "qlrte__row-tool";
5
+ const ROW_TOOL_CELL_CLASS = "qlrte__row-tool-cell";
6
+ const ROW_TOOL_CELL_HOLDER_CLASS = "qlrte__row-tool-cell-holder";
7
+ const COL_TOOL_CLASS = "qlrte__col-tool";
8
+ const COL_TOOL_CELL_CLASS = "qlrte__col-tool-cell";
9
+ const COL_TOOL_CELL_HOLDER_CLASS = "qlrte__col-tool-cell-holder";
10
+ const SELECT_LINE_CLASS = "qlrte__selection-line";
11
+ const OPERATE_MENU_CLASS = "qlrte__op-menu";
12
+ const OPERATE_MENU_ITEM_CLASS = "qlrte__op-menu-item";
13
+ const OPERATE_MENU_ICON_CLASS = "qlrte__op-menu-icon";
14
+ const OPERATE_MENU_ICON_PREFIX_CLASS = "qlrte__op-menu-icon-prefix";
15
+ const OPERATE_MENU_TEXT_CLASS = "qlrte__op-menu-text";
16
+ const OPERATE_MENU_DIVIDING_CLASS = "qlrte__op-menu-dividing";
17
+ const OPERATE_MENU_SUBTITLE_CLASS = "qlrte__op-menu-subtitle";
18
+ const OPERATE_MENU_COLORPICKER_CLASS = "qlrte__op-menu-color-picker";
19
+ const OPERATE_MENU_COLORPICKER_ITEM_CLASS = "qlrte__op-menu-color-picker-item";
20
+ const COL_ATTRIBUTES = ["width"];
21
+ const COL_DEFAULT = {
22
+ width: 100
23
+ };
24
+ const CELL_IDENTITY_KEYS = ["row", "cell"];
25
+ const CELL_ATTRIBUTES = ["rowspan", "colspan", "cell-bg"];
26
+ const CELL_DEFAULT = {
27
+ rowspan: 1,
28
+ colspan: 1
29
+ };
30
+ const ERROR_LIMIT = 5;
31
+ const SCROLL_BAR_PANEL_HEIGHT = 32;
32
+ const ROW_TOOL_WIDTH = 16;
33
+ const COL_TOOL_HEIGHT = 16;
34
+ const CELL_MIN_WIDTH = 50;
35
+ const CELL_MIN_HEIGHT = 29;
36
+ const PRIMARY_COLOR = ["#5170ff", "var(--brand-1, #5170ff)"];
37
+ const MENU_ITEM_HEIGHT = 40;
38
+ const MENU_MIN_HEIGHT = 150;
39
+ const MENU_WIDTH = 205;
40
+ const LINE_POSITIONS = ["left", "right", "top", "bottom"];
41
+ exports.CELL_ATTRIBUTES = CELL_ATTRIBUTES;
42
+ exports.CELL_DEFAULT = CELL_DEFAULT;
43
+ exports.CELL_IDENTITY_KEYS = CELL_IDENTITY_KEYS;
44
+ exports.CELL_MIN_HEIGHT = CELL_MIN_HEIGHT;
45
+ exports.CELL_MIN_WIDTH = CELL_MIN_WIDTH;
46
+ exports.COL_ATTRIBUTES = COL_ATTRIBUTES;
47
+ exports.COL_DEFAULT = COL_DEFAULT;
48
+ exports.COL_TOOL_CELL_CLASS = COL_TOOL_CELL_CLASS;
49
+ exports.COL_TOOL_CELL_HOLDER_CLASS = COL_TOOL_CELL_HOLDER_CLASS;
50
+ exports.COL_TOOL_CLASS = COL_TOOL_CLASS;
51
+ exports.COL_TOOL_HEIGHT = COL_TOOL_HEIGHT;
52
+ exports.ERROR_LIMIT = ERROR_LIMIT;
53
+ exports.LINE_POSITIONS = LINE_POSITIONS;
54
+ exports.MENU_ITEM_HEIGHT = MENU_ITEM_HEIGHT;
55
+ exports.MENU_MIN_HEIGHT = MENU_MIN_HEIGHT;
56
+ exports.MENU_WIDTH = MENU_WIDTH;
57
+ exports.OPERATE_MENU_CLASS = OPERATE_MENU_CLASS;
58
+ exports.OPERATE_MENU_COLORPICKER_CLASS = OPERATE_MENU_COLORPICKER_CLASS;
59
+ exports.OPERATE_MENU_COLORPICKER_ITEM_CLASS = OPERATE_MENU_COLORPICKER_ITEM_CLASS;
60
+ exports.OPERATE_MENU_DIVIDING_CLASS = OPERATE_MENU_DIVIDING_CLASS;
61
+ exports.OPERATE_MENU_ICON_CLASS = OPERATE_MENU_ICON_CLASS;
62
+ exports.OPERATE_MENU_ICON_PREFIX_CLASS = OPERATE_MENU_ICON_PREFIX_CLASS;
63
+ exports.OPERATE_MENU_ITEM_CLASS = OPERATE_MENU_ITEM_CLASS;
64
+ exports.OPERATE_MENU_SUBTITLE_CLASS = OPERATE_MENU_SUBTITLE_CLASS;
65
+ exports.OPERATE_MENU_TEXT_CLASS = OPERATE_MENU_TEXT_CLASS;
66
+ exports.PRIMARY_COLOR = PRIMARY_COLOR;
67
+ exports.ROW_TOOL_CELL_CLASS = ROW_TOOL_CELL_CLASS;
68
+ exports.ROW_TOOL_CELL_HOLDER_CLASS = ROW_TOOL_CELL_HOLDER_CLASS;
69
+ exports.ROW_TOOL_CLASS = ROW_TOOL_CLASS;
70
+ exports.ROW_TOOL_WIDTH = ROW_TOOL_WIDTH;
71
+ exports.SCROLL_BAR_PANEL_HEIGHT = SCROLL_BAR_PANEL_HEIGHT;
72
+ exports.SELECT_LINE_CLASS = SELECT_LINE_CLASS;
73
+ exports.TABLE_CELL_LINE_CLASS = TABLE_CELL_LINE_CLASS;
74
+ //# sourceMappingURL=table-config.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-config.cjs.js","sources":["../../../src/table/table-config.ts"],"sourcesContent":["export const TABLE_CELL_LINE_CLASS = 'qlrte__better-table-cell-line'\r\nexport const ROW_TOOL_CLASS = 'qlrte__row-tool'\r\nexport const ROW_TOOL_CELL_CLASS = 'qlrte__row-tool-cell'\r\nexport const ROW_TOOL_CELL_HOLDER_CLASS = 'qlrte__row-tool-cell-holder'\r\nexport const COL_TOOL_CLASS = 'qlrte__col-tool'\r\nexport const COL_TOOL_CELL_CLASS = 'qlrte__col-tool-cell'\r\nexport const COL_TOOL_CELL_HOLDER_CLASS = 'qlrte__col-tool-cell-holder'\r\nexport const SELECT_LINE_CLASS = 'qlrte__selection-line'\r\nexport const OPERATE_MENU_CLASS = 'qlrte__op-menu'\r\nexport const OPERATE_MENU_ITEM_CLASS = 'qlrte__op-menu-item'\r\nexport const OPERATE_MENU_ICON_CLASS = 'qlrte__op-menu-icon'\r\nexport const OPERATE_MENU_ICON_PREFIX_CLASS = 'qlrte__op-menu-icon-prefix'\r\nexport const OPERATE_MENU_TEXT_CLASS = 'qlrte__op-menu-text'\r\nexport const OPERATE_MENU_DIVIDING_CLASS = 'qlrte__op-menu-dividing'\r\nexport const OPERATE_MENU_SUBTITLE_CLASS = 'qlrte__op-menu-subtitle'\r\nexport const OPERATE_MENU_COLORPICKER_CLASS = 'qlrte__op-menu-color-picker'\r\nexport const OPERATE_MENU_COLORPICKER_ITEM_CLASS\r\n = 'qlrte__op-menu-color-picker-item'\r\nexport const COL_ATTRIBUTES = ['width']\r\nexport const COL_DEFAULT = {\r\n width: 100,\r\n}\r\nexport const CELL_IDENTITY_KEYS = ['row', 'cell']\r\nexport const CELL_ATTRIBUTES = ['rowspan', 'colspan', 'cell-bg']\r\nexport const CELL_DEFAULT = {\r\n rowspan: 1,\r\n colspan: 1,\r\n}\r\nexport const ERROR_LIMIT = 5\r\n\r\nexport const SCROLL_BAR_PANEL_HEIGHT = 32\r\nexport const ROW_TOOL_WIDTH = 16\r\nexport const COL_TOOL_HEIGHT = 16\r\nexport const CELL_MIN_WIDTH = 50\r\nexport const CELL_MIN_HEIGHT = 29\r\nexport const PRIMARY_COLOR = ['#5170ff', 'var(--brand-1, #5170ff)']\r\n\r\nexport const MENU_ITEM_HEIGHT = 40\r\nexport const MENU_MIN_HEIGHT = 150\r\nexport const MENU_WIDTH = 205\r\n\r\nexport const LINE_POSITIONS = ['left', 'right', 'top', 'bottom']\r\n"],"names":[],"mappings":";;AAAO,MAAM,wBAAwB;AAC9B,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,MAAM,iCAAiC;AACvC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,iCAAiC;AACvC,MAAM,sCACT;AACS,MAAA,iBAAiB,CAAC,OAAO;AAC/B,MAAM,cAAc;AAAA,EACzB,OAAO;AACT;AACa,MAAA,qBAAqB,CAAC,OAAO,MAAM;AACzC,MAAM,kBAAkB,CAAC,WAAW,WAAW,SAAS;AACxD,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,SAAS;AACX;AACO,MAAM,cAAc;AAEpB,MAAM,0BAA0B;AAChC,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AAClB,MAAA,gBAAgB,CAAC,WAAW,yBAAyB;AAE3D,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AACxB,MAAM,aAAa;AAEnB,MAAM,iBAAiB,CAAC,QAAQ,SAAS,OAAO,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}