@opentiny/fluent-editor 3.20.2-alpha.0 → 3.20.2

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 (530) hide show
  1. package/dist/package.json +52 -0
  2. package/package.json +3 -3
  3. package/scripts/pre-release.js +34 -0
  4. package/src/assets/better-table.scss +367 -0
  5. package/src/assets/common.scss +279 -0
  6. package/src/assets/counter.scss +19 -0
  7. package/src/assets/custom-image.scss +20 -0
  8. package/src/assets/editor.scss +365 -0
  9. package/src/assets/emoji/emoji.scss +461 -0
  10. package/src/assets/emoji/style.scss +252 -0
  11. package/src/assets/fileBar.scss +116 -0
  12. package/src/assets/font.scss +36 -0
  13. package/src/assets/fullscreen.scss +21 -0
  14. package/src/assets/iconfont/iconfont.ttf +0 -0
  15. package/src/assets/iconfont/iconfont.woff +0 -0
  16. package/src/assets/iconfont/iconfont.woff2 +0 -0
  17. package/src/assets/image1.png +0 -0
  18. package/src/assets/lineHeight.scss +16 -0
  19. package/src/assets/link.scss +130 -0
  20. package/src/assets/mention.scss +48 -0
  21. package/src/assets/screenshot.scss +78 -0
  22. package/src/assets/size.scss +13 -0
  23. package/src/assets/style.scss +39 -0
  24. package/src/assets/tasklist.scss +76 -0
  25. package/src/assets/toolbar.scss +416 -0
  26. package/src/attributors/font-size.ts +6 -0
  27. package/src/attributors/font-style.ts +6 -0
  28. package/src/attributors/index.ts +4 -0
  29. package/src/attributors/line-height.ts +6 -0
  30. package/src/attributors/text-indent.ts +6 -0
  31. package/src/config/base64-image.ts +8 -0
  32. package/src/config/editor.config.ts +88 -0
  33. package/src/config/editor.utils.ts +199 -0
  34. package/src/config/i18n/en-us.ts +106 -0
  35. package/src/config/i18n/zh-cn.ts +104 -0
  36. package/src/config/icons.config.ts +297 -0
  37. package/src/config/index.ts +171 -0
  38. package/src/config/types/additional-toolbar-item.interface.ts +8 -0
  39. package/src/config/types/content-change.interface.ts +13 -0
  40. package/src/config/types/content-save.interface.ts +6 -0
  41. package/src/config/types/counter-option.interface.ts +9 -0
  42. package/src/config/types/editor-config.interface.ts +22 -0
  43. package/src/config/types/editor-modules.interface.ts +41 -0
  44. package/src/config/types/file-operation.interface.ts +12 -0
  45. package/src/config/types/focus-change.interface.ts +4 -0
  46. package/src/config/types/fullscreen-module.interface.ts +4 -0
  47. package/src/config/types/help-panel-item.interface.ts +5 -0
  48. package/src/config/types/help-panel-option.interface.ts +7 -0
  49. package/src/config/types/image-module.interface.ts +3 -0
  50. package/src/config/types/image-upload.interface.ts +7 -0
  51. package/src/config/types/index.ts +22 -0
  52. package/src/config/types/load-on-demand-module.interface.ts +5 -0
  53. package/src/config/types/mention-module.interface.ts +8 -0
  54. package/src/config/types/paste-change.interface.ts +6 -0
  55. package/src/config/types/quick-menu-module.interface.ts +3 -0
  56. package/src/config/types/range.interface.ts +4 -0
  57. package/src/config/types/registry-options.interface.ts +5 -0
  58. package/src/config/types/selection-change.interface.ts +8 -0
  59. package/src/config/types/toolbar-item.interface.ts +13 -0
  60. package/src/config/types/type.ts +5 -0
  61. package/src/config/types/validate-error.interface.ts +11 -0
  62. package/src/counter/index.ts +69 -0
  63. package/src/custom-clipboard.ts +633 -0
  64. package/src/custom-image/BlotFormatter.ts +167 -0
  65. package/src/custom-image/Options.ts +150 -0
  66. package/src/custom-image/actions/Action.ts +13 -0
  67. package/src/custom-image/actions/CustomResizeAction.ts +207 -0
  68. package/src/custom-image/actions/DeleteAction.ts +29 -0
  69. package/src/custom-image/image.ts +118 -0
  70. package/src/custom-image/specs/BlotSpec.ts +30 -0
  71. package/src/custom-image/specs/CustomImageSpec.ts +139 -0
  72. package/src/custom-image/specs/ImageSpec.ts +33 -0
  73. package/src/custom-uploader.ts +199 -0
  74. package/src/emoji/emoji-list/index.ts +1 -0
  75. package/src/emoji/emoji-list/people.ts +111 -0
  76. package/src/emoji/emoji-list.ts +9 -0
  77. package/src/emoji/emoji-map.ts +9 -0
  78. package/src/emoji/formats/emoji-blot.ts +54 -0
  79. package/src/emoji/index.ts +5 -0
  80. package/src/emoji/modules/emoji.ts +318 -0
  81. package/src/emoji/modules/toolbar-emoji.ts +182 -0
  82. package/src/emoji/utils.ts +15 -0
  83. package/src/file/formats/file.ts +67 -0
  84. package/src/file/index.ts +38 -0
  85. package/src/file/modules/file-bar.ts +146 -0
  86. package/src/fluent-editor.ts +164 -0
  87. package/src/format-painter/index.ts +79 -0
  88. package/src/global-link/constants.ts +3 -0
  89. package/src/global-link/formats/customer-widget-link.ts +36 -0
  90. package/src/global-link/formats/doc-link.ts +55 -0
  91. package/src/global-link/formats/wiki-link.ts +45 -0
  92. package/src/global-link/formats/work-item-link.ts +47 -0
  93. package/src/global-link/global-link-panel.ts +20 -0
  94. package/src/global-link/index.ts +165 -0
  95. package/src/global-link/utils/createTable.ts +54 -0
  96. package/src/index.ts +5 -0
  97. package/src/link/formats/link.ts +44 -0
  98. package/src/link/index.ts +35 -0
  99. package/src/link/modules/tooltip.ts +318 -0
  100. package/src/mention/Mention.ts +406 -0
  101. package/src/mention/MentionLink.ts +51 -0
  102. package/src/mention/constants.ts +3 -0
  103. package/src/quick-menu/index.ts +100 -0
  104. package/src/screenshot/index.ts +231 -0
  105. package/src/soft-break/index.ts +34 -0
  106. package/src/strike/index.ts +16 -0
  107. package/src/syntax/index.ts +35 -0
  108. package/src/table/better-table.ts +553 -0
  109. package/src/table/formats/header.ts +129 -0
  110. package/src/table/formats/list.ts +229 -0
  111. package/src/table/formats/table.ts +1272 -0
  112. package/src/table/modules/table-column-tool.ts +492 -0
  113. package/src/table/modules/table-operation-menu.ts +584 -0
  114. package/src/table/modules/table-scroll-bar.ts +248 -0
  115. package/src/table/modules/table-selection.ts +387 -0
  116. package/src/table/table-config.ts +42 -0
  117. package/src/table/utils/index.ts +62 -0
  118. package/src/table/utils/node-matchers.ts +359 -0
  119. package/src/toolbar/better-picker.ts +370 -0
  120. package/src/toolbar/index.ts +180 -0
  121. package/src/utils/debounce.ts +149 -0
  122. package/src/utils/image.ts +22 -0
  123. package/src/utils/method.ts +82 -0
  124. package/src/utils/scroll-lock.ts +52 -0
  125. package/src/video/index.ts +62 -0
  126. package/tsconfig.json +26 -0
  127. package/vite.config.theme.ts +20 -0
  128. package/vite.config.ts +56 -0
  129. /package/{README.md → dist/README.md} +0 -0
  130. /package/{es → dist/es}/attributors/font-size.es.js +0 -0
  131. /package/{es → dist/es}/attributors/font-size.es.js.map +0 -0
  132. /package/{es → dist/es}/attributors/font-style.es.js +0 -0
  133. /package/{es → dist/es}/attributors/font-style.es.js.map +0 -0
  134. /package/{es → dist/es}/attributors/index.es.js +0 -0
  135. /package/{es → dist/es}/attributors/index.es.js.map +0 -0
  136. /package/{es → dist/es}/attributors/line-height.es.js +0 -0
  137. /package/{es → dist/es}/attributors/line-height.es.js.map +0 -0
  138. /package/{es → dist/es}/attributors/text-indent.es.js +0 -0
  139. /package/{es → dist/es}/attributors/text-indent.es.js.map +0 -0
  140. /package/{es → dist/es}/config/base64-image.es.js +0 -0
  141. /package/{es → dist/es}/config/base64-image.es.js.map +0 -0
  142. /package/{es → dist/es}/config/editor.config.es.js +0 -0
  143. /package/{es → dist/es}/config/editor.config.es.js.map +0 -0
  144. /package/{es → dist/es}/config/editor.utils.es.js +0 -0
  145. /package/{es → dist/es}/config/editor.utils.es.js.map +0 -0
  146. /package/{es → dist/es}/config/i18n/en-us.es.js +0 -0
  147. /package/{es → dist/es}/config/i18n/en-us.es.js.map +0 -0
  148. /package/{es → dist/es}/config/i18n/zh-cn.es.js +0 -0
  149. /package/{es → dist/es}/config/i18n/zh-cn.es.js.map +0 -0
  150. /package/{es → dist/es}/config/icons.config.es.js +0 -0
  151. /package/{es → dist/es}/config/icons.config.es.js.map +0 -0
  152. /package/{es → dist/es}/config/index.es.js +0 -0
  153. /package/{es → dist/es}/config/index.es.js.map +0 -0
  154. /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js +0 -0
  155. /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js.map +0 -0
  156. /package/{es → dist/es}/config/types/content-change.interface.es.js +0 -0
  157. /package/{es → dist/es}/config/types/content-change.interface.es.js.map +0 -0
  158. /package/{es → dist/es}/config/types/content-save.interface.es.js +0 -0
  159. /package/{es → dist/es}/config/types/content-save.interface.es.js.map +0 -0
  160. /package/{es → dist/es}/config/types/counter-option.interface.es.js +0 -0
  161. /package/{es → dist/es}/config/types/counter-option.interface.es.js.map +0 -0
  162. /package/{es → dist/es}/config/types/editor-config.interface.es.js +0 -0
  163. /package/{es → dist/es}/config/types/editor-config.interface.es.js.map +0 -0
  164. /package/{es → dist/es}/config/types/editor-modules.interface.es.js +0 -0
  165. /package/{es → dist/es}/config/types/editor-modules.interface.es.js.map +0 -0
  166. /package/{es → dist/es}/config/types/file-operation.interface.es.js +0 -0
  167. /package/{es → dist/es}/config/types/file-operation.interface.es.js.map +0 -0
  168. /package/{es → dist/es}/config/types/focus-change.interface.es.js +0 -0
  169. /package/{es → dist/es}/config/types/focus-change.interface.es.js.map +0 -0
  170. /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js +0 -0
  171. /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js.map +0 -0
  172. /package/{es → dist/es}/config/types/help-panel-item.interface.es.js +0 -0
  173. /package/{es → dist/es}/config/types/help-panel-item.interface.es.js.map +0 -0
  174. /package/{es → dist/es}/config/types/help-panel-option.interface.es.js +0 -0
  175. /package/{es → dist/es}/config/types/help-panel-option.interface.es.js.map +0 -0
  176. /package/{es → dist/es}/config/types/image-module.interface.es.js +0 -0
  177. /package/{es → dist/es}/config/types/image-module.interface.es.js.map +0 -0
  178. /package/{es → dist/es}/config/types/image-upload.interface.es.js +0 -0
  179. /package/{es → dist/es}/config/types/image-upload.interface.es.js.map +0 -0
  180. /package/{es → dist/es}/config/types/index.es.js +0 -0
  181. /package/{es → dist/es}/config/types/index.es.js.map +0 -0
  182. /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js +0 -0
  183. /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js.map +0 -0
  184. /package/{es → dist/es}/config/types/mention-module.interface.es.js +0 -0
  185. /package/{es → dist/es}/config/types/mention-module.interface.es.js.map +0 -0
  186. /package/{es → dist/es}/config/types/paste-change.interface.es.js +0 -0
  187. /package/{es → dist/es}/config/types/paste-change.interface.es.js.map +0 -0
  188. /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js +0 -0
  189. /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js.map +0 -0
  190. /package/{es → dist/es}/config/types/range.interface.es.js +0 -0
  191. /package/{es → dist/es}/config/types/range.interface.es.js.map +0 -0
  192. /package/{es → dist/es}/config/types/registry-options.interface.es.js +0 -0
  193. /package/{es → dist/es}/config/types/registry-options.interface.es.js.map +0 -0
  194. /package/{es → dist/es}/config/types/selection-change.interface.es.js +0 -0
  195. /package/{es → dist/es}/config/types/selection-change.interface.es.js.map +0 -0
  196. /package/{es → dist/es}/config/types/toolbar-item.interface.es.js +0 -0
  197. /package/{es → dist/es}/config/types/toolbar-item.interface.es.js.map +0 -0
  198. /package/{es → dist/es}/config/types/type.es.js +0 -0
  199. /package/{es → dist/es}/config/types/type.es.js.map +0 -0
  200. /package/{es → dist/es}/config/types/validate-error.interface.es.js +0 -0
  201. /package/{es → dist/es}/config/types/validate-error.interface.es.js.map +0 -0
  202. /package/{es → dist/es}/counter/index.es.js +0 -0
  203. /package/{es → dist/es}/counter/index.es.js.map +0 -0
  204. /package/{es → dist/es}/custom-clipboard.es.js +0 -0
  205. /package/{es → dist/es}/custom-clipboard.es.js.map +0 -0
  206. /package/{es → dist/es}/custom-image/BlotFormatter.es.js +0 -0
  207. /package/{es → dist/es}/custom-image/BlotFormatter.es.js.map +0 -0
  208. /package/{es → dist/es}/custom-image/Options.es.js +0 -0
  209. /package/{es → dist/es}/custom-image/Options.es.js.map +0 -0
  210. /package/{es → dist/es}/custom-image/actions/Action.es.js +0 -0
  211. /package/{es → dist/es}/custom-image/actions/Action.es.js.map +0 -0
  212. /package/{es → dist/es}/custom-image/actions/CustomResizeAction.es.js +0 -0
  213. /package/{es → dist/es}/custom-image/actions/CustomResizeAction.es.js.map +0 -0
  214. /package/{es → dist/es}/custom-image/actions/DeleteAction.es.js +0 -0
  215. /package/{es → dist/es}/custom-image/actions/DeleteAction.es.js.map +0 -0
  216. /package/{es → dist/es}/custom-image/image.es.js +0 -0
  217. /package/{es → dist/es}/custom-image/image.es.js.map +0 -0
  218. /package/{es → dist/es}/custom-image/specs/BlotSpec.es.js +0 -0
  219. /package/{es → dist/es}/custom-image/specs/BlotSpec.es.js.map +0 -0
  220. /package/{es → dist/es}/custom-image/specs/CustomImageSpec.es.js +0 -0
  221. /package/{es → dist/es}/custom-image/specs/CustomImageSpec.es.js.map +0 -0
  222. /package/{es → dist/es}/custom-image/specs/ImageSpec.es.js +0 -0
  223. /package/{es → dist/es}/custom-image/specs/ImageSpec.es.js.map +0 -0
  224. /package/{es → dist/es}/custom-uploader.es.js +0 -0
  225. /package/{es → dist/es}/custom-uploader.es.js.map +0 -0
  226. /package/{es → dist/es}/emoji/emoji-list/index.es.js +0 -0
  227. /package/{es → dist/es}/emoji/emoji-list/index.es.js.map +0 -0
  228. /package/{es → dist/es}/emoji/emoji-list/people.es.js +0 -0
  229. /package/{es → dist/es}/emoji/emoji-list/people.es.js.map +0 -0
  230. /package/{es → dist/es}/emoji/emoji-list.es.js +0 -0
  231. /package/{es → dist/es}/emoji/emoji-list.es.js.map +0 -0
  232. /package/{es → dist/es}/emoji/emoji-map.es.js +0 -0
  233. /package/{es → dist/es}/emoji/emoji-map.es.js.map +0 -0
  234. /package/{es → dist/es}/emoji/formats/emoji-blot.es.js +0 -0
  235. /package/{es → dist/es}/emoji/formats/emoji-blot.es.js.map +0 -0
  236. /package/{es → dist/es}/emoji/index.es.js +0 -0
  237. /package/{es → dist/es}/emoji/index.es.js.map +0 -0
  238. /package/{es → dist/es}/emoji/modules/emoji.es.js +0 -0
  239. /package/{es → dist/es}/emoji/modules/emoji.es.js.map +0 -0
  240. /package/{es → dist/es}/emoji/modules/toolbar-emoji.es.js +0 -0
  241. /package/{es → dist/es}/emoji/modules/toolbar-emoji.es.js.map +0 -0
  242. /package/{es → dist/es}/emoji/utils.es.js +0 -0
  243. /package/{es → dist/es}/emoji/utils.es.js.map +0 -0
  244. /package/{es → dist/es}/file/formats/file.es.js +0 -0
  245. /package/{es → dist/es}/file/formats/file.es.js.map +0 -0
  246. /package/{es → dist/es}/file/index.es.js +0 -0
  247. /package/{es → dist/es}/file/index.es.js.map +0 -0
  248. /package/{es → dist/es}/file/modules/file-bar.es.js +0 -0
  249. /package/{es → dist/es}/file/modules/file-bar.es.js.map +0 -0
  250. /package/{es → dist/es}/fluent-editor.es.js +0 -0
  251. /package/{es → dist/es}/fluent-editor.es.js.map +0 -0
  252. /package/{es → dist/es}/format-painter/index.es.js +0 -0
  253. /package/{es → dist/es}/format-painter/index.es.js.map +0 -0
  254. /package/{es → dist/es}/global-link/constants.es.js +0 -0
  255. /package/{es → dist/es}/global-link/constants.es.js.map +0 -0
  256. /package/{es → dist/es}/global-link/formats/customer-widget-link.es.js +0 -0
  257. /package/{es → dist/es}/global-link/formats/customer-widget-link.es.js.map +0 -0
  258. /package/{es → dist/es}/global-link/formats/doc-link.es.js +0 -0
  259. /package/{es → dist/es}/global-link/formats/doc-link.es.js.map +0 -0
  260. /package/{es → dist/es}/global-link/formats/wiki-link.es.js +0 -0
  261. /package/{es → dist/es}/global-link/formats/wiki-link.es.js.map +0 -0
  262. /package/{es → dist/es}/global-link/formats/work-item-link.es.js +0 -0
  263. /package/{es → dist/es}/global-link/formats/work-item-link.es.js.map +0 -0
  264. /package/{es → dist/es}/global-link/global-link-panel.es.js +0 -0
  265. /package/{es → dist/es}/global-link/global-link-panel.es.js.map +0 -0
  266. /package/{es → dist/es}/global-link/index.es.js +0 -0
  267. /package/{es → dist/es}/global-link/index.es.js.map +0 -0
  268. /package/{es → dist/es}/global-link/utils/createTable.es.js +0 -0
  269. /package/{es → dist/es}/global-link/utils/createTable.es.js.map +0 -0
  270. /package/{es → dist/es}/index.es.js +0 -0
  271. /package/{es → dist/es}/index.es.js.map +0 -0
  272. /package/{es → dist/es}/link/formats/link.es.js +0 -0
  273. /package/{es → dist/es}/link/formats/link.es.js.map +0 -0
  274. /package/{es → dist/es}/link/index.es.js +0 -0
  275. /package/{es → dist/es}/link/index.es.js.map +0 -0
  276. /package/{es → dist/es}/link/modules/tooltip.es.js +0 -0
  277. /package/{es → dist/es}/link/modules/tooltip.es.js.map +0 -0
  278. /package/{es → dist/es}/mention/Mention.es.js +0 -0
  279. /package/{es → dist/es}/mention/Mention.es.js.map +0 -0
  280. /package/{es → dist/es}/mention/MentionLink.es.js +0 -0
  281. /package/{es → dist/es}/mention/MentionLink.es.js.map +0 -0
  282. /package/{es → dist/es}/mention/constants.es.js +0 -0
  283. /package/{es → dist/es}/mention/constants.es.js.map +0 -0
  284. /package/{es → dist/es}/quick-menu/index.es.js +0 -0
  285. /package/{es → dist/es}/quick-menu/index.es.js.map +0 -0
  286. /package/{es → dist/es}/screenshot/index.es.js +0 -0
  287. /package/{es → dist/es}/screenshot/index.es.js.map +0 -0
  288. /package/{es → dist/es}/soft-break/index.es.js +0 -0
  289. /package/{es → dist/es}/soft-break/index.es.js.map +0 -0
  290. /package/{es → dist/es}/strike/index.es.js +0 -0
  291. /package/{es → dist/es}/strike/index.es.js.map +0 -0
  292. /package/{es → dist/es}/syntax/index.es.js +0 -0
  293. /package/{es → dist/es}/syntax/index.es.js.map +0 -0
  294. /package/{es → dist/es}/table/better-table.es.js +0 -0
  295. /package/{es → dist/es}/table/better-table.es.js.map +0 -0
  296. /package/{es → dist/es}/table/formats/header.es.js +0 -0
  297. /package/{es → dist/es}/table/formats/header.es.js.map +0 -0
  298. /package/{es → dist/es}/table/formats/list.es.js +0 -0
  299. /package/{es → dist/es}/table/formats/list.es.js.map +0 -0
  300. /package/{es → dist/es}/table/formats/table.es.js +0 -0
  301. /package/{es → dist/es}/table/formats/table.es.js.map +0 -0
  302. /package/{es → dist/es}/table/modules/table-column-tool.es.js +0 -0
  303. /package/{es → dist/es}/table/modules/table-column-tool.es.js.map +0 -0
  304. /package/{es → dist/es}/table/modules/table-operation-menu.es.js +0 -0
  305. /package/{es → dist/es}/table/modules/table-operation-menu.es.js.map +0 -0
  306. /package/{es → dist/es}/table/modules/table-scroll-bar.es.js +0 -0
  307. /package/{es → dist/es}/table/modules/table-scroll-bar.es.js.map +0 -0
  308. /package/{es → dist/es}/table/modules/table-selection.es.js +0 -0
  309. /package/{es → dist/es}/table/modules/table-selection.es.js.map +0 -0
  310. /package/{es → dist/es}/table/table-config.es.js +0 -0
  311. /package/{es → dist/es}/table/table-config.es.js.map +0 -0
  312. /package/{es → dist/es}/table/utils/index.es.js +0 -0
  313. /package/{es → dist/es}/table/utils/index.es.js.map +0 -0
  314. /package/{es → dist/es}/table/utils/node-matchers.es.js +0 -0
  315. /package/{es → dist/es}/table/utils/node-matchers.es.js.map +0 -0
  316. /package/{es → dist/es}/toolbar/better-picker.es.js +0 -0
  317. /package/{es → dist/es}/toolbar/better-picker.es.js.map +0 -0
  318. /package/{es → dist/es}/toolbar/index.es.js +0 -0
  319. /package/{es → dist/es}/toolbar/index.es.js.map +0 -0
  320. /package/{es → dist/es}/utils/debounce.es.js +0 -0
  321. /package/{es → dist/es}/utils/debounce.es.js.map +0 -0
  322. /package/{es → dist/es}/utils/image.es.js +0 -0
  323. /package/{es → dist/es}/utils/image.es.js.map +0 -0
  324. /package/{es → dist/es}/utils/method.es.js +0 -0
  325. /package/{es → dist/es}/utils/method.es.js.map +0 -0
  326. /package/{es → dist/es}/utils/scroll-lock.es.js +0 -0
  327. /package/{es → dist/es}/utils/scroll-lock.es.js.map +0 -0
  328. /package/{es → dist/es}/video/index.es.js +0 -0
  329. /package/{es → dist/es}/video/index.es.js.map +0 -0
  330. /package/{lib → dist/lib}/attributors/font-size.cjs.js +0 -0
  331. /package/{lib → dist/lib}/attributors/font-size.cjs.js.map +0 -0
  332. /package/{lib → dist/lib}/attributors/font-style.cjs.js +0 -0
  333. /package/{lib → dist/lib}/attributors/font-style.cjs.js.map +0 -0
  334. /package/{lib → dist/lib}/attributors/index.cjs.js +0 -0
  335. /package/{lib → dist/lib}/attributors/index.cjs.js.map +0 -0
  336. /package/{lib → dist/lib}/attributors/line-height.cjs.js +0 -0
  337. /package/{lib → dist/lib}/attributors/line-height.cjs.js.map +0 -0
  338. /package/{lib → dist/lib}/attributors/text-indent.cjs.js +0 -0
  339. /package/{lib → dist/lib}/attributors/text-indent.cjs.js.map +0 -0
  340. /package/{lib → dist/lib}/config/base64-image.cjs.js +0 -0
  341. /package/{lib → dist/lib}/config/base64-image.cjs.js.map +0 -0
  342. /package/{lib → dist/lib}/config/editor.config.cjs.js +0 -0
  343. /package/{lib → dist/lib}/config/editor.config.cjs.js.map +0 -0
  344. /package/{lib → dist/lib}/config/editor.utils.cjs.js +0 -0
  345. /package/{lib → dist/lib}/config/editor.utils.cjs.js.map +0 -0
  346. /package/{lib → dist/lib}/config/i18n/en-us.cjs.js +0 -0
  347. /package/{lib → dist/lib}/config/i18n/en-us.cjs.js.map +0 -0
  348. /package/{lib → dist/lib}/config/i18n/zh-cn.cjs.js +0 -0
  349. /package/{lib → dist/lib}/config/i18n/zh-cn.cjs.js.map +0 -0
  350. /package/{lib → dist/lib}/config/icons.config.cjs.js +0 -0
  351. /package/{lib → dist/lib}/config/icons.config.cjs.js.map +0 -0
  352. /package/{lib → dist/lib}/config/index.cjs.js +0 -0
  353. /package/{lib → dist/lib}/config/index.cjs.js.map +0 -0
  354. /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js +0 -0
  355. /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js.map +0 -0
  356. /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js +0 -0
  357. /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js.map +0 -0
  358. /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js +0 -0
  359. /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js.map +0 -0
  360. /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js +0 -0
  361. /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js.map +0 -0
  362. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js +0 -0
  363. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js.map +0 -0
  364. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js +0 -0
  365. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js.map +0 -0
  366. /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js +0 -0
  367. /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js.map +0 -0
  368. /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js +0 -0
  369. /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js.map +0 -0
  370. /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js +0 -0
  371. /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js.map +0 -0
  372. /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js +0 -0
  373. /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js.map +0 -0
  374. /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js +0 -0
  375. /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js.map +0 -0
  376. /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js +0 -0
  377. /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js.map +0 -0
  378. /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js +0 -0
  379. /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js.map +0 -0
  380. /package/{lib → dist/lib}/config/types/index.cjs.js +0 -0
  381. /package/{lib → dist/lib}/config/types/index.cjs.js.map +0 -0
  382. /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js +0 -0
  383. /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js.map +0 -0
  384. /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js +0 -0
  385. /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js.map +0 -0
  386. /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js +0 -0
  387. /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js.map +0 -0
  388. /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js +0 -0
  389. /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js.map +0 -0
  390. /package/{lib → dist/lib}/config/types/range.interface.cjs.js +0 -0
  391. /package/{lib → dist/lib}/config/types/range.interface.cjs.js.map +0 -0
  392. /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js +0 -0
  393. /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js.map +0 -0
  394. /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js +0 -0
  395. /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js.map +0 -0
  396. /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js +0 -0
  397. /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js.map +0 -0
  398. /package/{lib → dist/lib}/config/types/type.cjs.js +0 -0
  399. /package/{lib → dist/lib}/config/types/type.cjs.js.map +0 -0
  400. /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js +0 -0
  401. /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js.map +0 -0
  402. /package/{lib → dist/lib}/counter/index.cjs.js +0 -0
  403. /package/{lib → dist/lib}/counter/index.cjs.js.map +0 -0
  404. /package/{lib → dist/lib}/custom-clipboard.cjs.js +0 -0
  405. /package/{lib → dist/lib}/custom-clipboard.cjs.js.map +0 -0
  406. /package/{lib → dist/lib}/custom-image/BlotFormatter.cjs.js +0 -0
  407. /package/{lib → dist/lib}/custom-image/BlotFormatter.cjs.js.map +0 -0
  408. /package/{lib → dist/lib}/custom-image/Options.cjs.js +0 -0
  409. /package/{lib → dist/lib}/custom-image/Options.cjs.js.map +0 -0
  410. /package/{lib → dist/lib}/custom-image/actions/Action.cjs.js +0 -0
  411. /package/{lib → dist/lib}/custom-image/actions/Action.cjs.js.map +0 -0
  412. /package/{lib → dist/lib}/custom-image/actions/CustomResizeAction.cjs.js +0 -0
  413. /package/{lib → dist/lib}/custom-image/actions/CustomResizeAction.cjs.js.map +0 -0
  414. /package/{lib → dist/lib}/custom-image/actions/DeleteAction.cjs.js +0 -0
  415. /package/{lib → dist/lib}/custom-image/actions/DeleteAction.cjs.js.map +0 -0
  416. /package/{lib → dist/lib}/custom-image/image.cjs.js +0 -0
  417. /package/{lib → dist/lib}/custom-image/image.cjs.js.map +0 -0
  418. /package/{lib → dist/lib}/custom-image/specs/BlotSpec.cjs.js +0 -0
  419. /package/{lib → dist/lib}/custom-image/specs/BlotSpec.cjs.js.map +0 -0
  420. /package/{lib → dist/lib}/custom-image/specs/CustomImageSpec.cjs.js +0 -0
  421. /package/{lib → dist/lib}/custom-image/specs/CustomImageSpec.cjs.js.map +0 -0
  422. /package/{lib → dist/lib}/custom-image/specs/ImageSpec.cjs.js +0 -0
  423. /package/{lib → dist/lib}/custom-image/specs/ImageSpec.cjs.js.map +0 -0
  424. /package/{lib → dist/lib}/custom-uploader.cjs.js +0 -0
  425. /package/{lib → dist/lib}/custom-uploader.cjs.js.map +0 -0
  426. /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js +0 -0
  427. /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js.map +0 -0
  428. /package/{lib → dist/lib}/emoji/emoji-list/people.cjs.js +0 -0
  429. /package/{lib → dist/lib}/emoji/emoji-list/people.cjs.js.map +0 -0
  430. /package/{lib → dist/lib}/emoji/emoji-list.cjs.js +0 -0
  431. /package/{lib → dist/lib}/emoji/emoji-list.cjs.js.map +0 -0
  432. /package/{lib → dist/lib}/emoji/emoji-map.cjs.js +0 -0
  433. /package/{lib → dist/lib}/emoji/emoji-map.cjs.js.map +0 -0
  434. /package/{lib → dist/lib}/emoji/formats/emoji-blot.cjs.js +0 -0
  435. /package/{lib → dist/lib}/emoji/formats/emoji-blot.cjs.js.map +0 -0
  436. /package/{lib → dist/lib}/emoji/index.cjs.js +0 -0
  437. /package/{lib → dist/lib}/emoji/index.cjs.js.map +0 -0
  438. /package/{lib → dist/lib}/emoji/modules/emoji.cjs.js +0 -0
  439. /package/{lib → dist/lib}/emoji/modules/emoji.cjs.js.map +0 -0
  440. /package/{lib → dist/lib}/emoji/modules/toolbar-emoji.cjs.js +0 -0
  441. /package/{lib → dist/lib}/emoji/modules/toolbar-emoji.cjs.js.map +0 -0
  442. /package/{lib → dist/lib}/emoji/utils.cjs.js +0 -0
  443. /package/{lib → dist/lib}/emoji/utils.cjs.js.map +0 -0
  444. /package/{lib → dist/lib}/file/formats/file.cjs.js +0 -0
  445. /package/{lib → dist/lib}/file/formats/file.cjs.js.map +0 -0
  446. /package/{lib → dist/lib}/file/index.cjs.js +0 -0
  447. /package/{lib → dist/lib}/file/index.cjs.js.map +0 -0
  448. /package/{lib → dist/lib}/file/modules/file-bar.cjs.js +0 -0
  449. /package/{lib → dist/lib}/file/modules/file-bar.cjs.js.map +0 -0
  450. /package/{lib → dist/lib}/fluent-editor.cjs.js +0 -0
  451. /package/{lib → dist/lib}/fluent-editor.cjs.js.map +0 -0
  452. /package/{lib → dist/lib}/format-painter/index.cjs.js +0 -0
  453. /package/{lib → dist/lib}/format-painter/index.cjs.js.map +0 -0
  454. /package/{lib → dist/lib}/global-link/constants.cjs.js +0 -0
  455. /package/{lib → dist/lib}/global-link/constants.cjs.js.map +0 -0
  456. /package/{lib → dist/lib}/global-link/formats/customer-widget-link.cjs.js +0 -0
  457. /package/{lib → dist/lib}/global-link/formats/customer-widget-link.cjs.js.map +0 -0
  458. /package/{lib → dist/lib}/global-link/formats/doc-link.cjs.js +0 -0
  459. /package/{lib → dist/lib}/global-link/formats/doc-link.cjs.js.map +0 -0
  460. /package/{lib → dist/lib}/global-link/formats/wiki-link.cjs.js +0 -0
  461. /package/{lib → dist/lib}/global-link/formats/wiki-link.cjs.js.map +0 -0
  462. /package/{lib → dist/lib}/global-link/formats/work-item-link.cjs.js +0 -0
  463. /package/{lib → dist/lib}/global-link/formats/work-item-link.cjs.js.map +0 -0
  464. /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js +0 -0
  465. /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js.map +0 -0
  466. /package/{lib → dist/lib}/global-link/index.cjs.js +0 -0
  467. /package/{lib → dist/lib}/global-link/index.cjs.js.map +0 -0
  468. /package/{lib → dist/lib}/global-link/utils/createTable.cjs.js +0 -0
  469. /package/{lib → dist/lib}/global-link/utils/createTable.cjs.js.map +0 -0
  470. /package/{lib → dist/lib}/index.cjs.js +0 -0
  471. /package/{lib → dist/lib}/index.cjs.js.map +0 -0
  472. /package/{lib → dist/lib}/link/formats/link.cjs.js +0 -0
  473. /package/{lib → dist/lib}/link/formats/link.cjs.js.map +0 -0
  474. /package/{lib → dist/lib}/link/index.cjs.js +0 -0
  475. /package/{lib → dist/lib}/link/index.cjs.js.map +0 -0
  476. /package/{lib → dist/lib}/link/modules/tooltip.cjs.js +0 -0
  477. /package/{lib → dist/lib}/link/modules/tooltip.cjs.js.map +0 -0
  478. /package/{lib → dist/lib}/mention/Mention.cjs.js +0 -0
  479. /package/{lib → dist/lib}/mention/Mention.cjs.js.map +0 -0
  480. /package/{lib → dist/lib}/mention/MentionLink.cjs.js +0 -0
  481. /package/{lib → dist/lib}/mention/MentionLink.cjs.js.map +0 -0
  482. /package/{lib → dist/lib}/mention/constants.cjs.js +0 -0
  483. /package/{lib → dist/lib}/mention/constants.cjs.js.map +0 -0
  484. /package/{lib → dist/lib}/quick-menu/index.cjs.js +0 -0
  485. /package/{lib → dist/lib}/quick-menu/index.cjs.js.map +0 -0
  486. /package/{lib → dist/lib}/screenshot/index.cjs.js +0 -0
  487. /package/{lib → dist/lib}/screenshot/index.cjs.js.map +0 -0
  488. /package/{lib → dist/lib}/soft-break/index.cjs.js +0 -0
  489. /package/{lib → dist/lib}/soft-break/index.cjs.js.map +0 -0
  490. /package/{lib → dist/lib}/strike/index.cjs.js +0 -0
  491. /package/{lib → dist/lib}/strike/index.cjs.js.map +0 -0
  492. /package/{lib → dist/lib}/syntax/index.cjs.js +0 -0
  493. /package/{lib → dist/lib}/syntax/index.cjs.js.map +0 -0
  494. /package/{lib → dist/lib}/table/better-table.cjs.js +0 -0
  495. /package/{lib → dist/lib}/table/better-table.cjs.js.map +0 -0
  496. /package/{lib → dist/lib}/table/formats/header.cjs.js +0 -0
  497. /package/{lib → dist/lib}/table/formats/header.cjs.js.map +0 -0
  498. /package/{lib → dist/lib}/table/formats/list.cjs.js +0 -0
  499. /package/{lib → dist/lib}/table/formats/list.cjs.js.map +0 -0
  500. /package/{lib → dist/lib}/table/formats/table.cjs.js +0 -0
  501. /package/{lib → dist/lib}/table/formats/table.cjs.js.map +0 -0
  502. /package/{lib → dist/lib}/table/modules/table-column-tool.cjs.js +0 -0
  503. /package/{lib → dist/lib}/table/modules/table-column-tool.cjs.js.map +0 -0
  504. /package/{lib → dist/lib}/table/modules/table-operation-menu.cjs.js +0 -0
  505. /package/{lib → dist/lib}/table/modules/table-operation-menu.cjs.js.map +0 -0
  506. /package/{lib → dist/lib}/table/modules/table-scroll-bar.cjs.js +0 -0
  507. /package/{lib → dist/lib}/table/modules/table-scroll-bar.cjs.js.map +0 -0
  508. /package/{lib → dist/lib}/table/modules/table-selection.cjs.js +0 -0
  509. /package/{lib → dist/lib}/table/modules/table-selection.cjs.js.map +0 -0
  510. /package/{lib → dist/lib}/table/table-config.cjs.js +0 -0
  511. /package/{lib → dist/lib}/table/table-config.cjs.js.map +0 -0
  512. /package/{lib → dist/lib}/table/utils/index.cjs.js +0 -0
  513. /package/{lib → dist/lib}/table/utils/index.cjs.js.map +0 -0
  514. /package/{lib → dist/lib}/table/utils/node-matchers.cjs.js +0 -0
  515. /package/{lib → dist/lib}/table/utils/node-matchers.cjs.js.map +0 -0
  516. /package/{lib → dist/lib}/toolbar/better-picker.cjs.js +0 -0
  517. /package/{lib → dist/lib}/toolbar/better-picker.cjs.js.map +0 -0
  518. /package/{lib → dist/lib}/toolbar/index.cjs.js +0 -0
  519. /package/{lib → dist/lib}/toolbar/index.cjs.js.map +0 -0
  520. /package/{lib → dist/lib}/utils/debounce.cjs.js +0 -0
  521. /package/{lib → dist/lib}/utils/debounce.cjs.js.map +0 -0
  522. /package/{lib → dist/lib}/utils/image.cjs.js +0 -0
  523. /package/{lib → dist/lib}/utils/image.cjs.js.map +0 -0
  524. /package/{lib → dist/lib}/utils/method.cjs.js +0 -0
  525. /package/{lib → dist/lib}/utils/method.cjs.js.map +0 -0
  526. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js +0 -0
  527. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js.map +0 -0
  528. /package/{lib → dist/lib}/video/index.cjs.js +0 -0
  529. /package/{lib → dist/lib}/video/index.cjs.js.map +0 -0
  530. /package/{style.css → dist/style.css} +0 -0
