@opentiny/fluent-editor 3.20.1 → 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 (664) hide show
  1. package/{README.md → dist/README.md} +99 -99
  2. package/dist/es/attributors/line-height.es.js.map +1 -0
  3. package/dist/es/config/base64-image.es.js.map +1 -0
  4. package/dist/es/config/editor.config.es.js.map +1 -0
  5. package/dist/es/config/editor.utils.es.js.map +1 -0
  6. package/dist/es/config/i18n/en-us.es.js.map +1 -0
  7. package/dist/es/config/i18n/zh-cn.es.js.map +1 -0
  8. package/dist/es/config/icons.config.es.js.map +1 -0
  9. package/{es/config.es.js → dist/es/config/index.es.js} +14 -7
  10. package/dist/es/config/index.es.js.map +1 -0
  11. package/{es → dist/es}/counter/index.es.js +2 -1
  12. package/dist/es/counter/index.es.js.map +1 -0
  13. package/dist/es/custom-clipboard.es.js.map +1 -0
  14. package/dist/es/custom-image/BlotFormatter.es.js.map +1 -0
  15. package/dist/es/custom-image/Options.es.js.map +1 -0
  16. package/dist/es/custom-image/actions/Action.es.js.map +1 -0
  17. package/dist/es/custom-image/actions/CustomResizeAction.es.js.map +1 -0
  18. package/dist/es/custom-image/actions/DeleteAction.es.js.map +1 -0
  19. package/dist/es/custom-image/image.es.js.map +1 -0
  20. package/dist/es/custom-image/specs/BlotSpec.es.js.map +1 -0
  21. package/dist/es/custom-image/specs/CustomImageSpec.es.js.map +1 -0
  22. package/dist/es/custom-image/specs/ImageSpec.es.js.map +1 -0
  23. package/dist/es/custom-uploader.es.js.map +1 -0
  24. package/dist/es/emoji/emoji-list/people.es.js.map +1 -0
  25. package/dist/es/emoji/emoji-list.es.js.map +1 -0
  26. package/dist/es/emoji/emoji-map.es.js.map +1 -0
  27. package/dist/es/emoji/formats/emoji-blot.es.js.map +1 -0
  28. package/dist/es/emoji/index.es.js.map +1 -0
  29. package/dist/es/emoji/modules/emoji.es.js.map +1 -0
  30. package/dist/es/emoji/modules/toolbar-emoji.es.js.map +1 -0
  31. package/dist/es/emoji/utils.es.js.map +1 -0
  32. package/dist/es/file/formats/file.es.js.map +1 -0
  33. package/dist/es/file/index.es.js.map +1 -0
  34. package/dist/es/file/modules/file-bar.es.js.map +1 -0
  35. package/{es → dist/es}/fluent-editor.es.js +1 -1
  36. package/dist/es/fluent-editor.es.js.map +1 -0
  37. package/dist/es/global-link/constants.es.js.map +1 -0
  38. package/dist/es/global-link/formats/customer-widget-link.es.js.map +1 -0
  39. package/dist/es/global-link/formats/doc-link.es.js.map +1 -0
  40. package/dist/es/global-link/formats/wiki-link.es.js.map +1 -0
  41. package/dist/es/global-link/formats/work-item-link.es.js.map +1 -0
  42. package/dist/es/global-link/index.es.js.map +1 -0
  43. package/dist/es/global-link/utils/createTable.es.js.map +1 -0
  44. package/dist/es/index.es.js +21 -0
  45. package/{es → dist/es}/index.es.js.map +1 -1
  46. package/dist/es/link/formats/link.es.js.map +1 -0
  47. package/dist/es/link/index.es.js.map +1 -0
  48. package/dist/es/link/modules/tooltip.es.js.map +1 -0
  49. package/dist/es/mention/Mention.es.js.map +1 -0
  50. package/dist/es/mention/MentionLink.es.js.map +1 -0
  51. package/dist/es/mention/constants.es.js.map +1 -0
  52. package/dist/es/quick-menu/index.es.js.map +1 -0
  53. package/dist/es/screenshot/index.es.js.map +1 -0
  54. package/dist/es/soft-break/index.es.js.map +1 -0
  55. package/dist/es/strike/index.es.js.map +1 -0
  56. package/dist/es/syntax/index.es.js.map +1 -0
  57. package/dist/es/table/better-table.es.js.map +1 -0
  58. package/dist/es/table/formats/header.es.js.map +1 -0
  59. package/dist/es/table/formats/list.es.js.map +1 -0
  60. package/dist/es/table/formats/table.es.js.map +1 -0
  61. package/dist/es/table/modules/table-column-tool.es.js.map +1 -0
  62. package/dist/es/table/modules/table-operation-menu.es.js.map +1 -0
  63. package/dist/es/table/modules/table-scroll-bar.es.js.map +1 -0
  64. package/dist/es/table/modules/table-selection.es.js.map +1 -0
  65. package/dist/es/table/table-config.es.js.map +1 -0
  66. package/dist/es/table/utils/index.es.js.map +1 -0
  67. package/dist/es/table/utils/node-matchers.es.js.map +1 -0
  68. package/dist/es/toolbar/better-picker.es.js.map +1 -0
  69. package/dist/es/toolbar/index.es.js.map +1 -0
  70. package/dist/es/utils/debounce.es.js.map +1 -0
  71. package/dist/es/utils/method.es.js.map +1 -0
  72. package/dist/es/video/index.es.js.map +1 -0
  73. package/dist/lib/attributors/line-height.cjs.js.map +1 -0
  74. package/dist/lib/config/base64-image.cjs.js.map +1 -0
  75. package/dist/lib/config/editor.config.cjs.js.map +1 -0
  76. package/dist/lib/config/editor.utils.cjs.js.map +1 -0
  77. package/dist/lib/config/i18n/en-us.cjs.js.map +1 -0
  78. package/dist/lib/config/i18n/zh-cn.cjs.js.map +1 -0
  79. package/dist/lib/config/icons.config.cjs.js.map +1 -0
  80. package/{lib/config.cjs.js → dist/lib/config/index.cjs.js} +27 -21
  81. package/dist/lib/config/index.cjs.js.map +1 -0
  82. package/{lib → dist/lib}/counter/index.cjs.js +5 -4
  83. package/dist/lib/counter/index.cjs.js.map +1 -0
  84. package/dist/lib/custom-clipboard.cjs.js.map +1 -0
  85. package/dist/lib/custom-image/BlotFormatter.cjs.js.map +1 -0
  86. package/dist/lib/custom-image/Options.cjs.js.map +1 -0
  87. package/dist/lib/custom-image/actions/Action.cjs.js.map +1 -0
  88. package/dist/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -0
  89. package/dist/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -0
  90. package/dist/lib/custom-image/image.cjs.js.map +1 -0
  91. package/dist/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -0
  92. package/dist/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -0
  93. package/dist/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -0
  94. package/dist/lib/custom-uploader.cjs.js.map +1 -0
  95. package/dist/lib/emoji/emoji-list/people.cjs.js.map +1 -0
  96. package/dist/lib/emoji/emoji-list.cjs.js.map +1 -0
  97. package/dist/lib/emoji/emoji-map.cjs.js.map +1 -0
  98. package/dist/lib/emoji/formats/emoji-blot.cjs.js.map +1 -0
  99. package/dist/lib/emoji/index.cjs.js.map +1 -0
  100. package/dist/lib/emoji/modules/emoji.cjs.js.map +1 -0
  101. package/dist/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -0
  102. package/dist/lib/emoji/utils.cjs.js.map +1 -0
  103. package/dist/lib/file/formats/file.cjs.js.map +1 -0
  104. package/dist/lib/file/index.cjs.js.map +1 -0
  105. package/dist/lib/file/modules/file-bar.cjs.js.map +1 -0
  106. package/{lib → dist/lib}/fluent-editor.cjs.js +31 -31
  107. package/dist/lib/fluent-editor.cjs.js.map +1 -0
  108. package/dist/lib/global-link/constants.cjs.js.map +1 -0
  109. package/dist/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -0
  110. package/dist/lib/global-link/formats/doc-link.cjs.js.map +1 -0
  111. package/dist/lib/global-link/formats/wiki-link.cjs.js.map +1 -0
  112. package/dist/lib/global-link/formats/work-item-link.cjs.js.map +1 -0
  113. package/dist/lib/global-link/index.cjs.js.map +1 -0
  114. package/dist/lib/global-link/utils/createTable.cjs.js.map +1 -0
  115. package/dist/lib/index.cjs.js +21 -0
  116. package/{lib → dist/lib}/index.cjs.js.map +1 -1
  117. package/dist/lib/link/formats/link.cjs.js.map +1 -0
  118. package/dist/lib/link/index.cjs.js.map +1 -0
  119. package/dist/lib/link/modules/tooltip.cjs.js.map +1 -0
  120. package/dist/lib/mention/Mention.cjs.js.map +1 -0
  121. package/dist/lib/mention/MentionLink.cjs.js.map +1 -0
  122. package/dist/lib/mention/constants.cjs.js.map +1 -0
  123. package/dist/lib/quick-menu/index.cjs.js.map +1 -0
  124. package/dist/lib/screenshot/index.cjs.js.map +1 -0
  125. package/dist/lib/soft-break/index.cjs.js.map +1 -0
  126. package/dist/lib/strike/index.cjs.js.map +1 -0
  127. package/dist/lib/syntax/index.cjs.js.map +1 -0
  128. package/dist/lib/table/better-table.cjs.js.map +1 -0
  129. package/dist/lib/table/formats/header.cjs.js.map +1 -0
  130. package/dist/lib/table/formats/list.cjs.js.map +1 -0
  131. package/dist/lib/table/formats/table.cjs.js.map +1 -0
  132. package/dist/lib/table/modules/table-column-tool.cjs.js.map +1 -0
  133. package/dist/lib/table/modules/table-operation-menu.cjs.js.map +1 -0
  134. package/dist/lib/table/modules/table-scroll-bar.cjs.js.map +1 -0
  135. package/dist/lib/table/modules/table-selection.cjs.js.map +1 -0
  136. package/dist/lib/table/table-config.cjs.js.map +1 -0
  137. package/dist/lib/table/utils/index.cjs.js.map +1 -0
  138. package/dist/lib/table/utils/node-matchers.cjs.js.map +1 -0
  139. package/dist/lib/toolbar/better-picker.cjs.js.map +1 -0
  140. package/dist/lib/toolbar/index.cjs.js.map +1 -0
  141. package/dist/lib/utils/debounce.cjs.js.map +1 -0
  142. package/dist/lib/utils/method.cjs.js.map +1 -0
  143. package/dist/lib/video/index.cjs.js.map +1 -0
  144. package/dist/package.json +52 -0
  145. package/{theme → dist}/style.css +74 -17
  146. package/package.json +52 -61
  147. package/scripts/pre-release.js +34 -0
  148. package/src/assets/better-table.scss +367 -0
  149. package/src/assets/common.scss +279 -0
  150. package/src/assets/counter.scss +19 -0
  151. package/src/assets/custom-image.scss +20 -0
  152. package/src/assets/editor.scss +365 -0
  153. package/src/assets/emoji/emoji.scss +461 -0
  154. package/src/assets/emoji/style.scss +252 -0
  155. package/src/assets/fileBar.scss +116 -0
  156. package/src/assets/font.scss +36 -0
  157. package/src/assets/fullscreen.scss +21 -0
  158. package/src/assets/iconfont/iconfont.ttf +0 -0
  159. package/src/assets/iconfont/iconfont.woff +0 -0
  160. package/src/assets/iconfont/iconfont.woff2 +0 -0
  161. package/src/assets/image1.png +0 -0
  162. package/src/assets/lineHeight.scss +16 -0
  163. package/src/assets/link.scss +130 -0
  164. package/src/assets/mention.scss +48 -0
  165. package/src/assets/screenshot.scss +78 -0
  166. package/src/assets/size.scss +13 -0
  167. package/src/assets/style.scss +39 -0
  168. package/src/assets/tasklist.scss +76 -0
  169. package/src/assets/toolbar.scss +416 -0
  170. package/src/attributors/font-size.ts +6 -0
  171. package/src/attributors/font-style.ts +6 -0
  172. package/src/attributors/index.ts +4 -0
  173. package/src/attributors/line-height.ts +6 -0
  174. package/src/attributors/text-indent.ts +6 -0
  175. package/src/config/base64-image.ts +8 -0
  176. package/src/config/editor.config.ts +88 -0
  177. package/src/config/editor.utils.ts +199 -0
  178. package/src/config/i18n/en-us.ts +106 -0
  179. package/src/config/i18n/zh-cn.ts +104 -0
  180. package/src/config/icons.config.ts +297 -0
  181. package/src/config/index.ts +171 -0
  182. package/src/config/types/additional-toolbar-item.interface.ts +8 -0
  183. package/src/config/types/content-change.interface.ts +13 -0
  184. package/src/config/types/content-save.interface.ts +6 -0
  185. package/src/config/types/counter-option.interface.ts +9 -0
  186. package/src/config/types/editor-config.interface.ts +22 -0
  187. package/src/config/types/editor-modules.interface.ts +41 -0
  188. package/src/config/types/file-operation.interface.ts +12 -0
  189. package/src/config/types/focus-change.interface.ts +4 -0
  190. package/src/config/types/fullscreen-module.interface.ts +4 -0
  191. package/src/config/types/help-panel-item.interface.ts +5 -0
  192. package/src/config/types/help-panel-option.interface.ts +7 -0
  193. package/src/config/types/image-module.interface.ts +3 -0
  194. package/src/config/types/image-upload.interface.ts +7 -0
  195. package/src/config/types/index.ts +22 -0
  196. package/src/config/types/load-on-demand-module.interface.ts +5 -0
  197. package/src/config/types/mention-module.interface.ts +8 -0
  198. package/src/config/types/paste-change.interface.ts +6 -0
  199. package/src/config/types/quick-menu-module.interface.ts +3 -0
  200. package/src/config/types/range.interface.ts +4 -0
  201. package/src/config/types/registry-options.interface.ts +5 -0
  202. package/src/config/types/selection-change.interface.ts +8 -0
  203. package/src/config/types/toolbar-item.interface.ts +13 -0
  204. package/src/config/types/type.ts +5 -0
  205. package/src/config/types/validate-error.interface.ts +11 -0
  206. package/src/counter/index.ts +69 -0
  207. package/src/custom-clipboard.ts +633 -0
  208. package/src/custom-image/BlotFormatter.ts +167 -0
  209. package/src/custom-image/Options.ts +150 -0
  210. package/src/custom-image/actions/Action.ts +13 -0
  211. package/src/custom-image/actions/CustomResizeAction.ts +207 -0
  212. package/src/custom-image/actions/DeleteAction.ts +29 -0
  213. package/src/custom-image/image.ts +118 -0
  214. package/src/custom-image/specs/BlotSpec.ts +30 -0
  215. package/src/custom-image/specs/CustomImageSpec.ts +139 -0
  216. package/src/custom-image/specs/ImageSpec.ts +33 -0
  217. package/src/custom-uploader.ts +199 -0
  218. package/src/emoji/emoji-list/index.ts +1 -0
  219. package/src/emoji/emoji-list/people.ts +111 -0
  220. package/src/emoji/emoji-list.ts +9 -0
  221. package/src/emoji/emoji-map.ts +9 -0
  222. package/src/emoji/formats/emoji-blot.ts +54 -0
  223. package/src/emoji/index.ts +5 -0
  224. package/src/emoji/modules/emoji.ts +318 -0
  225. package/src/emoji/modules/toolbar-emoji.ts +182 -0
  226. package/src/emoji/utils.ts +15 -0
  227. package/src/file/formats/file.ts +67 -0
  228. package/src/file/index.ts +38 -0
  229. package/src/file/modules/file-bar.ts +146 -0
  230. package/src/fluent-editor.ts +164 -0
  231. package/src/format-painter/index.ts +79 -0
  232. package/src/global-link/constants.ts +3 -0
  233. package/src/global-link/formats/customer-widget-link.ts +36 -0
  234. package/src/global-link/formats/doc-link.ts +55 -0
  235. package/src/global-link/formats/wiki-link.ts +45 -0
  236. package/src/global-link/formats/work-item-link.ts +47 -0
  237. package/src/global-link/global-link-panel.ts +20 -0
  238. package/src/global-link/index.ts +165 -0
  239. package/src/global-link/utils/createTable.ts +54 -0
  240. package/src/index.ts +5 -0
  241. package/src/link/formats/link.ts +44 -0
  242. package/src/link/index.ts +35 -0
  243. package/src/link/modules/tooltip.ts +318 -0
  244. package/src/mention/Mention.ts +406 -0
  245. package/src/mention/MentionLink.ts +51 -0
  246. package/src/mention/constants.ts +3 -0
  247. package/src/quick-menu/index.ts +100 -0
  248. package/src/screenshot/index.ts +231 -0
  249. package/src/soft-break/index.ts +34 -0
  250. package/src/strike/index.ts +16 -0
  251. package/src/syntax/index.ts +35 -0
  252. package/src/table/better-table.ts +553 -0
  253. package/src/table/formats/header.ts +129 -0
  254. package/src/table/formats/list.ts +229 -0
  255. package/src/table/formats/table.ts +1272 -0
  256. package/src/table/modules/table-column-tool.ts +492 -0
  257. package/src/table/modules/table-operation-menu.ts +584 -0
  258. package/src/table/modules/table-scroll-bar.ts +248 -0
  259. package/src/table/modules/table-selection.ts +387 -0
  260. package/src/table/table-config.ts +42 -0
  261. package/src/table/utils/index.ts +62 -0
  262. package/src/table/utils/node-matchers.ts +359 -0
  263. package/src/toolbar/better-picker.ts +370 -0
  264. package/src/toolbar/index.ts +180 -0
  265. package/src/utils/debounce.ts +149 -0
  266. package/src/utils/image.ts +22 -0
  267. package/src/utils/method.ts +82 -0
  268. package/src/utils/scroll-lock.ts +52 -0
  269. package/src/video/index.ts +62 -0
  270. package/tsconfig.json +26 -0
  271. package/vite.config.theme.ts +20 -0
  272. package/vite.config.ts +56 -0
  273. package/es/attributors/line-height.es.js.map +0 -1
  274. package/es/config/base64-image.es.js.map +0 -1
  275. package/es/config/editor.config.es.js.map +0 -1
  276. package/es/config/editor.utils.es.js.map +0 -1
  277. package/es/config/i18n/en-us.es.js.map +0 -1
  278. package/es/config/i18n/zh-cn.es.js.map +0 -1
  279. package/es/config/icons.config.es.js.map +0 -1
  280. package/es/config.es.js.map +0 -1
  281. package/es/counter/index.es.js.map +0 -1
  282. package/es/custom-clipboard.es.js.map +0 -1
  283. package/es/custom-image/BlotFormatter.es.js.map +0 -1
  284. package/es/custom-image/Options.es.js.map +0 -1
  285. package/es/custom-image/actions/Action.es.js.map +0 -1
  286. package/es/custom-image/actions/CustomResizeAction.es.js.map +0 -1
  287. package/es/custom-image/actions/DeleteAction.es.js.map +0 -1
  288. package/es/custom-image/image.es.js.map +0 -1
  289. package/es/custom-image/specs/BlotSpec.es.js.map +0 -1
  290. package/es/custom-image/specs/CustomImageSpec.es.js.map +0 -1
  291. package/es/custom-image/specs/ImageSpec.es.js.map +0 -1
  292. package/es/custom-uploader.es.js.map +0 -1
  293. package/es/emoji/emoji-list/people.es.js.map +0 -1
  294. package/es/emoji/emoji-list.es.js.map +0 -1
  295. package/es/emoji/emoji-map.es.js.map +0 -1
  296. package/es/emoji/formats/emoji-blot.es.js.map +0 -1
  297. package/es/emoji/index.es.js.map +0 -1
  298. package/es/emoji/modules/emoji.es.js.map +0 -1
  299. package/es/emoji/modules/toolbar-emoji.es.js.map +0 -1
  300. package/es/emoji/utils.es.js.map +0 -1
  301. package/es/file/formats/file.es.js.map +0 -1
  302. package/es/file/index.es.js.map +0 -1
  303. package/es/file/modules/file-bar.es.js.map +0 -1
  304. package/es/fluent-editor.es.js.map +0 -1
  305. package/es/global-link/constants.es.js.map +0 -1
  306. package/es/global-link/formats/customer-widget-link.es.js.map +0 -1
  307. package/es/global-link/formats/doc-link.es.js.map +0 -1
  308. package/es/global-link/formats/wiki-link.es.js.map +0 -1
  309. package/es/global-link/formats/work-item-link.es.js.map +0 -1
  310. package/es/global-link/index.es.js.map +0 -1
  311. package/es/global-link/utils/createTable.es.js.map +0 -1
  312. package/es/index.es.js +0 -5
  313. package/es/link/formats/link.es.js.map +0 -1
  314. package/es/link/index.es.js.map +0 -1
  315. package/es/link/modules/tooltip.es.js.map +0 -1
  316. package/es/mention/Mention.es.js.map +0 -1
  317. package/es/mention/MentionLink.es.js.map +0 -1
  318. package/es/mention/constants.es.js.map +0 -1
  319. package/es/quick-menu/index.es.js.map +0 -1
  320. package/es/screenshot/index.es.js.map +0 -1
  321. package/es/soft-break/index.es.js.map +0 -1
  322. package/es/strike/index.es.js.map +0 -1
  323. package/es/syntax/index.es.js.map +0 -1
  324. package/es/table/better-table.es.js.map +0 -1
  325. package/es/table/formats/header.es.js.map +0 -1
  326. package/es/table/formats/list.es.js.map +0 -1
  327. package/es/table/formats/table.es.js.map +0 -1
  328. package/es/table/modules/table-column-tool.es.js.map +0 -1
  329. package/es/table/modules/table-operation-menu.es.js.map +0 -1
  330. package/es/table/modules/table-scroll-bar.es.js.map +0 -1
  331. package/es/table/modules/table-selection.es.js.map +0 -1
  332. package/es/table/table-config.es.js.map +0 -1
  333. package/es/table/utils/index.es.js.map +0 -1
  334. package/es/table/utils/node-matchers.es.js.map +0 -1
  335. package/es/toolbar/better-picker.es.js.map +0 -1
  336. package/es/toolbar/index.es.js.map +0 -1
  337. package/es/utils/debounce.es.js.map +0 -1
  338. package/es/utils/method.es.js.map +0 -1
  339. package/es/video/index.es.js.map +0 -1
  340. package/lib/attributors/line-height.cjs.js.map +0 -1
  341. package/lib/config/base64-image.cjs.js.map +0 -1
  342. package/lib/config/editor.config.cjs.js.map +0 -1
  343. package/lib/config/editor.utils.cjs.js.map +0 -1
  344. package/lib/config/i18n/en-us.cjs.js.map +0 -1
  345. package/lib/config/i18n/zh-cn.cjs.js.map +0 -1
  346. package/lib/config/icons.config.cjs.js.map +0 -1
  347. package/lib/config.cjs.js.map +0 -1
  348. package/lib/counter/index.cjs.js.map +0 -1
  349. package/lib/custom-clipboard.cjs.js.map +0 -1
  350. package/lib/custom-image/BlotFormatter.cjs.js.map +0 -1
  351. package/lib/custom-image/Options.cjs.js.map +0 -1
  352. package/lib/custom-image/actions/Action.cjs.js.map +0 -1
  353. package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +0 -1
  354. package/lib/custom-image/actions/DeleteAction.cjs.js.map +0 -1
  355. package/lib/custom-image/image.cjs.js.map +0 -1
  356. package/lib/custom-image/specs/BlotSpec.cjs.js.map +0 -1
  357. package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +0 -1
  358. package/lib/custom-image/specs/ImageSpec.cjs.js.map +0 -1
  359. package/lib/custom-uploader.cjs.js.map +0 -1
  360. package/lib/emoji/emoji-list/people.cjs.js.map +0 -1
  361. package/lib/emoji/emoji-list.cjs.js.map +0 -1
  362. package/lib/emoji/emoji-map.cjs.js.map +0 -1
  363. package/lib/emoji/formats/emoji-blot.cjs.js.map +0 -1
  364. package/lib/emoji/index.cjs.js.map +0 -1
  365. package/lib/emoji/modules/emoji.cjs.js.map +0 -1
  366. package/lib/emoji/modules/toolbar-emoji.cjs.js.map +0 -1
  367. package/lib/emoji/utils.cjs.js.map +0 -1
  368. package/lib/file/formats/file.cjs.js.map +0 -1
  369. package/lib/file/index.cjs.js.map +0 -1
  370. package/lib/file/modules/file-bar.cjs.js.map +0 -1
  371. package/lib/fluent-editor.cjs.js.map +0 -1
  372. package/lib/global-link/constants.cjs.js.map +0 -1
  373. package/lib/global-link/formats/customer-widget-link.cjs.js.map +0 -1
  374. package/lib/global-link/formats/doc-link.cjs.js.map +0 -1
  375. package/lib/global-link/formats/wiki-link.cjs.js.map +0 -1
  376. package/lib/global-link/formats/work-item-link.cjs.js.map +0 -1
  377. package/lib/global-link/index.cjs.js.map +0 -1
  378. package/lib/global-link/utils/createTable.cjs.js.map +0 -1
  379. package/lib/index.cjs.js +0 -5
  380. package/lib/link/formats/link.cjs.js.map +0 -1
  381. package/lib/link/index.cjs.js.map +0 -1
  382. package/lib/link/modules/tooltip.cjs.js.map +0 -1
  383. package/lib/mention/Mention.cjs.js.map +0 -1
  384. package/lib/mention/MentionLink.cjs.js.map +0 -1
  385. package/lib/mention/constants.cjs.js.map +0 -1
  386. package/lib/quick-menu/index.cjs.js.map +0 -1
  387. package/lib/screenshot/index.cjs.js.map +0 -1
  388. package/lib/soft-break/index.cjs.js.map +0 -1
  389. package/lib/strike/index.cjs.js.map +0 -1
  390. package/lib/syntax/index.cjs.js.map +0 -1
  391. package/lib/table/better-table.cjs.js.map +0 -1
  392. package/lib/table/formats/header.cjs.js.map +0 -1
  393. package/lib/table/formats/list.cjs.js.map +0 -1
  394. package/lib/table/formats/table.cjs.js.map +0 -1
  395. package/lib/table/modules/table-column-tool.cjs.js.map +0 -1
  396. package/lib/table/modules/table-operation-menu.cjs.js.map +0 -1
  397. package/lib/table/modules/table-scroll-bar.cjs.js.map +0 -1
  398. package/lib/table/modules/table-selection.cjs.js.map +0 -1
  399. package/lib/table/table-config.cjs.js.map +0 -1
  400. package/lib/table/utils/index.cjs.js.map +0 -1
  401. package/lib/table/utils/node-matchers.cjs.js.map +0 -1
  402. package/lib/toolbar/better-picker.cjs.js.map +0 -1
  403. package/lib/toolbar/index.cjs.js.map +0 -1
  404. package/lib/utils/debounce.cjs.js.map +0 -1
  405. package/lib/utils/method.cjs.js.map +0 -1
  406. package/lib/video/index.cjs.js.map +0 -1
  407. /package/{es → dist/es}/attributors/font-size.es.js +0 -0
  408. /package/{es → dist/es}/attributors/font-size.es.js.map +0 -0
  409. /package/{es → dist/es}/attributors/font-style.es.js +0 -0
  410. /package/{es → dist/es}/attributors/font-style.es.js.map +0 -0
  411. /package/{es → dist/es}/attributors/index.es.js +0 -0
  412. /package/{es → dist/es}/attributors/index.es.js.map +0 -0
  413. /package/{es → dist/es}/attributors/line-height.es.js +0 -0
  414. /package/{es → dist/es}/attributors/text-indent.es.js +0 -0
  415. /package/{es → dist/es}/attributors/text-indent.es.js.map +0 -0
  416. /package/{es → dist/es}/config/base64-image.es.js +0 -0
  417. /package/{es → dist/es}/config/editor.config.es.js +0 -0
  418. /package/{es → dist/es}/config/editor.utils.es.js +0 -0
  419. /package/{es → dist/es}/config/i18n/en-us.es.js +0 -0
  420. /package/{es → dist/es}/config/i18n/zh-cn.es.js +0 -0
  421. /package/{es → dist/es}/config/icons.config.es.js +0 -0
  422. /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js +0 -0
  423. /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js.map +0 -0
  424. /package/{es → dist/es}/config/types/content-change.interface.es.js +0 -0
  425. /package/{es → dist/es}/config/types/content-change.interface.es.js.map +0 -0
  426. /package/{es → dist/es}/config/types/content-save.interface.es.js +0 -0
  427. /package/{es → dist/es}/config/types/content-save.interface.es.js.map +0 -0
  428. /package/{es → dist/es}/config/types/counter-option.interface.es.js +0 -0
  429. /package/{es → dist/es}/config/types/counter-option.interface.es.js.map +0 -0
  430. /package/{es → dist/es}/config/types/editor-config.interface.es.js +0 -0
  431. /package/{es → dist/es}/config/types/editor-config.interface.es.js.map +0 -0
  432. /package/{es → dist/es}/config/types/editor-modules.interface.es.js +0 -0
  433. /package/{es → dist/es}/config/types/editor-modules.interface.es.js.map +0 -0
  434. /package/{es → dist/es}/config/types/file-operation.interface.es.js +0 -0
  435. /package/{es → dist/es}/config/types/file-operation.interface.es.js.map +0 -0
  436. /package/{es → dist/es}/config/types/focus-change.interface.es.js +0 -0
  437. /package/{es → dist/es}/config/types/focus-change.interface.es.js.map +0 -0
  438. /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js +0 -0
  439. /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js.map +0 -0
  440. /package/{es → dist/es}/config/types/help-panel-item.interface.es.js +0 -0
  441. /package/{es → dist/es}/config/types/help-panel-item.interface.es.js.map +0 -0
  442. /package/{es → dist/es}/config/types/help-panel-option.interface.es.js +0 -0
  443. /package/{es → dist/es}/config/types/help-panel-option.interface.es.js.map +0 -0
  444. /package/{es → dist/es}/config/types/image-module.interface.es.js +0 -0
  445. /package/{es → dist/es}/config/types/image-module.interface.es.js.map +0 -0
  446. /package/{es → dist/es}/config/types/image-upload.interface.es.js +0 -0
  447. /package/{es → dist/es}/config/types/image-upload.interface.es.js.map +0 -0
  448. /package/{es → dist/es}/config/types/index.es.js +0 -0
  449. /package/{es → dist/es}/config/types/index.es.js.map +0 -0
  450. /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js +0 -0
  451. /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js.map +0 -0
  452. /package/{es → dist/es}/config/types/mention-module.interface.es.js +0 -0
  453. /package/{es → dist/es}/config/types/mention-module.interface.es.js.map +0 -0
  454. /package/{es → dist/es}/config/types/paste-change.interface.es.js +0 -0
  455. /package/{es → dist/es}/config/types/paste-change.interface.es.js.map +0 -0
  456. /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js +0 -0
  457. /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js.map +0 -0
  458. /package/{es → dist/es}/config/types/range.interface.es.js +0 -0
  459. /package/{es → dist/es}/config/types/range.interface.es.js.map +0 -0
  460. /package/{es → dist/es}/config/types/registry-options.interface.es.js +0 -0
  461. /package/{es → dist/es}/config/types/registry-options.interface.es.js.map +0 -0
  462. /package/{es → dist/es}/config/types/selection-change.interface.es.js +0 -0
  463. /package/{es → dist/es}/config/types/selection-change.interface.es.js.map +0 -0
  464. /package/{es → dist/es}/config/types/toolbar-item.interface.es.js +0 -0
  465. /package/{es → dist/es}/config/types/toolbar-item.interface.es.js.map +0 -0
  466. /package/{es → dist/es}/config/types/type.es.js +0 -0
  467. /package/{es → dist/es}/config/types/type.es.js.map +0 -0
  468. /package/{es → dist/es}/config/types/validate-error.interface.es.js +0 -0
  469. /package/{es → dist/es}/config/types/validate-error.interface.es.js.map +0 -0
  470. /package/{es → dist/es}/custom-clipboard.es.js +0 -0
  471. /package/{es → dist/es}/custom-image/BlotFormatter.es.js +0 -0
  472. /package/{es → dist/es}/custom-image/Options.es.js +0 -0
  473. /package/{es → dist/es}/custom-image/actions/Action.es.js +0 -0
  474. /package/{es → dist/es}/custom-image/actions/CustomResizeAction.es.js +0 -0
  475. /package/{es → dist/es}/custom-image/actions/DeleteAction.es.js +0 -0
  476. /package/{es → dist/es}/custom-image/image.es.js +0 -0
  477. /package/{es → dist/es}/custom-image/specs/BlotSpec.es.js +0 -0
  478. /package/{es → dist/es}/custom-image/specs/CustomImageSpec.es.js +0 -0
  479. /package/{es → dist/es}/custom-image/specs/ImageSpec.es.js +0 -0
  480. /package/{es → dist/es}/custom-uploader.es.js +0 -0
  481. /package/{es → dist/es}/emoji/emoji-list/index.es.js +0 -0
  482. /package/{es → dist/es}/emoji/emoji-list/index.es.js.map +0 -0
  483. /package/{es → dist/es}/emoji/emoji-list/people.es.js +0 -0
  484. /package/{es → dist/es}/emoji/emoji-list.es.js +0 -0
  485. /package/{es → dist/es}/emoji/emoji-map.es.js +0 -0
  486. /package/{es → dist/es}/emoji/formats/emoji-blot.es.js +0 -0
  487. /package/{es → dist/es}/emoji/index.es.js +0 -0
  488. /package/{es → dist/es}/emoji/modules/emoji.es.js +0 -0
  489. /package/{es → dist/es}/emoji/modules/toolbar-emoji.es.js +0 -0
  490. /package/{es → dist/es}/emoji/utils.es.js +0 -0
  491. /package/{es → dist/es}/file/formats/file.es.js +0 -0
  492. /package/{es → dist/es}/file/index.es.js +0 -0
  493. /package/{es → dist/es}/file/modules/file-bar.es.js +0 -0
  494. /package/{es → dist/es}/format-painter/index.es.js +0 -0
  495. /package/{es → dist/es}/format-painter/index.es.js.map +0 -0
  496. /package/{es → dist/es}/global-link/constants.es.js +0 -0
  497. /package/{es → dist/es}/global-link/formats/customer-widget-link.es.js +0 -0
  498. /package/{es → dist/es}/global-link/formats/doc-link.es.js +0 -0
  499. /package/{es → dist/es}/global-link/formats/wiki-link.es.js +0 -0
  500. /package/{es → dist/es}/global-link/formats/work-item-link.es.js +0 -0
  501. /package/{es → dist/es}/global-link/global-link-panel.es.js +0 -0
  502. /package/{es → dist/es}/global-link/global-link-panel.es.js.map +0 -0
  503. /package/{es → dist/es}/global-link/index.es.js +0 -0
  504. /package/{es → dist/es}/global-link/utils/createTable.es.js +0 -0
  505. /package/{es → dist/es}/link/formats/link.es.js +0 -0
  506. /package/{es → dist/es}/link/index.es.js +0 -0
  507. /package/{es → dist/es}/link/modules/tooltip.es.js +0 -0
  508. /package/{es → dist/es}/mention/Mention.es.js +0 -0
  509. /package/{es → dist/es}/mention/MentionLink.es.js +0 -0
  510. /package/{es → dist/es}/mention/constants.es.js +0 -0
  511. /package/{es → dist/es}/quick-menu/index.es.js +0 -0
  512. /package/{es → dist/es}/screenshot/index.es.js +0 -0
  513. /package/{es → dist/es}/soft-break/index.es.js +0 -0
  514. /package/{es → dist/es}/strike/index.es.js +0 -0
  515. /package/{es → dist/es}/syntax/index.es.js +0 -0
  516. /package/{es → dist/es}/table/better-table.es.js +0 -0
  517. /package/{es → dist/es}/table/formats/header.es.js +0 -0
  518. /package/{es → dist/es}/table/formats/list.es.js +0 -0
  519. /package/{es → dist/es}/table/formats/table.es.js +0 -0
  520. /package/{es → dist/es}/table/modules/table-column-tool.es.js +0 -0
  521. /package/{es → dist/es}/table/modules/table-operation-menu.es.js +0 -0
  522. /package/{es → dist/es}/table/modules/table-scroll-bar.es.js +0 -0
  523. /package/{es → dist/es}/table/modules/table-selection.es.js +0 -0
  524. /package/{es → dist/es}/table/table-config.es.js +0 -0
  525. /package/{es → dist/es}/table/utils/index.es.js +0 -0
  526. /package/{es → dist/es}/table/utils/node-matchers.es.js +0 -0
  527. /package/{es → dist/es}/toolbar/better-picker.es.js +0 -0
  528. /package/{es → dist/es}/toolbar/index.es.js +0 -0
  529. /package/{es → dist/es}/utils/debounce.es.js +0 -0
  530. /package/{es → dist/es}/utils/image.es.js +0 -0
  531. /package/{es → dist/es}/utils/image.es.js.map +0 -0
  532. /package/{es → dist/es}/utils/method.es.js +0 -0
  533. /package/{es → dist/es}/utils/scroll-lock.es.js +0 -0
  534. /package/{es → dist/es}/utils/scroll-lock.es.js.map +0 -0
  535. /package/{es → dist/es}/video/index.es.js +0 -0
  536. /package/{lib → dist/lib}/attributors/font-size.cjs.js +0 -0
  537. /package/{lib → dist/lib}/attributors/font-size.cjs.js.map +0 -0
  538. /package/{lib → dist/lib}/attributors/font-style.cjs.js +0 -0
  539. /package/{lib → dist/lib}/attributors/font-style.cjs.js.map +0 -0
  540. /package/{lib → dist/lib}/attributors/index.cjs.js +0 -0
  541. /package/{lib → dist/lib}/attributors/index.cjs.js.map +0 -0
  542. /package/{lib → dist/lib}/attributors/line-height.cjs.js +0 -0
  543. /package/{lib → dist/lib}/attributors/text-indent.cjs.js +0 -0
  544. /package/{lib → dist/lib}/attributors/text-indent.cjs.js.map +0 -0
  545. /package/{lib → dist/lib}/config/base64-image.cjs.js +0 -0
  546. /package/{lib → dist/lib}/config/editor.config.cjs.js +0 -0
  547. /package/{lib → dist/lib}/config/editor.utils.cjs.js +0 -0
  548. /package/{lib → dist/lib}/config/i18n/en-us.cjs.js +0 -0
  549. /package/{lib → dist/lib}/config/i18n/zh-cn.cjs.js +0 -0
  550. /package/{lib → dist/lib}/config/icons.config.cjs.js +0 -0
  551. /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js +0 -0
  552. /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js.map +0 -0
  553. /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js +0 -0
  554. /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js.map +0 -0
  555. /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js +0 -0
  556. /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js.map +0 -0
  557. /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js +0 -0
  558. /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js.map +0 -0
  559. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js +0 -0
  560. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js.map +0 -0
  561. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js +0 -0
  562. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js.map +0 -0
  563. /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js +0 -0
  564. /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js.map +0 -0
  565. /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js +0 -0
  566. /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js.map +0 -0
  567. /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js +0 -0
  568. /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js.map +0 -0
  569. /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js +0 -0
  570. /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js.map +0 -0
  571. /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js +0 -0
  572. /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js.map +0 -0
  573. /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js +0 -0
  574. /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js.map +0 -0
  575. /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js +0 -0
  576. /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js.map +0 -0
  577. /package/{lib → dist/lib}/config/types/index.cjs.js +0 -0
  578. /package/{lib → dist/lib}/config/types/index.cjs.js.map +0 -0
  579. /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js +0 -0
  580. /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js.map +0 -0
  581. /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js +0 -0
  582. /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js.map +0 -0
  583. /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js +0 -0
  584. /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js.map +0 -0
  585. /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js +0 -0
  586. /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js.map +0 -0
  587. /package/{lib → dist/lib}/config/types/range.interface.cjs.js +0 -0
  588. /package/{lib → dist/lib}/config/types/range.interface.cjs.js.map +0 -0
  589. /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js +0 -0
  590. /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js.map +0 -0
  591. /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js +0 -0
  592. /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js.map +0 -0
  593. /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js +0 -0
  594. /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js.map +0 -0
  595. /package/{lib → dist/lib}/config/types/type.cjs.js +0 -0
  596. /package/{lib → dist/lib}/config/types/type.cjs.js.map +0 -0
  597. /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js +0 -0
  598. /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js.map +0 -0
  599. /package/{lib → dist/lib}/custom-clipboard.cjs.js +0 -0
  600. /package/{lib → dist/lib}/custom-image/BlotFormatter.cjs.js +0 -0
  601. /package/{lib → dist/lib}/custom-image/Options.cjs.js +0 -0
  602. /package/{lib → dist/lib}/custom-image/actions/Action.cjs.js +0 -0
  603. /package/{lib → dist/lib}/custom-image/actions/CustomResizeAction.cjs.js +0 -0
  604. /package/{lib → dist/lib}/custom-image/actions/DeleteAction.cjs.js +0 -0
  605. /package/{lib → dist/lib}/custom-image/image.cjs.js +0 -0
  606. /package/{lib → dist/lib}/custom-image/specs/BlotSpec.cjs.js +0 -0
  607. /package/{lib → dist/lib}/custom-image/specs/CustomImageSpec.cjs.js +0 -0
  608. /package/{lib → dist/lib}/custom-image/specs/ImageSpec.cjs.js +0 -0
  609. /package/{lib → dist/lib}/custom-uploader.cjs.js +0 -0
  610. /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js +0 -0
  611. /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js.map +0 -0
  612. /package/{lib → dist/lib}/emoji/emoji-list/people.cjs.js +0 -0
  613. /package/{lib → dist/lib}/emoji/emoji-list.cjs.js +0 -0
  614. /package/{lib → dist/lib}/emoji/emoji-map.cjs.js +0 -0
  615. /package/{lib → dist/lib}/emoji/formats/emoji-blot.cjs.js +0 -0
  616. /package/{lib → dist/lib}/emoji/index.cjs.js +0 -0
  617. /package/{lib → dist/lib}/emoji/modules/emoji.cjs.js +0 -0
  618. /package/{lib → dist/lib}/emoji/modules/toolbar-emoji.cjs.js +0 -0
  619. /package/{lib → dist/lib}/emoji/utils.cjs.js +0 -0
  620. /package/{lib → dist/lib}/file/formats/file.cjs.js +0 -0
  621. /package/{lib → dist/lib}/file/index.cjs.js +0 -0
  622. /package/{lib → dist/lib}/file/modules/file-bar.cjs.js +0 -0
  623. /package/{lib → dist/lib}/format-painter/index.cjs.js +0 -0
  624. /package/{lib → dist/lib}/format-painter/index.cjs.js.map +0 -0
  625. /package/{lib → dist/lib}/global-link/constants.cjs.js +0 -0
  626. /package/{lib → dist/lib}/global-link/formats/customer-widget-link.cjs.js +0 -0
  627. /package/{lib → dist/lib}/global-link/formats/doc-link.cjs.js +0 -0
  628. /package/{lib → dist/lib}/global-link/formats/wiki-link.cjs.js +0 -0
  629. /package/{lib → dist/lib}/global-link/formats/work-item-link.cjs.js +0 -0
  630. /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js +0 -0
  631. /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js.map +0 -0
  632. /package/{lib → dist/lib}/global-link/index.cjs.js +0 -0
  633. /package/{lib → dist/lib}/global-link/utils/createTable.cjs.js +0 -0
  634. /package/{lib → dist/lib}/link/formats/link.cjs.js +0 -0
  635. /package/{lib → dist/lib}/link/index.cjs.js +0 -0
  636. /package/{lib → dist/lib}/link/modules/tooltip.cjs.js +0 -0
  637. /package/{lib → dist/lib}/mention/Mention.cjs.js +0 -0
  638. /package/{lib → dist/lib}/mention/MentionLink.cjs.js +0 -0
  639. /package/{lib → dist/lib}/mention/constants.cjs.js +0 -0
  640. /package/{lib → dist/lib}/quick-menu/index.cjs.js +0 -0
  641. /package/{lib → dist/lib}/screenshot/index.cjs.js +0 -0
  642. /package/{lib → dist/lib}/soft-break/index.cjs.js +0 -0
  643. /package/{lib → dist/lib}/strike/index.cjs.js +0 -0
  644. /package/{lib → dist/lib}/syntax/index.cjs.js +0 -0
  645. /package/{lib → dist/lib}/table/better-table.cjs.js +0 -0
  646. /package/{lib → dist/lib}/table/formats/header.cjs.js +0 -0
  647. /package/{lib → dist/lib}/table/formats/list.cjs.js +0 -0
  648. /package/{lib → dist/lib}/table/formats/table.cjs.js +0 -0
  649. /package/{lib → dist/lib}/table/modules/table-column-tool.cjs.js +0 -0
  650. /package/{lib → dist/lib}/table/modules/table-operation-menu.cjs.js +0 -0
  651. /package/{lib → dist/lib}/table/modules/table-scroll-bar.cjs.js +0 -0
  652. /package/{lib → dist/lib}/table/modules/table-selection.cjs.js +0 -0
  653. /package/{lib → dist/lib}/table/table-config.cjs.js +0 -0
  654. /package/{lib → dist/lib}/table/utils/index.cjs.js +0 -0
  655. /package/{lib → dist/lib}/table/utils/node-matchers.cjs.js +0 -0
  656. /package/{lib → dist/lib}/toolbar/better-picker.cjs.js +0 -0
  657. /package/{lib → dist/lib}/toolbar/index.cjs.js +0 -0
  658. /package/{lib → dist/lib}/utils/debounce.cjs.js +0 -0
  659. /package/{lib → dist/lib}/utils/image.cjs.js +0 -0
  660. /package/{lib → dist/lib}/utils/image.cjs.js.map +0 -0
  661. /package/{lib → dist/lib}/utils/method.cjs.js +0 -0
  662. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js +0 -0
  663. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js.map +0 -0
  664. /package/{lib → dist/lib}/video/index.cjs.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-column-tool.es.js","sources":["../../../../src/table/modules/table-column-tool.ts"],"sourcesContent":["import Quill from 'quill'\nimport { CELL_MIN_HEIGHT, CELL_MIN_WIDTH, COL_TOOL_HEIGHT, PRIMARY_COLOR, ROW_TOOL_WIDTH } from '../table-config'\nimport { css } from '../utils'\n\nexport default class TableColumnTool {\n table: any\n quill: any\n modulesContainer: any\n domNode: any\n columnCtrlPanel: HTMLDivElement\n leftMask: HTMLDivElement\n rowCtrlPanel: HTMLDivElement\n activeToolCell: HTMLElement\n oldRootScrollTop: any\n constructor(table, quill, dom) {\n if (!table) {\n return null\n }\n this.table = table\n this.quill = quill\n this.modulesContainer = dom\n this.domNode = null\n this.oldRootScrollTop = this.quill.root.scrollTop\n\n this.initColTool()\n\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n }\n\n handleQuillRootScroll() {\n if (this.domNode) {\n this.domNode.style.marginTop = `${this.oldRootScrollTop - this.quill.root.scrollTop}px`\n }\n }\n\n initColTool() {\n const parent = this.quill.root.parentNode\n const containerRect = parent.getBoundingClientRect()\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\n\n this.domNode = document.createElement('div')\n this.domNode.classList.add('qlbt-table-control-panel')\n\n // 以下添加顺序影响遮罩顺序,勿改变\n this.columnCtrlPanel = document.createElement('div')\n this.columnCtrlPanel.classList.add('qlbt-column-control-panel')\n this.domNode.appendChild(this.columnCtrlPanel)\n\n this.leftMask = document.createElement('div')\n this.leftMask.classList.add('qlbt-left-mask')\n css(this.leftMask, { height: `${tableViewRect.height + 50}px` })\n this.domNode.appendChild(this.leftMask)\n\n this.rowCtrlPanel = document.createElement('div')\n this.rowCtrlPanel.classList.add('qlbt-row-control-panel')\n this.domNode.appendChild(this.rowCtrlPanel)\n\n this.updateRowToolCells()\n this.updateColToolCells()\n\n this.modulesContainer.appendChild(this.domNode)\n css(this.domNode, {\n width: '100%',\n height: `${COL_TOOL_HEIGHT}px`,\n left: '0px',\n top: `${tableViewRect.top - containerRect.top + parent.scrollTop - 25}px`,\n })\n }\n\n createToolCell(isRow) {\n // @ts-ignore\n window.quillIsIntable = true\n const toolCell = document.createElement('div')\n const selector = document.createElement('div')\n const resizeHolder = document.createElement('div')\n if (isRow) {\n toolCell.classList.add('qlbt-row-tool-cell')\n selector.classList.add('qlbt-row-tool-cell-selector')\n resizeHolder.classList.add('qlbt-row-tool-cell-holder')\n css(toolCell, { width: `${ROW_TOOL_WIDTH}px` })\n }\n else {\n toolCell.classList.add('qlbt-col-tool-cell')\n selector.classList.add('qlbt-col-tool-cell-selector')\n resizeHolder.classList.add('qlbt-col-tool-cell-holder')\n css(toolCell, { height: `${COL_TOOL_HEIGHT}px` })\n }\n toolCell.appendChild(selector)\n toolCell.appendChild(resizeHolder)\n return toolCell\n }\n\n updateColToolCells() {\n const tableContainer = Quill.find(this.table)\n if (!tableContainer) {\n return\n }\n const tableCols = tableContainer.colGroup().children\n const tableColsNum = Math.max(Array.from(tableCols).length, tableContainer.colGroup().domNode.children.length)\n const existCells: any = Array.from(this.columnCtrlPanel.querySelectorAll('.qlbt-col-tool-cell'))\n const cellsNumber = Math.max(existCells.length, tableColsNum)\n\n for (let index = 0; index < cellsNumber; index++) {\n let col = tableCols.at(index)\n let colWidth = 0\n if (!col || col.domNode !== tableContainer.colGroup().domNode.children[index]) {\n col = tableContainer.colGroup().domNode.children[index]\n colWidth = col ? col.width : tableContainer.colGroup().domNode.children[index - 1].width\n }\n else {\n colWidth = Number.parseInt(col.formats()[col.statics.blotName].width, 10)\n }\n // if cell already exist\n let colToolCell = null\n if (!existCells[index]) {\n colToolCell = this.createToolCell(false)\n this.columnCtrlPanel.appendChild(colToolCell)\n this.addColCellSelectHandler(colToolCell)\n this.addColCellHolderHandler(colToolCell)\n // set tool cell min-width\n css(colToolCell, {\n 'min-width': `${colWidth}px`,\n })\n }\n else if (existCells[index] && index >= tableColsNum) {\n existCells[index].remove()\n }\n else {\n colToolCell = existCells[index]\n // set tool cell min-width\n css(colToolCell, {\n 'min-width': `${colWidth}px`,\n })\n }\n }\n }\n\n updateRowToolCells() {\n const tableContainer = Quill.find(this.table)\n if (!tableContainer) {\n return\n }\n let tableRows = Array.from(tableContainer.domNode.querySelectorAll('tr'))\n tableRows = tableRows.filter((tr: any) => tr.children.length)\n const existCells: any = Array.from(this.rowCtrlPanel.querySelectorAll('.qlbt-row-tool-cell'))\n const rowNumber = Math.max(existCells.length, tableRows.length)\n\n for (let index = 0; index < rowNumber; index++) {\n const row: any = tableRows[index]\n\n // fix: 修复 IE11/Edge 下无法拿到 height 的问题\n // IE11/Edge 下 height 会变成 'auto'\n let computedHeight = row && getComputedStyle(row).height\n if (computedHeight === 'auto') {\n computedHeight = row.querySelector('td').style.height || '30px'\n }\n\n let rowHeight = row && Number.parseFloat(computedHeight)\n if (rowHeight < CELL_MIN_HEIGHT) {\n const rowChildHeight = row && row.childNodes[0] && Number.parseFloat(getComputedStyle(row.childNodes[0]).height)\n rowHeight = rowChildHeight\n }\n // if cell already exist\n let rowToolCell = null\n if (!existCells[index]) {\n rowToolCell = this.createToolCell(true)\n this.rowCtrlPanel.appendChild(rowToolCell)\n this.addRowCellSelectHandler(rowToolCell)\n this.addRowCellHolderHandler(rowToolCell)\n // set tool cell height, ff not support min-height\n css(rowToolCell, { height: `${rowHeight}px` })\n }\n else if (existCells[index] && index >= tableRows.length) {\n existCells[index].remove()\n }\n else {\n rowToolCell = existCells[index]\n css(rowToolCell, { height: `${rowHeight}px` })\n }\n }\n }\n\n destroy() {\n // @ts-ignore\n window.quillIsIntable = false\n this.domNode.remove()\n return null\n }\n\n addRowCellSelectHandler(cell) {\n const selector = cell.querySelector('.qlbt-row-tool-cell-selector')\n\n const handleClick = (e) => {\n e.preventDefault()\n\n const dom = e.target.parentNode\n const domRect = dom.getBoundingClientRect()\n const containerRect = this.quill.root.parentNode.getBoundingClientRect()\n const tableRect = this.table.getBoundingClientRect()\n const tableSelection = this.quill.getModule('better-table').tableSelection\n tableSelection.boundary = {\n x: tableRect.left - containerRect.left, // 表格左上角X轴坐标\n x1: tableRect.left - containerRect.left + tableRect.width - 2, // 表格右上角X轴坐标\n y: domRect.top - containerRect.top, // 表格左上角Y轴坐标\n y1: domRect.top - containerRect.top + domRect.height - 1, // 表格右上角Y轴坐标\n width: tableRect.width - 2,\n height: domRect.height - 1,\n }\n tableSelection.selectedTds = tableSelection.computeSelectedTds()\n tableSelection.repositionHelpLines()\n\n dom.classList.add('qlbt-tool-cell-on')\n this.activeToolCell = dom\n }\n\n selector.addEventListener('click', handleClick, false)\n }\n\n addRowCellHolderHandler(cell) {\n const holder = cell.querySelector('.qlbt-row-tool-cell-holder')\n let dragging = false\n let y0 = 0\n let y = 0\n let delta = 0\n let height0 = 0\n // helpLine relation variable\n let tableRect: any = {}\n let cellRect: any = {}\n let helpLine = null\n\n const handleDrag = (e) => {\n e.preventDefault()\n\n if (dragging) {\n y = e.clientY\n\n if (height0 + y - y0 >= CELL_MIN_HEIGHT) {\n delta = y - y0\n }\n else {\n delta = CELL_MIN_HEIGHT - height0\n }\n\n css(helpLine, {\n top: `${cellRect.top + cellRect.height + delta}px`,\n })\n }\n }\n\n const handleMouseup = (e) => {\n e.preventDefault()\n\n const existCells = Array.from(this.domNode.querySelectorAll('.qlbt-row-tool-cell'))\n const rowIndex = existCells.indexOf(cell)\n const rows: any = Array.from(this.table.querySelectorAll('tr'))\n const tds = Array.from(rows[rowIndex].childNodes)\n const hasContentTd: any = tds.find((td: any) => td.getAttribute('rowspan') === '1' && td.textContent !== '\\n')\n\n if (dragging) {\n let tdHeight = `${height0 + delta}px`\n if (hasContentTd) {\n tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))\n const currentHeight = getComputedStyle(hasContentTd).height\n tdHeight = (Number.parseInt(currentHeight, 10) > height0 + delta && currentHeight) || tdHeight\n }\n css(cell, { height: tdHeight })\n tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))\n\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\n css(this.leftMask, { height: `${tableViewRect.height + 50}px` })\n\n y0 = 0\n y = 0\n delta = 0\n height0 = 0\n dragging = false\n holder.classList.remove('dragging')\n }\n\n this.quill.root.parentNode.removeEventListener('mousemove', handleDrag, false)\n document.removeEventListener('mouseup', handleMouseup, false)\n tableRect = {}\n cellRect = {}\n helpLine.remove()\n helpLine = null\n\n const betterTableModule = this.quill.getModule('better-table')\n const tableScrollBar = betterTableModule.tableScrollBar\n tableScrollBar.resetTableHeight(this.table)\n\n // fix: 拖动滚动条时修正选区位置\n const tableSelection = betterTableModule.tableSelection\n if (tableSelection && tableSelection.selectedTds.length) {\n tableSelection.refreshHelpLinesPosition()\n }\n }\n\n const handleMousedown = (e) => {\n e.preventDefault()\n\n this.quill.root.parentNode.addEventListener('mousemove', handleDrag, false)\n document.addEventListener('mouseup', handleMouseup, false)\n\n tableRect = this.table.getBoundingClientRect()\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\n const width = (tableRect.width > tableViewRect.width && tableViewRect.width) || tableRect.width\n cellRect = cell.getBoundingClientRect()\n helpLine = document.createElement('div')\n css(helpLine, {\n position: 'fixed',\n top: `${cellRect.top + cellRect.height}px`,\n left: `${cellRect.left}px`,\n zIndex: '100',\n width: `${width + ROW_TOOL_WIDTH + 9}px`,\n height: '1px',\n backgroundColor: PRIMARY_COLOR,\n })\n\n this.quill.root.parentNode.appendChild(helpLine)\n dragging = true\n y0 = e.clientY\n height0 = cellRect.height\n holder.classList.add('dragging')\n }\n\n holder.addEventListener('mousedown', handleMousedown, false)\n }\n\n addColCellSelectHandler(cell) {\n // 上方列宽控制条\n\n const selector = cell.querySelector('.qlbt-col-tool-cell-selector')\n\n const handleClick = (e) => {\n e.preventDefault()\n\n const dom = e.target.parentNode\n const domRect = dom.getBoundingClientRect()\n const containerRect = this.quill.root.parentNode.getBoundingClientRect()\n const tableRect = this.table.getBoundingClientRect()\n const tableSelection = this.quill.getModule('better-table').tableSelection\n tableSelection.boundary = {\n x: domRect.left - containerRect.left - 1,\n x1: domRect.left - containerRect.left + domRect.width - 2,\n y: tableRect.top - containerRect.top,\n y1: tableRect.top - containerRect.top + tableRect.height - 2,\n width: domRect.width,\n height: tableRect.height - 2,\n }\n tableSelection.selectedTds = tableSelection.computeSelectedTds()\n tableSelection.repositionHelpLines()\n\n dom.classList.add('qlbt-tool-cell-on')\n this.activeToolCell = dom\n }\n selector.addEventListener('click', handleClick, false)\n }\n\n addColCellHolderHandler(cell) {\n const tableContainer = Quill.find(this.table)\n const holder = cell.querySelector('.qlbt-col-tool-cell-holder')\n let dragging = false\n let x0 = 0\n let x = 0\n let delta: any = 0\n let width0 = 0\n // helpLine relation variable\n let tableRect: any = {}\n let scrollContainerRect = null\n let cellRect: any = {}\n let helpLine = null\n\n const handleDrag = (e) => {\n e.preventDefault()\n\n if (dragging) {\n x = e.clientX\n\n if (width0 + x - x0 >= CELL_MIN_WIDTH) {\n delta = x - x0\n }\n else {\n delta = CELL_MIN_WIDTH - width0\n }\n let left = cellRect.left + cellRect.width - 1 + delta\n if (scrollContainerRect) {\n left -= scrollContainerRect.left\n }\n\n css(helpLine, {\n left: `${left}px`,\n })\n }\n }\n\n const handleMouseup = (e) => {\n e.preventDefault()\n\n const existCells = Array.from(this.domNode.querySelectorAll('.qlbt-col-tool-cell'))\n const colIndex = existCells.indexOf(cell)\n let colBlot = tableContainer.colGroup().children.at(colIndex)\n if (!colBlot || colBlot.domNode !== tableContainer.colGroup().domNode.children[colIndex]) {\n colBlot = tableContainer.colGroup().domNode.children[colIndex]\n }\n if (dragging) {\n // fix: 防止 colWidth 是小数\n const colWidth = Number.parseInt(width0 + delta, 10)\n if (colBlot.format) {\n colBlot.format('width', colWidth)\n }\n else {\n colBlot.width = colWidth\n }\n\n css(cell, { 'min-width': `${colWidth}px` })\n\n x0 = 0\n x = 0\n delta = 0\n width0 = 0\n dragging = false\n holder.classList.remove('dragging')\n }\n\n this.quill.root.parentNode.removeEventListener('mousemove', handleDrag, false)\n document.removeEventListener('mouseup', handleMouseup, false)\n tableRect = {}\n scrollContainerRect = null\n cellRect = {}\n helpLine.remove()\n helpLine = null\n tableContainer.updateTableWidth()\n\n setTimeout(() => {\n this.updateRowToolCells()\n const betterTableModule = this.quill.getModule('better-table')\n const tableScrollBar = betterTableModule.tableScrollBar\n tableScrollBar.updateScrollBar()\n // fix: 拖动滚动条时修正选区位置\n const tableSelection = betterTableModule.tableSelection\n if (tableSelection && tableSelection.selectedTds.length) {\n tableSelection.refreshHelpLinesPosition()\n }\n })\n }\n\n const handleMousedown = (e) => {\n e.preventDefault()\n\n this.quill.root.parentNode.addEventListener('mousemove', handleDrag, false)\n document.addEventListener('mouseup', handleMouseup, false)\n\n tableRect = this.table.getBoundingClientRect()\n cellRect = cell.getBoundingClientRect()\n\n let positionValue = 'fixed'\n let top = cellRect.top\n let left = cellRect.left + cellRect.width - 1\n if (this.quill.root === this.quill.scrollingContainer) {\n positionValue = 'absolute'\n scrollContainerRect = this.quill.root.getBoundingClientRect()\n top -= scrollContainerRect.top\n left -= scrollContainerRect.left\n }\n\n helpLine = document.createElement('div')\n css(helpLine, {\n position: positionValue,\n top: `${top}px`,\n left: `${left}px`,\n zIndex: '100',\n height: `${tableRect.height + COL_TOOL_HEIGHT + 8}px`,\n width: '1px',\n backgroundColor: PRIMARY_COLOR,\n })\n\n this.quill.root.parentNode.appendChild(helpLine)\n dragging = true\n x0 = e.clientX\n width0 = cellRect.width\n holder.classList.add('dragging')\n }\n\n holder.addEventListener('mousedown', handleMousedown, false)\n }\n\n colToolCells() {\n return Array.from(this.domNode.querySelectorAll('.qlbt-col-tool-cell'))\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-operation-menu.es.js","sources":["../../../../src/table/modules/table-operation-menu.ts"],"sourcesContent":["import Quill from 'quill'\nimport { LANG_CONF } from '../../config/editor.config'\nimport {\n ERROR_LIMIT,\n MENU_ITEM_HEIGHT,\n MENU_MIN_HEIGHT,\n MENU_WIDTH,\n OPERATE_MENU_COLORPICKER_CLASS,\n\n OPERATE_MENU_COLORPICKER_ITEM_CLASS,\n OPERATE_MENU_DIVIDING_CLASS,\n OPERATE_MENU_ITEM_CLASS,\n OPERATE_MENU_SUBTITLE_CLASS,\n} from '../table-config'\n\nimport { arrayFrom, css, elementRemove, getRelativeRect } from '../utils'\n\nconst MENU_ITEMS_DEFAULT = {\n copyCells: {\n text: 'Copy Cells',\n handler() {\n this.onCopy('copy')\n },\n },\n copyTable: {\n text: 'Copy Table',\n handler() {\n this.tableColumnTool.destroy()\n this.tableScrollBar.destroy()\n this.tableSelection.clearSelection()\n const dom = this.table.cloneNode(true)\n const trArr = dom.querySelectorAll('tr[data-row]')\n trArr.forEach(tr => tr.removeAttribute('data-row'))\n dom.style.position = 'fixed'\n dom.style.top = 0\n dom.style.left = 0\n dom.style.clip = 'rect(0,0,0,0)'\n document.body.appendChild(dom)\n this.setCopyRange(dom)\n document.execCommand('copy')\n dom.remove()\n },\n },\n cutCells: {\n text: 'Cut Cells',\n handler() {\n this.onCopy('cut')\n },\n },\n emptyCells: {\n text: 'Empty Cells',\n handler() {\n const tableContainer = Quill.find(this.table)\n const { selectedTds } = this.tableSelection\n tableContainer.emptyCells(selectedTds)\n },\n },\n insertColumnRight: {\n text: 'Insert Column After',\n handler() {\n const tableContainer = Quill.find(this.table)\n const colIndex = getColToolCellIndexByBoundary(\n this.columnToolCells,\n this.boundary,\n (cellRect, boundary) => {\n return Math.abs(cellRect.x + cellRect.width - boundary.x1) <= ERROR_LIMIT\n },\n this.quill.root.parentNode,\n )\n\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, true, this.quill.root.parentNode)\n\n this.tableColumnTool.updateColToolCells()\n this.quill.update(Quill.sources.USER)\n // fix: the scroll bar will go to the top when insert row/column to the table\n // this.quill.setSelection(\n // this.quill.getIndex(newColumn[0]),\n // 0,\n // Quill.sources.SILENT\n // )\n this.tableSelection.setSelection(\n newColumn[0].domNode.getBoundingClientRect(),\n newColumn[0].domNode.getBoundingClientRect(),\n )\n\n setTimeout(() => this.tableScrollBar.updateScrollBar())\n },\n },\n\n insertColumnLeft: {\n text: 'Insert Column Before',\n handler() {\n const tableContainer = Quill.find(this.table)\n const colIndex = getColToolCellIndexByBoundary(\n this.columnToolCells,\n this.boundary,\n (cellRect, boundary) => {\n return Math.abs(cellRect.x - boundary.x) <= ERROR_LIMIT\n },\n this.quill.root.parentNode,\n )\n\n const newColumn = tableContainer.insertColumn(this.boundary, colIndex, false, this.quill.root.parentNode)\n\n this.tableColumnTool.updateColToolCells()\n this.quill.update(Quill.sources.USER)\n // this.quill.setSelection(\n // this.quill.getIndex(newColumn[0]),\n // 0,\n // Quill.sources.SILENT\n // )\n this.tableSelection.setSelection(\n newColumn[0].domNode.getBoundingClientRect(),\n newColumn[0].domNode.getBoundingClientRect(),\n )\n\n setTimeout(() => this.tableScrollBar.updateScrollBar())\n },\n },\n\n insertRowUp: {\n text: 'Insert Row Above',\n handler() {\n const tableContainer = Quill.find(this.table)\n const affectedCells = tableContainer.insertRow(this.boundary, false, this.quill.root.parentNode)\n\n this.tableColumnTool.updateRowToolCells()\n this.quill.update(Quill.sources.USER)\n // this.quill.setSelection(\n // this.quill.getIndex(affectedCells[0]),\n // 0,\n // Quill.sources.SILENT\n // )\n this.tableSelection.setSelection(\n affectedCells[0].domNode.getBoundingClientRect(),\n affectedCells[0].domNode.getBoundingClientRect(),\n )\n\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\n },\n },\n\n insertRowDown: {\n text: 'Insert Row Below',\n handler() {\n const tableContainer = Quill.find(this.table)\n const affectedCells = tableContainer.insertRow(this.boundary, true, this.quill.root.parentNode)\n\n this.tableColumnTool.updateRowToolCells()\n this.quill.update(Quill.sources.USER)\n // this.quill.setSelection(\n // this.quill.getIndex(affectedCells[0]),\n // 0,\n // Quill.sources.SILENT\n // )\n this.tableSelection.setSelection(\n affectedCells[0].domNode.getBoundingClientRect(),\n affectedCells[0].domNode.getBoundingClientRect(),\n )\n\n setTimeout(() => this.tableScrollBar.resetTableHeight(this.table))\n },\n },\n\n mergeCells: {\n text: 'Merge Cells',\n handler() {\n const tableContainer = Quill.find(this.table)\n // compute merged Cell rowspan, equal to length of selected rows\n const rowspan = tableContainer.rows().reduce((sum, row) => {\n const rowRect = getRelativeRect(row.domNode.getBoundingClientRect(), this.quill.root.parentNode)\n if (\n rowRect.y > this.boundary.y - ERROR_LIMIT\n && rowRect.y + rowRect.height < this.boundary.y + this.boundary.height + ERROR_LIMIT\n ) {\n sum += 1\n }\n return sum\n }, 0)\n\n // compute merged cell colspan, equal to length of selected cols\n const colspan = this.columnToolCells.reduce((sum, cell) => {\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), this.quill.root.parentNode)\n if (\n cellRect.x > this.boundary.x - ERROR_LIMIT\n && cellRect.x + cellRect.width < this.boundary.x + this.boundary.width + ERROR_LIMIT\n ) {\n sum += 1\n }\n return sum\n }, 0)\n\n const mergedCell = tableContainer.mergeCells(\n this.boundary,\n this.selectedTds,\n rowspan,\n colspan,\n this.quill.root.parentNode,\n )\n this.quill.update(Quill.sources.USER)\n this.tableSelection.setSelection(\n mergedCell.domNode.getBoundingClientRect(),\n mergedCell.domNode.getBoundingClientRect(),\n )\n },\n },\n\n unmergeCells: {\n text: 'Split Cells',\n handler() {\n const tableContainer = Quill.find(this.table)\n tableContainer.unmergeCells(this.selectedTds, this.quill.root.parentNode)\n this.quill.update(Quill.sources.USER)\n this.tableSelection.clearSelection()\n },\n },\n\n deleteColumn: {\n text: 'Delete Columns',\n handler() {\n const tableContainer = Quill.find(this.table)\n const colIndexes = getColToolCellIndexesByBoundary(\n this.columnToolCells,\n this.boundary,\n (cellRect, boundary) => {\n return cellRect.x + ERROR_LIMIT > boundary.x && cellRect.x + cellRect.width - ERROR_LIMIT < boundary.x1\n },\n this.quill.root.parentNode,\n )\n\n const isDeleteTable = tableContainer.deleteColumns(this.boundary, colIndexes, this.quill.root.parentNode)\n if (!isDeleteTable) {\n this.tableColumnTool.updateColToolCells()\n this.quill.update(Quill.sources.USER)\n this.tableSelection.clearSelection()\n }\n\n setTimeout(() => this.tableScrollBar.updateScrollBar())\n },\n },\n\n deleteRow: {\n text: 'Delete Rows',\n handler() {\n const tableContainer = Quill.find(this.table)\n const isDeleteTable = tableContainer.deleteRow(this.boundary, this.quill.root.parentNode)\n if (!isDeleteTable) {\n this.tableColumnTool.updateRowToolCells()\n this.quill.update(Quill.sources.USER)\n this.tableSelection.clearSelection()\n }\n },\n },\n\n deleteTable: {\n text: 'Remove Table',\n handler() {\n const betterTableModule = this.quill.getModule('better-table')\n const tableContainer = Quill.find(this.table)\n betterTableModule.hideTableTools()\n tableContainer.remove()\n this.quill.update(Quill.sources.USER)\n // fix: 右键菜单删除表格后编辑器失焦\n this.quill.focus()\n },\n },\n}\nconst DEFAULT_CELL_COLORS = ['white', 'red', 'yellow', 'blue']\nconst NODE_EVENT_MAP = new WeakMap()\nconst DEFAULT_COLOR_SUBTITLE = LANG_CONF.subTitleBgColor\nexport default class TableOperationMenu {\n tableSelection: any\n table: any\n quill: any\n options: any\n menuItems: any\n tableColumnTool: any\n tableScrollBar: any\n boundary: any\n selectedTds: any\n destroyHandler: any\n columnToolCells: any\n colorSubTitle: any\n cellColors: any\n domNode: any\n\n constructor(params, quill, options) {\n const betterTableModule = quill.getModule('better-table')\n this.tableSelection = betterTableModule.tableSelection\n this.table = params.table\n this.quill = quill\n this.options = options\n this.menuItems = { ...MENU_ITEMS_DEFAULT, ...options.items }\n this.tableColumnTool = betterTableModule.columnTool\n // this.tableRowTool = betterTableModule.rowTool\n this.tableScrollBar = betterTableModule.tableScrollBar\n this.boundary = this.tableSelection.boundary\n this.selectedTds = this.tableSelection.selectedTds\n this.destroyHandler = this.destroy.bind(this)\n this.columnToolCells = this.tableColumnTool.colToolCells()\n this.colorSubTitle\n = options.color && options.color.text\n ? options.color.text\n : DEFAULT_COLOR_SUBTITLE\n this.cellColors\n = options.color && options.color.colors\n ? options.color.colors\n : DEFAULT_CELL_COLORS\n\n this.menuInitial(params)\n this.mount()\n document.addEventListener('click', this.destroyHandler, false)\n }\n\n mount() {\n this.quill.root.parentNode.appendChild(this.domNode)\n }\n\n destroy() {\n const menuItems = arrayFrom(\n this.domNode.querySelectorAll(`.${OPERATE_MENU_ITEM_CLASS}`),\n )\n const colorPickerItems = arrayFrom(\n this.domNode.querySelectorAll(`.${OPERATE_MENU_COLORPICKER_ITEM_CLASS}`),\n )\n const nodes = menuItems.concat(colorPickerItems)\n\n nodes.forEach((node) => {\n if (NODE_EVENT_MAP.has(node)) {\n const unregister = NODE_EVENT_MAP.get(node)\n\n if (unregister && typeof unregister === 'function') {\n unregister()\n }\n }\n })\n\n elementRemove(this.domNode)\n document.removeEventListener('mousedown', this.destroyHandler, false)\n\n return null\n }\n\n menuInitial({ cell, left, top }) {\n const rowspan = cell.getAttribute('rowspan')\n const colspan = cell.getAttribute('colspan')\n const winHeight = window.innerHeight || Math.max(document.documentElement.clientHeight, document.body.clientHeight)\n const num = Object.keys(this.menuItems) || []\n const menuHeight = MENU_ITEM_HEIGHT * num.length || MENU_MIN_HEIGHT\n const transformOffset = checkAndGetViewPointChange(this.quill.root.parentNode, left, top)\n const leftPos = left - transformOffset.offsetX\n const topPos = top - transformOffset.offsetY\n const cssContent = {\n 'left': `${leftPos}px`,\n 'top': `${topPos}px`,\n 'min-height': `${MENU_MIN_HEIGHT}px`,\n 'width': `${MENU_WIDTH}px`,\n }\n\n if (menuHeight + top > winHeight && menuHeight < winHeight) {\n delete cssContent.top\n cssContent.bottom = '10px'\n }\n\n this.domNode = document.createElement('div')\n this.domNode.classList.add('qlbt-operation-menu')\n css(this.domNode, cssContent)\n\n for (const name in this.menuItems) {\n if (this.menuItems[name]) {\n const item = { ...MENU_ITEMS_DEFAULT[name], ...this.menuItems[name] }\n const dom = this.menuItemCreator(item)\n if (\n (name === 'mergeCells' && this.tableSelection.selectedTds.length === 1)\n || (name === 'unmergeCells' && rowspan === 1 && colspan === 1)\n ) {\n dom.classList.add('qlbt-operation-menu-disabled')\n }\n else {\n dom.addEventListener('mouseup', item.handler.bind(this), false)\n }\n this.domNode.appendChild(dom)\n }\n }\n\n // if colors option is false, disabled bg color\n if (this.options.color && this.options.color !== false) {\n this.domNode.appendChild(dividingCreator())\n this.domNode.appendChild(subTitleCreator(this.colorSubTitle))\n this.domNode.appendChild(this.colorsItemCreator(this.cellColors))\n }\n\n // create dividing line\n function dividingCreator() {\n const dividing = document.createElement('div')\n dividing.classList.add(OPERATE_MENU_DIVIDING_CLASS)\n return dividing\n }\n\n // create subtitle for menu\n function subTitleCreator(title) {\n const subTitle = document.createElement('div')\n subTitle.classList.add(OPERATE_MENU_SUBTITLE_CLASS)\n subTitle.textContent = title\n return subTitle\n }\n }\n\n colorsItemCreator(colors) {\n const self = this\n const node = document.createElement('div')\n node.classList.add(OPERATE_MENU_COLORPICKER_CLASS)\n\n colors.forEach((color) => {\n const colorBox = colorBoxCreator(color)\n node.appendChild(colorBox)\n })\n\n function colorBoxCreator(color) {\n const box = document.createElement('div')\n box.classList.add(OPERATE_MENU_COLORPICKER_ITEM_CLASS)\n box.setAttribute('data-color', color)\n box.style.backgroundColor = color\n\n const clickHandler = function () {\n const selectedTds = self.tableSelection.selectedTds\n if (selectedTds && selectedTds.length > 0) {\n selectedTds.forEach((tableCell) => {\n tableCell.domNode.children[0].setAttribute('data-parent-bg', color)\n tableCell.format('cell-bg', color)\n })\n }\n }\n\n box.addEventListener('click', clickHandler, false)\n\n NODE_EVENT_MAP.set(box, () => {\n box.removeEventListener('click', clickHandler, false)\n })\n\n return box\n }\n\n return node\n }\n\n menuItemCreator({ text }) {\n const node = document.createElement('div')\n node.classList.add('qlbt-operation-menu-item')\n node.textContent = text\n // node.addEventListener('click', handler.bind(this), false)\n return node\n }\n\n onCopy(operation) {\n const { selectedTds } = this.tableSelection\n const virtualTable = this.createVirtualTable(selectedTds, operation)\n document.body.appendChild(virtualTable)\n this.setCopyRange(virtualTable)\n this.tableSelection.preSelectedTable = virtualTable\n this.tableSelection.preSelectedTds = selectedTds\n document.execCommand('copy')\n virtualTable.remove()\n if (operation === 'cut') {\n const tableContainer = Quill.find(this.table)\n tableContainer.emptyCells(selectedTds)\n }\n }\n\n createVirtualTable(selectedTds, _operation) {\n const virtualTable: any = document.createElement('table')\n virtualTable.style.position = 'fixed'\n virtualTable.style.top = 0\n virtualTable.style.left = 0\n virtualTable.style.clip = 'rect(0,0,0,0)'\n let preParentSign = ''\n let virtualTr = null\n selectedTds.forEach((selectedCell) => {\n const { domNode, parent } = selectedCell\n const currentParentSign = parent.domNode.getAttribute('data-row')\n const rowspan = domNode.firstChild.dataset.rowspan\n const colspan = domNode.firstChild.dataset.colspan\n const row = domNode.firstChild.dataset.row\n const cell = domNode.firstChild.dataset.cell\n\n selectedCell.dataCell = cell\n selectedCell.dataRow = row\n selectedCell.dataColSpan = colspan\n selectedCell.dataRowSpan = rowspan\n\n if (currentParentSign !== preParentSign) {\n if (preParentSign !== '') {\n virtualTable.appendChild(virtualTr)\n }\n virtualTr = document.createElement('tr')\n preParentSign = currentParentSign\n }\n\n const domNodeWidth = domNode.offsetWidth\n const cloneNode = domNode.cloneNode(true)\n cloneNode.setAttribute('width', domNodeWidth)\n\n virtualTr.appendChild(cloneNode)\n })\n virtualTable.appendChild(virtualTr)\n return virtualTable\n }\n\n setCopyRange(selectedNodes) {\n const range = document.createRange()\n const windowSelectionRange = window.getSelection()\n range.selectNodeContents(selectedNodes)\n windowSelectionRange.removeAllRanges()\n windowSelectionRange.addRange(range)\n }\n\n groupTableCell(selectedTds) {\n const rowGroup = []\n let dataRow = ''\n let preDataRow = ''\n let index = 0\n selectedTds.forEach((tableCell) => {\n dataRow = tableCell.parent.domNode.getAttribute('data-row')\n\n if (dataRow !== preDataRow) {\n if (preDataRow !== '') {\n index++\n }\n rowGroup[index] = []\n preDataRow = dataRow\n }\n\n rowGroup[index].push(tableCell)\n })\n return rowGroup\n }\n}\n\nfunction getColToolCellIndexByBoundary(cells, boundary, conditionFn, container) {\n return cells.reduce((findIndex, cell) => {\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\n if (conditionFn(cellRect, boundary)) {\n findIndex = cells.indexOf(cell)\n }\n return findIndex\n }, false)\n}\n\nfunction getColToolCellIndexesByBoundary(cells, boundary, conditionFn, container) {\n return cells.reduce((findIndexes, cell) => {\n const cellRect = getRelativeRect(cell.getBoundingClientRect(), container)\n if (conditionFn(cellRect, boundary)) {\n findIndexes.push(cells.indexOf(cell))\n }\n return findIndexes\n }, [])\n}\n\nfunction checkAndGetViewPointChange(parentContainer: HTMLElement, left: number, top: number) {\n if (!parentContainer) {\n return {\n offsetX: 0,\n offsetY: 0,\n }\n }\n // 模拟一个元素测预测位置和最终位置是否符合,如果不符合则是有transform等造成的偏移\n const testEl = document.createElement('div')\n css(testEl, {\n opacity: '0',\n position: 'fixed',\n left: `${left}px`,\n top: `${top}px`,\n width: '1px',\n height: '1px',\n zIndex: '-999999',\n })\n parentContainer.appendChild(testEl)\n const testElPosition = testEl.getBoundingClientRect()\n parentContainer.removeChild(testEl)\n return {\n offsetX: testElPosition.left - left,\n offsetY: testElPosition.top - top,\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-scroll-bar.es.js","sources":["../../../../src/table/modules/table-scroll-bar.ts"],"sourcesContent":["import { SCROLL_BAR_PANEL_HEIGHT } from '../table-config'\nimport { css } from '../utils'\n\nexport default class TableScrollBar {\n table: any\n quill: any\n modulesContainer: any\n domNode: any\n oldRootScrollTop: any\n // @ts-ignore\n prev: number\n columnToolDomNode: any\n columnCtrlPanel: any\n leftMask: any\n tableViewRect: any\n tableRect: any\n containerRect: any\n subscriber: any\n // @ts-ignore\n tableMoveDistance: number\n // @ts-ignore\n maxBarLeft: number\n // @ts-ignore\n scrollBar: Element\n // @ts-ignore\n isTableOverflow: boolean // 表格是否溢出开关,判断开关值后只改变样式一次,不重复修改\n\n constructor(table, quill, dom) {\n if (!table) {\n return\n }\n this.table = table\n this.quill = quill\n this.modulesContainer = dom\n this.domNode = null\n this.oldRootScrollTop = this.quill.root.scrollTop\n this.prev = 0\n\n const betterTableModule = this.quill.getModule('better-table')\n const tableColumnTool = betterTableModule.columnTool\n this.columnToolDomNode = tableColumnTool.domNode\n this.columnCtrlPanel = tableColumnTool.columnCtrlPanel\n this.leftMask = tableColumnTool.leftMask\n\n this.updateScrollBar()\n\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n }\n\n handleQuillRootScroll() {\n if (!this.domNode) {\n return\n }\n const curTableRect = this.table.getBoundingClientRect()\n const curContainerRect = this.quill.root.parentNode.getBoundingClientRect()\n const tableTop = curTableRect.top + SCROLL_BAR_PANEL_HEIGHT\n const tableBottom = curTableRect.top + curTableRect.height - 1\n const containerBottom = curContainerRect.top + curContainerRect.height\n if (containerBottom < tableBottom && containerBottom > tableTop) { // 表格下端溢出容器下端\n if (!this.isTableOverflow) {\n this.isTableOverflow = true\n css(this.domNode, {\n display: 'block',\n top: `${this.containerRect.height - SCROLL_BAR_PANEL_HEIGHT}px`,\n marginTop: '0px',\n })\n }\n }\n else if (containerBottom <= tableTop) { // 表格上端溢出容器下端\n this.isTableOverflow = false\n this.domNode.style.display = 'none'\n }\n else { // 表格下端在容器内\n this.setScrollBarToBottom()\n css(this.domNode, { marginTop: `${this.oldRootScrollTop - this.quill.root.scrollTop}px` })\n }\n }\n\n setScrollBarToBottom() {\n if (this.isTableOverflow) {\n this.isTableOverflow = false\n const barPos = this.tableRect.top + this.tableRect.height - this.containerRect.top - 1\n css(this.domNode, { display: 'block', top: `${barPos}px` })\n }\n }\n\n resetTableHeight(table) {\n if (this.domNode) {\n // 表格的高度改变,重置初始化tableRect的高度,但不重置其他坐标值\n this.tableRect.height = table.getBoundingClientRect().height\n this.isTableOverflow = !this.isTableOverflow\n this.handleQuillRootScroll()\n }\n }\n\n setScrollBarMove(pos, isMouse) {\n // 获取当前滑块左边距和鼠标两次事件节点之间的位移差,计算当前滑块位置及是否显示左右遮罩层,通过比例计算表格位移并赋值\n const currentBarLeft = Number.parseInt(getComputedStyle(this.scrollBar).left, 10)\n let left = isMouse ? pos - this.prev + currentBarLeft : currentBarLeft + pos\n this.showMask(left)\n left = this.getLimitedDistance(left)\n const scale = this.tableViewRect.width / this.tableRect.width\n const move = left / scale\n const columnCtrlPanelLeft = this.tableViewRect.left - this.containerRect.left - move\n css(this.scrollBar, { left: `${left}px` }) // 移动表格滚动条\n css(this.columnCtrlPanel, { left: `${columnCtrlPanelLeft}px` }) // 移动顶部列宽控制条\n this.table.parentNode.scrollLeft = move // 移动表格\n if (isMouse) {\n this.prev = pos\n }\n\n // fix: 拖动滚动条时修正选区位置\n const tableSelection = this.quill.getModule('better-table').tableSelection\n if (tableSelection && tableSelection.selectedTds.length) {\n tableSelection.refreshHelpLinesPosition()\n }\n }\n\n handleScrollBarMouseDown(mouseDownEvent) {\n mouseDownEvent.preventDefault()\n\n this.prev = mouseDownEvent.clientX\n this.subscriber = (mouseMoveEvent: any) => {\n mouseMoveEvent.preventDefault()\n mouseMoveEvent.stopPropagation()\n this.setScrollBarMove(mouseMoveEvent.clientX, true)\n }\n this.quill.root.parentNode.addEventListener('mousemove', this.subscriber, false)\n document.addEventListener('mouseup', this.handleScrollBarMouseup.bind(this), false)\n }\n\n handleScrollBarMouseup(event) {\n event.preventDefault()\n this.quill.root.parentNode.removeEventListener('mousemove', this.subscriber)\n document.removeEventListener('mouseup', this.handleScrollBarMouseup.bind(this), false)\n }\n\n handleWheel(event) {\n // 按住 Shift 滚动鼠标滚轮,可以对表格进行横向滚动\n if (event.shiftKey) {\n const { deltaY } = event // 每次滚动鼠标滚轮移动的距离\n this.setScrollBarMove(deltaY, false)\n }\n }\n\n showMask(distance) {\n // 根据当前滑块左边距判断是否显示左右遮罩层\n if (distance >= Math.floor(this.maxBarLeft)) {\n css(this.leftMask, { display: 'block' })\n }\n else if (distance <= 0) {\n css(this.leftMask, { display: 'none' })\n }\n else {\n css(this.leftMask, { display: 'block' })\n }\n }\n\n getLimitedDistance(distance) {\n if (distance >= Math.floor(this.maxBarLeft)) {\n distance = this.maxBarLeft\n }\n else if (distance <= 0) {\n distance = 0\n }\n return distance\n }\n\n updateScrollBar() {\n if (!this.table?.parentNode) {\n return\n }\n // 获取表格尺寸和表格容器尺寸\n const tableRect = this.table.getBoundingClientRect()\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\n const tableMoveDistance = tableRect.width - tableViewRect.width // 表格最大移动距离\n this.tableRect = tableRect\n this.tableViewRect = tableViewRect\n this.tableMoveDistance = tableMoveDistance\n this.oldRootScrollTop = this.quill.root.scrollTop\n\n if (tableMoveDistance > 0) {\n this.createScrollBar()\n }\n else {\n this.destroyScrollBar()\n }\n }\n\n createScrollBar() {\n // 列控制条增加表格相应位移\n const parent = this.quill.root.parentNode\n const containerRect = parent.getBoundingClientRect() // 编辑器容器宽度\n this.containerRect = containerRect\n css(this.columnCtrlPanel, {\n left: `${this.tableViewRect.left - containerRect.left - this.table.parentNode.scrollLeft}px`,\n })\n\n // 创建滚动条\n if (this.domNode) {\n this.domNode.remove()\n }\n this.domNode = document.createElement('div')\n this.domNode.classList.add('qlbt-table-scroll-bar-panel')\n this.scrollBar = document.createElement('div')\n this.scrollBar.classList.add('qlbt-table-scroll-bar')\n this.scrollBar.addEventListener('mousedown', this.handleScrollBarMouseDown.bind(this), false)\n const scale = this.tableViewRect.width / this.tableRect.width\n const barWidth = this.tableViewRect.width - this.tableMoveDistance * scale // 滑块宽度\n css(this.scrollBar, { width: `${barWidth}px` })\n this.domNode.appendChild(this.scrollBar)\n\n // 判断当前表格是否存在位移,如存在通过比例计算滑块当前位移并赋值\n const tableScrollLeft = this.table.parentNode.scrollLeft\n this.maxBarLeft = this.tableMoveDistance * scale // 滑块最大移动距离\n if (tableScrollLeft) {\n const barLeft = tableScrollLeft * scale\n this.showMask(barLeft)\n css(this.scrollBar, { left: `${this.getLimitedDistance(barLeft)}px` })\n }\n\n // 将滚动条插入到 table control panel 中\n const barPos = this.tableRect.top + this.tableRect.height - containerRect.top - 1\n this.isTableOverflow = containerRect.top + containerRect.height < this.tableRect.top + this.tableRect.height\n this.modulesContainer.appendChild(this.domNode)\n css(this.domNode, { top: `${Math.min(containerRect.height - SCROLL_BAR_PANEL_HEIGHT, barPos)}px` })\n\n // 绑定鼠标滚轮事件:Shift+鼠标滚轮,滚动表格横向滚动条\n document.addEventListener('wheel', this.handleWheel.bind(this))\n }\n\n destroyScrollBar() {\n css(this.leftMask, { display: 'none' })\n this.columnCtrlPanel.removeAttribute('style')\n this.maxBarLeft = null\n this.destroy()\n }\n\n destroy() {\n if (this.domNode) {\n this.domNode.remove()\n }\n this.quill.root.removeEventListener('scroll', this.handleQuillRootScroll.bind(this))\n document.removeEventListener('wheel', this.handleWheel.bind(this))\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-selection.es.js","sources":["../../../../src/table/modules/table-selection.ts"],"sourcesContent":["import Quill from 'quill'\nimport { TableCell } from '../formats/table'\nimport { ERROR_LIMIT, LINE_POSITIONS, PRIMARY_COLOR } from '../table-config'\nimport { css, getRelativeRect } from '../utils'\n\nexport default class TableSelection {\n table: any\n quill: any\n modulesContainer: any\n parent: any\n boundary: any\n // @ts-ignore\n selectedTds: any[]\n // @ts-ignore\n dragging: boolean\n preSelectedTable: any\n oldRootScrollTop: any\n selectingHandler: any\n tdEditHandler: any\n tdResizeHandler: any\n endTd: any\n startTd: any\n editTd: any\n left: any\n bottom: any\n top: any\n right: any\n\n constructor(table, quill, dom) {\n if (!table) {\n return null\n }\n this.table = table\n this.quill = quill\n this.modulesContainer = dom\n this.parent = this.quill.root.parentNode\n this.boundary = {} // params for selected square\n this.selectedTds = [] // array for selected table-cells\n this.dragging = false\n this.preSelectedTable = null\n this.oldRootScrollTop = this.quill.root.scrollTop\n\n this.selectingHandler = this.mouseDownHandler.bind(this)\n\n this.tdEditHandler = this.setTdEditable.bind(this)\n this.tdResizeHandler = this.resizeTd.bind(this)\n\n this.helpLinesInitial()\n this.isEditorHasScrollBar()\n\n this.quill.root.parentNode.addEventListener('mousedown', this.selectingHandler, false)\n this.quill.on('text-change', this.tdResizeHandler)\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n }\n\n handleQuillRootScroll() {\n LINE_POSITIONS.forEach((direction) => {\n const selectionLine = this[direction]\n if (selectionLine) {\n selectionLine.style.marginTop = `${this.oldRootScrollTop - this.quill.root.scrollTop}px`\n }\n })\n }\n\n isEditorHasScrollBar() {\n if (this.quill.root.scrollHeight > this.quill.root.clientHeight) {\n css(this.modulesContainer, { width: 'calc(100% - 23px)' })\n }\n else {\n this.modulesContainer.removeAttribute('style')\n }\n }\n\n helpLinesInitial() {\n LINE_POSITIONS.forEach((direction) => {\n this[direction] = document.createElement('div')\n this[direction].classList.add('qlbt-selection-line')\n if (direction === 'left') {\n this[direction].classList.add('qlbt-selection-line-first')\n const ctrlPointLeft = document.createElement('div')\n this[direction].appendChild(ctrlPointLeft)\n }\n if (direction === 'bottom') {\n this[direction].classList.add('qlbt-selection-line-last')\n const ctrlPointRight = document.createElement('div')\n this[direction].appendChild(ctrlPointRight)\n }\n css(this[direction], {\n 'position': 'absolute',\n 'display': 'none',\n 'background-color': PRIMARY_COLOR,\n })\n this.modulesContainer.appendChild(this[direction])\n })\n }\n\n mouseDownHandler(e) {\n if (e.button !== 0) {\n return\n }\n const self: any = this\n const betterTableModule = this.quill.getModule('better-table')\n const tableColumnTool = betterTableModule.columnTool\n if (tableColumnTool.activeToolCell) {\n tableColumnTool.activeToolCell.classList.remove('qlbt-tool-cell-on')\n tableColumnTool.activeToolCell = null\n }\n if (e.target.closest('.quill-better-table')) {\n if (e.shiftKey) {\n this.endTd = e.target.closest('td[data-row]')\n this.drawSelection(this, true)\n // avoid select text in multiple table-cell\n if (this.startTd !== this.endTd) {\n this.quill.blur()\n }\n }\n else {\n this.startTd = e.target.closest('td[data-row]')\n this.drawSelection(this, false)\n this.dragging = true\n\n this.parent.addEventListener('mousemove', mouseMoveHandler, false)\n document.addEventListener('mouseup', mouseUpHandler, false)\n }\n }\n else if (e.target.closest('.qlbt-selection-line')) {\n this.parent.addEventListener('mousemove', mouseMoveHandler, false)\n document.addEventListener('mouseup', mouseUpHandler, false)\n }\n\n function mouseMoveHandler(event) {\n event.stopPropagation()\n\n if (event.button !== 0 || !event.target.closest('.quill-better-table')) {\n return\n }\n self.endTd = event.target.closest('td[data-row]')\n if (!self.endTd) {\n return\n }\n self.drawSelection(self, true)\n // avoid select text in multiple table-cell\n if (self.startTd !== self.endTd) {\n self.quill.blur()\n }\n }\n\n function mouseUpHandler() {\n self.parent.removeEventListener('mousemove', mouseMoveHandler, false)\n document.removeEventListener('mouseup', mouseUpHandler, false)\n self.dragging = false\n }\n }\n\n drawSelection(self, end) {\n // fix: 如果滚动条拖动,startTd的位置已经改变了,需要重置startTdRect\n self.startTdRect = getRelativeRect(self.startTd.getBoundingClientRect(), self.quill.root.parentNode)\n let endTdRect = self.startTdRect\n if (end) {\n self.endTdRect = getRelativeRect(self.endTd.getBoundingClientRect(), self.quill.root.parentNode)\n endTdRect = self.endTdRect\n }\n self.boundary = computeBoundaryFromRects(self.startTdRect, endTdRect)\n self.selectedTds = self.computeSelectedTds()\n self.repositionHelpLines()\n }\n\n setTdEditable(e) {\n if (!this.editTd) {\n return\n }\n this.parent.removeEventListener('keypress', this.tdEditHandler, false)\n const dom = this.editTd.domNode\n dom.removeEventListener('click', this.tdEditHandler, false)\n dom.classList.add('editing-select-able')\n dom.setAttribute('contenteditable', true)\n if (e.type === 'keypress') {\n if (dom.childNodes.length > 1 || dom.firstChild.innerHTML !== '<br>') {\n const blank = dom.firstChild.cloneNode()\n blank.innerHTML = '<br>'\n dom.innerHTML = ''\n dom.appendChild(blank)\n }\n dom.focus()\n }\n }\n\n resizeTd() {\n if (!this.editTd || (this.left && !this.left.offsetParent)) {\n return\n }\n if (this.selectedTds.length > 1) {\n this.refreshHelpLinesPosition()\n }\n else {\n const dom = this.editTd.domNode\n const domRect = getRelativeRect(dom.getBoundingClientRect(), this.quill.root.parentNode)\n this.boundary = computeBoundaryFromRects(domRect, domRect)\n this.repositionHelpLines()\n }\n\n // 判断编辑器是否有滚动条,调整遮罩宽度\n this.isEditorHasScrollBar()\n\n // 更新行高 更新滑块位置\n const betterTableModule = this.quill.getModule('better-table')\n const tableColumnTool = betterTableModule.columnTool\n if (tableColumnTool) {\n tableColumnTool.updateRowToolCells()\n const tableViewRect = this.table.parentNode.getBoundingClientRect()\n if (tableColumnTool.leftMask) {\n css(tableColumnTool.leftMask, { height: `${tableViewRect.height + 50}px` })\n }\n }\n\n const tableScrollBar = betterTableModule.tableScrollBar\n tableScrollBar.resetTableHeight(this.table)\n }\n\n resetTd(e) {\n const dom = e.target\n dom.classList.remove('editing-select-able')\n dom.setAttribute('contenteditable', false)\n dom.removeAttribute('contenteditable')\n }\n\n correctBoundary() {\n const tableContainer = Quill.find(this.table)\n const tableCells = tableContainer.descendants(TableCell)\n\n tableCells.forEach((tableCell) => {\n const { x, y, width, height } = getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode)\n const isCellIntersected\n = ((x + ERROR_LIMIT >= this.boundary.x && x + ERROR_LIMIT <= this.boundary.x1)\n || (x - ERROR_LIMIT + width >= this.boundary.x && x - ERROR_LIMIT + width <= this.boundary.x1))\n && ((y + ERROR_LIMIT >= this.boundary.y && y + ERROR_LIMIT <= this.boundary.y1)\n || (y - ERROR_LIMIT + height >= this.boundary.y && y - ERROR_LIMIT + height <= this.boundary.y1))\n if (isCellIntersected) {\n this.boundary = computeBoundaryFromRects(this.boundary, { x, y, width, height })\n }\n })\n }\n\n computeSelectedTds() {\n const tableContainer = Quill.find(this.table)\n const tableCells = tableContainer.descendants(TableCell)\n\n const result = tableCells.reduce((selectedCells, tableCell) => {\n const { x, y, width, height } = getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode)\n const isCellIncluded\n = x + ERROR_LIMIT >= this.boundary.x\n && x - ERROR_LIMIT + width <= this.boundary.x1\n && y + ERROR_LIMIT >= this.boundary.y\n && y - ERROR_LIMIT + height <= this.boundary.y1\n\n if (isCellIncluded) {\n selectedCells.push(tableCell)\n }\n\n return selectedCells\n }, [])\n\n if (result.length === 1 && this.editTd !== result[0]) {\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\n resetTds.forEach(td => this.resetTd({ target: td }))\n this.editTd = result[0]\n this.editTd.domNode.addEventListener('mousedown', this.tdEditHandler, false)\n this.parent.addEventListener('keypress', this.tdEditHandler, false)\n }\n\n return result\n }\n\n repositionHelpLines() {\n this.oldRootScrollTop = this.quill.root.scrollTop\n if (!this.left) {\n return\n }\n\n css(this.left, {\n 'display': 'block',\n 'left': `${this.boundary.x - 1}px`,\n 'top': `${this.boundary.y}px`,\n 'height': `${this.boundary.height + 1}px`,\n 'width': '1px',\n 'margin-top': '0px',\n })\n\n css(this.right, {\n 'display': 'block',\n 'left': `${this.boundary.x1}px`,\n 'top': `${this.boundary.y - 1}px`,\n 'height': `${this.boundary.height + 1}px`,\n 'width': '1px',\n 'margin-top': '0px',\n })\n\n css(this.top, {\n 'display': 'block',\n 'left': `${this.boundary.x - 1}px`,\n 'top': `${this.boundary.y - 1}px`,\n 'width': `${this.boundary.width + 1}px`,\n 'height': '1px',\n 'margin-top': '0px',\n })\n\n css(this.bottom, {\n 'display': 'block',\n 'left': `${this.boundary.x - 1}px`,\n 'top': `${this.boundary.y1}px`,\n 'width': `${this.boundary.width + 1}px`,\n 'height': '1px',\n 'margin-top': '0px',\n })\n }\n\n // based on selectedTds compute positions of help lines\n // It is useful when selectedTds are not changed\n refreshHelpLinesPosition() {\n const startRect = getRelativeRect(this.selectedTds[0].domNode.getBoundingClientRect(), this.quill.root.parentNode)\n const endRect = getRelativeRect(\n this.selectedTds[this.selectedTds.length - 1].domNode.getBoundingClientRect(),\n this.quill.root.parentNode,\n )\n this.boundary = computeBoundaryFromRects(startRect, endRect)\n this.repositionHelpLines()\n }\n\n destroy() {\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\n resetTds.forEach(td => this.resetTd({ target: td }))\n\n LINE_POSITIONS.forEach((direction) => {\n if (this[direction]) {\n this[direction].remove()\n this[direction] = null\n }\n })\n\n this.quill.root.parentNode.removeEventListener('mousedown', this.selectingHandler, false)\n\n delete this.editTd\n\n return null\n }\n\n setSelection(startRect, endRect) {\n this.boundary = computeBoundaryFromRects(\n getRelativeRect(startRect, this.quill.root.parentNode),\n getRelativeRect(endRect, this.quill.root.parentNode),\n )\n this.correctBoundary()\n this.selectedTds = this.computeSelectedTds()\n this.repositionHelpLines()\n }\n\n clearSelection() {\n const resetTds = this.table.querySelectorAll('td[contenteditable=true]')\n resetTds.forEach(td => this.resetTd({ target: td }))\n this.boundary = {}\n this.selectedTds = []\n LINE_POSITIONS.forEach((direction) => {\n if (this[direction]) {\n css(this[direction], {\n display: 'none',\n })\n }\n })\n }\n}\n\nfunction computeBoundaryFromRects(startRect, endRect) {\n const x = Math.min(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1)\n\n const x1 = Math.max(startRect.x, endRect.x, startRect.x + startRect.width - 1, endRect.x + endRect.width - 1)\n\n const y = Math.min(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1)\n\n const y1 = Math.max(startRect.y, endRect.y, startRect.y + startRect.height - 1, endRect.y + endRect.height - 1)\n\n const width = x1 - x\n const height = y1 - y\n\n return { x, x1, y, y1, width, height }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-config.es.js","sources":["../../../src/table/table-config.ts"],"sourcesContent":["export const TABLE_CELL_LINE_CLASS = 'qlrte__better-table-cell-line'\nexport const ROW_TOOL_CLASS = 'qlrte__row-tool'\nexport const ROW_TOOL_CELL_CLASS = 'qlrte__row-tool-cell'\nexport const ROW_TOOL_CELL_HOLDER_CLASS = 'qlrte__row-tool-cell-holder'\nexport const COL_TOOL_CLASS = 'qlrte__col-tool'\nexport const COL_TOOL_CELL_CLASS = 'qlrte__col-tool-cell'\nexport const COL_TOOL_CELL_HOLDER_CLASS = 'qlrte__col-tool-cell-holder'\nexport const SELECT_LINE_CLASS = 'qlrte__selection-line'\nexport const OPERATE_MENU_CLASS = 'qlrte__op-menu'\nexport const OPERATE_MENU_ITEM_CLASS = 'qlrte__op-menu-item'\nexport const OPERATE_MENU_ICON_CLASS = 'qlrte__op-menu-icon'\nexport const OPERATE_MENU_ICON_PREFIX_CLASS = 'qlrte__op-menu-icon-prefix'\nexport const OPERATE_MENU_TEXT_CLASS = 'qlrte__op-menu-text'\nexport const OPERATE_MENU_DIVIDING_CLASS = 'qlrte__op-menu-dividing'\nexport const OPERATE_MENU_SUBTITLE_CLASS = 'qlrte__op-menu-subtitle'\nexport const OPERATE_MENU_COLORPICKER_CLASS = 'qlrte__op-menu-color-picker'\nexport const OPERATE_MENU_COLORPICKER_ITEM_CLASS\n = 'qlrte__op-menu-color-picker-item'\nexport const COL_ATTRIBUTES = ['width']\nexport const COL_DEFAULT = {\n width: 100,\n}\nexport const CELL_IDENTITY_KEYS = ['row', 'cell']\nexport const CELL_ATTRIBUTES = ['rowspan', 'colspan', 'cell-bg', 'list']\nexport const CELL_DEFAULT = {\n rowspan: 1,\n colspan: 1,\n}\nexport const ERROR_LIMIT = 5\n\nexport const SCROLL_BAR_PANEL_HEIGHT = 32\nexport const ROW_TOOL_WIDTH = 16\nexport const COL_TOOL_HEIGHT = 16\nexport const CELL_MIN_WIDTH = 50\nexport const CELL_MIN_HEIGHT = 29\nexport const PRIMARY_COLOR = ['#5170ff', 'var(--brand-1, #5170ff)']\n\nexport const MENU_ITEM_HEIGHT = 40\nexport const MENU_MIN_HEIGHT = 150\nexport const MENU_WIDTH = 205\n\nexport const LINE_POSITIONS = ['left', 'right', 'top', 'bottom']\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,WAAW,MAAM;AAChE,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;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../../src/table/utils/index.ts"],"sourcesContent":["export function css(domNode, rules) {\n if (typeof rules === 'object') {\n for (const prop in rules) {\n if (prop) {\n if (Array.isArray(rules[prop])) {\n // 兼容IE11浏览器\n rules[prop].forEach((val) => {\n domNode.style[prop] = val\n })\n }\n else {\n domNode.style[prop] = rules[prop]\n }\n }\n }\n }\n}\n\n/**\n * getRelativeRect\n * @param targetRect rect data for target element {Object}\n * @param container container element {Element}\n * @return an object with rect data {Object}\n */\nexport function getRelativeRect(targetRect, container) {\n const containerRect = container.getBoundingClientRect()\n\n return { // ie浏览器中getBoundingClientRect输出为left、right、top、bottom,与chrome的x、y不同\n x: (targetRect.x || targetRect.left) - (containerRect.x || containerRect.left) - container.scrollLeft,\n y: (targetRect.y || targetRect.top) - (containerRect.y || containerRect.top) - container.scrollTop,\n x1: (targetRect.x || targetRect.left) - (containerRect.x || containerRect.left) - container.scrollLeft + targetRect.width,\n y1: (targetRect.y || targetRect.top) - (containerRect.y || containerRect.top) - container.scrollTop + targetRect.height,\n width: targetRect.width,\n height: targetRect.height,\n }\n}\n\nexport const elementRemove = function (node) {\n node && node.parentNode && node.parentNode.removeChild(node)\n}\n\nexport const arrayFrom = function (arrayLike, mapFn?, thisArg?) {\n if (!arrayLike) {\n throw new TypeError(\n 'Array.from requires an array-like object - not null or undefined',\n )\n }\n\n const length = arrayLike.length\n const resArray = []\n\n for (let i = 0; i < length; i++) {\n if (typeof mapFn === 'function') {\n resArray.push(mapFn.call(thisArg, arrayLike[i]))\n }\n else {\n resArray.push(arrayLike[i])\n }\n }\n\n return resArray\n}\n"],"names":[],"mappings":"AAAgB,SAAA,IAAI,SAAS,OAAO;AAC9B,MAAA,OAAO,UAAU,UAAU;AAC7B,eAAW,QAAQ,OAAO;AACxB,UAAI,MAAM;AACR,YAAI,MAAM,QAAQ,MAAM,IAAI,CAAC,GAAG;AAE9B,gBAAM,IAAI,EAAE,QAAQ,CAAC,QAAQ;AACnB,oBAAA,MAAM,IAAI,IAAI;AAAA,UAAA,CACvB;AAAA,QAAA,OAEE;AACH,kBAAQ,MAAM,IAAI,IAAI,MAAM,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAQgB,SAAA,gBAAgB,YAAY,WAAW;AAC/C,QAAA,gBAAgB,UAAU;AAEzB,SAAA;AAAA;AAAA,IACL,IAAI,WAAW,KAAK,WAAW,SAAS,cAAc,KAAK,cAAc,QAAQ,UAAU;AAAA,IAC3F,IAAI,WAAW,KAAK,WAAW,QAAQ,cAAc,KAAK,cAAc,OAAO,UAAU;AAAA,IACzF,KAAK,WAAW,KAAK,WAAW,SAAS,cAAc,KAAK,cAAc,QAAQ,UAAU,aAAa,WAAW;AAAA,IACpH,KAAK,WAAW,KAAK,WAAW,QAAQ,cAAc,KAAK,cAAc,OAAO,UAAU,YAAY,WAAW;AAAA,IACjH,OAAO,WAAW;AAAA,IAClB,QAAQ,WAAW;AAAA,EAAA;AAEvB;AAEa,MAAA,gBAAgB,SAAU,MAAM;AAC3C,UAAQ,KAAK,cAAc,KAAK,WAAW,YAAY,IAAI;AAC7D;AAEO,MAAM,YAAY,SAAU,WAAW,OAAQ,SAAU;AAC9D,MAAI,CAAC,WAAW;AACd,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,SAAS,UAAU;AACzB,QAAM,WAAW,CAAA;AAEjB,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,QAAA,OAAO,UAAU,YAAY;AAC/B,eAAS,KAAK,MAAM,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC;AAAA,IAAA,OAE5C;AACM,eAAA,KAAK,UAAU,CAAC,CAAC;AAAA,IAC5B;AAAA,EACF;AAEO,SAAA;AACT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-matchers.es.js","sources":["../../../../src/table/utils/node-matchers.ts"],"sourcesContent":["import Quill from 'quill'\nimport { omit, splitWithBreak } from '../../config/editor.utils'\nimport { cellId as tableCellId, rowId as tableRowId, TableViewWrapper } from '../formats/table'\nimport { CELL_MIN_WIDTH } from '../table-config'\n\nconst Delta = Quill.imports.delta\nconst InlineBlot = Quill.imports.parchment.InlineBlot\n\n// rebuild delta\nexport function matchTableCell(node, delta) {\n // fix: 移除旧数据中的pt高度,避免由于高度平均分导致无法插入行\n if (node.style.height.indexOf('pt')) {\n node.removeAttribute('style')\n }\n\n const row = node.parentNode\n let rowId = row.dataset.row\n if (!rowId) {\n rowId = row.dataset.row = tableRowId()\n }\n let cellId = node.dataset.cell\n // fix: dataset.cell in td will be 'undefined' when insert row/column\n if (!cellId || cellId === 'undefined') {\n cellId = tableCellId()\n }\n const colspan = node.getAttribute('colspan') || 1\n const rowspan = node.getAttribute('rowspan') || 1\n\n // fix: empty table cells copied from other place will be removed unexpectedly\n if (delta.length() === 0) {\n delta = new Delta().insert('\\n', {\n 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan },\n })\n return delta\n }\n\n delta = delta.reduce((newDelta, op) => {\n if (op.insert && typeof op.insert === 'string') {\n const lines = splitWithBreak(op.insert)\n\n lines.forEach((text) => {\n if (text === '\\n') {\n let attributes = {}\n const cellAttributes = {\n row: rowId,\n cell: cellId,\n rowspan,\n colspan,\n }\n if (op.attributes.table) {\n delete op.attributes.table\n }\n switch (true) {\n case !!op.attributes.header:\n attributes = Object.assign(op.attributes.header, cellAttributes)\n break\n case !!op.attributes.list:\n attributes = { list: Object.assign(op.attributes.list, cellAttributes) }\n break\n default:\n attributes = { 'table-cell-line': cellAttributes }\n }\n // fix: when td has background-color, quill can't set it to table-cell bolt\n if (op.attributes.background && attributes['table-cell-line']) {\n attributes['table-cell-line'].tdBgColor = op.attributes.background\n }\n newDelta.insert('\\n', Object.assign(op.attributes, attributes))\n }\n else {\n newDelta.insert(text, omit(op.attributes, ['table', 'table-cell-line', 'header', 'list']))\n }\n })\n }\n else {\n newDelta.insert(op.insert, op.attributes)\n }\n\n return newDelta\n }, new Delta())\n\n // fix: table cell height becomes larger(because insert unnecessary <div> on both sides of cell) when init table ngModel\n const regexp = /^[\\n]+$/\n const firstDelta = delta.ops[0]\n if (delta.ops.length >= 3) {\n const lastDelta = delta.ops[delta.ops.length - 1]\n if (regexp.test(firstDelta.insert) && firstDelta.attributes['table-cell-line']) {\n delta.ops.splice(0, 1)\n }\n if (regexp.test(lastDelta.insert) && lastDelta.attributes['table-cell-line']) {\n delta.ops[delta.ops.length - 1].insert = '\\n'\n }\n }\n else if (delta.ops.length === 1 && regexp.test(firstDelta.insert) && firstDelta.attributes['table-cell-line']) {\n delta.ops[0].insert = '\\n'\n }\n\n return delta\n}\n\n// replace th tag with td tag\nexport function matchTableHeader(node, delta, _scroll) {\n const row = node.parentNode\n const cells = Array.from(row.querySelectorAll('th'))\n let rowId = row.dataset.row\n if (!rowId) {\n rowId = row.dataset.row = tableRowId()\n }\n const cellId = cells.indexOf(node) + 1\n const colspan = node.getAttribute('colspan') || false\n const rowspan = node.getAttribute('rowspan') || false\n\n // fix: empty table cells copied from other place will be removed unexpectedly\n if (delta.length() === 0) {\n delta = new Delta().insert('\\n', {\n 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan },\n })\n return delta\n }\n\n delta = delta.reduce((newDelta, op) => {\n if (op.insert && typeof op.insert === 'string') {\n const lines = splitWithBreak(op.insert)\n\n // fix: no '\\n' in the end of op.insert, push a '\\n' to lines\n if (lines[lines.length - 1] !== '\\n') {\n lines.push('\\n')\n }\n\n lines.forEach((text) => {\n text === '\\n'\n ? newDelta.insert('\\n', { 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan } })\n : newDelta.insert(text, op.attributes)\n })\n }\n else {\n newDelta.insert(op.insert, op.attributes)\n }\n\n return newDelta\n }, new Delta())\n\n delta = delta.reduce((newDelta, op) => {\n if (op.insert && typeof op.insert === 'string' && op.insert.startsWith('\\n')) {\n newDelta.insert(op.insert, { 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan } })\n }\n else {\n newDelta.insert(op.insert, { ...omit(op.attributes, ['table', 'table-cell-line']) })\n }\n\n return newDelta\n }, new Delta())\n\n return delta\n}\n\n// supplement colgroup and col\nexport function matchTable(node, delta, scroll) {\n const isWordTable = node.children.length === 1\n if (!(node instanceof Element)) {\n return\n }\n const getMaxColNumber = (tds) => {\n if (isWordTable) {\n return tds.length\n }\n let colsNumber = 0\n tds.forEach((td) => {\n colsNumber += td.colSpan\n })\n return Math.max(tds.length, colsNumber)\n }\n\n const checkMinWidth = (width) => {\n if (Number.isNaN(width)) {\n // 无指定值时默认为auto,待渲染后修正\n return { 'table-col': { width: 'auto' } }\n }\n else if (width < CELL_MIN_WIDTH) {\n // 当列宽度小于默认宽度时取默认宽度\n return { 'table-col': true }\n }\n else {\n // 大于默认值取实际指定值\n return { 'table-col': { width } }\n }\n }\n\n // fix: a table with an empty tr is invalid, should not be displayed\n const rows = node.querySelectorAll('tr')\n const topRow = rows[0]\n const onlyEmptyTr = rows.length === 1 && !topRow.querySelector('td')\n\n // fix: empty table will return empty delta\n if (!topRow || onlyEmptyTr) {\n return new Delta().insert('\\n')\n }\n\n const colsNumber = node.querySelectorAll('col').length\n let maxCellsNumber = 0\n let maxCells\n // 遍历行获取最大列数和该行的所有单元格\n Array.prototype.slice.call(rows).forEach((row) => {\n const tds = row.querySelectorAll('td')\n maxCellsNumber = Math.max(getMaxColNumber(tds), maxCellsNumber)\n maxCells = tds\n })\n\n // 列的累计器\n let colCount = 0\n delta = delta.reduce((newDelta, op) => {\n // 当colCount与colsNumber相等时,则补充相差列\n if (colCount === colsNumber) {\n const fillNumber = maxCellsNumber - colCount\n const outset = colCount\n // index为差值列索引,通过遍历差值得到mexCells行中对应索引的单元格宽度\n for (let i = 0; i < fillNumber; i++) {\n const index = outset + i\n const colWidth = Number.parseInt(\n index < maxCells.length\n ? maxCells[index].width\n // maxCells[index].style && maxCells[index].style.width ? maxCells[index].style.width :\n : maxCells[maxCells.length - 1].width,\n 10,\n )\n newDelta.insert('\\n', checkMinWidth(colWidth))\n colCount++\n }\n }\n const attr = op.attributes || {}\n switch (true) {\n case !!attr['table-col']:\n // 只有当前列数小于实际总列数才操作,所以不存在大于的情况\n if (colCount < maxCellsNumber) {\n // 当table-col宽度一致时会合并为单一insert,insert长度大于1,截取符合实际总列数的长度来插入\n const insert = op.insert.slice(0, maxCellsNumber)\n const colWidth = Number.parseInt(attr['table-col'].width, 10)\n newDelta.insert(insert, checkMinWidth(colWidth))\n colCount += insert.length\n }\n break\n case !!attr.notFilled:\n { // 将标记的空tr填充对应列数的单元格\n const rowId = tableRowId()\n for (let x = 0; x < maxCellsNumber; x++) {\n newDelta.insert('\\n', { 'table-cell-line': { row: rowId, cell: tableCellId(), rowspan: 1, colspan: 1 } })\n }\n break }\n default:\n newDelta.insert(op.insert, op.attributes)\n }\n return newDelta\n }, new Delta())\n\n const tableItem = node.closest('.quill-better-table-wrapper') || node\n const prevBlot = tableItem.previousElementSibling && scroll.query(tableItem.previousElementSibling)\n const nextBlot = tableItem.nextElementSibling && scroll.query(tableItem.nextElementSibling)\n // fix: prevent two adjacent tables from sticking together\n if (!nextBlot || nextBlot.prototype instanceof InlineBlot) {\n delta = delta.insert('\\n')\n }\n // fix: When there is no line break in front of the table, pressing the Enter key will cause a problem with the table.\n if (!prevBlot || prevBlot.prototype instanceof InlineBlot) {\n const newLine = new Delta().insert('\\n')\n delta = newLine.concat(delta)\n }\n if (nextBlot === TableViewWrapper) {\n delta = delta.insert('\\n')\n }\n\n return delta\n}\n\nexport function matchTableRow(_node, delta) {\n // fix: 处理空<tr>标签被忽略的情况\n if (delta.ops.length === 1 && !delta.ops[0].attributes) {\n delta = new Delta().insert('\\n', { notFilled: true })\n }\n return delta\n}\n\n// match h tags, distinguish between headers in the table and headers outside the table\nexport function matchHeader(node, delta) {\n const newDelta = new Delta()\n const fontSize = node.style.fontSize\n delta.forEach((op) => {\n newDelta.insert(\n op.insert,\n Object.assign(op.attributes, {\n size: fontSize,\n }),\n )\n })\n return newDelta\n}\n\nexport function matchList(node, delta) {\n const value = node.tagName === 'UL' ? 'bullet' : 'ordered'\n delta.forEach((op) => {\n if (typeof op.attributes.list === 'string') {\n delete op.attributes.list\n }\n else if (typeof op.attributes.list === 'object' && !op.attributes.list.value) {\n op.attributes.list.value = value\n }\n })\n return delta\n}\n\nexport function matchInline(node, delta, scroll) {\n const quill = Quill.find(scroll.domNode.parentNode)\n const currentRange = quill.getSelection()\n const formats = currentRange && quill.getFormat(currentRange)\n if (\n formats\n && formats['table-cell-line'] // 当前光标节点在表格内,否则不操作delta\n && node.nextElementSibling\n ) {\n // 插入节点是否存在下一个兄弟元素\n const match = scroll.query(node)\n const nodeHtml = node.nextElementSibling.innerHTML\n const nodeText = node.nextElementSibling.textContent\n if (\n (match && match.prototype instanceof InlineBlot) // 判断当前节点是否为内联\n || (node.tagName === 'P' && nodeHtml !== nodeText)\n ) {\n // 非内联时如果为P且下一个不为text节点\n delta.forEach((op) => {\n op.insert += '\\n'\n })\n }\n }\n return delta\n}\n\n// 匹配 word 自带的 v:shape 标签中的图片 v:imageData\nexport function matchWordShapeImage(node, delta) {\n if (node) {\n const imageUrl = node.attributes.src?.nodeValue\n delta = new Delta().insert({ image: imageUrl })\n }\n return delta\n}\n\nexport function matchMentionLink(node, delta, scroll) {\n const name = node.dataset.mentionId\n if (name) {\n const quill = Quill.find(scroll.domNode.parentNode)\n const mention = quill.getModule('mention')\n if (mention) {\n mention.options.search(name).then((res) => {\n const [item] = res\n if (item) {\n mention.options.select(item)\n }\n })\n }\n }\n return delta\n}\n"],"names":["rowId","tableRowId","cellId","tableCellId","colsNumber"],"mappings":";;;;AAKA,MAAM,QAAQ,MAAM,QAAQ;AAC5B,MAAM,aAAa,MAAM,QAAQ,UAAU;AAG3B,SAAA,eAAe,MAAM,OAAO;AAE1C,MAAI,KAAK,MAAM,OAAO,QAAQ,IAAI,GAAG;AACnC,SAAK,gBAAgB,OAAO;AAAA,EAC9B;AAEA,QAAM,MAAM,KAAK;AACb,MAAAA,UAAQ,IAAI,QAAQ;AACxB,MAAI,CAACA,SAAO;AACFA,cAAA,IAAI,QAAQ,MAAMC,MAAW;AAAA,EACvC;AACI,MAAAC,WAAS,KAAK,QAAQ;AAEtB,MAAA,CAACA,YAAUA,aAAW,aAAa;AACrCA,eAASC,OAAY;AAAA,EACvB;AACA,QAAM,UAAU,KAAK,aAAa,SAAS,KAAK;AAChD,QAAM,UAAU,KAAK,aAAa,SAAS,KAAK;AAG5C,MAAA,MAAM,OAAO,MAAM,GAAG;AACxB,YAAQ,IAAI,QAAQ,OAAO,MAAM;AAAA,MAC/B,mBAAmB,EAAE,KAAKH,SAAO,MAAME,UAAQ,SAAS,QAAQ;AAAA,IAAA,CACjE;AACM,WAAA;AAAA,EACT;AAEA,UAAQ,MAAM,OAAO,CAAC,UAAU,OAAO;AACrC,QAAI,GAAG,UAAU,OAAO,GAAG,WAAW,UAAU;AACxC,YAAA,QAAQ,eAAe,GAAG,MAAM;AAEhC,YAAA,QAAQ,CAAC,SAAS;AACtB,YAAI,SAAS,MAAM;AACjB,cAAI,aAAa,CAAA;AACjB,gBAAM,iBAAiB;AAAA,YACrB,KAAKF;AAAAA,YACL,MAAME;AAAAA,YACN;AAAA,YACA;AAAA,UAAA;AAEE,cAAA,GAAG,WAAW,OAAO;AACvB,mBAAO,GAAG,WAAW;AAAA,UACvB;AACA,kBAAQ,MAAM;AAAA,YACZ,KAAK,CAAC,CAAC,GAAG,WAAW;AACnB,2BAAa,OAAO,OAAO,GAAG,WAAW,QAAQ,cAAc;AAC/D;AAAA,YACF,KAAK,CAAC,CAAC,GAAG,WAAW;AACN,2BAAA,EAAE,MAAM,OAAO,OAAO,GAAG,WAAW,MAAM,cAAc;AACrE;AAAA,YACF;AACe,2BAAA,EAAE,mBAAmB;UACtC;AAEA,cAAI,GAAG,WAAW,cAAc,WAAW,iBAAiB,GAAG;AAC7D,uBAAW,iBAAiB,EAAE,YAAY,GAAG,WAAW;AAAA,UAC1D;AACA,mBAAS,OAAO,MAAM,OAAO,OAAO,GAAG,YAAY,UAAU,CAAC;AAAA,QAAA,OAE3D;AACM,mBAAA,OAAO,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,mBAAmB,UAAU,MAAM,CAAC,CAAC;AAAA,QAC3F;AAAA,MAAA,CACD;AAAA,IAAA,OAEE;AACH,eAAS,OAAO,GAAG,QAAQ,GAAG,UAAU;AAAA,IAC1C;AAEO,WAAA;AAAA,EAAA,GACN,IAAI,MAAA,CAAO;AAGd,QAAM,SAAS;AACT,QAAA,aAAa,MAAM,IAAI,CAAC;AAC1B,MAAA,MAAM,IAAI,UAAU,GAAG;AACzB,UAAM,YAAY,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC;AAC5C,QAAA,OAAO,KAAK,WAAW,MAAM,KAAK,WAAW,WAAW,iBAAiB,GAAG;AACxE,YAAA,IAAI,OAAO,GAAG,CAAC;AAAA,IACvB;AACI,QAAA,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,WAAW,iBAAiB,GAAG;AAC5E,YAAM,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE,SAAS;AAAA,IAC3C;AAAA,EAEO,WAAA,MAAM,IAAI,WAAW,KAAK,OAAO,KAAK,WAAW,MAAM,KAAK,WAAW,WAAW,iBAAiB,GAAG;AACvG,UAAA,IAAI,CAAC,EAAE,SAAS;AAAA,EACxB;AAEO,SAAA;AACT;AAGgB,SAAA,iBAAiB,MAAM,OAAO,SAAS;AACrD,QAAM,MAAM,KAAK;AACjB,QAAM,QAAQ,MAAM,KAAK,IAAI,iBAAiB,IAAI,CAAC;AAC/C,MAAAF,UAAQ,IAAI,QAAQ;AACxB,MAAI,CAACA,SAAO;AACFA,cAAA,IAAI,QAAQ,MAAMC,MAAW;AAAA,EACvC;AACA,QAAMC,UAAS,MAAM,QAAQ,IAAI,IAAI;AACrC,QAAM,UAAU,KAAK,aAAa,SAAS,KAAK;AAChD,QAAM,UAAU,KAAK,aAAa,SAAS,KAAK;AAG5C,MAAA,MAAM,OAAO,MAAM,GAAG;AACxB,YAAQ,IAAI,QAAQ,OAAO,MAAM;AAAA,MAC/B,mBAAmB,EAAE,KAAKF,SAAO,MAAME,SAAQ,SAAS,QAAQ;AAAA,IAAA,CACjE;AACM,WAAA;AAAA,EACT;AAEA,UAAQ,MAAM,OAAO,CAAC,UAAU,OAAO;AACrC,QAAI,GAAG,UAAU,OAAO,GAAG,WAAW,UAAU;AACxC,YAAA,QAAQ,eAAe,GAAG,MAAM;AAGtC,UAAI,MAAM,MAAM,SAAS,CAAC,MAAM,MAAM;AACpC,cAAM,KAAK,IAAI;AAAA,MACjB;AAEM,YAAA,QAAQ,CAAC,SAAS;AACb,iBAAA,OACL,SAAS,OAAO,MAAM,EAAE,mBAAmB,EAAE,KAAKF,SAAO,MAAME,SAAQ,SAAS,WAAW,IAC3F,SAAS,OAAO,MAAM,GAAG,UAAU;AAAA,MAAA,CACxC;AAAA,IAAA,OAEE;AACH,eAAS,OAAO,GAAG,QAAQ,GAAG,UAAU;AAAA,IAC1C;AAEO,WAAA;AAAA,EAAA,GACN,IAAI,MAAA,CAAO;AAEd,UAAQ,MAAM,OAAO,CAAC,UAAU,OAAO;AACjC,QAAA,GAAG,UAAU,OAAO,GAAG,WAAW,YAAY,GAAG,OAAO,WAAW,IAAI,GAAG;AAC5E,eAAS,OAAO,GAAG,QAAQ,EAAE,mBAAmB,EAAE,KAAKF,SAAO,MAAME,SAAQ,SAAS,QAAA,EAAW,CAAA;AAAA,IAAA,OAE7F;AACH,eAAS,OAAO,GAAG,QAAQ,EAAE,GAAG,KAAK,GAAG,YAAY,CAAC,SAAS,iBAAiB,CAAC,EAAG,CAAA;AAAA,IACrF;AAEO,WAAA;AAAA,EAAA,GACN,IAAI,MAAA,CAAO;AAEP,SAAA;AACT;AAGgB,SAAA,WAAW,MAAM,OAAO,QAAQ;AACxC,QAAA,cAAc,KAAK,SAAS,WAAW;AACzC,MAAA,EAAE,gBAAgB,UAAU;AAC9B;AAAA,EACF;AACM,QAAA,kBAAkB,CAAC,QAAQ;AAC/B,QAAI,aAAa;AACf,aAAO,IAAI;AAAA,IACb;AACA,QAAIE,cAAa;AACb,QAAA,QAAQ,CAAC,OAAO;AAClBA,qBAAc,GAAG;AAAA,IAAA,CAClB;AACD,WAAO,KAAK,IAAI,IAAI,QAAQA,WAAU;AAAA,EAAA;AAGlC,QAAA,gBAAgB,CAAC,UAAU;AAC3B,QAAA,OAAO,MAAM,KAAK,GAAG;AAEvB,aAAO,EAAE,aAAa,EAAE,OAAO,OAAS,EAAA;AAAA,IAAA,WAEjC,QAAQ,gBAAgB;AAExB,aAAA,EAAE,aAAa;IAAK,OAExB;AAEH,aAAO,EAAE,aAAa,EAAE,MAAA;IAC1B;AAAA,EAAA;AAII,QAAA,OAAO,KAAK,iBAAiB,IAAI;AACjC,QAAA,SAAS,KAAK,CAAC;AACrB,QAAM,cAAc,KAAK,WAAW,KAAK,CAAC,OAAO,cAAc,IAAI;AAG/D,MAAA,CAAC,UAAU,aAAa;AAC1B,WAAO,IAAI,MAAA,EAAQ,OAAO,IAAI;AAAA,EAChC;AAEA,QAAM,aAAa,KAAK,iBAAiB,KAAK,EAAE;AAChD,MAAI,iBAAiB;AACjB,MAAA;AAEJ,QAAM,UAAU,MAAM,KAAK,IAAI,EAAE,QAAQ,CAAC,QAAQ;AAC1C,UAAA,MAAM,IAAI,iBAAiB,IAAI;AACrC,qBAAiB,KAAK,IAAI,gBAAgB,GAAG,GAAG,cAAc;AACnD,eAAA;AAAA,EAAA,CACZ;AAGD,MAAI,WAAW;AACf,UAAQ,MAAM,OAAO,CAAC,UAAU,OAAO;AAErC,QAAI,aAAa,YAAY;AAC3B,YAAM,aAAa,iBAAiB;AACpC,YAAM,SAAS;AAEf,eAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,cAAM,QAAQ,SAAS;AACvB,cAAM,WAAW,OAAO;AAAA,UACtB,QAAQ,SAAS,SACb,SAAS,KAAK,EAAE,QAEhB,SAAS,SAAS,SAAS,CAAC,EAAE;AAAA,UAClC;AAAA,QAAA;AAEF,iBAAS,OAAO,MAAM,cAAc,QAAQ,CAAC;AAC7C;AAAA,MACF;AAAA,IACF;AACM,UAAA,OAAO,GAAG,cAAc;AAC9B,YAAQ,MAAM;AAAA,MACZ,KAAK,CAAC,CAAC,KAAK,WAAW;AAErB,YAAI,WAAW,gBAAgB;AAE7B,gBAAM,SAAS,GAAG,OAAO,MAAM,GAAG,cAAc;AAChD,gBAAM,WAAW,OAAO,SAAS,KAAK,WAAW,EAAE,OAAO,EAAE;AAC5D,mBAAS,OAAO,QAAQ,cAAc,QAAQ,CAAC;AAC/C,sBAAY,OAAO;AAAA,QACrB;AACA;AAAA,MACF,KAAK,CAAC,CAAC,KAAK,WACZ;AACE,cAAMJ,UAAQC;AACd,iBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,mBAAS,OAAO,MAAM,EAAE,mBAAmB,EAAE,KAAKD,SAAO,MAAMG,OAAA,GAAe,SAAS,GAAG,SAAS,KAAK;AAAA,QAC1G;AACA;AAAA,MAAM;AAAA,MACR;AACE,iBAAS,OAAO,GAAG,QAAQ,GAAG,UAAU;AAAA,IAC5C;AACO,WAAA;AAAA,EAAA,GACN,IAAI,MAAA,CAAO;AAEd,QAAM,YAAY,KAAK,QAAQ,6BAA6B,KAAK;AACjE,QAAM,WAAW,UAAU,0BAA0B,OAAO,MAAM,UAAU,sBAAsB;AAClG,QAAM,WAAW,UAAU,sBAAsB,OAAO,MAAM,UAAU,kBAAkB;AAE1F,MAAI,CAAC,YAAY,SAAS,qBAAqB,YAAY;AACjD,YAAA,MAAM,OAAO,IAAI;AAAA,EAC3B;AAEA,MAAI,CAAC,YAAY,SAAS,qBAAqB,YAAY;AACzD,UAAM,UAAU,IAAI,MAAM,EAAE,OAAO,IAAI;AAC/B,YAAA,QAAQ,OAAO,KAAK;AAAA,EAC9B;AACA,MAAI,aAAa,kBAAkB;AACzB,YAAA,MAAM,OAAO,IAAI;AAAA,EAC3B;AAEO,SAAA;AACT;AAEgB,SAAA,cAAc,OAAO,OAAO;AAEtC,MAAA,MAAM,IAAI,WAAW,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,YAAY;AAC9C,YAAA,IAAI,QAAQ,OAAO,MAAM,EAAE,WAAW,MAAM;AAAA,EACtD;AACO,SAAA;AACT;AAGgB,SAAA,YAAY,MAAM,OAAO;AACjC,QAAA,WAAW,IAAI;AACf,QAAA,WAAW,KAAK,MAAM;AACtB,QAAA,QAAQ,CAAC,OAAO;AACX,aAAA;AAAA,MACP,GAAG;AAAA,MACH,OAAO,OAAO,GAAG,YAAY;AAAA,QAC3B,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EACH,CACD;AACM,SAAA;AACT;AAEgB,SAAA,UAAU,MAAM,OAAO;AACrC,QAAM,QAAQ,KAAK,YAAY,OAAO,WAAW;AAC3C,QAAA,QAAQ,CAAC,OAAO;AACpB,QAAI,OAAO,GAAG,WAAW,SAAS,UAAU;AAC1C,aAAO,GAAG,WAAW;AAAA,IAAA,WAEd,OAAO,GAAG,WAAW,SAAS,YAAY,CAAC,GAAG,WAAW,KAAK,OAAO;AACzE,SAAA,WAAW,KAAK,QAAQ;AAAA,IAC7B;AAAA,EAAA,CACD;AACM,SAAA;AACT;AAEgB,SAAA,YAAY,MAAM,OAAO,QAAQ;AAC/C,QAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ,UAAU;AAC5C,QAAA,eAAe,MAAM;AAC3B,QAAM,UAAU,gBAAgB,MAAM,UAAU,YAAY;AAC5D,MACE,WACG,QAAQ,iBAAiB,KACzB,KAAK,oBACR;AAEM,UAAA,QAAQ,OAAO,MAAM,IAAI;AACzB,UAAA,WAAW,KAAK,mBAAmB;AACnC,UAAA,WAAW,KAAK,mBAAmB;AAEtC,QAAA,SAAS,MAAM,qBAAqB,cACjC,KAAK,YAAY,OAAO,aAAa,UACzC;AAEM,YAAA,QAAQ,CAAC,OAAO;AACpB,WAAG,UAAU;AAAA,MAAA,CACd;AAAA,IACH;AAAA,EACF;AACO,SAAA;AACT;AAGgB,SAAA,oBAAoB,MAAM,OAAO;;AAC/C,MAAI,MAAM;AACF,UAAA,YAAW,UAAK,WAAW,QAAhB,mBAAqB;AACtC,YAAQ,IAAI,QAAQ,OAAO,EAAE,OAAO,UAAU;AAAA,EAChD;AACO,SAAA;AACT;AAEgB,SAAA,iBAAiB,MAAM,OAAO,QAAQ;AAC9C,QAAA,OAAO,KAAK,QAAQ;AAC1B,MAAI,MAAM;AACR,UAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ,UAAU;AAC5C,UAAA,UAAU,MAAM,UAAU,SAAS;AACzC,QAAI,SAAS;AACX,cAAQ,QAAQ,OAAO,IAAI,EAAE,KAAK,CAAC,QAAQ;AACnC,cAAA,CAAC,IAAI,IAAI;AACf,YAAI,MAAM;AACA,kBAAA,QAAQ,OAAO,IAAI;AAAA,QAC7B;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF;AACO,SAAA;AACT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"better-picker.es.js","sources":["../../../src/toolbar/better-picker.ts"],"sourcesContent":["import Quill from 'quill'\nimport { isNullOrUndefined } from '../config/editor.utils'\n\nconst SnowTheme = Quill.imports['themes/snow']\n\nlet optionsCounter = 0\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(\n attribute,\n element.getAttribute(attribute) !== 'true',\n )\n}\n\nclass Picker {\n container: any\n label: any\n options: any\n select: any\n constructor(select) {\n this.select = select\n this.container = document.createElement('span')\n this.buildPicker()\n this.select.style.display = 'none'\n this.select.parentNode.insertBefore(this.container, this.select)\n\n this.label.addEventListener('mousedown', (e) => {\n this.togglePicker()\n e.preventDefault()\n })\n this.label.addEventListener('keydown', (event) => {\n switch (event.key) {\n case 'Enter':\n this.togglePicker()\n break\n case 'Escape':\n this.escape()\n event.preventDefault()\n break\n default:\n }\n })\n this.select.addEventListener('change', this.update.bind(this))\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded')\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded')\n toggleAriaAttribute(this.options, 'aria-hidden')\n }\n\n buildItem(option) {\n const item = document.createElement('span')\n item.tabIndex = 0\n item.setAttribute('role', 'button')\n item.classList.add('ql-picker-item')\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'))\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent)\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true)\n })\n item.addEventListener('keydown', (event) => {\n switch (event.key) {\n case 'Enter':\n this.selectItem(item, true)\n event.preventDefault()\n break\n case 'Escape':\n this.escape()\n event.preventDefault()\n break\n default:\n }\n })\n\n return item\n }\n\n buildLabel() {\n const label = document.createElement('span')\n label.classList.add('ql-picker-label')\n label.innerHTML = `\n <svg viewbox=\"0 0 18 18\">\n <polygon class=\"ql-stroke\" points=\"7 11 9 13 11 11 7 11\"></polygon>\n <polygon class=\"ql-stroke\" points=\"7 7 9 5 11 7 7 7\"></polygon>\n </svg>\n `\n label.tabIndex = 0\n label.setAttribute('role', 'button')\n label.setAttribute('aria-expanded', 'false')\n this.container.appendChild(label)\n return label\n }\n\n buildOptions() {\n const options = document.createElement('span')\n options.classList.add('ql-picker-options')\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true')\n options.tabIndex = -1\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`\n optionsCounter += 1\n this.label.setAttribute('aria-controls', options.id)\n\n this.options = options\n\n Array.from(this.select.options).forEach((option: any) => {\n const item = this.buildItem(option)\n options.appendChild(item)\n if (option.selected === true) {\n this.selectItem(item)\n }\n })\n this.container.appendChild(options)\n }\n\n buildPicker() {\n Array.from(this.select.attributes).forEach((item: any) => {\n this.container.setAttribute(item.name, item.value)\n })\n this.container.classList.add('ql-picker')\n this.label = this.buildLabel()\n this.buildOptions()\n }\n\n escape() {\n // Close menu and return focus to trigger label\n this.close()\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1)\n }\n\n close() {\n this.container.classList.remove('ql-expanded')\n this.label.setAttribute('aria-expanded', 'false')\n this.options.setAttribute('aria-hidden', 'true')\n }\n\n selectItem(item, trigger = false) {\n const selected = this.container.querySelector('.ql-selected')\n if (item === selected) return\n if (!isNullOrUndefined(selected)) {\n selected.classList.remove('ql-selected')\n }\n if (isNullOrUndefined(item)) return\n item.classList.add('ql-selected')\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(\n item,\n )\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'))\n }\n else {\n this.label.removeAttribute('data-value')\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'))\n }\n else {\n this.label.removeAttribute('data-label')\n }\n if (trigger) {\n let ev\n if (typeof Event === 'function') {\n ev = new Event('change')\n }\n else {\n ev = document.createEvent('Event')\n ev.initEvent('change', true, true)\n }\n this.select.dispatchEvent(ev)\n this.close()\n }\n }\n\n update() {\n let option\n if (this.select.selectedIndex > -1) {\n const item = this.container.querySelector('.ql-picker-options').children[\n this.select.selectedIndex\n ]\n option = this.select.options[this.select.selectedIndex]\n this.selectItem(item)\n }\n else {\n this.selectItem(null)\n }\n const isActive\n = !isNullOrUndefined(option)\n && option !== this.select.querySelector('option[selected]')\n\n if (isActive) {\n this.label.classList.add('ql-active')\n }\n else {\n this.label.classList.remove('ql-active')\n }\n }\n}\n\nclass IconPicker extends Picker {\n defaultItem: any\n constructor(select, icons) {\n super(select)\n this.container.classList.add('ql-icon-picker')\n Array.from(this.container.querySelectorAll('.ql-picker-item')).forEach(\n (item: any) => {\n item.innerHTML = icons[item.getAttribute('data-value') || '']\n },\n )\n this.defaultItem = this.container.querySelector('.ql-selected')\n this.selectItem(this.defaultItem, null)\n }\n\n selectItem(target, trigger) {\n super.selectItem(target, trigger)\n const item = target || this.defaultItem\n if (this.label.innerHTML === item.innerHTML) return\n this.label.innerHTML = item.innerHTML\n }\n}\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select)\n this.label.innerHTML = label\n this.container.classList.add('ql-color-picker')\n Array.from(this.container.querySelectorAll('.ql-picker-item'))\n .slice(0, 7)\n .forEach((item: any) => {\n item.classList.add('ql-primary')\n })\n }\n\n buildItem(option) {\n const item = super.buildItem(option)\n item.style.backgroundColor = option.getAttribute('value') || ''\n return item\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger)\n const colorLabel = this.label.querySelector('.ql-color-label')\n const value = item ? item.getAttribute('data-value') || '' : ''\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value\n }\n else {\n colorLabel.style.fill = value\n }\n }\n }\n}\n\nQuill.register('ui/picker', Picker, true)\nQuill.register('ui/icon-picker', IconPicker, true)\nQuill.register('ui/color-picker', ColorPicker, true)\n\nconst ALIGNS = [false, 'center', 'right']\n\nconst COLORS = [\n '#000000',\n '#e60000',\n '#ff9900',\n '#ffff00',\n '#008a00',\n '#0066cc',\n '#9933ff',\n '#ffffff',\n '#facccc',\n '#ffebcc',\n '#ffffcc',\n '#cce8cc',\n '#cce0f5',\n '#ebd6ff',\n '#bbbbbb',\n '#f06666',\n '#ffc266',\n '#ffff66',\n '#66b966',\n '#66a3e0',\n '#c285ff',\n '#888888',\n '#a10000',\n '#b26b00',\n '#b2b200',\n '#006100',\n '#0047b2',\n '#6b24b2',\n '#444444',\n '#5c0000',\n '#663d00',\n '#666600',\n '#003700',\n '#002966',\n '#3d1466',\n]\n\nconst FONTS = [false, 'serif', 'monospace']\n\nconst HEADERS = ['1', '2', '3', false]\n\nconst SIZES = ['small', false, 'large', 'huge']\n\nSnowTheme.prototype.buildPickers = function (selects, icons) {\n this.pickers = Array.from(selects).map((select: any) => {\n if (select.classList.contains('ql-align')) {\n if (isNullOrUndefined(select.querySelector('option'))) {\n fillSelect(select, ALIGNS)\n }\n return new IconPicker(select, icons.align)\n }\n if (\n select.classList.contains('ql-background')\n || select.classList.contains('ql-color')\n ) {\n const format = select.classList.contains('ql-background')\n ? 'background'\n : 'color'\n if (isNullOrUndefined(select.querySelector('option'))) {\n fillSelect(\n select,\n COLORS,\n )\n }\n return new ColorPicker(select, icons[format])\n }\n if (isNullOrUndefined(select.querySelector('option'))) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS)\n }\n else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS)\n }\n else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES)\n }\n }\n return new Picker(select)\n })\n const update = () => {\n this.pickers.forEach((picker) => {\n picker.update()\n })\n }\n this.quill.on(Quill.events.EDITOR_CHANGE, update)\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach((value) => {\n const option = document.createElement('option')\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected')\n }\n else {\n option.setAttribute('value', value)\n }\n select.appendChild(option)\n })\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/toolbar/index.ts"],"sourcesContent":["import type TypeToolbar from 'quill/modules/toolbar'\nimport Quill from 'quill'\nimport { isNullOrUndefined } from '../config/editor.utils'\nimport './better-picker'\n\nconst Delta = Quill.import('delta')\nconst Parchment = Quill.import('parchment')\nconst levels = ['error', 'warn', 'log', 'info'] as const\nlet level = 'warn' as const\n\nfunction debuglogger(method: typeof levels[number], ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args) // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce((logger, method) => {\n logger[method] = debuglogger.bind(console, method, ns)\n return logger\n }, {} as Record<typeof levels[number], (...args: any) => void>)\n}\n\nnamespace.level = (newLevel) => {\n level = newLevel\n}\ndebuglogger.level = namespace.level\nconst debug = namespace('quill:toolbar')\n\nconst Toolbar = Quill.import('modules/toolbar') as typeof TypeToolbar\n// let oldClean = Toolbar.DEFAULTS.handlers.clean\n\nclass BetterToolbar extends Toolbar {\n update(range) {\n const formats = isNullOrUndefined(range) ? {} : this.quill.getFormat(range) as Record<string, any>\n this.controls.forEach((pair) => {\n const [format, input] = pair\n if (input.tagName === 'SELECT') {\n const select = input as HTMLSelectElement\n let option\n if (isNullOrUndefined(range)) {\n option = null\n }\n else if (isNullOrUndefined(formats[format])) {\n option = select.querySelector('option[selected]')\n }\n else if (!Array.isArray(formats[format])) {\n let value = format === 'header' ? formats[format].value : formats[format]\n if (typeof value === 'string') {\n value = value.replace(/\"/g, '\\\\\"')\n }\n option = select.querySelector(`option[value=\"${value}\"]`)\n }\n if (isNullOrUndefined(option)) {\n select.value = '' // TODO make configurable?\n select.selectedIndex = -1\n }\n else {\n option.selected = true\n }\n }\n else if (isNullOrUndefined(range)) {\n input.classList.remove('ql-active')\n }\n else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive\n = formats[format] === input.getAttribute('value')\n || (!isNullOrUndefined(formats[format])\n && (formats[format].value === input.getAttribute('value')\n || formats[format].toString() === input.getAttribute('value')))\n || (isNullOrUndefined(formats[format]) && !input.getAttribute('value'))\n\n if (!isActive) {\n const checkFormat = formats[format]\n if (checkFormat === 'checked' || checkFormat === 'unchecked') {\n isActive = input.getAttribute('value') === 'check'\n }\n }\n\n if (isActive) {\n input.classList.add('ql-active')\n }\n else {\n input.classList.remove('ql-active')\n }\n }\n else {\n if (!isNullOrUndefined(formats[format])) {\n input.classList.add('ql-active')\n }\n else {\n input.classList.remove('ql-active')\n }\n }\n })\n }\n\n attach(input: HTMLElement) {\n let format = Array.from(input.classList).find((className) => {\n return className.indexOf('ql-') === 0\n })\n if (!format) return\n format = format.slice('ql-'.length)\n\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button')\n }\n\n if (this.handlers[format] == null && this.quill.scroll.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input)\n return\n }\n\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click'\n input.addEventListener(eventName, (e) => {\n let value: boolean | string\n\n if (input.tagName === 'SELECT') {\n const select = input as HTMLSelectElement\n if (select.selectedIndex < 0) return\n const selected = select.options[select.selectedIndex]\n\n if (selected.hasAttribute('selected')) {\n value = false\n }\n else {\n value = selected.value || false\n }\n }\n else {\n const button = input as HTMLButtonElement\n if (button.classList.contains('ql-active')) {\n value = false\n }\n else {\n value = button.value || !button.hasAttribute('value')\n }\n e.preventDefault()\n }\n\n this.quill.focus({ preventScroll: format === 'screenshot' })\n const [range] = this.quill.selection.getRange()\n if (this.handlers[format] != null) {\n // @ts-ignore\n if (!isNullOrUndefined(window.quillIsIntable) && window.quillIsIntable === true && (format === 'blockquote' || format === 'code-block' || format === 'list' || format === 'indent' || format === 'clean')) {\n return\n }\n this.handlers[format].call(this, value)\n }\n else if (\n // @ts-ignore\n this.quill.scroll.query(format).prototype instanceof Parchment.EmbedBlot\n ) {\n value = prompt(`Enter ${format}`)\n if (!value) return\n this.quill.updateContents(\n new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value }),\n Quill.sources.USER,\n )\n }\n else {\n // @ts-ignore\n if (!isNullOrUndefined(window.quillIsIntable) && window.quillIsIntable === true && (format === 'blockquote' || format === 'code-block' || format === 'list' || format === 'indent' || format === 'clean')) {\n return\n }\n this.quill.format(format, value, Quill.sources.USER)\n }\n\n this.update(range)\n })\n this.controls.push([format, input])\n }\n}\n\nexport default BetterToolbar\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.es.js","sources":["../../../src/utils/debounce.ts"],"sourcesContent":["import { isObject, root } from './method'\n\nexport function debounce(func, wait, options = undefined) {\n let lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime\n\n let lastInvokeTime = 0\n let leading = false\n let maxing = false\n let trailing = true\n\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n const useRAF = (!wait && wait !== 0 && typeof root.requestAnimationFrame === 'function')\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function')\n }\n wait = +wait || 0\n if (isObject(options)) {\n leading = !!options.leading\n maxing = 'maxWait' in options\n maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait\n trailing = 'trailing' in options ? !!options.trailing : trailing\n }\n\n function invokeFunc(time) {\n const args = lastArgs\n const thisArg = lastThis\n\n lastArgs = lastThis = undefined\n lastInvokeTime = time\n result = func.apply(thisArg, args)\n return result\n }\n\n function startTimer(pendingFunc, wait) {\n if (useRAF) {\n root.cancelAnimationFrame(timerId)\n return root.requestAnimationFrame(pendingFunc)\n }\n return setTimeout(pendingFunc, wait)\n }\n\n function cancelTimer(id) {\n if (useRAF) {\n return root.cancelAnimationFrame(id)\n }\n clearTimeout(id)\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait)\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result\n }\n\n function remainingWait(time) {\n const timeSinceLastCall = time - lastCallTime\n const timeSinceLastInvoke = time - lastInvokeTime\n const timeWaiting = wait - timeSinceLastCall\n\n return maxing\n ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting\n }\n\n function shouldInvoke(time) {\n const timeSinceLastCall = time - lastCallTime\n const timeSinceLastInvoke = time - lastInvokeTime\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait)\n || (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait))\n }\n\n function timerExpired() {\n const time = Date.now()\n if (shouldInvoke(time)) {\n return trailingEdge(time)\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time))\n }\n\n function trailingEdge(time) {\n timerId = undefined\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time)\n }\n lastArgs = lastThis = undefined\n return result\n }\n\n function cancel() {\n if (timerId !== undefined) {\n cancelTimer(timerId)\n }\n lastInvokeTime = 0\n lastArgs = lastCallTime = lastThis = timerId = undefined\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now())\n }\n\n function pending() {\n return timerId !== undefined\n }\n\n function debounced(...args) {\n const time = Date.now()\n const isInvoking = shouldInvoke(time)\n\n lastArgs = args\n lastThis = this\n lastCallTime = time\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime)\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait)\n return invokeFunc(lastCallTime)\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait)\n }\n return result\n }\n debounced.cancel = cancel\n debounced.flush = flush\n debounced.pending = pending\n return debounced\n}\n"],"names":["wait"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"method.es.js","sources":["../../../src/utils/method.ts"],"sourcesContent":["/** Detect free variable `global` from Node.js. */\nconst freeGlobal\n = typeof global === 'object'\n && global !== null\n && global.Object === Object\n && global\n\n/** Detect free variable `globalThis` */\nconst freeGlobalThis\n = typeof globalThis === 'object'\n && globalThis !== null\n && globalThis.Object == Object\n && globalThis\n\n/** Detect free variable `self`. */\nconst freeSelf\n = typeof self === 'object' && self !== null && self.Object === Object && self\n\n/** Used as a reference to the global object. */\nexport const root\n = freeGlobalThis || freeGlobal || freeSelf || new Function('return this')()\n\nexport function isObject(value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\nexport function compareArray(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false\n }\n }\n return true\n}\n\nexport function compareObject(object1, object2) {\n const o1keys = Object.keys(object1)\n const o2keys = Object.keys(object2)\n if (o2keys.length !== o1keys.length) return false\n for (let i = 0; i <= o1keys.length - 1; i++) {\n const key = o1keys[i]\n if (!o2keys.includes(key)) return false\n if (!compare(object2[key], object1[key])) return false\n }\n return true\n}\n\nexport function compare(value, other) {\n if (value === other) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(other)) {\n return compareArray(value, other)\n }\n if (value instanceof Function || other instanceof Function) {\n return false\n }\n if (value instanceof Object && other instanceof Object) {\n return compareObject(value, other)\n }\n return false\n}\n\nexport function unshiftString(str: string, targetLength: number, addString: string): string {\n targetLength = targetLength > 0 ? targetLength : 0\n addString = String((typeof addString !== 'undefined' && typeof addString !== 'object') ? addString : ' ')\n str = (str === undefined || str === null) ? '' : String(str)\n if (str.length >= targetLength) {\n return String(str)\n }\n else {\n targetLength = targetLength - str.length\n if (targetLength > addString.length) {\n addString += addString.repeat(targetLength / addString.length)\n }\n return addString.slice(0, targetLength) + String(str)\n }\n}\n"],"names":[],"mappings":"AACA,MAAM,aACF,OAAO,WAAW,YACjB,WAAW,QACX,OAAO,WAAW,UAClB;AAGL,MAAM,iBACF,OAAO,eAAe,YACrB,eAAe,QACf,WAAW,UAAU,UACrB;AAGL,MAAM,WACF,OAAO,SAAS,YAAY,SAAS,QAAQ,KAAK,WAAW,UAAU;AAGpE,MAAM,OACT,kBAAkB,cAAc,YAAY,IAAI,SAAS,aAAa,EAAE;AAErE,SAAS,SAAS,OAAO;AAC9B,QAAM,OAAO,OAAO;AACpB,SAAO,SAAS,SAAS,SAAS,YAAY,SAAS;AACzD;AAEgB,SAAA,aAAa,MAAM,MAAM;AACnC,MAAA,KAAK,WAAW,KAAK,QAAQ;AACxB,WAAA;AAAA,EACT;AACA,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG;AAChB,aAAA;AAAA,IACT;AAAA,EACF;AACO,SAAA;AACT;AAEgB,SAAA,cAAc,SAAS,SAAS;AACxC,QAAA,SAAS,OAAO,KAAK,OAAO;AAC5B,QAAA,SAAS,OAAO,KAAK,OAAO;AAClC,MAAI,OAAO,WAAW,OAAO,OAAe,QAAA;AAC5C,WAAS,IAAI,GAAG,KAAK,OAAO,SAAS,GAAG,KAAK;AACrC,UAAA,MAAM,OAAO,CAAC;AACpB,QAAI,CAAC,OAAO,SAAS,GAAG,EAAU,QAAA;AAC9B,QAAA,CAAC,QAAQ,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC,EAAU,QAAA;AAAA,EACnD;AACO,SAAA;AACT;AAEgB,SAAA,QAAQ,OAAO,OAAO;AACpC,MAAI,UAAU,OAAO;AACZ,WAAA;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,QAAQ,KAAK,GAAG;AACzC,WAAA,aAAa,OAAO,KAAK;AAAA,EAClC;AACI,MAAA,iBAAiB,YAAY,iBAAiB,UAAU;AACnD,WAAA;AAAA,EACT;AACI,MAAA,iBAAiB,UAAU,iBAAiB,QAAQ;AAC/C,WAAA,cAAc,OAAO,KAAK;AAAA,EACnC;AACO,SAAA;AACT;AAEgB,SAAA,cAAc,KAAa,cAAsB,WAA2B;AAC3E,iBAAA,eAAe,IAAI,eAAe;AACrC,cAAA,OAAQ,OAAO,cAAc,eAAe,OAAO,cAAc,WAAY,YAAY,GAAG;AACxG,QAAO,QAAQ,UAAa,QAAQ,OAAQ,KAAK,OAAO,GAAG;AACvD,MAAA,IAAI,UAAU,cAAc;AAC9B,WAAO,OAAO,GAAG;AAAA,EAAA,OAEd;AACH,mBAAe,eAAe,IAAI;AAC9B,QAAA,eAAe,UAAU,QAAQ;AACnC,mBAAa,UAAU,OAAO,eAAe,UAAU,MAAM;AAAA,IAC/D;AACA,WAAO,UAAU,MAAM,GAAG,YAAY,IAAI,OAAO,GAAG;AAAA,EACtD;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/video/index.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\nimport Quill from 'quill'\nimport { sanitize } from '../config/editor.utils'\n\nconst BlockEmbed = Quill.imports['blots/block/embed'] as TypeParchment.BlotConstructor\nconst VIDEO_ATTRIBUTES = ['id', 'title', 'src']\n\nclass Video extends BlockEmbed {\n static blotName: string\n static tagName: string\n static SANITIZED_URL: string\n static PROTOCOL_WHITELIST: string[]\n static className: string\n statics: any\n domNode: any\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\n }\n\n static create(value) {\n const node = super.create(value) as HTMLElement\n node.setAttribute('contenteditable', 'false')\n node.setAttribute('controls', 'controls')\n VIDEO_ATTRIBUTES.forEach((key) => {\n if (value[key]) {\n switch (key) {\n case 'src':{ const src = Video.sanitize(value[key])\n node.setAttribute(key, src)\n break\n }\n case 'title': {\n node.setAttribute(key, value[key])\n break\n }\n default: {\n node.dataset[key] = value[key]\n }\n }\n }\n })\n return node\n }\n\n static value(domNode) {\n const formats: any = {}\n VIDEO_ATTRIBUTES.forEach((key) => {\n const value = domNode.getAttribute(key) || domNode.dataset[key]\n if (value) {\n formats[key] = value\n }\n })\n return formats\n }\n}\nVideo.blotName = 'video'\nVideo.tagName = 'VIDEO'\nVideo.SANITIZED_URL = 'about:blank'\nVideo.PROTOCOL_WHITELIST = ['http', 'https']\nVideo.className = 'ql-video-item'\n\nexport default Video\n"],"names":[],"mappings":";;AAIA,MAAM,aAAa,MAAM,QAAQ,mBAAmB;AACpD,MAAM,mBAAmB,CAAC,MAAM,SAAS,KAAK;AAE9C,MAAM,cAAc,WAAW;AAAA,EAS7B,OAAO,SAAS,KAAK;AACnB,WAAO,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAC7D;AAAA,EAEA,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,mBAAmB,OAAO;AACvC,SAAA,aAAa,YAAY,UAAU;AACvB,qBAAA,QAAQ,CAAC,QAAQ;AAC5B,UAAA,MAAM,GAAG,GAAG;AACd,gBAAQ,KAAK;AAAA,UACX,KAAK,OAAM;AAAE,kBAAM,MAAM,MAAM,SAAS,MAAM,GAAG,CAAC;AAC3C,iBAAA,aAAa,KAAK,GAAG;AAC1B;AAAA,UACF;AAAA,UACA,KAAK,SAAS;AACZ,iBAAK,aAAa,KAAK,MAAM,GAAG,CAAC;AACjC;AAAA,UACF;AAAA,UACA,SAAS;AACP,iBAAK,QAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACpB,UAAM,UAAe,CAAA;AACJ,qBAAA,QAAQ,CAAC,QAAQ;AAChC,YAAM,QAAQ,QAAQ,aAAa,GAAG,KAAK,QAAQ,QAAQ,GAAG;AAC9D,UAAI,OAAO;AACT,gBAAQ,GAAG,IAAI;AAAA,MACjB;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EACT;AACF;AACA,MAAM,WAAW;AACjB,MAAM,UAAU;AAChB,MAAM,gBAAgB;AACtB,MAAM,qBAAqB,CAAC,QAAQ,OAAO;AAC3C,MAAM,YAAY;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"line-height.cjs.js","sources":["../../../src/attributors/line-height.ts"],"sourcesContent":["import Quill from 'quill'\n\nconst Parchment = Quill.import('parchment')\nexport const LineHeightStyle = new Parchment.StyleAttributor('line-height', 'line-height', {\n scope: Parchment.Scope.INLINE,\n})\n"],"names":[],"mappings":";;;AAEA,MAAM,YAAY,MAAM,OAAO,WAAW;AACnC,MAAM,kBAAkB,IAAI,UAAU,gBAAgB,eAAe,eAAe;AAAA,EACzF,OAAO,UAAU,MAAM;AACzB,CAAC;;"}