@@ -0,0 +1,492 @@
1
+ import Quill from 'quill'
2
+ import { CELL_MIN_HEIGHT, CELL_MIN_WIDTH, COL_TOOL_HEIGHT, PRIMARY_COLOR, ROW_TOOL_WIDTH } from '../table-config'
3
+ import { css } from '../utils'
4
+
5
+ export default class TableColumnTool {
6
+ table: any
7
+ quill: any
8
+ modulesContainer: any
9
+ domNode: any
10
+ columnCtrlPanel: HTMLDivElement
11
+ leftMask: HTMLDivElement
12
+ rowCtrlPanel: HTMLDivElement
13
+ activeToolCell: HTMLElement
14
+ oldRootScrollTop: any
15
+ constructor(table, quill, dom) {
16
+ if (!table) {
17
+ return null
18
+ }
19
+ this.table = table
20
+ this.quill = quill
21
+ this.modulesContainer = dom
22
+ this.domNode = null
23
+ this.oldRootScrollTop = this.quill.root.scrollTop
24
+
25
+ this.initColTool()
26
+
27
+ if (this.quill.root === this.quill.scrollingContainer) {
28
+ this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))
29
+ }
30
+ }
31
+
32
+ handleQuillRootScroll() {
33
+ if (this.domNode) {
34
+ this.domNode.style.marginTop = `${this.oldRootScrollTop - this.quill.root.scrollTop}px`
35
+ }
36
+ }
37
+
38
+ initColTool() {
39
+ const parent = this.quill.root.parentNode
40
+ const containerRect = parent.getBoundingClientRect()
41
+ const tableViewRect = this.table.parentNode.getBoundingClientRect()
42
+
43
+ this.domNode = document.createElement('div')
44
+ this.domNode.classList.add('qlbt-table-control-panel')
45
+
46
+ // 以下添加顺序影响遮罩顺序,勿改变
47
+ this.columnCtrlPanel = document.createElement('div')
48
+ this.columnCtrlPanel.classList.add('qlbt-column-control-panel')
49
+ this.domNode.appendChild(this.columnCtrlPanel)
50
+
51
+ this.leftMask = document.createElement('div')
52
+ this.leftMask.classList.add('qlbt-left-mask')
53
+ css(this.leftMask, { height: `${tableViewRect.height + 50}px` })
54
+ this.domNode.appendChild(this.leftMask)
55
+
56
+ this.rowCtrlPanel = document.createElement('div')
57
+ this.rowCtrlPanel.classList.add('qlbt-row-control-panel')
58
+ this.domNode.appendChild(this.rowCtrlPanel)
59
+
60
+ this.updateRowToolCells()
61
+ this.updateColToolCells()
62
+
63
+ this.modulesContainer.appendChild(this.domNode)
64
+ css(this.domNode, {
65
+ width: '100%',
66
+ height: `${COL_TOOL_HEIGHT}px`,
67
+ left: '0px',
68
+ top: `${tableViewRect.top - containerRect.top + parent.scrollTop - 25}px`,
69
+ })
70
+ }
71
+
72
+ createToolCell(isRow) {
73
+ // @ts-ignore
74
+ window.quillIsIntable = true
75
+ const toolCell = document.createElement('div')
76
+ const selector = document.createElement('div')
77
+ const resizeHolder = document.createElement('div')
78
+ if (isRow) {
79
+ toolCell.classList.add('qlbt-row-tool-cell')
80
+ selector.classList.add('qlbt-row-tool-cell-selector')
81
+ resizeHolder.classList.add('qlbt-row-tool-cell-holder')
82
+ css(toolCell, { width: `${ROW_TOOL_WIDTH}px` })
83
+ }
84
+ else {
85
+ toolCell.classList.add('qlbt-col-tool-cell')
86
+ selector.classList.add('qlbt-col-tool-cell-selector')
87
+ resizeHolder.classList.add('qlbt-col-tool-cell-holder')
88
+ css(toolCell, { height: `${COL_TOOL_HEIGHT}px` })
89
+ }
90
+ toolCell.appendChild(selector)
91
+ toolCell.appendChild(resizeHolder)
92
+ return toolCell
93
+ }
94
+
95
+ updateColToolCells() {
96
+ const tableContainer = Quill.find(this.table)
97
+ if (!tableContainer) {
98
+ return
99
+ }
100
+ const tableCols = tableContainer.colGroup().children
101
+ const tableColsNum = Math.max(Array.from(tableCols).length, tableContainer.colGroup().domNode.children.length)
102
+ const existCells: any = Array.from(this.columnCtrlPanel.querySelectorAll('.qlbt-col-tool-cell'))
103
+ const cellsNumber = Math.max(existCells.length, tableColsNum)
104
+
105
+ for (let index = 0; index < cellsNumber; index++) {
106
+ let col = tableCols.at(index)
107
+ let colWidth = 0
108
+ if (!col || col.domNode !== tableContainer.colGroup().domNode.children[index]) {
109
+ col = tableContainer.colGroup().domNode.children[index]
110
+ colWidth = col ? col.width : tableContainer.colGroup().domNode.children[index - 1].width
111
+ }
112
+ else {
113
+ colWidth = Number.parseInt(col.formats()[col.statics.blotName].width, 10)
114
+ }
115
+ // if cell already exist
116
+ let colToolCell = null
117
+ if (!existCells[index]) {
118
+ colToolCell = this.createToolCell(false)
119
+ this.columnCtrlPanel.appendChild(colToolCell)
120
+ this.addColCellSelectHandler(colToolCell)
121
+ this.addColCellHolderHandler(colToolCell)
122
+ // set tool cell min-width
123
+ css(colToolCell, {
124
+ 'min-width': `${colWidth}px`,
125
+ })
126
+ }
127
+ else if (existCells[index] && index >= tableColsNum) {
128
+ existCells[index].remove()
129
+ }
130
+ else {
131
+ colToolCell = existCells[index]
132
+ // set tool cell min-width
133
+ css(colToolCell, {
134
+ 'min-width': `${colWidth}px`,
135
+ })
136
+ }
137
+ }
138
+ }
139
+
140
+ updateRowToolCells() {
141
+ const tableContainer = Quill.find(this.table)
142
+ if (!tableContainer) {
143
+ return
144
+ }
145
+ let tableRows = Array.from(tableContainer.domNode.querySelectorAll('tr'))
146
+ tableRows = tableRows.filter((tr: any) => tr.children.length)
147
+ const existCells: any = Array.from(this.rowCtrlPanel.querySelectorAll('.qlbt-row-tool-cell'))
148
+ const rowNumber = Math.max(existCells.length, tableRows.length)
149
+
150
+ for (let index = 0; index < rowNumber; index++) {
151
+ const row: any = tableRows[index]
152
+
153
+ // fix: 修复 IE11/Edge 下无法拿到 height 的问题
154
+ // IE11/Edge 下 height 会变成 'auto'
155
+ let computedHeight = row && getComputedStyle(row).height
156
+ if (computedHeight === 'auto') {
157
+ computedHeight = row.querySelector('td').style.height || '30px'
158
+ }
159
+
160
+ let rowHeight = row && Number.parseFloat(computedHeight)
161
+ if (rowHeight < CELL_MIN_HEIGHT) {
162
+ const rowChildHeight = row && row.childNodes[0] && Number.parseFloat(getComputedStyle(row.childNodes[0]).height)
163
+ rowHeight = rowChildHeight
164
+ }
165
+ // if cell already exist
166
+ let rowToolCell = null
167
+ if (!existCells[index]) {
168
+ rowToolCell = this.createToolCell(true)
169
+ this.rowCtrlPanel.appendChild(rowToolCell)
170
+ this.addRowCellSelectHandler(rowToolCell)
171
+ this.addRowCellHolderHandler(rowToolCell)
172
+ // set tool cell height, ff not support min-height
173
+ css(rowToolCell, { height: `${rowHeight}px` })
174
+ }
175
+ else if (existCells[index] && index >= tableRows.length) {
176
+ existCells[index].remove()
177
+ }
178
+ else {
179
+ rowToolCell = existCells[index]
180
+ css(rowToolCell, { height: `${rowHeight}px` })
181
+ }
182
+ }
183
+ }
184
+
185
+ destroy() {
186
+ // @ts-ignore
187
+ window.quillIsIntable = false
188
+ this.domNode.remove()
189
+ return null
190
+ }
191
+
192
+ addRowCellSelectHandler(cell) {
193
+ const selector = cell.querySelector('.qlbt-row-tool-cell-selector')
194
+
195
+ const handleClick = (e) => {
196
+ e.preventDefault()
197
+
198
+ const dom = e.target.parentNode
199
+ const domRect = dom.getBoundingClientRect()
200
+ const containerRect = this.quill.root.parentNode.getBoundingClientRect()
201
+ const tableRect = this.table.getBoundingClientRect()
202
+ const tableSelection = this.quill.getModule('better-table').tableSelection
203
+ tableSelection.boundary = {
204
+ x: tableRect.left - containerRect.left, // 表格左上角X轴坐标
205
+ x1: tableRect.left - containerRect.left + tableRect.width - 2, // 表格右上角X轴坐标
206
+ y: domRect.top - containerRect.top, // 表格左上角Y轴坐标
207
+ y1: domRect.top - containerRect.top + domRect.height - 1, // 表格右上角Y轴坐标
208
+ width: tableRect.width - 2,
209
+ height: domRect.height - 1,
210
+ }
211
+ tableSelection.selectedTds = tableSelection.computeSelectedTds()
212
+ tableSelection.repositionHelpLines()
213
+
214
+ dom.classList.add('qlbt-tool-cell-on')
215
+ this.activeToolCell = dom
216
+ }
217
+
218
+ selector.addEventListener('click', handleClick, false)
219
+ }
220
+
221
+ addRowCellHolderHandler(cell) {
222
+ const holder = cell.querySelector('.qlbt-row-tool-cell-holder')
223
+ let dragging = false
224
+ let y0 = 0
225
+ let y = 0
226
+ let delta = 0
227
+ let height0 = 0
228
+ // helpLine relation variable
229
+ let tableRect: any = {}
230
+ let cellRect: any = {}
231
+ let helpLine = null
232
+
233
+ const handleDrag = (e) => {
234
+ e.preventDefault()
235
+
236
+ if (dragging) {
237
+ y = e.clientY
238
+
239
+ if (height0 + y - y0 >= CELL_MIN_HEIGHT) {
240
+ delta = y - y0
241
+ }
242
+ else {
243
+ delta = CELL_MIN_HEIGHT - height0
244
+ }
245
+
246
+ css(helpLine, {
247
+ top: `${cellRect.top + cellRect.height + delta}px`,
248
+ })
249
+ }
250
+ }
251
+
252
+ const handleMouseup = (e) => {
253
+ e.preventDefault()
254
+
255
+ const existCells = Array.from(this.domNode.querySelectorAll('.qlbt-row-tool-cell'))
256
+ const rowIndex = existCells.indexOf(cell)
257
+ const rows: any = Array.from(this.table.querySelectorAll('tr'))
258
+ const tds = Array.from(rows[rowIndex].childNodes)
259
+ const hasContentTd: any = tds.find((td: any) => td.getAttribute('rowspan') === '1' && td.textContent !== '\n')
260
+
261
+ if (dragging) {
262
+ let tdHeight = `${height0 + delta}px`
263
+ if (hasContentTd) {
264
+ tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))
265
+ const currentHeight = getComputedStyle(hasContentTd).height
266
+ tdHeight = (Number.parseInt(currentHeight, 10) > height0 + delta && currentHeight) || tdHeight
267
+ }
268
+ css(cell, { height: tdHeight })
269
+ tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))
270
+
271
+ const tableViewRect = this.table.parentNode.getBoundingClientRect()
272
+ css(this.leftMask, { height: `${tableViewRect.height + 50}px` })
273
+
274
+ y0 = 0
275
+ y = 0
276
+ delta = 0
277
+ height0 = 0
278
+ dragging = false
279
+ holder.classList.remove('dragging')
280
+ }
281
+
282
+ this.quill.root.parentNode.removeEventListener('mousemove', handleDrag, false)
283
+ document.removeEventListener('mouseup', handleMouseup, false)
284
+ tableRect = {}
285
+ cellRect = {}
286
+ helpLine.remove()
287
+ helpLine = null
288
+
289
+ const betterTableModule = this.quill.getModule('better-table')
290
+ const tableScrollBar = betterTableModule.tableScrollBar
291
+ tableScrollBar.resetTableHeight(this.table)
292
+
293
+ // fix: 拖动滚动条时修正选区位置
294
+ const tableSelection = betterTableModule.tableSelection
295
+ if (tableSelection && tableSelection.selectedTds.length) {
296
+ tableSelection.refreshHelpLinesPosition()
297
+ }
298
+ }
299
+
300
+ const handleMousedown = (e) => {
301
+ e.preventDefault()
302
+
303
+ this.quill.root.parentNode.addEventListener('mousemove', handleDrag, false)
304
+ document.addEventListener('mouseup', handleMouseup, false)
305
+
306
+ tableRect = this.table.getBoundingClientRect()
307
+ const tableViewRect = this.table.parentNode.getBoundingClientRect()
308
+ const width = (tableRect.width > tableViewRect.width && tableViewRect.width) || tableRect.width
309
+ cellRect = cell.getBoundingClientRect()
310
+ helpLine = document.createElement('div')
311
+ css(helpLine, {
312
+ position: 'fixed',
313
+ top: `${cellRect.top + cellRect.height}px`,
314
+ left: `${cellRect.left}px`,
315
+ zIndex: '100',
316
+ width: `${width + ROW_TOOL_WIDTH + 9}px`,
317
+ height: '1px',
318
+ backgroundColor: PRIMARY_COLOR,
319
+ })
320
+
321
+ this.quill.root.parentNode.appendChild(helpLine)
322
+ dragging = true
323
+ y0 = e.clientY
324
+ height0 = cellRect.height
325
+ holder.classList.add('dragging')
326
+ }
327
+
328
+ holder.addEventListener('mousedown', handleMousedown, false)
329
+ }
330
+
331
+ addColCellSelectHandler(cell) {
332
+ // 上方列宽控制条
333
+
334
+ const selector = cell.querySelector('.qlbt-col-tool-cell-selector')
335
+
336
+ const handleClick = (e) => {
337
+ e.preventDefault()
338
+
339
+ const dom = e.target.parentNode
340
+ const domRect = dom.getBoundingClientRect()
341
+ const containerRect = this.quill.root.parentNode.getBoundingClientRect()
342
+ const tableRect = this.table.getBoundingClientRect()
343
+ const tableSelection = this.quill.getModule('better-table').tableSelection
344
+ tableSelection.boundary = {
345
+ x: domRect.left - containerRect.left - 1,
346
+ x1: domRect.left - containerRect.left + domRect.width - 2,
347
+ y: tableRect.top - containerRect.top,
348
+ y1: tableRect.top - containerRect.top + tableRect.height - 2,
349
+ width: domRect.width,
350
+ height: tableRect.height - 2,
351
+ }
352
+ tableSelection.selectedTds = tableSelection.computeSelectedTds()
353
+ tableSelection.repositionHelpLines()
354
+
355
+ dom.classList.add('qlbt-tool-cell-on')
356
+ this.activeToolCell = dom
357
+ }
358
+ selector.addEventListener('click', handleClick, false)
359
+ }
360
+
361
+ addColCellHolderHandler(cell) {
362
+ const tableContainer = Quill.find(this.table)
363
+ const holder = cell.querySelector('.qlbt-col-tool-cell-holder')
364
+ let dragging = false
365
+ let x0 = 0
366
+ let x = 0
367
+ let delta: any = 0
368
+ let width0 = 0
369
+ // helpLine relation variable
370
+ let tableRect: any = {}
371
+ let scrollContainerRect = null
372
+ let cellRect: any = {}
373
+ let helpLine = null
374
+
375
+ const handleDrag = (e) => {
376
+ e.preventDefault()
377
+
378
+ if (dragging) {
379
+ x = e.clientX
380
+
381
+ if (width0 + x - x0 >= CELL_MIN_WIDTH) {
382
+ delta = x - x0
383
+ }
384
+ else {
385
+ delta = CELL_MIN_WIDTH - width0
386
+ }
387
+ let left = cellRect.left + cellRect.width - 1 + delta
388
+ if (scrollContainerRect) {
389
+ left -= scrollContainerRect.left
390
+ }
391
+
392
+ css(helpLine, {
393
+ left: `${left}px`,
394
+ })
395
+ }
396
+ }
397
+
398
+ const handleMouseup = (e) => {
399
+ e.preventDefault()
400
+
401
+ const existCells = Array.from(this.domNode.querySelectorAll('.qlbt-col-tool-cell'))
402
+ const colIndex = existCells.indexOf(cell)
403
+ let colBlot = tableContainer.colGroup().children.at(colIndex)
404
+ if (!colBlot || colBlot.domNode !== tableContainer.colGroup().domNode.children[colIndex]) {
405
+ colBlot = tableContainer.colGroup().domNode.children[colIndex]
406
+ }
407
+ if (dragging) {
408
+ // fix: 防止 colWidth 是小数
409
+ const colWidth = Number.parseInt(width0 + delta, 10)
410
+ if (colBlot.format) {
411
+ colBlot.format('width', colWidth)
412
+ }
413
+ else {
414
+ colBlot.width = colWidth
415
+ }
416
+
417
+ css(cell, { 'min-width': `${colWidth}px` })
418
+
419
+ x0 = 0
420
+ x = 0
421
+ delta = 0
422
+ width0 = 0
423
+ dragging = false
424
+ holder.classList.remove('dragging')
425
+ }
426
+
427
+ this.quill.root.parentNode.removeEventListener('mousemove', handleDrag, false)
428
+ document.removeEventListener('mouseup', handleMouseup, false)
429
+ tableRect = {}
430
+ scrollContainerRect = null
431
+ cellRect = {}
432
+ helpLine.remove()
433
+ helpLine = null
434
+ tableContainer.updateTableWidth()
435
+
436
+ setTimeout(() => {
437
+ this.updateRowToolCells()
438
+ const betterTableModule = this.quill.getModule('better-table')
439
+ const tableScrollBar = betterTableModule.tableScrollBar
440
+ tableScrollBar.updateScrollBar()
441
+ // fix: 拖动滚动条时修正选区位置
442
+ const tableSelection = betterTableModule.tableSelection
443
+ if (tableSelection && tableSelection.selectedTds.length) {
444
+ tableSelection.refreshHelpLinesPosition()
445
+ }
446
+ })
447
+ }
448
+
449
+ const handleMousedown = (e) => {
450
+ e.preventDefault()
451
+
452
+ this.quill.root.parentNode.addEventListener('mousemove', handleDrag, false)
453
+ document.addEventListener('mouseup', handleMouseup, false)
454
+
455
+ tableRect = this.table.getBoundingClientRect()
456
+ cellRect = cell.getBoundingClientRect()
457
+
458
+ let positionValue = 'fixed'
459
+ let top = cellRect.top
460
+ let left = cellRect.left + cellRect.width - 1
461
+ if (this.quill.root === this.quill.scrollingContainer) {
462
+ positionValue = 'absolute'
463
+ scrollContainerRect = this.quill.root.getBoundingClientRect()
464
+ top -= scrollContainerRect.top
465
+ left -= scrollContainerRect.left
466
+ }
467
+
468
+ helpLine = document.createElement('div')
469
+ css(helpLine, {
470
+ position: positionValue,
471
+ top: `${top}px`,
472
+ left: `${left}px`,
473
+ zIndex: '100',
474
+ height: `${tableRect.height + COL_TOOL_HEIGHT + 8}px`,
475
+ width: '1px',
476
+ backgroundColor: PRIMARY_COLOR,
477
+ })
478
+
479
+ this.quill.root.parentNode.appendChild(helpLine)
480
+ dragging = true
481
+ x0 = e.clientX
482
+ width0 = cellRect.width
483
+ holder.classList.add('dragging')
484
+ }
485
+
486
+ holder.addEventListener('mousedown', handleMousedown, false)
487
+ }
488
+
489
+ colToolCells() {
490
+ return Array.from(this.domNode.querySelectorAll('.qlbt-col-tool-cell'))
491
+ }
492
+ }