@opentiny/fluent-editor 4.0.0-alpha.7 → 4.0.0-alpha.8

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 (1054) hide show
  1. package/LICENSE +21 -0
  2. package/dist/README.md +88 -0
  3. package/dist/es/attributors/line-height.es.js.map +1 -0
  4. package/dist/es/config/base64-image.es.js.map +1 -0
  5. package/dist/es/config/editor.config.es.js.map +1 -0
  6. package/dist/es/config/editor.utils.es.js.map +1 -0
  7. package/dist/es/config/i18n/en-us.es.js.map +1 -0
  8. package/dist/es/config/i18n/zh-cn.es.js.map +1 -0
  9. package/dist/es/config/index.es.js.map +1 -0
  10. package/dist/es/core/fluent-editor.es.js.map +1 -0
  11. package/dist/es/fluent-editor.es.js.map +1 -0
  12. package/dist/es/formats/emoji.es.js.map +1 -0
  13. package/dist/es/formats/soft-break.es.js.map +1 -0
  14. package/dist/es/formats/strike.es.js.map +1 -0
  15. package/dist/es/formats/video.es.js.map +1 -0
  16. package/dist/es/modules/ai/constants.es.js.map +1 -0
  17. package/dist/es/modules/ai/icons.es.js.map +1 -0
  18. package/dist/es/modules/ai/index.es.js.map +1 -0
  19. package/dist/es/modules/collaborative-editing/awareness/awareness.es.js +93 -0
  20. package/dist/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -0
  21. package/dist/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +12 -0
  22. package/dist/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -0
  23. package/dist/es/modules/collaborative-editing/collaborative-editing.es.js +105 -0
  24. package/dist/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -0
  25. package/dist/es/modules/collaborative-editing/module.es.js.map +1 -0
  26. package/dist/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -0
  27. package/dist/es/modules/collaborative-editing/provider/webrtc.es.js +99 -0
  28. package/dist/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -0
  29. package/dist/es/modules/collaborative-editing/provider/websocket.es.js +111 -0
  30. package/dist/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -0
  31. package/dist/es/modules/counter.es.js.map +1 -0
  32. package/dist/es/modules/custom-clipboard.es.js.map +1 -0
  33. package/dist/es/modules/custom-image/actions/action.es.js.map +1 -0
  34. package/dist/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -0
  35. package/dist/es/modules/custom-image/actions/delete-action.es.js.map +1 -0
  36. package/dist/es/modules/custom-image/blot-formatter.es.js.map +1 -0
  37. package/dist/es/modules/custom-image/image.es.js.map +1 -0
  38. package/dist/es/modules/custom-image/options.es.js.map +1 -0
  39. package/dist/es/modules/custom-image/specs/blot-spec.es.js.map +1 -0
  40. package/dist/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -0
  41. package/dist/es/modules/custom-image/specs/image-spec.es.js.map +1 -0
  42. package/dist/es/modules/divider.es.js.map +1 -0
  43. package/dist/es/modules/emoji.es.js +167 -0
  44. package/dist/es/modules/emoji.es.js.map +1 -0
  45. package/dist/es/modules/file/formats/file.es.js.map +1 -0
  46. package/dist/es/modules/file/modules/file-bar.es.js.map +1 -0
  47. package/dist/es/modules/file/modules/file-module.es.js.map +1 -0
  48. package/dist/es/modules/link/formats/link.es.js.map +1 -0
  49. package/dist/es/modules/link/modules/tooltip.es.js.map +1 -0
  50. package/dist/es/modules/mathlive/formats.es.js.map +1 -0
  51. package/dist/es/modules/mathlive/tooltip.es.js.map +1 -0
  52. package/dist/es/modules/mention/constants.es.js.map +1 -0
  53. package/dist/es/modules/mention/mention-link.es.js.map +1 -0
  54. package/dist/es/modules/mention/mention.es.js.map +1 -0
  55. package/dist/es/modules/syntax.es.js.map +1 -0
  56. package/dist/es/modules/toolbar/better-picker.es.js.map +1 -0
  57. package/dist/es/themes/snow.es.js.map +1 -0
  58. package/dist/es/tools/screenshot.es.js.map +1 -0
  59. package/dist/es/ui/icons.config.es.js.map +1 -0
  60. package/dist/es/ui/icons.es.js.map +1 -0
  61. package/dist/es/utils/debounce.es.js.map +1 -0
  62. package/dist/es/utils/method.es.js.map +1 -0
  63. package/dist/lib/attributors/line-height.cjs.js.map +1 -0
  64. package/dist/lib/config/base64-image.cjs.js.map +1 -0
  65. package/dist/lib/config/editor.config.cjs.js.map +1 -0
  66. package/dist/lib/config/editor.utils.cjs.js.map +1 -0
  67. package/dist/lib/config/i18n/en-us.cjs.js.map +1 -0
  68. package/dist/lib/config/i18n/zh-cn.cjs.js.map +1 -0
  69. package/dist/lib/config/index.cjs.js.map +1 -0
  70. package/dist/lib/core/fluent-editor.cjs.js.map +1 -0
  71. package/dist/lib/fluent-editor.cjs.js.map +1 -0
  72. package/dist/lib/formats/emoji.cjs.js.map +1 -0
  73. package/dist/lib/formats/soft-break.cjs.js.map +1 -0
  74. package/dist/lib/formats/strike.cjs.js.map +1 -0
  75. package/dist/lib/formats/video.cjs.js.map +1 -0
  76. package/dist/lib/modules/ai/constants.cjs.js.map +1 -0
  77. package/dist/lib/modules/ai/icons.cjs.js.map +1 -0
  78. package/dist/lib/modules/ai/index.cjs.js.map +1 -0
  79. package/dist/lib/modules/collaborative-editing/awareness/awareness.cjs.js +110 -0
  80. package/dist/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -0
  81. package/dist/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +12 -0
  82. package/dist/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -0
  83. package/dist/lib/modules/collaborative-editing/collaborative-editing.cjs.js +122 -0
  84. package/dist/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -0
  85. package/dist/lib/modules/collaborative-editing/module.cjs.js.map +1 -0
  86. package/dist/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -0
  87. package/dist/lib/modules/collaborative-editing/provider/webrtc.cjs.js +116 -0
  88. package/dist/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -0
  89. package/dist/lib/modules/collaborative-editing/provider/websocket.cjs.js +128 -0
  90. package/dist/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -0
  91. package/dist/lib/modules/counter.cjs.js.map +1 -0
  92. package/dist/lib/modules/custom-clipboard.cjs.js.map +1 -0
  93. package/dist/lib/modules/custom-image/actions/action.cjs.js.map +1 -0
  94. package/dist/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -0
  95. package/dist/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -0
  96. package/dist/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -0
  97. package/dist/lib/modules/custom-image/image.cjs.js.map +1 -0
  98. package/dist/lib/modules/custom-image/options.cjs.js.map +1 -0
  99. package/dist/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -0
  100. package/dist/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -0
  101. package/dist/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -0
  102. package/dist/lib/modules/divider.cjs.js.map +1 -0
  103. package/dist/lib/modules/emoji.cjs.js +167 -0
  104. package/dist/lib/modules/emoji.cjs.js.map +1 -0
  105. package/dist/lib/modules/file/formats/file.cjs.js.map +1 -0
  106. package/dist/lib/modules/file/modules/file-bar.cjs.js.map +1 -0
  107. package/dist/lib/modules/file/modules/file-module.cjs.js.map +1 -0
  108. package/dist/lib/modules/link/formats/link.cjs.js.map +1 -0
  109. package/dist/lib/modules/link/modules/tooltip.cjs.js.map +1 -0
  110. package/dist/lib/modules/mathlive/formats.cjs.js.map +1 -0
  111. package/dist/lib/modules/mathlive/tooltip.cjs.js.map +1 -0
  112. package/dist/lib/modules/mention/constants.cjs.js.map +1 -0
  113. package/dist/lib/modules/mention/mention-link.cjs.js.map +1 -0
  114. package/dist/lib/modules/mention/mention.cjs.js.map +1 -0
  115. package/dist/lib/modules/syntax.cjs.js.map +1 -0
  116. package/dist/lib/modules/toolbar/better-picker.cjs.js.map +1 -0
  117. package/dist/lib/themes/snow.cjs.js.map +1 -0
  118. package/dist/lib/tools/screenshot.cjs.js.map +1 -0
  119. package/dist/lib/ui/icons.cjs.js.map +1 -0
  120. package/dist/lib/ui/icons.config.cjs.js.map +1 -0
  121. package/dist/lib/utils/debounce.cjs.js.map +1 -0
  122. package/dist/lib/utils/method.cjs.js.map +1 -0
  123. package/dist/package.json +67 -0
  124. package/dist/types/attributors/font-size.d.ts +1 -0
  125. package/dist/types/attributors/font-style.d.ts +1 -0
  126. package/dist/types/attributors/index.d.ts +4 -0
  127. package/dist/types/attributors/line-height.d.ts +1 -0
  128. package/dist/types/attributors/text-indent.d.ts +1 -0
  129. package/dist/types/config/base64-image.d.ts +2 -0
  130. package/dist/types/config/editor.config.d.ts +11 -0
  131. package/dist/types/config/editor.utils.d.ts +40 -0
  132. package/dist/types/config/i18n/en-us.d.ts +123 -0
  133. package/dist/types/config/i18n/zh-cn.d.ts +123 -0
  134. package/dist/types/config/index.d.ts +7 -0
  135. package/dist/types/config/types/editor-config.interface.d.ts +14 -0
  136. package/dist/types/config/types/editor-modules.interface.d.ts +41 -0
  137. package/dist/types/config/types/index.d.ts +3 -0
  138. package/dist/types/config/types/type.d.ts +2 -0
  139. package/dist/types/core/fluent-editor.d.ts +13 -0
  140. package/dist/types/fluent-editor.d.ts +2 -0
  141. package/dist/types/formats/emoji.d.ts +8 -0
  142. package/dist/types/formats/index.d.ts +4 -0
  143. package/dist/types/formats/soft-break.d.ts +12 -0
  144. package/dist/types/formats/strike.d.ts +8 -0
  145. package/dist/types/formats/video.d.ts +13 -0
  146. package/dist/types/index.d.ts +8 -0
  147. package/dist/types/modules/ai/constants.d.ts +30 -0
  148. package/dist/types/modules/ai/icons.d.ts +21 -0
  149. package/dist/types/modules/ai/index.d.ts +96 -0
  150. package/dist/types/modules/ai/types.d.ts +16 -0
  151. package/dist/types/modules/collaborative-editing/awareness/awareness.d.ts +28 -0
  152. package/dist/types/modules/collaborative-editing/awareness/index.d.ts +2 -0
  153. package/dist/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +2 -0
  154. package/dist/types/modules/collaborative-editing/collaborative-editing.d.ts +24 -0
  155. package/dist/types/modules/collaborative-editing/index.d.ts +2 -0
  156. package/dist/types/modules/collaborative-editing/module.d.ts +11 -0
  157. package/dist/types/modules/collaborative-editing/provider/index.d.ts +3 -0
  158. package/dist/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -0
  159. package/dist/types/modules/collaborative-editing/provider/webrtc.d.ts +36 -0
  160. package/dist/types/modules/collaborative-editing/provider/websocket.d.ts +40 -0
  161. package/dist/types/modules/collaborative-editing/types.d.ts +37 -0
  162. package/dist/types/modules/counter.d.ts +23 -0
  163. package/dist/types/modules/custom-clipboard.d.ts +25 -0
  164. package/dist/types/modules/custom-image/actions/action.d.ts +8 -0
  165. package/dist/types/modules/custom-image/actions/custom-resize-action.d.ts +23 -0
  166. package/dist/types/modules/custom-image/actions/delete-action.d.ts +6 -0
  167. package/dist/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +16 -0
  168. package/dist/types/modules/custom-image/actions/index.d.ts +6 -0
  169. package/dist/types/modules/custom-image/actions/toolbar-action.d.ts +11 -0
  170. package/dist/types/modules/custom-image/actions/toolbar.d.ts +19 -0
  171. package/dist/types/modules/custom-image/blot-formatter.d.ts +23 -0
  172. package/dist/types/modules/custom-image/image.d.ts +28 -0
  173. package/dist/types/modules/custom-image/index.d.ts +4 -0
  174. package/dist/types/modules/custom-image/options.d.ts +47 -0
  175. package/dist/types/modules/custom-image/specs/blot-spec.d.ts +12 -0
  176. package/dist/types/modules/custom-image/specs/custom-image-spec.d.ts +17 -0
  177. package/dist/types/modules/custom-image/specs/image-spec.d.ts +8 -0
  178. package/dist/types/modules/custom-image/specs/index.d.ts +3 -0
  179. package/dist/types/modules/custom-uploader.d.ts +40 -0
  180. package/dist/types/modules/divider.d.ts +8 -0
  181. package/dist/types/modules/emoji.d.ts +39 -0
  182. package/dist/types/modules/file/formats/file.d.ts +18 -0
  183. package/dist/types/modules/file/index.d.ts +3 -0
  184. package/dist/types/modules/file/modules/file-bar.d.ts +14 -0
  185. package/dist/types/modules/file/modules/file-module.d.ts +9 -0
  186. package/dist/types/modules/i18n.d.ts +14 -0
  187. package/dist/types/modules/index.d.ts +16 -0
  188. package/dist/types/modules/link/formats/link.d.ts +15 -0
  189. package/dist/types/modules/link/index.d.ts +2 -0
  190. package/dist/types/modules/link/modules/tooltip.d.ts +27 -0
  191. package/dist/types/modules/mathlive/formats.d.ts +22 -0
  192. package/dist/types/modules/mathlive/index.d.ts +3 -0
  193. package/dist/types/modules/mathlive/module.d.ts +9 -0
  194. package/dist/types/modules/mathlive/tooltip.d.ts +18 -0
  195. package/dist/types/modules/mention/constants.d.ts +3 -0
  196. package/dist/types/modules/mention/index.d.ts +2 -0
  197. package/dist/types/modules/mention/mention-link.d.ts +16 -0
  198. package/dist/types/modules/mention/mention.d.ts +53 -0
  199. package/dist/types/modules/shortcut-key/index.d.ts +71 -0
  200. package/dist/types/modules/syntax.d.ts +13 -0
  201. package/dist/types/modules/table-up/index.d.ts +34 -0
  202. package/dist/types/modules/toolbar/better-picker.d.ts +15 -0
  203. package/dist/types/modules/toolbar/better-toolbar.d.ts +7 -0
  204. package/dist/types/modules/toolbar/index.d.ts +3 -0
  205. package/dist/types/modules/toolbar/toolbar-tip.d.ts +9 -0
  206. package/dist/types/themes/snow.d.ts +11 -0
  207. package/dist/types/tools/format-painter.d.ts +13 -0
  208. package/dist/types/tools/fullscreen.d.ts +6 -0
  209. package/dist/types/tools/screenshot.d.ts +19 -0
  210. package/dist/types/ui/icons.config.d.ts +38 -0
  211. package/dist/types/ui/icons.d.ts +6 -0
  212. package/dist/types/utils/debounce.d.ts +6 -0
  213. package/dist/types/utils/image.d.ts +1 -0
  214. package/dist/types/utils/is.d.ts +6 -0
  215. package/dist/types/utils/method.d.ts +6 -0
  216. package/dist/types/utils/scroll-lock.d.ts +6 -0
  217. package/package.json +67 -67
  218. package/scripts/pre-release.cjs +35 -0
  219. package/src/assets/ai.scss +451 -0
  220. package/src/assets/common/config.scss +4 -0
  221. package/src/assets/common.scss +132 -0
  222. package/src/assets/counter.scss +16 -0
  223. package/src/assets/custom-image.scss +19 -0
  224. package/src/assets/editor.scss +351 -0
  225. package/src/assets/fileBar.scss +107 -0
  226. package/src/assets/font.scss +18 -0
  227. package/src/assets/fullscreen.scss +50 -0
  228. package/src/assets/iconfont/iconfont.ttf +0 -0
  229. package/src/assets/iconfont/iconfont.woff +0 -0
  230. package/src/assets/iconfont/iconfont.woff2 +0 -0
  231. package/src/assets/imageBar.scss +98 -0
  232. package/src/assets/lineHeight.scss +15 -0
  233. package/src/assets/link.scss +120 -0
  234. package/src/assets/mathlive.scss +40 -0
  235. package/src/assets/mention.scss +48 -0
  236. package/src/assets/screenshot.scss +78 -0
  237. package/src/assets/size.scss +11 -0
  238. package/src/assets/style.scss +46 -0
  239. package/src/assets/svgs/align-center.svg +41 -0
  240. package/src/assets/svgs/align-justify.svg +8 -0
  241. package/src/assets/svgs/arrow-down.svg +6 -0
  242. package/src/assets/svgs/background-color.svg +7 -0
  243. package/src/assets/svgs/clean.svg +8 -0
  244. package/src/assets/svgs/code-block.svg +5 -0
  245. package/src/assets/svgs/code.svg +25 -0
  246. package/src/assets/svgs/color.svg +7 -0
  247. package/src/assets/svgs/direction-ltr.svg +8 -0
  248. package/src/assets/svgs/direction-rtl.svg +8 -0
  249. package/src/assets/svgs/divider.svg +4 -0
  250. package/src/assets/svgs/emoji.svg +53 -0
  251. package/src/assets/svgs/file.svg +12 -0
  252. package/src/assets/svgs/format-painter.svg +10 -0
  253. package/src/assets/svgs/formula.svg +6 -0
  254. package/src/assets/svgs/fullscreen.svg +43 -0
  255. package/src/assets/svgs/image.svg +17 -0
  256. package/src/assets/svgs/italic.svg +6 -0
  257. package/src/assets/svgs/link.svg +9 -0
  258. package/src/assets/svgs/list-bullet.svg +16 -0
  259. package/src/assets/svgs/list-ordered.svg +18 -0
  260. package/src/assets/svgs/list-task.svg +5 -0
  261. package/src/assets/svgs/redo.svg +8 -0
  262. package/src/assets/svgs/screenshot.svg +17 -0
  263. package/src/assets/svgs/script-sub.svg +15 -0
  264. package/src/assets/svgs/script-super.svg +15 -0
  265. package/src/assets/svgs/strike.svg +6 -0
  266. package/src/assets/svgs/underline.svg +13 -0
  267. package/src/assets/svgs/undo.svg +8 -0
  268. package/src/assets/svgs/video.svg +10 -0
  269. package/src/assets/tasklist.scss +76 -0
  270. package/src/assets/toolbar.scss +385 -0
  271. package/src/assets/variable.scss +9 -0
  272. package/src/assets/video.scss +5 -0
  273. package/src/attributors/font-size.ts +6 -0
  274. package/src/attributors/font-style.ts +6 -0
  275. package/src/attributors/index.ts +4 -0
  276. package/src/attributors/line-height.ts +6 -0
  277. package/src/attributors/text-indent.ts +6 -0
  278. package/src/config/base64-image.ts +5 -0
  279. package/src/config/editor.config.ts +86 -0
  280. package/src/config/editor.utils.ts +193 -0
  281. package/src/config/i18n/en-us.ts +138 -0
  282. package/src/config/i18n/zh-cn.ts +137 -0
  283. package/src/config/index.ts +44 -0
  284. package/src/config/types/editor-config.interface.ts +16 -0
  285. package/src/config/types/editor-modules.interface.ts +47 -0
  286. package/src/config/types/index.ts +3 -0
  287. package/src/config/types/type.ts +2 -0
  288. package/src/core/fluent-editor.ts +31 -0
  289. package/src/fluent-editor.ts +72 -0
  290. package/src/formats/emoji.ts +10 -0
  291. package/src/formats/index.ts +4 -0
  292. package/src/formats/soft-break.ts +27 -0
  293. package/src/formats/strike.ts +11 -0
  294. package/src/formats/video.ts +53 -0
  295. package/src/index.ts +9 -0
  296. package/src/modules/ai/constants.ts +43 -0
  297. package/src/modules/ai/icons.ts +333 -0
  298. package/src/modules/ai/index.ts +850 -0
  299. package/src/modules/ai/types.ts +18 -0
  300. package/src/modules/collaborative-editing/awareness/awareness.ts +141 -0
  301. package/src/modules/collaborative-editing/awareness/index.ts +2 -0
  302. package/src/modules/collaborative-editing/awareness/y-indexeddb.ts +12 -0
  303. package/src/modules/collaborative-editing/collaborative-editing.ts +115 -0
  304. package/src/modules/collaborative-editing/index.ts +2 -0
  305. package/src/modules/collaborative-editing/module.ts +32 -0
  306. package/src/modules/collaborative-editing/provider/index.ts +3 -0
  307. package/src/modules/collaborative-editing/provider/providerRegistry.ts +57 -0
  308. package/src/modules/collaborative-editing/provider/webrtc.ts +125 -0
  309. package/src/modules/collaborative-editing/provider/websocket.ts +142 -0
  310. package/src/modules/collaborative-editing/types.ts +44 -0
  311. package/src/modules/counter.ts +84 -0
  312. package/src/modules/custom-clipboard.ts +537 -0
  313. package/src/modules/custom-image/actions/action.ts +15 -0
  314. package/src/modules/custom-image/actions/custom-resize-action.ts +207 -0
  315. package/src/modules/custom-image/actions/delete-action.ts +32 -0
  316. package/src/modules/custom-image/actions/image-toolbar-buttons.ts +135 -0
  317. package/src/modules/custom-image/actions/index.ts +6 -0
  318. package/src/modules/custom-image/actions/toolbar-action.ts +32 -0
  319. package/src/modules/custom-image/actions/toolbar.ts +145 -0
  320. package/src/modules/custom-image/blot-formatter.ts +158 -0
  321. package/src/modules/custom-image/image.ts +132 -0
  322. package/src/modules/custom-image/index.ts +4 -0
  323. package/src/modules/custom-image/options.ts +139 -0
  324. package/src/modules/custom-image/specs/blot-spec.ts +30 -0
  325. package/src/modules/custom-image/specs/custom-image-spec.ts +131 -0
  326. package/src/modules/custom-image/specs/image-spec.ts +28 -0
  327. package/src/modules/custom-image/specs/index.ts +3 -0
  328. package/src/modules/custom-uploader.ts +101 -0
  329. package/src/modules/divider.ts +15 -0
  330. package/src/modules/emoji.ts +230 -0
  331. package/src/modules/file/formats/file.ts +61 -0
  332. package/src/modules/file/index.ts +3 -0
  333. package/src/modules/file/modules/file-bar.ts +146 -0
  334. package/src/modules/file/modules/file-module.ts +33 -0
  335. package/src/modules/i18n.ts +66 -0
  336. package/src/modules/index.ts +16 -0
  337. package/src/modules/link/formats/link.ts +43 -0
  338. package/src/modules/link/index.ts +2 -0
  339. package/src/modules/link/modules/tooltip.ts +341 -0
  340. package/src/modules/mathlive/formats.ts +39 -0
  341. package/src/modules/mathlive/index.ts +3 -0
  342. package/src/modules/mathlive/module.ts +37 -0
  343. package/src/modules/mathlive/tooltip.ts +87 -0
  344. package/src/modules/mention/constants.ts +3 -0
  345. package/src/modules/mention/index.ts +2 -0
  346. package/src/modules/mention/mention-link.ts +64 -0
  347. package/src/modules/mention/mention.ts +404 -0
  348. package/src/modules/shortcut-key/index.ts +237 -0
  349. package/src/modules/syntax.ts +35 -0
  350. package/src/modules/table-up/index.ts +83 -0
  351. package/src/modules/toolbar/better-picker.ts +67 -0
  352. package/src/modules/toolbar/better-toolbar.ts +176 -0
  353. package/src/modules/toolbar/index.ts +3 -0
  354. package/src/modules/toolbar/toolbar-tip.ts +142 -0
  355. package/src/themes/snow.ts +309 -0
  356. package/src/tools/format-painter.ts +85 -0
  357. package/src/tools/fullscreen.ts +66 -0
  358. package/src/tools/screenshot.ts +231 -0
  359. package/src/ui/icons.config.ts +361 -0
  360. package/src/ui/icons.ts +89 -0
  361. package/src/utils/debounce.ts +150 -0
  362. package/src/utils/image.ts +22 -0
  363. package/src/utils/is.ts +9 -0
  364. package/src/utils/method.ts +77 -0
  365. package/src/utils/scroll-lock.ts +52 -0
  366. package/tsconfig.json +25 -0
  367. package/vite.config.ts +83 -0
  368. package/README.md +0 -88
  369. package/es/_virtual/_commonjs-dynamic-modules.es.js +0 -7
  370. package/es/_virtual/_commonjs-dynamic-modules.es.js.map +0 -1
  371. package/es/_virtual/_commonjsHelpers.es.js +0 -42
  372. package/es/_virtual/_commonjsHelpers.es.js.map +0 -1
  373. package/es/_virtual/quill-cursors.es.js +0 -5
  374. package/es/_virtual/quill-cursors.es.js.map +0 -1
  375. package/es/_virtual/simplepeer.min.es.js +0 -5
  376. package/es/_virtual/simplepeer.min.es.js.map +0 -1
  377. package/es/attributors/line-height.es.js.map +0 -1
  378. package/es/config/base64-image.es.js.map +0 -1
  379. package/es/config/editor.config.es.js.map +0 -1
  380. package/es/config/editor.utils.es.js.map +0 -1
  381. package/es/config/i18n/en-us.es.js.map +0 -1
  382. package/es/config/i18n/zh-cn.es.js.map +0 -1
  383. package/es/config/index.es.js.map +0 -1
  384. package/es/core/fluent-editor.es.js.map +0 -1
  385. package/es/fluent-editor.es.js.map +0 -1
  386. package/es/formats/emoji.es.js.map +0 -1
  387. package/es/formats/soft-break.es.js.map +0 -1
  388. package/es/formats/strike.es.js.map +0 -1
  389. package/es/formats/video.es.js.map +0 -1
  390. package/es/modules/ai/constants.es.js.map +0 -1
  391. package/es/modules/ai/icons.es.js.map +0 -1
  392. package/es/modules/ai/index.es.js.map +0 -1
  393. package/es/modules/collaborative-editing/awareness/awareness.es.js +0 -93
  394. package/es/modules/collaborative-editing/awareness/awareness.es.js.map +0 -1
  395. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +0 -12
  396. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +0 -1
  397. package/es/modules/collaborative-editing/collaborative-editing.es.js +0 -105
  398. package/es/modules/collaborative-editing/collaborative-editing.es.js.map +0 -1
  399. package/es/modules/collaborative-editing/module.es.js.map +0 -1
  400. package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +0 -1
  401. package/es/modules/collaborative-editing/provider/webrtc.es.js +0 -99
  402. package/es/modules/collaborative-editing/provider/webrtc.es.js.map +0 -1
  403. package/es/modules/collaborative-editing/provider/websocket.es.js +0 -111
  404. package/es/modules/collaborative-editing/provider/websocket.es.js.map +0 -1
  405. package/es/modules/counter.es.js.map +0 -1
  406. package/es/modules/custom-clipboard.es.js.map +0 -1
  407. package/es/modules/custom-image/actions/action.es.js.map +0 -1
  408. package/es/modules/custom-image/actions/custom-resize-action.es.js.map +0 -1
  409. package/es/modules/custom-image/actions/delete-action.es.js.map +0 -1
  410. package/es/modules/custom-image/blot-formatter.es.js.map +0 -1
  411. package/es/modules/custom-image/image.es.js.map +0 -1
  412. package/es/modules/custom-image/options.es.js.map +0 -1
  413. package/es/modules/custom-image/specs/blot-spec.es.js.map +0 -1
  414. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +0 -1
  415. package/es/modules/custom-image/specs/image-spec.es.js.map +0 -1
  416. package/es/modules/divider.es.js.map +0 -1
  417. package/es/modules/emoji.es.js +0 -163
  418. package/es/modules/emoji.es.js.map +0 -1
  419. package/es/modules/file/formats/file.es.js.map +0 -1
  420. package/es/modules/file/modules/file-bar.es.js.map +0 -1
  421. package/es/modules/file/modules/file-module.es.js.map +0 -1
  422. package/es/modules/link/formats/link.es.js.map +0 -1
  423. package/es/modules/link/modules/tooltip.es.js.map +0 -1
  424. package/es/modules/mathlive/formats.es.js.map +0 -1
  425. package/es/modules/mathlive/tooltip.es.js.map +0 -1
  426. package/es/modules/mention/constants.es.js.map +0 -1
  427. package/es/modules/mention/mention-link.es.js.map +0 -1
  428. package/es/modules/mention/mention.es.js.map +0 -1
  429. package/es/modules/syntax.es.js.map +0 -1
  430. package/es/modules/toolbar/better-picker.es.js.map +0 -1
  431. package/es/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.es.js +0 -40145
  432. package/es/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.es.js.map +0 -1
  433. package/es/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js +0 -938
  434. package/es/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js.map +0 -1
  435. package/es/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js +0 -624
  436. package/es/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js.map +0 -1
  437. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js +0 -174
  438. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js.map +0 -1
  439. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.es.js +0 -159
  440. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.es.js.map +0 -1
  441. package/es/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.es.js +0 -2849
  442. package/es/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.es.js.map +0 -1
  443. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/array.es.js +0 -112
  444. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/array.es.js.map +0 -1
  445. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/binary.es.js +0 -133
  446. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/binary.es.js.map +0 -1
  447. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/broadcastchannel.es.js +0 -59
  448. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/broadcastchannel.es.js.map +0 -1
  449. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/buffer.es.js +0 -75
  450. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/buffer.es.js.map +0 -1
  451. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/conditions.es.js +0 -5
  452. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/conditions.es.js.map +0 -1
  453. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/decoding.es.js +0 -422
  454. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/decoding.es.js.map +0 -1
  455. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/dom.es.js +0 -142
  456. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/dom.es.js.map +0 -1
  457. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/encoding.es.js +0 -484
  458. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/encoding.es.js.map +0 -1
  459. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/environment.es.js +0 -79
  460. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/environment.es.js.map +0 -1
  461. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/error.es.js +0 -13
  462. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/error.es.js.map +0 -1
  463. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/eventloop.es.js +0 -69
  464. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/eventloop.es.js.map +0 -1
  465. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/function.es.js +0 -124
  466. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/function.es.js.map +0 -1
  467. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/indexeddb.es.js +0 -92
  468. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/indexeddb.es.js.map +0 -1
  469. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/iterator.es.js +0 -38
  470. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/iterator.es.js.map +0 -1
  471. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/json.es.js +0 -7
  472. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/json.es.js.map +0 -1
  473. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.common.es.js +0 -99
  474. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.common.es.js.map +0 -1
  475. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.es.js +0 -288
  476. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.es.js.map +0 -1
  477. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/map.es.js +0 -47
  478. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/map.es.js.map +0 -1
  479. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/math.es.js +0 -37
  480. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/math.es.js.map +0 -1
  481. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/metric.es.js +0 -64
  482. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/metric.es.js.map +0 -1
  483. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/mutex.es.js +0 -19
  484. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/mutex.es.js.map +0 -1
  485. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/number.es.js +0 -31
  486. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/number.es.js.map +0 -1
  487. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/object.es.js +0 -72
  488. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/object.es.js.map +0 -1
  489. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/observable.es.js +0 -128
  490. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/observable.es.js.map +0 -1
  491. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/pair.es.js +0 -22
  492. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/pair.es.js.map +0 -1
  493. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/promise.es.js +0 -50
  494. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/promise.es.js.map +0 -1
  495. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/random.es.js +0 -24
  496. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/random.es.js.map +0 -1
  497. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/set.es.js +0 -11
  498. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/set.es.js.map +0 -1
  499. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/storage.es.js +0 -44
  500. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/storage.es.js.map +0 -1
  501. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/string.es.js +0 -95
  502. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/string.es.js.map +0 -1
  503. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/symbol.es.js +0 -7
  504. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/symbol.es.js.map +0 -1
  505. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/time.es.js +0 -28
  506. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/time.es.js.map +0 -1
  507. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/traits.es.js +0 -5
  508. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/traits.es.js.map +0 -1
  509. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/url.es.js +0 -20
  510. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/url.es.js.map +0 -1
  511. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/webcrypto.es.js +0 -7
  512. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/webcrypto.es.js.map +0 -1
  513. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/websocket.es.js +0 -113
  514. package/es/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/websocket.es.js.map +0 -1
  515. package/es/node_modules/.pnpm/quill-cursors@4.0.4/node_modules/quill-cursors/dist/quill-cursors.es.js +0 -1796
  516. package/es/node_modules/.pnpm/quill-cursors@4.0.4/node_modules/quill-cursors/dist/quill-cursors.es.js.map +0 -1
  517. package/es/node_modules/.pnpm/simple-peer@9.11.1/node_modules/simple-peer/simplepeer.min.es.js +0 -2620
  518. package/es/node_modules/.pnpm/simple-peer@9.11.1/node_modules/simple-peer/simplepeer.min.es.js.map +0 -1
  519. package/es/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.27/node_modules/y-indexeddb/src/y-indexeddb.es.js +0 -155
  520. package/es/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.27/node_modules/y-indexeddb/src/y-indexeddb.es.js.map +0 -1
  521. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/auth.es.js +0 -20
  522. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/auth.es.js.map +0 -1
  523. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/awareness.es.js +0 -232
  524. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/awareness.es.js.map +0 -1
  525. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/sync.es.js +0 -58
  526. package/es/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/sync.es.js.map +0 -1
  527. package/es/node_modules/.pnpm/y-quill@1.0.0_quill-cursors@4.0.4_quill@2.0.3_patch_hash_dnirvjhpzdmsvdidsclwslxxji__yjs@13.6.27/node_modules/y-quill/src/y-quill.es.js +0 -157
  528. package/es/node_modules/.pnpm/y-quill@1.0.0_quill-cursors@4.0.4_quill@2.0.3_patch_hash_dnirvjhpzdmsvdidsclwslxxji__yjs@13.6.27/node_modules/y-quill/src/y-quill.es.js.map +0 -1
  529. package/es/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/crypto.es.js +0 -94
  530. package/es/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/crypto.es.js.map +0 -1
  531. package/es/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/y-webrtc.es.js +0 -537
  532. package/es/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/y-webrtc.es.js.map +0 -1
  533. package/es/node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.27/node_modules/y-websocket/src/y-websocket.es.js +0 -380
  534. package/es/node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.27/node_modules/y-websocket/src/y-websocket.es.js.map +0 -1
  535. package/es/node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.es.js +0 -7653
  536. package/es/node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.es.js.map +0 -1
  537. package/es/themes/snow.es.js.map +0 -1
  538. package/es/tools/screenshot.es.js.map +0 -1
  539. package/es/ui/icons.config.es.js.map +0 -1
  540. package/es/ui/icons.es.js.map +0 -1
  541. package/es/utils/debounce.es.js.map +0 -1
  542. package/es/utils/method.es.js.map +0 -1
  543. package/lib/_virtual/_commonjs-dynamic-modules.cjs.js +0 -7
  544. package/lib/_virtual/_commonjs-dynamic-modules.cjs.js.map +0 -1
  545. package/lib/_virtual/_commonjsHelpers.cjs.js +0 -42
  546. package/lib/_virtual/_commonjsHelpers.cjs.js.map +0 -1
  547. package/lib/_virtual/quill-cursors.cjs.js +0 -5
  548. package/lib/_virtual/quill-cursors.cjs.js.map +0 -1
  549. package/lib/_virtual/simplepeer.min.cjs.js +0 -5
  550. package/lib/_virtual/simplepeer.min.cjs.js.map +0 -1
  551. package/lib/attributors/line-height.cjs.js.map +0 -1
  552. package/lib/config/base64-image.cjs.js.map +0 -1
  553. package/lib/config/editor.config.cjs.js.map +0 -1
  554. package/lib/config/editor.utils.cjs.js.map +0 -1
  555. package/lib/config/i18n/en-us.cjs.js.map +0 -1
  556. package/lib/config/i18n/zh-cn.cjs.js.map +0 -1
  557. package/lib/config/index.cjs.js.map +0 -1
  558. package/lib/core/fluent-editor.cjs.js.map +0 -1
  559. package/lib/fluent-editor.cjs.js.map +0 -1
  560. package/lib/formats/emoji.cjs.js.map +0 -1
  561. package/lib/formats/soft-break.cjs.js.map +0 -1
  562. package/lib/formats/strike.cjs.js.map +0 -1
  563. package/lib/formats/video.cjs.js.map +0 -1
  564. package/lib/modules/ai/constants.cjs.js.map +0 -1
  565. package/lib/modules/ai/icons.cjs.js.map +0 -1
  566. package/lib/modules/ai/index.cjs.js.map +0 -1
  567. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js +0 -93
  568. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +0 -1
  569. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +0 -12
  570. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +0 -1
  571. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js +0 -105
  572. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +0 -1
  573. package/lib/modules/collaborative-editing/module.cjs.js.map +0 -1
  574. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +0 -1
  575. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js +0 -99
  576. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +0 -1
  577. package/lib/modules/collaborative-editing/provider/websocket.cjs.js +0 -111
  578. package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +0 -1
  579. package/lib/modules/counter.cjs.js.map +0 -1
  580. package/lib/modules/custom-clipboard.cjs.js.map +0 -1
  581. package/lib/modules/custom-image/actions/action.cjs.js.map +0 -1
  582. package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +0 -1
  583. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +0 -1
  584. package/lib/modules/custom-image/blot-formatter.cjs.js.map +0 -1
  585. package/lib/modules/custom-image/image.cjs.js.map +0 -1
  586. package/lib/modules/custom-image/options.cjs.js.map +0 -1
  587. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +0 -1
  588. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +0 -1
  589. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +0 -1
  590. package/lib/modules/divider.cjs.js.map +0 -1
  591. package/lib/modules/emoji.cjs.js +0 -163
  592. package/lib/modules/emoji.cjs.js.map +0 -1
  593. package/lib/modules/file/formats/file.cjs.js.map +0 -1
  594. package/lib/modules/file/modules/file-bar.cjs.js.map +0 -1
  595. package/lib/modules/file/modules/file-module.cjs.js.map +0 -1
  596. package/lib/modules/link/formats/link.cjs.js.map +0 -1
  597. package/lib/modules/link/modules/tooltip.cjs.js.map +0 -1
  598. package/lib/modules/mathlive/formats.cjs.js.map +0 -1
  599. package/lib/modules/mathlive/tooltip.cjs.js.map +0 -1
  600. package/lib/modules/mention/constants.cjs.js.map +0 -1
  601. package/lib/modules/mention/mention-link.cjs.js.map +0 -1
  602. package/lib/modules/mention/mention.cjs.js.map +0 -1
  603. package/lib/modules/syntax.cjs.js.map +0 -1
  604. package/lib/modules/toolbar/better-picker.cjs.js.map +0 -1
  605. package/lib/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.cjs.js +0 -40145
  606. package/lib/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.cjs.js.map +0 -1
  607. package/lib/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.js +0 -938
  608. package/lib/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.js.map +0 -1
  609. package/lib/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.js +0 -624
  610. package/lib/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.js.map +0 -1
  611. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.js +0 -159
  612. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.js.map +0 -1
  613. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js +0 -174
  614. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js.map +0 -1
  615. package/lib/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.cjs.js +0 -2847
  616. package/lib/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.cjs.js.map +0 -1
  617. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/array.cjs.js +0 -112
  618. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/array.cjs.js.map +0 -1
  619. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/binary.cjs.js +0 -133
  620. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/binary.cjs.js.map +0 -1
  621. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/broadcastchannel.cjs.js +0 -59
  622. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/broadcastchannel.cjs.js.map +0 -1
  623. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/buffer.cjs.js +0 -75
  624. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/buffer.cjs.js.map +0 -1
  625. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/conditions.cjs.js +0 -5
  626. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/conditions.cjs.js.map +0 -1
  627. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/decoding.cjs.js +0 -422
  628. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/decoding.cjs.js.map +0 -1
  629. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/dom.cjs.js +0 -142
  630. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/dom.cjs.js.map +0 -1
  631. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/encoding.cjs.js +0 -484
  632. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/encoding.cjs.js.map +0 -1
  633. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/environment.cjs.js +0 -79
  634. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/environment.cjs.js.map +0 -1
  635. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/error.cjs.js +0 -13
  636. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/error.cjs.js.map +0 -1
  637. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/eventloop.cjs.js +0 -69
  638. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/eventloop.cjs.js.map +0 -1
  639. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/function.cjs.js +0 -124
  640. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/function.cjs.js.map +0 -1
  641. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/indexeddb.cjs.js +0 -92
  642. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/indexeddb.cjs.js.map +0 -1
  643. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/iterator.cjs.js +0 -38
  644. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/iterator.cjs.js.map +0 -1
  645. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/json.cjs.js +0 -7
  646. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/json.cjs.js.map +0 -1
  647. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.cjs.js +0 -288
  648. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.cjs.js.map +0 -1
  649. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.common.cjs.js +0 -99
  650. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/logging.common.cjs.js.map +0 -1
  651. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/map.cjs.js +0 -47
  652. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/map.cjs.js.map +0 -1
  653. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/math.cjs.js +0 -37
  654. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/math.cjs.js.map +0 -1
  655. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/metric.cjs.js +0 -64
  656. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/metric.cjs.js.map +0 -1
  657. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/mutex.cjs.js +0 -19
  658. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/mutex.cjs.js.map +0 -1
  659. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/number.cjs.js +0 -31
  660. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/number.cjs.js.map +0 -1
  661. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/object.cjs.js +0 -72
  662. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/object.cjs.js.map +0 -1
  663. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/observable.cjs.js +0 -128
  664. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/observable.cjs.js.map +0 -1
  665. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/pair.cjs.js +0 -22
  666. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/pair.cjs.js.map +0 -1
  667. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/promise.cjs.js +0 -50
  668. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/promise.cjs.js.map +0 -1
  669. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/random.cjs.js +0 -24
  670. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/random.cjs.js.map +0 -1
  671. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/set.cjs.js +0 -11
  672. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/set.cjs.js.map +0 -1
  673. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/storage.cjs.js +0 -44
  674. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/storage.cjs.js.map +0 -1
  675. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/string.cjs.js +0 -94
  676. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/string.cjs.js.map +0 -1
  677. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/symbol.cjs.js +0 -7
  678. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/symbol.cjs.js.map +0 -1
  679. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/time.cjs.js +0 -28
  680. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/time.cjs.js.map +0 -1
  681. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/traits.cjs.js +0 -5
  682. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/traits.cjs.js.map +0 -1
  683. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/url.cjs.js +0 -20
  684. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/url.cjs.js.map +0 -1
  685. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/webcrypto.cjs.js +0 -7
  686. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/webcrypto.cjs.js.map +0 -1
  687. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/websocket.cjs.js +0 -113
  688. package/lib/node_modules/.pnpm/lib0@0.2.114/node_modules/lib0/websocket.cjs.js.map +0 -1
  689. package/lib/node_modules/.pnpm/quill-cursors@4.0.4/node_modules/quill-cursors/dist/quill-cursors.cjs.js +0 -1796
  690. package/lib/node_modules/.pnpm/quill-cursors@4.0.4/node_modules/quill-cursors/dist/quill-cursors.cjs.js.map +0 -1
  691. package/lib/node_modules/.pnpm/simple-peer@9.11.1/node_modules/simple-peer/simplepeer.min.cjs.js +0 -2620
  692. package/lib/node_modules/.pnpm/simple-peer@9.11.1/node_modules/simple-peer/simplepeer.min.cjs.js.map +0 -1
  693. package/lib/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.27/node_modules/y-indexeddb/src/y-indexeddb.cjs.js +0 -155
  694. package/lib/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.27/node_modules/y-indexeddb/src/y-indexeddb.cjs.js.map +0 -1
  695. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/auth.cjs.js +0 -20
  696. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/auth.cjs.js.map +0 -1
  697. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/awareness.cjs.js +0 -232
  698. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/awareness.cjs.js.map +0 -1
  699. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/sync.cjs.js +0 -58
  700. package/lib/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/sync.cjs.js.map +0 -1
  701. package/lib/node_modules/.pnpm/y-quill@1.0.0_quill-cursors@4.0.4_quill@2.0.3_patch_hash_dnirvjhpzdmsvdidsclwslxxji__yjs@13.6.27/node_modules/y-quill/src/y-quill.cjs.js +0 -157
  702. package/lib/node_modules/.pnpm/y-quill@1.0.0_quill-cursors@4.0.4_quill@2.0.3_patch_hash_dnirvjhpzdmsvdidsclwslxxji__yjs@13.6.27/node_modules/y-quill/src/y-quill.cjs.js.map +0 -1
  703. package/lib/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/crypto.cjs.js +0 -94
  704. package/lib/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/crypto.cjs.js.map +0 -1
  705. package/lib/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/y-webrtc.cjs.js +0 -537
  706. package/lib/node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/y-webrtc.cjs.js.map +0 -1
  707. package/lib/node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.27/node_modules/y-websocket/src/y-websocket.cjs.js +0 -380
  708. package/lib/node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.27/node_modules/y-websocket/src/y-websocket.cjs.js.map +0 -1
  709. package/lib/node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.cjs.js +0 -7653
  710. package/lib/node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.cjs.js.map +0 -1
  711. package/lib/themes/snow.cjs.js.map +0 -1
  712. package/lib/tools/screenshot.cjs.js.map +0 -1
  713. package/lib/ui/icons.cjs.js.map +0 -1
  714. package/lib/ui/icons.config.cjs.js.map +0 -1
  715. package/lib/utils/debounce.cjs.js.map +0 -1
  716. package/lib/utils/method.cjs.js.map +0 -1
  717. package/types/attributors/font-size.d.ts +0 -1
  718. package/types/attributors/font-style.d.ts +0 -1
  719. package/types/attributors/index.d.ts +0 -4
  720. package/types/attributors/line-height.d.ts +0 -1
  721. package/types/attributors/text-indent.d.ts +0 -1
  722. package/types/config/base64-image.d.ts +0 -2
  723. package/types/config/editor.config.d.ts +0 -11
  724. package/types/config/editor.utils.d.ts +0 -40
  725. package/types/config/i18n/en-us.d.ts +0 -123
  726. package/types/config/i18n/zh-cn.d.ts +0 -123
  727. package/types/config/index.d.ts +0 -7
  728. package/types/config/types/editor-config.interface.d.ts +0 -15
  729. package/types/config/types/editor-modules.interface.d.ts +0 -42
  730. package/types/config/types/index.d.ts +0 -3
  731. package/types/config/types/type.d.ts +0 -2
  732. package/types/core/fluent-editor.d.ts +0 -14
  733. package/types/fluent-editor.d.ts +0 -3
  734. package/types/formats/emoji.d.ts +0 -9
  735. package/types/formats/index.d.ts +0 -4
  736. package/types/formats/soft-break.d.ts +0 -13
  737. package/types/formats/strike.d.ts +0 -9
  738. package/types/formats/video.d.ts +0 -14
  739. package/types/index.d.ts +0 -9
  740. package/types/modules/ai/constants.d.ts +0 -30
  741. package/types/modules/ai/icons.d.ts +0 -21
  742. package/types/modules/ai/index.d.ts +0 -97
  743. package/types/modules/ai/types.d.ts +0 -16
  744. package/types/modules/collaborative-editing/awareness/awareness.d.ts +0 -29
  745. package/types/modules/collaborative-editing/awareness/index.d.ts +0 -2
  746. package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +0 -3
  747. package/types/modules/collaborative-editing/collaborative-editing.d.ts +0 -25
  748. package/types/modules/collaborative-editing/index.d.ts +0 -2
  749. package/types/modules/collaborative-editing/module.d.ts +0 -12
  750. package/types/modules/collaborative-editing/provider/index.d.ts +0 -3
  751. package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +0 -26
  752. package/types/modules/collaborative-editing/provider/webrtc.d.ts +0 -37
  753. package/types/modules/collaborative-editing/provider/websocket.d.ts +0 -41
  754. package/types/modules/collaborative-editing/types.d.ts +0 -37
  755. package/types/modules/counter.d.ts +0 -24
  756. package/types/modules/custom-clipboard.d.ts +0 -26
  757. package/types/modules/custom-image/actions/action.d.ts +0 -9
  758. package/types/modules/custom-image/actions/custom-resize-action.d.ts +0 -24
  759. package/types/modules/custom-image/actions/delete-action.d.ts +0 -7
  760. package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +0 -17
  761. package/types/modules/custom-image/actions/index.d.ts +0 -6
  762. package/types/modules/custom-image/actions/toolbar-action.d.ts +0 -12
  763. package/types/modules/custom-image/actions/toolbar.d.ts +0 -20
  764. package/types/modules/custom-image/blot-formatter.d.ts +0 -24
  765. package/types/modules/custom-image/image.d.ts +0 -29
  766. package/types/modules/custom-image/index.d.ts +0 -4
  767. package/types/modules/custom-image/options.d.ts +0 -48
  768. package/types/modules/custom-image/specs/blot-spec.d.ts +0 -13
  769. package/types/modules/custom-image/specs/custom-image-spec.d.ts +0 -18
  770. package/types/modules/custom-image/specs/image-spec.d.ts +0 -9
  771. package/types/modules/custom-image/specs/index.d.ts +0 -3
  772. package/types/modules/custom-uploader.d.ts +0 -41
  773. package/types/modules/divider.d.ts +0 -9
  774. package/types/modules/emoji.d.ts +0 -34
  775. package/types/modules/file/formats/file.d.ts +0 -19
  776. package/types/modules/file/index.d.ts +0 -3
  777. package/types/modules/file/modules/file-bar.d.ts +0 -14
  778. package/types/modules/file/modules/file-module.d.ts +0 -10
  779. package/types/modules/i18n.d.ts +0 -15
  780. package/types/modules/index.d.ts +0 -16
  781. package/types/modules/link/formats/link.d.ts +0 -16
  782. package/types/modules/link/index.d.ts +0 -2
  783. package/types/modules/link/modules/tooltip.d.ts +0 -28
  784. package/types/modules/mathlive/formats.d.ts +0 -23
  785. package/types/modules/mathlive/index.d.ts +0 -3
  786. package/types/modules/mathlive/module.d.ts +0 -10
  787. package/types/modules/mathlive/tooltip.d.ts +0 -19
  788. package/types/modules/mention/constants.d.ts +0 -3
  789. package/types/modules/mention/index.d.ts +0 -2
  790. package/types/modules/mention/mention-link.d.ts +0 -17
  791. package/types/modules/mention/mention.d.ts +0 -54
  792. package/types/modules/shortcut-key/index.d.ts +0 -72
  793. package/types/modules/syntax.d.ts +0 -14
  794. package/types/modules/table-up/index.d.ts +0 -35
  795. package/types/modules/toolbar/better-picker.d.ts +0 -16
  796. package/types/modules/toolbar/better-toolbar.d.ts +0 -8
  797. package/types/modules/toolbar/index.d.ts +0 -3
  798. package/types/modules/toolbar/toolbar-tip.d.ts +0 -10
  799. package/types/themes/snow.d.ts +0 -12
  800. package/types/tools/format-painter.d.ts +0 -14
  801. package/types/tools/fullscreen.d.ts +0 -7
  802. package/types/tools/screenshot.d.ts +0 -20
  803. package/types/ui/icons.config.d.ts +0 -38
  804. package/types/ui/icons.d.ts +0 -6
  805. package/types/utils/debounce.d.ts +0 -6
  806. package/types/utils/image.d.ts +0 -1
  807. package/types/utils/is.d.ts +0 -6
  808. package/types/utils/method.d.ts +0 -6
  809. package/types/utils/scroll-lock.d.ts +0 -6
  810. /package/{es → dist/es}/attributors/font-size.es.js +0 -0
  811. /package/{es → dist/es}/attributors/font-size.es.js.map +0 -0
  812. /package/{es → dist/es}/attributors/font-style.es.js +0 -0
  813. /package/{es → dist/es}/attributors/font-style.es.js.map +0 -0
  814. /package/{es → dist/es}/attributors/index.es.js +0 -0
  815. /package/{es → dist/es}/attributors/index.es.js.map +0 -0
  816. /package/{es → dist/es}/attributors/line-height.es.js +0 -0
  817. /package/{es → dist/es}/attributors/text-indent.es.js +0 -0
  818. /package/{es → dist/es}/attributors/text-indent.es.js.map +0 -0
  819. /package/{es → dist/es}/config/base64-image.es.js +0 -0
  820. /package/{es → dist/es}/config/editor.config.es.js +0 -0
  821. /package/{es → dist/es}/config/editor.utils.es.js +0 -0
  822. /package/{es → dist/es}/config/i18n/en-us.es.js +0 -0
  823. /package/{es → dist/es}/config/i18n/zh-cn.es.js +0 -0
  824. /package/{es → dist/es}/config/index.es.js +0 -0
  825. /package/{es → dist/es}/config/types/editor-config.interface.es.js +0 -0
  826. /package/{es → dist/es}/config/types/editor-config.interface.es.js.map +0 -0
  827. /package/{es → dist/es}/config/types/editor-modules.interface.es.js +0 -0
  828. /package/{es → dist/es}/config/types/editor-modules.interface.es.js.map +0 -0
  829. /package/{es → dist/es}/config/types/index.es.js +0 -0
  830. /package/{es → dist/es}/config/types/index.es.js.map +0 -0
  831. /package/{es → dist/es}/config/types/type.es.js +0 -0
  832. /package/{es → dist/es}/config/types/type.es.js.map +0 -0
  833. /package/{es → dist/es}/core/fluent-editor.es.js +0 -0
  834. /package/{es → dist/es}/fluent-editor.es.js +0 -0
  835. /package/{es → dist/es}/formats/emoji.es.js +0 -0
  836. /package/{es → dist/es}/formats/index.es.js +0 -0
  837. /package/{es → dist/es}/formats/index.es.js.map +0 -0
  838. /package/{es → dist/es}/formats/soft-break.es.js +0 -0
  839. /package/{es → dist/es}/formats/strike.es.js +0 -0
  840. /package/{es → dist/es}/formats/video.es.js +0 -0
  841. /package/{es → dist/es}/index.es.js +0 -0
  842. /package/{es → dist/es}/index.es.js.map +0 -0
  843. /package/{es → dist/es}/modules/ai/constants.es.js +0 -0
  844. /package/{es → dist/es}/modules/ai/icons.es.js +0 -0
  845. /package/{es → dist/es}/modules/ai/index.es.js +0 -0
  846. /package/{es → dist/es}/modules/collaborative-editing/awareness/index.es.js +0 -0
  847. /package/{es → dist/es}/modules/collaborative-editing/awareness/index.es.js.map +0 -0
  848. /package/{es → dist/es}/modules/collaborative-editing/index.es.js +0 -0
  849. /package/{es → dist/es}/modules/collaborative-editing/index.es.js.map +0 -0
  850. /package/{es → dist/es}/modules/collaborative-editing/module.es.js +0 -0
  851. /package/{es → dist/es}/modules/collaborative-editing/provider/providerRegistry.es.js +0 -0
  852. /package/{es → dist/es}/modules/collaborative-editing/types.es.js +0 -0
  853. /package/{es → dist/es}/modules/collaborative-editing/types.es.js.map +0 -0
  854. /package/{es → dist/es}/modules/counter.es.js +0 -0
  855. /package/{es → dist/es}/modules/custom-clipboard.es.js +0 -0
  856. /package/{es → dist/es}/modules/custom-image/actions/action.es.js +0 -0
  857. /package/{es → dist/es}/modules/custom-image/actions/custom-resize-action.es.js +0 -0
  858. /package/{es → dist/es}/modules/custom-image/actions/delete-action.es.js +0 -0
  859. /package/{es → dist/es}/modules/custom-image/actions/image-toolbar-buttons.es.js +0 -0
  860. /package/{es → dist/es}/modules/custom-image/actions/image-toolbar-buttons.es.js.map +0 -0
  861. /package/{es → dist/es}/modules/custom-image/actions/index.es.js +0 -0
  862. /package/{es → dist/es}/modules/custom-image/actions/index.es.js.map +0 -0
  863. /package/{es → dist/es}/modules/custom-image/actions/toolbar-action.es.js +0 -0
  864. /package/{es → dist/es}/modules/custom-image/actions/toolbar-action.es.js.map +0 -0
  865. /package/{es → dist/es}/modules/custom-image/actions/toolbar.es.js +0 -0
  866. /package/{es → dist/es}/modules/custom-image/actions/toolbar.es.js.map +0 -0
  867. /package/{es → dist/es}/modules/custom-image/blot-formatter.es.js +0 -0
  868. /package/{es → dist/es}/modules/custom-image/image.es.js +0 -0
  869. /package/{es → dist/es}/modules/custom-image/index.es.js +0 -0
  870. /package/{es → dist/es}/modules/custom-image/index.es.js.map +0 -0
  871. /package/{es → dist/es}/modules/custom-image/options.es.js +0 -0
  872. /package/{es → dist/es}/modules/custom-image/specs/blot-spec.es.js +0 -0
  873. /package/{es → dist/es}/modules/custom-image/specs/custom-image-spec.es.js +0 -0
  874. /package/{es → dist/es}/modules/custom-image/specs/image-spec.es.js +0 -0
  875. /package/{es → dist/es}/modules/custom-image/specs/index.es.js +0 -0
  876. /package/{es → dist/es}/modules/custom-image/specs/index.es.js.map +0 -0
  877. /package/{es → dist/es}/modules/custom-uploader.es.js +0 -0
  878. /package/{es → dist/es}/modules/custom-uploader.es.js.map +0 -0
  879. /package/{es → dist/es}/modules/divider.es.js +0 -0
  880. /package/{es → dist/es}/modules/file/formats/file.es.js +0 -0
  881. /package/{es → dist/es}/modules/file/index.es.js +0 -0
  882. /package/{es → dist/es}/modules/file/index.es.js.map +0 -0
  883. /package/{es → dist/es}/modules/file/modules/file-bar.es.js +0 -0
  884. /package/{es → dist/es}/modules/file/modules/file-module.es.js +0 -0
  885. /package/{es → dist/es}/modules/i18n.es.js +0 -0
  886. /package/{es → dist/es}/modules/i18n.es.js.map +0 -0
  887. /package/{es → dist/es}/modules/index.es.js +0 -0
  888. /package/{es → dist/es}/modules/index.es.js.map +0 -0
  889. /package/{es → dist/es}/modules/link/formats/link.es.js +0 -0
  890. /package/{es → dist/es}/modules/link/index.es.js +0 -0
  891. /package/{es → dist/es}/modules/link/index.es.js.map +0 -0
  892. /package/{es → dist/es}/modules/link/modules/tooltip.es.js +0 -0
  893. /package/{es → dist/es}/modules/mathlive/formats.es.js +0 -0
  894. /package/{es → dist/es}/modules/mathlive/index.es.js +0 -0
  895. /package/{es → dist/es}/modules/mathlive/index.es.js.map +0 -0
  896. /package/{es → dist/es}/modules/mathlive/module.es.js +0 -0
  897. /package/{es → dist/es}/modules/mathlive/module.es.js.map +0 -0
  898. /package/{es → dist/es}/modules/mathlive/tooltip.es.js +0 -0
  899. /package/{es → dist/es}/modules/mention/constants.es.js +0 -0
  900. /package/{es → dist/es}/modules/mention/index.es.js +0 -0
  901. /package/{es → dist/es}/modules/mention/index.es.js.map +0 -0
  902. /package/{es → dist/es}/modules/mention/mention-link.es.js +0 -0
  903. /package/{es → dist/es}/modules/mention/mention.es.js +0 -0
  904. /package/{es → dist/es}/modules/shortcut-key/index.es.js +0 -0
  905. /package/{es → dist/es}/modules/shortcut-key/index.es.js.map +0 -0
  906. /package/{es → dist/es}/modules/syntax.es.js +0 -0
  907. /package/{es → dist/es}/modules/table-up/index.es.js +0 -0
  908. /package/{es → dist/es}/modules/table-up/index.es.js.map +0 -0
  909. /package/{es → dist/es}/modules/toolbar/better-picker.es.js +0 -0
  910. /package/{es → dist/es}/modules/toolbar/better-toolbar.es.js +0 -0
  911. /package/{es → dist/es}/modules/toolbar/better-toolbar.es.js.map +0 -0
  912. /package/{es → dist/es}/modules/toolbar/index.es.js +0 -0
  913. /package/{es → dist/es}/modules/toolbar/index.es.js.map +0 -0
  914. /package/{es → dist/es}/modules/toolbar/toolbar-tip.es.js +0 -0
  915. /package/{es → dist/es}/modules/toolbar/toolbar-tip.es.js.map +0 -0
  916. /package/{es → dist/es}/themes/snow.es.js +0 -0
  917. /package/{es → dist/es}/tools/format-painter.es.js +0 -0
  918. /package/{es → dist/es}/tools/format-painter.es.js.map +0 -0
  919. /package/{es → dist/es}/tools/fullscreen.es.js +0 -0
  920. /package/{es → dist/es}/tools/fullscreen.es.js.map +0 -0
  921. /package/{es → dist/es}/tools/screenshot.es.js +0 -0
  922. /package/{es → dist/es}/ui/icons.config.es.js +0 -0
  923. /package/{es → dist/es}/ui/icons.es.js +0 -0
  924. /package/{es → dist/es}/utils/debounce.es.js +0 -0
  925. /package/{es → dist/es}/utils/image.es.js +0 -0
  926. /package/{es → dist/es}/utils/image.es.js.map +0 -0
  927. /package/{es → dist/es}/utils/is.es.js +0 -0
  928. /package/{es → dist/es}/utils/is.es.js.map +0 -0
  929. /package/{es → dist/es}/utils/method.es.js +0 -0
  930. /package/{es → dist/es}/utils/scroll-lock.es.js +0 -0
  931. /package/{es → dist/es}/utils/scroll-lock.es.js.map +0 -0
  932. /package/{lib → dist/lib}/attributors/font-size.cjs.js +0 -0
  933. /package/{lib → dist/lib}/attributors/font-size.cjs.js.map +0 -0
  934. /package/{lib → dist/lib}/attributors/font-style.cjs.js +0 -0
  935. /package/{lib → dist/lib}/attributors/font-style.cjs.js.map +0 -0
  936. /package/{lib → dist/lib}/attributors/index.cjs.js +0 -0
  937. /package/{lib → dist/lib}/attributors/index.cjs.js.map +0 -0
  938. /package/{lib → dist/lib}/attributors/line-height.cjs.js +0 -0
  939. /package/{lib → dist/lib}/attributors/text-indent.cjs.js +0 -0
  940. /package/{lib → dist/lib}/attributors/text-indent.cjs.js.map +0 -0
  941. /package/{lib → dist/lib}/config/base64-image.cjs.js +0 -0
  942. /package/{lib → dist/lib}/config/editor.config.cjs.js +0 -0
  943. /package/{lib → dist/lib}/config/editor.utils.cjs.js +0 -0
  944. /package/{lib → dist/lib}/config/i18n/en-us.cjs.js +0 -0
  945. /package/{lib → dist/lib}/config/i18n/zh-cn.cjs.js +0 -0
  946. /package/{lib → dist/lib}/config/index.cjs.js +0 -0
  947. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js +0 -0
  948. /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js.map +0 -0
  949. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js +0 -0
  950. /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js.map +0 -0
  951. /package/{lib → dist/lib}/config/types/index.cjs.js +0 -0
  952. /package/{lib → dist/lib}/config/types/index.cjs.js.map +0 -0
  953. /package/{lib → dist/lib}/config/types/type.cjs.js +0 -0
  954. /package/{lib → dist/lib}/config/types/type.cjs.js.map +0 -0
  955. /package/{lib → dist/lib}/core/fluent-editor.cjs.js +0 -0
  956. /package/{lib → dist/lib}/fluent-editor.cjs.js +0 -0
  957. /package/{lib → dist/lib}/formats/emoji.cjs.js +0 -0
  958. /package/{lib → dist/lib}/formats/index.cjs.js +0 -0
  959. /package/{lib → dist/lib}/formats/index.cjs.js.map +0 -0
  960. /package/{lib → dist/lib}/formats/soft-break.cjs.js +0 -0
  961. /package/{lib → dist/lib}/formats/strike.cjs.js +0 -0
  962. /package/{lib → dist/lib}/formats/video.cjs.js +0 -0
  963. /package/{lib → dist/lib}/index.cjs.js +0 -0
  964. /package/{lib → dist/lib}/index.cjs.js.map +0 -0
  965. /package/{lib → dist/lib}/modules/ai/constants.cjs.js +0 -0
  966. /package/{lib → dist/lib}/modules/ai/icons.cjs.js +0 -0
  967. /package/{lib → dist/lib}/modules/ai/index.cjs.js +0 -0
  968. /package/{lib → dist/lib}/modules/collaborative-editing/awareness/index.cjs.js +0 -0
  969. /package/{lib → dist/lib}/modules/collaborative-editing/awareness/index.cjs.js.map +0 -0
  970. /package/{lib → dist/lib}/modules/collaborative-editing/index.cjs.js +0 -0
  971. /package/{lib → dist/lib}/modules/collaborative-editing/index.cjs.js.map +0 -0
  972. /package/{lib → dist/lib}/modules/collaborative-editing/module.cjs.js +0 -0
  973. /package/{lib → dist/lib}/modules/collaborative-editing/provider/providerRegistry.cjs.js +0 -0
  974. /package/{lib → dist/lib}/modules/collaborative-editing/types.cjs.js +0 -0
  975. /package/{lib → dist/lib}/modules/collaborative-editing/types.cjs.js.map +0 -0
  976. /package/{lib → dist/lib}/modules/counter.cjs.js +0 -0
  977. /package/{lib → dist/lib}/modules/custom-clipboard.cjs.js +0 -0
  978. /package/{lib → dist/lib}/modules/custom-image/actions/action.cjs.js +0 -0
  979. /package/{lib → dist/lib}/modules/custom-image/actions/custom-resize-action.cjs.js +0 -0
  980. /package/{lib → dist/lib}/modules/custom-image/actions/delete-action.cjs.js +0 -0
  981. /package/{lib → dist/lib}/modules/custom-image/actions/image-toolbar-buttons.cjs.js +0 -0
  982. /package/{lib → dist/lib}/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +0 -0
  983. /package/{lib → dist/lib}/modules/custom-image/actions/index.cjs.js +0 -0
  984. /package/{lib → dist/lib}/modules/custom-image/actions/index.cjs.js.map +0 -0
  985. /package/{lib → dist/lib}/modules/custom-image/actions/toolbar-action.cjs.js +0 -0
  986. /package/{lib → dist/lib}/modules/custom-image/actions/toolbar-action.cjs.js.map +0 -0
  987. /package/{lib → dist/lib}/modules/custom-image/actions/toolbar.cjs.js +0 -0
  988. /package/{lib → dist/lib}/modules/custom-image/actions/toolbar.cjs.js.map +0 -0
  989. /package/{lib → dist/lib}/modules/custom-image/blot-formatter.cjs.js +0 -0
  990. /package/{lib → dist/lib}/modules/custom-image/image.cjs.js +0 -0
  991. /package/{lib → dist/lib}/modules/custom-image/index.cjs.js +0 -0
  992. /package/{lib → dist/lib}/modules/custom-image/index.cjs.js.map +0 -0
  993. /package/{lib → dist/lib}/modules/custom-image/options.cjs.js +0 -0
  994. /package/{lib → dist/lib}/modules/custom-image/specs/blot-spec.cjs.js +0 -0
  995. /package/{lib → dist/lib}/modules/custom-image/specs/custom-image-spec.cjs.js +0 -0
  996. /package/{lib → dist/lib}/modules/custom-image/specs/image-spec.cjs.js +0 -0
  997. /package/{lib → dist/lib}/modules/custom-image/specs/index.cjs.js +0 -0
  998. /package/{lib → dist/lib}/modules/custom-image/specs/index.cjs.js.map +0 -0
  999. /package/{lib → dist/lib}/modules/custom-uploader.cjs.js +0 -0
  1000. /package/{lib → dist/lib}/modules/custom-uploader.cjs.js.map +0 -0
  1001. /package/{lib → dist/lib}/modules/divider.cjs.js +0 -0
  1002. /package/{lib → dist/lib}/modules/file/formats/file.cjs.js +0 -0
  1003. /package/{lib → dist/lib}/modules/file/index.cjs.js +0 -0
  1004. /package/{lib → dist/lib}/modules/file/index.cjs.js.map +0 -0
  1005. /package/{lib → dist/lib}/modules/file/modules/file-bar.cjs.js +0 -0
  1006. /package/{lib → dist/lib}/modules/file/modules/file-module.cjs.js +0 -0
  1007. /package/{lib → dist/lib}/modules/i18n.cjs.js +0 -0
  1008. /package/{lib → dist/lib}/modules/i18n.cjs.js.map +0 -0
  1009. /package/{lib → dist/lib}/modules/index.cjs.js +0 -0
  1010. /package/{lib → dist/lib}/modules/index.cjs.js.map +0 -0
  1011. /package/{lib → dist/lib}/modules/link/formats/link.cjs.js +0 -0
  1012. /package/{lib → dist/lib}/modules/link/index.cjs.js +0 -0
  1013. /package/{lib → dist/lib}/modules/link/index.cjs.js.map +0 -0
  1014. /package/{lib → dist/lib}/modules/link/modules/tooltip.cjs.js +0 -0
  1015. /package/{lib → dist/lib}/modules/mathlive/formats.cjs.js +0 -0
  1016. /package/{lib → dist/lib}/modules/mathlive/index.cjs.js +0 -0
  1017. /package/{lib → dist/lib}/modules/mathlive/index.cjs.js.map +0 -0
  1018. /package/{lib → dist/lib}/modules/mathlive/module.cjs.js +0 -0
  1019. /package/{lib → dist/lib}/modules/mathlive/module.cjs.js.map +0 -0
  1020. /package/{lib → dist/lib}/modules/mathlive/tooltip.cjs.js +0 -0
  1021. /package/{lib → dist/lib}/modules/mention/constants.cjs.js +0 -0
  1022. /package/{lib → dist/lib}/modules/mention/index.cjs.js +0 -0
  1023. /package/{lib → dist/lib}/modules/mention/index.cjs.js.map +0 -0
  1024. /package/{lib → dist/lib}/modules/mention/mention-link.cjs.js +0 -0
  1025. /package/{lib → dist/lib}/modules/mention/mention.cjs.js +0 -0
  1026. /package/{lib → dist/lib}/modules/shortcut-key/index.cjs.js +0 -0
  1027. /package/{lib → dist/lib}/modules/shortcut-key/index.cjs.js.map +0 -0
  1028. /package/{lib → dist/lib}/modules/syntax.cjs.js +0 -0
  1029. /package/{lib → dist/lib}/modules/table-up/index.cjs.js +0 -0
  1030. /package/{lib → dist/lib}/modules/table-up/index.cjs.js.map +0 -0
  1031. /package/{lib → dist/lib}/modules/toolbar/better-picker.cjs.js +0 -0
  1032. /package/{lib → dist/lib}/modules/toolbar/better-toolbar.cjs.js +0 -0
  1033. /package/{lib → dist/lib}/modules/toolbar/better-toolbar.cjs.js.map +0 -0
  1034. /package/{lib → dist/lib}/modules/toolbar/index.cjs.js +0 -0
  1035. /package/{lib → dist/lib}/modules/toolbar/index.cjs.js.map +0 -0
  1036. /package/{lib → dist/lib}/modules/toolbar/toolbar-tip.cjs.js +0 -0
  1037. /package/{lib → dist/lib}/modules/toolbar/toolbar-tip.cjs.js.map +0 -0
  1038. /package/{lib → dist/lib}/themes/snow.cjs.js +0 -0
  1039. /package/{lib → dist/lib}/tools/format-painter.cjs.js +0 -0
  1040. /package/{lib → dist/lib}/tools/format-painter.cjs.js.map +0 -0
  1041. /package/{lib → dist/lib}/tools/fullscreen.cjs.js +0 -0
  1042. /package/{lib → dist/lib}/tools/fullscreen.cjs.js.map +0 -0
  1043. /package/{lib → dist/lib}/tools/screenshot.cjs.js +0 -0
  1044. /package/{lib → dist/lib}/ui/icons.cjs.js +0 -0
  1045. /package/{lib → dist/lib}/ui/icons.config.cjs.js +0 -0
  1046. /package/{lib → dist/lib}/utils/debounce.cjs.js +0 -0
  1047. /package/{lib → dist/lib}/utils/image.cjs.js +0 -0
  1048. /package/{lib → dist/lib}/utils/image.cjs.js.map +0 -0
  1049. /package/{lib → dist/lib}/utils/is.cjs.js +0 -0
  1050. /package/{lib → dist/lib}/utils/is.cjs.js.map +0 -0
  1051. /package/{lib → dist/lib}/utils/method.cjs.js +0 -0
  1052. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js +0 -0
  1053. /package/{lib → dist/lib}/utils/scroll-lock.cjs.js.map +0 -0
  1054. /package/{style.css → dist/style.css} +0 -0
@@ -1,99 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { WebrtcProvider } from "../../../node_modules/.pnpm/y-webrtc@10.3.0_yjs@13.6.27/node_modules/y-webrtc/src/y-webrtc.es.js";
5
- import { Doc } from "../../../node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.es.js";
6
- class WebRTCProviderWrapper {
7
- constructor({
8
- awareness,
9
- doc,
10
- options,
11
- onConnect,
12
- onDisconnect,
13
- onError,
14
- onSyncChange
15
- }) {
16
- __publicField(this, "provider");
17
- __publicField(this, "_isConnected", false);
18
- __publicField(this, "_isSynced", false);
19
- __publicField(this, "onConnect");
20
- __publicField(this, "onDisconnect");
21
- __publicField(this, "onError");
22
- __publicField(this, "onSyncChange");
23
- __publicField(this, "document");
24
- __publicField(this, "awareness");
25
- __publicField(this, "type");
26
- __publicField(this, "connect", () => {
27
- try {
28
- this.provider.connect();
29
- } catch (error) {
30
- console.warn("[yjs] Error connecting WebRTC provider:", error);
31
- }
32
- });
33
- __publicField(this, "destroy", () => {
34
- try {
35
- this.provider.destroy();
36
- } catch (error) {
37
- console.warn("[yjs] Error destroying WebRTC provider:", error);
38
- }
39
- });
40
- __publicField(this, "disconnect", () => {
41
- try {
42
- this.provider.disconnect();
43
- this._isConnected = false;
44
- this._isSynced = false;
45
- } catch (error) {
46
- console.warn("[yjs] Error disconnecting WebRTC provider:", error);
47
- }
48
- });
49
- this.onConnect = onConnect;
50
- this.onDisconnect = onDisconnect;
51
- this.onError = onError;
52
- this.onSyncChange = onSyncChange;
53
- this.document = doc || new Doc();
54
- try {
55
- this.provider = new WebrtcProvider(options.roomName, this.document, {
56
- awareness,
57
- ...options
58
- });
59
- this.provider.on("status", (status) => {
60
- var _a, _b, _c, _d;
61
- const wasConnected = this._isConnected;
62
- this._isConnected = status.connected;
63
- if (status.connected) {
64
- if (!wasConnected) {
65
- (_a = this.onConnect) == null ? void 0 : _a.call(this);
66
- }
67
- if (!this._isSynced) {
68
- this._isSynced = true;
69
- (_b = this.onSyncChange) == null ? void 0 : _b.call(this, true);
70
- }
71
- } else {
72
- if (wasConnected) {
73
- (_c = this.onDisconnect) == null ? void 0 : _c.call(this);
74
- if (this._isSynced) {
75
- this._isSynced = false;
76
- (_d = this.onSyncChange) == null ? void 0 : _d.call(this, false);
77
- }
78
- }
79
- }
80
- });
81
- } catch (error) {
82
- console.warn("[yjs] Error creating WebRTC provider:", error);
83
- onError == null ? void 0 : onError(error instanceof Error ? error : new Error(String(error)));
84
- }
85
- }
86
- get isConnected() {
87
- return this._isConnected;
88
- }
89
- get isSynced() {
90
- return this._isSynced;
91
- }
92
- getProvider() {
93
- return this.provider;
94
- }
95
- }
96
- export {
97
- WebRTCProviderWrapper
98
- };
99
- //# sourceMappingURL=webrtc.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webrtc.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/webrtc.ts"],"sourcesContent":["import type { Awareness } from 'y-protocols/awareness'\r\nimport type { ProviderEventHandlers } from '../types'\r\nimport type { UnifiedProvider } from './providerRegistry'\r\nimport { WebrtcProvider } from 'y-webrtc'\r\nimport * as Y from 'yjs'\r\n\r\nexport interface WebRTCProviderOptions {\r\n roomName: string\r\n filterBcConns?: boolean\r\n maxConns?: number\r\n password?: string\r\n peerOpts?: Record<string, unknown>\r\n signaling?: string[]\r\n}\r\n\r\nexport class WebRTCProviderWrapper implements UnifiedProvider {\r\n private provider: WebrtcProvider\r\n private _isConnected = false\r\n private _isSynced = false\r\n\r\n onConnect?: () => void\r\n onDisconnect?: () => void\r\n onError?: (error: Error) => void\r\n onSyncChange?: (isSynced: boolean) => void\r\n\r\n document: Y.Doc\r\n awareness: Awareness\r\n type: 'webrtc'\r\n\r\n connect = () => {\r\n try {\r\n this.provider.connect()\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error connecting WebRTC provider:', error)\r\n }\r\n }\r\n\r\n destroy = () => {\r\n try {\r\n this.provider.destroy()\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error destroying WebRTC provider:', error)\r\n }\r\n }\r\n\r\n disconnect = () => {\r\n try {\r\n this.provider.disconnect()\r\n this._isConnected = false\r\n this._isSynced = false\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error disconnecting WebRTC provider:', error)\r\n }\r\n }\r\n\r\n constructor({\r\n awareness,\r\n doc,\r\n options,\r\n onConnect,\r\n onDisconnect,\r\n onError,\r\n onSyncChange,\r\n }: {\r\n options: WebRTCProviderOptions\r\n awareness?: Awareness\r\n doc?: Y.Doc\r\n } & ProviderEventHandlers) {\r\n this.onConnect = onConnect\r\n this.onDisconnect = onDisconnect\r\n this.onError = onError\r\n this.onSyncChange = onSyncChange\r\n\r\n this.document = doc || new Y.Doc()\r\n try {\r\n this.provider = new WebrtcProvider(options.roomName, this.document, {\r\n awareness,\r\n ...options,\r\n })\r\n\r\n this.provider.on('status', (status: { connected: boolean }) => {\r\n const wasConnected = this._isConnected\r\n this._isConnected = status.connected\r\n if (status.connected) {\r\n if (!wasConnected) {\r\n this.onConnect?.()\r\n }\r\n if (!this._isSynced) {\r\n this._isSynced = true\r\n this.onSyncChange?.(true)\r\n }\r\n }\r\n else {\r\n if (wasConnected) {\r\n this.onDisconnect?.()\r\n\r\n if (this._isSynced) {\r\n this._isSynced = false\r\n this.onSyncChange?.(false)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error creating WebRTC provider:', error)\r\n onError?.(error instanceof Error ? error : new Error(String(error)))\r\n }\r\n }\r\n\r\n get isConnected() {\r\n return this._isConnected\r\n }\r\n\r\n get isSynced() {\r\n return this._isSynced\r\n }\r\n\r\n getProvider() {\r\n return this.provider\r\n }\r\n}\r\n"],"names":["Y.Doc"],"mappings":";;;;;AAeO,MAAM,sBAAiD;AAAA,EA2C5D,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAKyB;AAtDnB;AACA,wCAAe;AACf,qCAAY;AAEpB;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA,mCAAU,MAAM;AACV,UAAA;AACF,aAAK,SAAS,QAAQ;AAAA,eAEjB,OAAO;AACJ,gBAAA,KAAK,2CAA2C,KAAK;AAAA,MAAA;AAAA,IAEjE;AAEA,mCAAU,MAAM;AACV,UAAA;AACF,aAAK,SAAS,QAAQ;AAAA,eAEjB,OAAO;AACJ,gBAAA,KAAK,2CAA2C,KAAK;AAAA,MAAA;AAAA,IAEjE;AAEA,sCAAa,MAAM;AACb,UAAA;AACF,aAAK,SAAS,WAAW;AACzB,aAAK,eAAe;AACpB,aAAK,YAAY;AAAA,eAEZ,OAAO;AACJ,gBAAA,KAAK,8CAA8C,KAAK;AAAA,MAAA;AAAA,IAEpE;AAeE,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,UAAU;AACf,SAAK,eAAe;AAEpB,SAAK,WAAW,OAAO,IAAIA,IAAM;AAC7B,QAAA;AACF,WAAK,WAAW,IAAI,eAAe,QAAQ,UAAU,KAAK,UAAU;AAAA,QAClE;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAED,WAAK,SAAS,GAAG,UAAU,CAAC,WAAmC;;AAC7D,cAAM,eAAe,KAAK;AAC1B,aAAK,eAAe,OAAO;AAC3B,YAAI,OAAO,WAAW;AACpB,cAAI,CAAC,cAAc;AACjB,uBAAK,cAAL;AAAA,UAAiB;AAEf,cAAA,CAAC,KAAK,WAAW;AACnB,iBAAK,YAAY;AACjB,uBAAK,iBAAL,8BAAoB;AAAA,UAAI;AAAA,QAC1B,OAEG;AACH,cAAI,cAAc;AAChB,uBAAK,iBAAL;AAEA,gBAAI,KAAK,WAAW;AAClB,mBAAK,YAAY;AACjB,yBAAK,iBAAL,8BAAoB;AAAA,YAAK;AAAA,UAC3B;AAAA,QACF;AAAA,MACF,CACD;AAAA,aAEI,OAAO;AACJ,cAAA,KAAK,yCAAyC,KAAK;AACjD,yCAAA,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,IAAC;AAAA,EACrE;AAAA,EAGF,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,cAAc;AACZ,WAAO,KAAK;AAAA,EAAA;AAEhB;"}
@@ -1,111 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { Awareness } from "../../../node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.27/node_modules/y-protocols/awareness.es.js";
5
- import { WebsocketProvider } from "../../../node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.27/node_modules/y-websocket/src/y-websocket.es.js";
6
- import { Doc } from "../../../node_modules/.pnpm/yjs@13.6.27/node_modules/yjs/dist/yjs.es.js";
7
- class WebsocketProviderWrapper {
8
- constructor({
9
- awareness,
10
- doc,
11
- options,
12
- onConnect,
13
- onDisconnect,
14
- onError,
15
- onSyncChange
16
- }) {
17
- __publicField(this, "provider");
18
- __publicField(this, "_isConnected", false);
19
- __publicField(this, "_isSynced", false);
20
- __publicField(this, "onConnect");
21
- __publicField(this, "onDisconnect");
22
- __publicField(this, "onError");
23
- __publicField(this, "onSyncChange");
24
- __publicField(this, "document");
25
- __publicField(this, "awareness");
26
- __publicField(this, "type");
27
- __publicField(this, "connect", () => {
28
- try {
29
- this.provider.connect();
30
- } catch (error) {
31
- console.warn("[yjs] Error connecting WebSocket provider:", error);
32
- }
33
- });
34
- __publicField(this, "destroy", () => {
35
- try {
36
- this.provider.destroy();
37
- } catch (error) {
38
- console.warn("[yjs] Error destroying WebSocket provider:", error);
39
- }
40
- });
41
- __publicField(this, "disconnect", () => {
42
- var _a;
43
- try {
44
- this.provider.disconnect();
45
- const wasSynced = this._isSynced;
46
- this._isConnected = false;
47
- this._isSynced = false;
48
- if (wasSynced) {
49
- (_a = this.onSyncChange) == null ? void 0 : _a.call(this, false);
50
- }
51
- } catch (error) {
52
- console.warn("[yjs] Error disconnecting WebSocket provider:", error);
53
- }
54
- });
55
- this.onConnect = onConnect;
56
- this.onDisconnect = onDisconnect;
57
- this.onError = onError;
58
- this.onSyncChange = onSyncChange;
59
- this.document = doc || new Doc();
60
- this.awareness = awareness ?? new Awareness(this.document);
61
- try {
62
- this.provider = new WebsocketProvider(
63
- options.serverUrl,
64
- options.roomName,
65
- this.document,
66
- {
67
- awareness: this.awareness,
68
- ...options
69
- }
70
- );
71
- this.provider.on("status", (event) => {
72
- var _a, _b, _c, _d;
73
- const wasConnected = this._isConnected;
74
- this._isConnected = event.status === "connected";
75
- if (event.status === "connected") {
76
- if (!wasConnected) {
77
- (_a = this.onConnect) == null ? void 0 : _a.call(this);
78
- }
79
- if (!this._isSynced) {
80
- this._isSynced = true;
81
- (_b = this.onSyncChange) == null ? void 0 : _b.call(this, true);
82
- }
83
- } else if (event.status === "disconnected") {
84
- if (wasConnected) {
85
- (_c = this.onDisconnect) == null ? void 0 : _c.call(this);
86
- if (this._isSynced) {
87
- this._isSynced = false;
88
- (_d = this.onSyncChange) == null ? void 0 : _d.call(this, false);
89
- }
90
- }
91
- }
92
- });
93
- } catch (error) {
94
- console.warn("[yjs] Error creating WebSocket provider:", error);
95
- onError == null ? void 0 : onError(error instanceof Error ? error : new Error(String(error)));
96
- }
97
- }
98
- get isConnected() {
99
- return this._isConnected;
100
- }
101
- get isSynced() {
102
- return this._isSynced;
103
- }
104
- getProvider() {
105
- return this.provider;
106
- }
107
- }
108
- export {
109
- WebsocketProviderWrapper
110
- };
111
- //# sourceMappingURL=websocket.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/websocket.ts"],"sourcesContent":["import type { ProviderEventHandlers } from '../types'\r\nimport type { UnifiedProvider } from './providerRegistry'\r\nimport { Awareness } from 'y-protocols/awareness'\r\nimport { WebsocketProvider } from 'y-websocket'\r\nimport * as Y from 'yjs'\r\n\r\nexport interface WebsocketProviderOptions {\r\n serverUrl: string\r\n roomName: string\r\n connect?: boolean\r\n awareness?: any\r\n params?: Record<string, string>\r\n protocols?: string[]\r\n WebSocketPolyfill?: typeof WebSocket\r\n resyncInterval?: number\r\n maxBackoffTime?: number\r\n disableBc?: boolean\r\n}\r\n\r\nexport class WebsocketProviderWrapper implements UnifiedProvider {\r\n private provider: WebsocketProvider\r\n\r\n private _isConnected = false\r\n private _isSynced = false\r\n\r\n onConnect?: () => void\r\n onDisconnect?: () => void\r\n onError?: (error: Error) => void\r\n onSyncChange?: (isSynced: boolean) => void\r\n\r\n document: Y.Doc\r\n awareness: Awareness\r\n type: 'websocket'\r\n\r\n connect = () => {\r\n try {\r\n this.provider.connect()\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error connecting WebSocket provider:', error)\r\n }\r\n }\r\n\r\n destroy = () => {\r\n try {\r\n this.provider.destroy()\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error destroying WebSocket provider:', error)\r\n }\r\n }\r\n\r\n disconnect = () => {\r\n try {\r\n this.provider.disconnect()\r\n const wasSynced = this._isSynced\r\n\r\n this._isConnected = false\r\n this._isSynced = false\r\n\r\n if (wasSynced) {\r\n this.onSyncChange?.(false)\r\n }\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error disconnecting WebSocket provider:', error)\r\n }\r\n }\r\n\r\n constructor({\r\n awareness,\r\n doc,\r\n options,\r\n onConnect,\r\n onDisconnect,\r\n onError,\r\n onSyncChange,\r\n }: {\r\n options: WebsocketProviderOptions\r\n awareness?: Awareness\r\n doc?: Y.Doc\r\n } & ProviderEventHandlers) {\r\n this.onConnect = onConnect\r\n this.onDisconnect = onDisconnect\r\n this.onError = onError\r\n this.onSyncChange = onSyncChange\r\n\r\n this.document = doc || new Y.Doc()\r\n this.awareness = awareness ?? new Awareness(this.document)\r\n try {\r\n this.provider = new WebsocketProvider(\r\n options.serverUrl,\r\n options.roomName,\r\n this.document,\r\n {\r\n awareness: this.awareness,\r\n ...options,\r\n },\r\n )\r\n\r\n this.provider.on('status', (event: { status: 'connected' | 'disconnected' | 'connecting' }) => {\r\n const wasConnected = this._isConnected\r\n this._isConnected = event.status === 'connected'\r\n\r\n if (event.status === 'connected') {\r\n if (!wasConnected) {\r\n this.onConnect?.()\r\n }\r\n if (!this._isSynced) {\r\n this._isSynced = true\r\n this.onSyncChange?.(true)\r\n }\r\n }\r\n else if (event.status === 'disconnected') {\r\n if (wasConnected) {\r\n this.onDisconnect?.()\r\n if (this._isSynced) {\r\n this._isSynced = false\r\n this.onSyncChange?.(false)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n catch (error) {\r\n console.warn('[yjs] Error creating WebSocket provider:', error)\r\n onError?.(error instanceof Error ? error : new Error(String(error)))\r\n }\r\n }\r\n\r\n get isConnected() {\r\n return this._isConnected\r\n }\r\n\r\n get isSynced() {\r\n return this._isSynced\r\n }\r\n\r\n getProvider() {\r\n return this.provider\r\n }\r\n}\r\n"],"names":["Y.Doc"],"mappings":";;;;;;AAmBO,MAAM,yBAAoD;AAAA,EAkD/D,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAKyB;AA7DnB;AAEA,wCAAe;AACf,qCAAY;AAEpB;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA,mCAAU,MAAM;AACV,UAAA;AACF,aAAK,SAAS,QAAQ;AAAA,eAEjB,OAAO;AACJ,gBAAA,KAAK,8CAA8C,KAAK;AAAA,MAAA;AAAA,IAEpE;AAEA,mCAAU,MAAM;AACV,UAAA;AACF,aAAK,SAAS,QAAQ;AAAA,eAEjB,OAAO;AACJ,gBAAA,KAAK,8CAA8C,KAAK;AAAA,MAAA;AAAA,IAEpE;AAEA,sCAAa,MAAM;;AACb,UAAA;AACF,aAAK,SAAS,WAAW;AACzB,cAAM,YAAY,KAAK;AAEvB,aAAK,eAAe;AACpB,aAAK,YAAY;AAEjB,YAAI,WAAW;AACb,qBAAK,iBAAL,8BAAoB;AAAA,QAAK;AAAA,eAGtB,OAAO;AACJ,gBAAA,KAAK,iDAAiD,KAAK;AAAA,MAAA;AAAA,IAEvE;AAeE,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,UAAU;AACf,SAAK,eAAe;AAEpB,SAAK,WAAW,OAAO,IAAIA,IAAM;AACjC,SAAK,YAAY,aAAa,IAAI,UAAU,KAAK,QAAQ;AACrD,QAAA;AACF,WAAK,WAAW,IAAI;AAAA,QAClB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,KAAK;AAAA,QACL;AAAA,UACE,WAAW,KAAK;AAAA,UAChB,GAAG;AAAA,QAAA;AAAA,MAEP;AAEA,WAAK,SAAS,GAAG,UAAU,CAAC,UAAmE;;AAC7F,cAAM,eAAe,KAAK;AACrB,aAAA,eAAe,MAAM,WAAW;AAEjC,YAAA,MAAM,WAAW,aAAa;AAChC,cAAI,CAAC,cAAc;AACjB,uBAAK,cAAL;AAAA,UAAiB;AAEf,cAAA,CAAC,KAAK,WAAW;AACnB,iBAAK,YAAY;AACjB,uBAAK,iBAAL,8BAAoB;AAAA,UAAI;AAAA,QAC1B,WAEO,MAAM,WAAW,gBAAgB;AACxC,cAAI,cAAc;AAChB,uBAAK,iBAAL;AACA,gBAAI,KAAK,WAAW;AAClB,mBAAK,YAAY;AACjB,yBAAK,iBAAL,8BAAoB;AAAA,YAAK;AAAA,UAC3B;AAAA,QACF;AAAA,MACF,CACD;AAAA,aAEI,OAAO;AACJ,cAAA,KAAK,4CAA4C,KAAK;AACpD,yCAAA,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,IAAC;AAAA,EACrE;AAAA,EAGF,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,cAAc;AACZ,WAAO,KAAK;AAAA,EAAA;AAEhB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"counter.es.js","sources":["../../../src/modules/counter.ts"],"sourcesContent":["import type { AnyFunction } from '../config'\r\nimport type FluentEditor from '../fluent-editor'\r\nimport Quill from 'quill'\r\nimport { CHANGE_LANGUAGE_EVENT } from '../config'\r\n\r\nexport interface ICounterOption {\r\n format?: 'text' | 'html'\r\n unit?: 'word' | 'char'\r\n count?: number\r\n template?: string | AnyFunction\r\n errorTemplate?: string | AnyFunction\r\n}\r\n\r\nexport default class Counter {\r\n container: HTMLDivElement\r\n options: ICounterOption\r\n\r\n constructor(public quill: FluentEditor, options: ICounterOption) {\r\n this.options = this.resolveOptions(options)\r\n this.container = quill.addContainer('ql-counter')\r\n quill.on(Quill.events.TEXT_CHANGE, this.renderCount)\r\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, () => {\r\n this.options = this.resolveOptions(options)\r\n this.renderCount()\r\n })\r\n this.renderCount()\r\n }\r\n\r\n resolveOptions(options: ICounterOption) {\r\n return Object.assign({\r\n format: 'text',\r\n unit: 'char',\r\n template: this.quill.getLangText('counter-template'),\r\n count: 500,\r\n }, options)\r\n }\r\n\r\n renderCount = () => {\r\n setTimeout(() => {\r\n // @ts-ignore\r\n const { format, count: totalCount, unit, template: counterTemplate, errorTemplate } = this.options\r\n const count = this.getContentLength(format)\r\n const restCount = totalCount - count\r\n const countUnit = unit === 'char' ? this.quill.getLangText('char') : this.quill.getLangText('word')\r\n let template: any = counterTemplate\r\n if (typeof template === 'function') {\r\n template = template(count, restCount)\r\n }\r\n const desc = template.replace('{{count}}', count)\r\n .replace('{{totalCount}}', String(totalCount))\r\n .replace('{{restCount}}', String(restCount))\r\n .replace(/{{countUnit}}/g, countUnit)\r\n\r\n let limitTemplate: any = errorTemplate || this.quill.getLangText('counter-limit-tips')\r\n if (typeof limitTemplate === 'function') {\r\n limitTemplate = limitTemplate(count, restCount)\r\n }\r\n const limitTips = limitTemplate.replace('{{countUnit}}', countUnit)\r\n if (restCount < 0) {\r\n this.container.innerHTML = errorTemplate ? limitTips : `<span style=\"color:red\">${limitTips}</span>`\r\n }\r\n else {\r\n this.container.innerHTML = desc\r\n }\r\n })\r\n }\r\n\r\n getContentLength(format) {\r\n let content = this.quill.getText()\r\n if (format === 'html') {\r\n let html = this.quill.root.innerHTML\r\n // 编辑器初始时\r\n if (html === '<p><br></p>' || html === '<div><br><div>') {\r\n html = ''\r\n }\r\n content = html\r\n }\r\n const text = content.replace(/\\s/g, '').trim()\r\n if (this.options.unit === 'word') {\r\n return !content.trim() ? 0 : content.trim().split(/\\s+/).length\r\n }\r\n return text.length\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAaA,MAAqB,QAAQ;AAAA,EAI3B,YAAmB,OAAqB,SAAyB;AAHjE;AACA;AAsBA,uCAAc,MAAM;AAClB,iBAAW,MAAM;AAET,cAAA,EAAE,QAAQ,OAAO,YAAY,MAAM,UAAU,iBAAiB,kBAAkB,KAAK;AACrF,cAAA,QAAQ,KAAK,iBAAiB,MAAM;AAC1C,cAAM,YAAY,aAAa;AACzB,cAAA,YAAY,SAAS,SAAS,KAAK,MAAM,YAAY,MAAM,IAAI,KAAK,MAAM,YAAY,MAAM;AAClG,YAAI,WAAgB;AAChB,YAAA,OAAO,aAAa,YAAY;AACvB,qBAAA,SAAS,OAAO,SAAS;AAAA,QAAA;AAEhC,cAAA,OAAO,SAAS,QAAQ,aAAa,KAAK,EAC7C,QAAQ,kBAAkB,OAAO,UAAU,CAAC,EAC5C,QAAQ,iBAAiB,OAAO,SAAS,CAAC,EAC1C,QAAQ,kBAAkB,SAAS;AAEtC,YAAI,gBAAqB,iBAAiB,KAAK,MAAM,YAAY,oBAAoB;AACjF,YAAA,OAAO,kBAAkB,YAAY;AACvB,0BAAA,cAAc,OAAO,SAAS;AAAA,QAAA;AAEhD,cAAM,YAAY,cAAc,QAAQ,iBAAiB,SAAS;AAClE,YAAI,YAAY,GAAG;AACjB,eAAK,UAAU,YAAY,gBAAgB,YAAY,2BAA2B,SAAS;AAAA,QAAA,OAExF;AACH,eAAK,UAAU,YAAY;AAAA,QAAA;AAAA,MAC7B,CACD;AAAA,IACH;AAhDmB,SAAA,QAAA;AACZ,SAAA,UAAU,KAAK,eAAe,OAAO;AACrC,SAAA,YAAY,MAAM,aAAa,YAAY;AAChD,UAAM,GAAG,MAAM,OAAO,aAAa,KAAK,WAAW;AACnD,SAAK,MAAM,QAAQ,GAAG,uBAAuB,MAAM;AAC5C,WAAA,UAAU,KAAK,eAAe,OAAO;AAC1C,WAAK,YAAY;AAAA,IAAA,CAClB;AACD,SAAK,YAAY;AAAA,EAAA;AAAA,EAGnB,eAAe,SAAyB;AACtC,WAAO,OAAO,OAAO;AAAA,MACnB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU,KAAK,MAAM,YAAY,kBAAkB;AAAA,MACnD,OAAO;AAAA,OACN,OAAO;AAAA,EAAA;AAAA,EAiCZ,iBAAiB,QAAQ;AACnB,QAAA,UAAU,KAAK,MAAM,QAAQ;AACjC,QAAI,WAAW,QAAQ;AACjB,UAAA,OAAO,KAAK,MAAM,KAAK;AAEvB,UAAA,SAAS,iBAAiB,SAAS,kBAAkB;AAChD,eAAA;AAAA,MAAA;AAEC,gBAAA;AAAA,IAAA;AAEZ,UAAM,OAAO,QAAQ,QAAQ,OAAO,EAAE,EAAE,KAAK;AACzC,QAAA,KAAK,QAAQ,SAAS,QAAQ;AACzB,aAAA,CAAC,QAAQ,KAAA,IAAS,IAAI,QAAQ,OAAO,MAAM,KAAK,EAAE;AAAA,IAAA;AAE3D,WAAO,KAAK;AAAA,EAAA;AAEhB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-clipboard.es.js","sources":["../../../src/modules/custom-clipboard.ts"],"sourcesContent":["import type TypeClipboard from 'quill/modules/clipboard'\r\nimport type FluentEditor from '../fluent-editor'\r\nimport Quill from 'quill'\r\nimport {\r\n ERROR_IMAGE_PLACEHOLDER_CN,\r\n ERROR_IMAGE_PLACEHOLDER_EN,\r\n} from '../config/base64-image'\r\nimport { BIG_DELTA_LIMIT } from '../config/editor.config'\r\nimport {\r\n hexToRgbA,\r\n imageUrlToFile,\r\n isNullOrUndefined,\r\n omit,\r\n replaceDeltaImage,\r\n splitWithBreak,\r\n} from '../config/editor.utils'\r\nimport { isString } from '../utils/is'\r\n\r\nconst Clipboard = Quill.import('modules/clipboard') as typeof TypeClipboard\r\nconst Delta = Quill.import('delta')\r\n\r\nexport class CustomClipboard extends Clipboard {\r\n declare quill: FluentEditor\r\n\r\n prepareMatching(container: HTMLElement, nodeMatches) {\r\n const elementMatchers = []\r\n const textMatchers = []\r\n this.matchers.forEach((pair) => {\r\n const [selector, matcher] = pair\r\n if (selector === Node.TEXT_NODE) {\r\n textMatchers.push(matcher)\r\n }\r\n else if (selector === Node.ELEMENT_NODE) {\r\n elementMatchers.push(matcher)\r\n }\r\n else if (isString(selector)) {\r\n // word 的 v:shape 系列标签只能通过 getElementsByTagName 获取\r\n const vRegex = /v:(.+)/\r\n const nodeList = Array.from(\r\n vRegex.test(selector)\r\n ? container.getElementsByTagName(selector)\r\n : container.querySelectorAll(selector),\r\n )\r\n nodeList.forEach((node) => {\r\n if (nodeMatches.has(node)) {\r\n const matches = nodeMatches.get(node)\r\n matches.push(matcher)\r\n }\r\n else {\r\n nodeMatches.set(node, [matcher])\r\n }\r\n })\r\n }\r\n })\r\n return [elementMatchers, textMatchers]\r\n }\r\n\r\n onCaptureCopy(e, isCut = false) {\r\n if (e.defaultPrevented) {\r\n return\r\n }\r\n e.preventDefault()\r\n const [range] = this.quill.selection.getRange()\r\n if (isNullOrUndefined(range)) {\r\n return\r\n }\r\n const { html, text } = this.onCopy(range, isCut)\r\n\r\n // 兼容IE11浏览器`\r\n if (!e.clipboardData) {\r\n e.clipboardData = {\r\n types: 'text/plain',\r\n setData: (_type, value) => {\r\n // @ts-ignore\r\n return window.clipboardData.setData('Text', value)\r\n },\r\n }\r\n }\r\n\r\n // 复制代码时移除utf8中产生的不间断空格\\u00A0\r\n let plainText = text\r\n if (html.startsWith('<pre>')) {\r\n plainText = text.replace(/\\u00A0/g, ' ')\r\n }\r\n\r\n e.clipboardData.setData('text/html', html)\r\n e.clipboardData.setData('text/plain', plainText)\r\n if (isCut) {\r\n this.quill.deleteText(range, Quill.sources.USER)\r\n }\r\n }\r\n\r\n onCapturePaste(e: ClipboardEvent) {\r\n if (e.defaultPrevented || !this.quill.isEnabled()) {\r\n return\r\n }\r\n e.preventDefault()\r\n const range = this.quill.getSelection(true)\r\n if (isNullOrUndefined(range)) {\r\n return\r\n }\r\n\r\n // 兼容IE11浏览器\r\n if (!e.clipboardData) {\r\n // @ts-ignore\r\n e.clipboardData = {\r\n types: 'text/plain',\r\n getData: () => {\r\n // @ts-ignore\r\n return window.clipboardData.getData('Text')\r\n },\r\n }\r\n }\r\n\r\n const html = e.clipboardData.getData('text/html')\r\n const text = e.clipboardData.getData('text/plain')\r\n const files = Array.from(e.clipboardData.files || [])\r\n const msExcelCheck = /<meta.*?Microsoft Excel\\s[\\d].*?>/\r\n\r\n if (html.search(msExcelCheck) === -1 && files.length > 0) {\r\n this.quill.uploader.upload(range, files)\r\n }\r\n else {\r\n const msWordCheck1\r\n = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i\r\n const msWordCheck2 = /xmlns:o=\"urn:schemas-microsoft-com/i\r\n const result = { html, text, files, rtf: null }\r\n if (html.search(msExcelCheck) !== -1) {\r\n result.html = renderStyles(html)\r\n }\r\n if (msWordCheck1.test(html) || msWordCheck2.test(html)) {\r\n // TODO: 当word文档包含heading时text/rtf读取为空,无法获取hex图片,待修复。可参考ckeditor5/issues/2493\r\n result.rtf = e.clipboardData.getData('text/rtf')\r\n }\r\n this.onPaste(range, result)\r\n }\r\n }\r\n\r\n onPaste(range, { html, text, files: clipboardFiles, rtf }) {\r\n const hexImages = this.extractImageDataFromRtf(rtf)\r\n const rootBgColor = getComputedStyle(this.quill.root).backgroundColor\r\n const formats = this.quill.getFormat(range.index)\r\n let pastedDelta = this.convert({ text, html }, formats)\r\n pastedDelta = replaceDeltaWhiteSpace(pastedDelta, rootBgColor)\r\n const deltaLength = pastedDelta.ops.length\r\n\r\n let loadingTipsContainer\r\n if (deltaLength > BIG_DELTA_LIMIT) {\r\n loadingTipsContainer = this.quill.addContainer('ql-loading-tips')\r\n loadingTipsContainer.innerHTML = this.quill.getLangText('pasting')\r\n }\r\n\r\n const linePos = { index: range.index, length: range.length, fix: 0 }\r\n const [line, offset] = this.quill.getLine(range.index)\r\n\r\n const handlePasteContent = (content: any) => {\r\n const pastedContent = content\r\n\r\n const oldDelta = new Delta().retain(linePos.index).delete(linePos.length)\r\n const delta = oldDelta.concat(pastedContent)\r\n\r\n setTimeout(() => {\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(\r\n delta.length() - linePos.length - linePos.fix,\r\n Quill.sources.SILENT,\r\n )\r\n this.quill.scrollSelectionIntoView()\r\n if (loadingTipsContainer) {\r\n loadingTipsContainer.remove()\r\n }\r\n })\r\n }\r\n\r\n ;(async () => {\r\n try {\r\n const [files, placeholders, originalUrls, imageIndexs] = this.flipFilesArray(\r\n await this.extractFilesFromDelta(\r\n pastedDelta,\r\n clipboardFiles,\r\n hexImages,\r\n ),\r\n )\r\n\r\n if (files.length === 0) {\r\n handlePasteContent(pastedDelta)\r\n }\r\n else {\r\n if (this.quill.options.editorPaste && this.quill.options.editorPaste.observers.length !== 0) {\r\n // 设置editorPaste回调的情况\r\n this.quill.options.editorPaste.emit({\r\n files,\r\n callback: ({ code, message, data }) => {\r\n if (code === 0) {\r\n const { imageUrls } = data\r\n pastedDelta = replaceDeltaImage(\r\n pastedDelta,\r\n imageUrls,\r\n placeholders,\r\n )\r\n handlePasteContent(pastedDelta)\r\n }\r\n else {\r\n console.error('error message:', message)\r\n }\r\n },\r\n })\r\n }\r\n else {\r\n // 没有originalUrls 也没有文件粘贴\r\n if (files[0] !== undefined || originalUrls.length === 0) {\r\n // 没有设置editorPaste回调的情况下,File格式的占位图需要手动转换成url格式,插入到编辑器中\r\n const imageUrls = await this.files2urls(\r\n files,\r\n placeholders,\r\n originalUrls,\r\n pastedDelta,\r\n imageIndexs,\r\n )\r\n pastedDelta = replaceDeltaImage(\r\n pastedDelta,\r\n imageUrls,\r\n placeholders,\r\n )\r\n }\r\n handlePasteContent(pastedDelta)\r\n }\r\n }\r\n }\r\n catch (_e) {\r\n throw new Error('Paste failed.')\r\n }\r\n })()\r\n }\r\n\r\n files2urls(files: File[], placeholders, originalUrls, pastedDelta, imageIndexs) {\r\n return Promise.all(\r\n files.map(async (imageFile, index) => {\r\n const netImgExp = /^((http|https)\\:)?\\/\\/([\\s\\S]+)$/\r\n if (\r\n !placeholders[index]\r\n && originalUrls[index]\r\n && netImgExp.test(originalUrls[index])\r\n ) {\r\n // 不是占位图的普通url图片直接返回url\r\n return new Promise((resolve) => {\r\n resolve(originalUrls[index])\r\n })\r\n }\r\n else {\r\n const range = this.getImgSelection(pastedDelta, imageIndexs[index])\r\n this.quill.uploader.upload(range, [imageFile])\r\n }\r\n }),\r\n )\r\n }\r\n\r\n flipFilesArray(filesArr) {\r\n const files = []\r\n const placeholders = []\r\n const originalUrls = []\r\n const imageIndexs = []\r\n filesArr.forEach((item: any) => {\r\n if (item) {\r\n const [file, placeholder, originalUrl, imageIndex] = item\r\n files.push(file)\r\n placeholders.push(placeholder)\r\n originalUrls.push(originalUrl)\r\n if (imageIndex === 0 || imageIndex) {\r\n imageIndexs.push(imageIndex)\r\n }\r\n }\r\n })\r\n return [files, placeholders, originalUrls, imageIndexs]\r\n }\r\n\r\n // 将图片从hex转为base64\r\n convertHexToBase64(hexString) {\r\n return btoa(\r\n hexString\r\n .match(/\\w{2}/g)\r\n .map((char) => {\r\n return String.fromCharCode(Number.parseInt(char, 16))\r\n })\r\n .join(''),\r\n )\r\n }\r\n\r\n // 匹配rtf中的图片,存储为{hex, type}对象数组\r\n extractImageDataFromRtf(rtfData) {\r\n if (!rtfData) {\r\n return []\r\n }\r\n\r\n const regexPictureHeader\r\n = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/\r\n const regexPicture = new RegExp(\r\n `(?:(${regexPictureHeader.source}))([\\\\da-fA-F\\\\s]+)\\\\}`,\r\n 'g',\r\n )\r\n const images = rtfData.match(regexPicture)\r\n const result = []\r\n\r\n if (images) {\r\n for (const image of images) {\r\n let imageType = ''\r\n\r\n if (image.includes('\\\\pngblip')) {\r\n imageType = 'image/png'\r\n }\r\n else if (image.includes('\\\\jpegblip')) {\r\n imageType = 'image/jpeg'\r\n }\r\n\r\n if (imageType) {\r\n result.push({\r\n hex: image\r\n .replace(regexPictureHeader, '')\r\n .replace(/[^\\da-fA-F]/g, ''),\r\n type: imageType,\r\n })\r\n }\r\n }\r\n }\r\n\r\n return result\r\n }\r\n\r\n extractFilesFromDelta(delta, clipboardFiles, hexImages?) {\r\n let index = -1\r\n return Promise.all(\r\n delta.map(async (op) => {\r\n index++\r\n const image = op.insert.image\r\n if (!image || image.hasExisted) {\r\n return\r\n }\r\n\r\n let file\r\n let isPlaceholderImage = false\r\n let imageIndex\r\n try {\r\n // hex 图片存在则为 file:/// 协议本地图片,使用 hex 图片转为 base64 读取\r\n const hexImage = hexImages.length && hexImages.shift()\r\n const newImage\r\n = hexImage\r\n && `data:${hexImage.type};base64,${this.convertHexToBase64(\r\n hexImage.hex,\r\n )}`\r\n imageIndex = index\r\n file = await imageUrlToFile(newImage || image.src || image)\r\n }\r\n catch (_err) {\r\n if (clipboardFiles.length !== 0) {\r\n // 跨域获取图片失败时从剪切板获取图片\r\n const clipboardFile = clipboardFiles[0]\r\n const imageType\r\n = clipboardFile.type?.indexOf('image') === -1\r\n ? 'image/png'\r\n : clipboardFile.type\r\n const blob = clipboardFile.slice(0, clipboardFile.size, imageType)\r\n file = new File([blob], `image-CORS-${new Date().getTime()}.png`, {\r\n type: imageType,\r\n })\r\n }\r\n else if (image.src.startsWith('http')) {\r\n // 什么都不做\r\n }\r\n else {\r\n // 剪切板中无图片,用失败占位图替换\r\n const errorImagePlaceholderJpg\r\n = this.quill.getLangText('img-error') === 'Image Copy Error'\r\n ? ERROR_IMAGE_PLACEHOLDER_EN\r\n : ERROR_IMAGE_PLACEHOLDER_CN\r\n file = await imageUrlToFile(errorImagePlaceholderJpg, true)\r\n isPlaceholderImage = true\r\n }\r\n }\r\n\r\n return [file, isPlaceholderImage, image, imageIndex]\r\n }),\r\n )\r\n }\r\n\r\n getImgSelection(delta, imageIndex) {\r\n let length = 0\r\n delta.ops.every((op, index) => {\r\n if (index === imageIndex) {\r\n return false\r\n }\r\n if (typeof op.insert === 'string') {\r\n length += op.insert.length\r\n }\r\n return true\r\n })\r\n const range = {\r\n index: length,\r\n length: 0,\r\n }\r\n return range\r\n }\r\n}\r\n\r\nfunction rebuildDelta(delta, cellLine) {\r\n const { cell: cellId, colspan, row: rowId, rowspan } = cellLine\r\n const buildedDelta = delta.reduce((newDelta, op) => {\r\n if (op.insert && typeof op.insert === 'string') {\r\n const lines = splitWithBreak(op.insert)\r\n\r\n lines.forEach((text) => {\r\n if (text === '\\n') {\r\n // 对换行增加 table-cell-line 格式,以避免表格断开\r\n newDelta.insert('\\n', {\r\n ...op.attributes,\r\n 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan },\r\n })\r\n }\r\n else {\r\n text = text.endsWith('\\r') ? text.slice(0, -1) : text\r\n newDelta.insert(\r\n text,\r\n omit(op.attributes, ['table', 'table-cell-line']),\r\n )\r\n }\r\n })\r\n }\r\n else {\r\n newDelta.insert(op.insert, op.attributes)\r\n }\r\n\r\n return newDelta\r\n }, new Delta())\r\n\r\n return buildedDelta\r\n}\r\n\r\nfunction replaceStrWhiteSpace(str) {\r\n const isWhiteSpace = value => /^(\\u3000|\\u0020){1}$/.test(value) // 空白字符\r\n let textWithWhiteSpace = ''\r\n let beginHasChar = false\r\n for (const char of str) {\r\n if (isWhiteSpace(char) && !beginHasChar) {\r\n textWithWhiteSpace += '\\u00A0'\r\n }\r\n else {\r\n textWithWhiteSpace += char\r\n beginHasChar = true\r\n }\r\n }\r\n return textWithWhiteSpace\r\n}\r\n\r\nfunction replaceDeltaWhiteSpace(delta, rootBgColor?) {\r\n return delta.reduce((newDelta, op) => {\r\n // fix: 当粘贴文字颜色和编辑器背景色一致且自身无背景色的情况下移除文字颜色样式,避免误导用户粘贴无效\r\n if (\r\n rootBgColor\r\n && op.attributes\r\n && op.attributes.color\r\n && !op.attributes.background\r\n ) {\r\n const originColor = op.attributes.color\r\n const fontColor\r\n = originColor.indexOf('#') === 0 ? hexToRgbA(originColor) : originColor\r\n if (\r\n fontColor === rootBgColor\r\n || (fontColor === 'rgba(255,255,255,1)'\r\n && rootBgColor === 'rgba(0, 0, 0, 0)')\r\n ) {\r\n delete op.attributes.color\r\n }\r\n }\r\n if (op.insert && typeof op.insert === 'string') {\r\n const lines = splitWithBreak(op.insert)\r\n let insertWithWhiteSpace = ''\r\n lines.forEach((text) => {\r\n insertWithWhiteSpace += replaceStrWhiteSpace(text)\r\n })\r\n newDelta.insert(insertWithWhiteSpace, op.attributes)\r\n }\r\n else {\r\n newDelta.insert(op.insert, op.attributes)\r\n }\r\n return newDelta\r\n }, new Delta())\r\n}\r\n\r\nfunction renderStyles(html) {\r\n let htmlString = html\r\n // Trim unnecessary parts.\r\n htmlString = htmlString.substring(\r\n htmlString.indexOf('<html '),\r\n htmlString.length,\r\n )\r\n htmlString = htmlString.substring(\r\n 0,\r\n htmlString.lastIndexOf('</html>') + '</html>'.length,\r\n )\r\n\r\n // Add temporary iframe.\r\n const iframe = document.createElement('iframe')\r\n iframe.style.display = 'none'\r\n document.body.appendChild(iframe)\r\n\r\n const iframeDoc = iframe.contentDocument || iframe.contentWindow.document\r\n iframeDoc.open()\r\n iframeDoc.write(htmlString)\r\n iframeDoc.close()\r\n\r\n let collection\r\n let pointer\r\n const rules\r\n = iframeDoc.styleSheets[iframeDoc.styleSheets.length - 1].cssRules\r\n\r\n // Convert internal styles to inline style of respective node.\r\n for (let idx = 0; idx < rules.length; idx++) {\r\n if ((rules[idx] as CSSStyleRule).selectorText === '') {\r\n continue\r\n }\r\n collection = iframeDoc.body.querySelectorAll(\r\n (rules[idx] as CSSStyleRule).selectorText,\r\n )\r\n\r\n for (pointer = 0; pointer < collection.length; pointer++) {\r\n collection[pointer].style.cssText += (\r\n rules[idx] as CSSStyleRule\r\n ).style.cssText\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n const convertedString = iframeDoc.firstChild.outerHTML\r\n // Remove temporary iframe.\r\n iframe.parentNode.removeChild(iframe)\r\n\r\n return convertedString\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.es.js","sources":["../../../../../src/modules/custom-image/actions/action.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\n\r\nexport class Action {\r\n formatter: BlotFormatter\r\n\r\n constructor(formatter: BlotFormatter) {\r\n this.formatter = formatter\r\n }\r\n\r\n onCreate() {}\r\n\r\n onDestroy() {}\r\n\r\n onUpdate() {}\r\n}\r\n"],"names":[],"mappings":";;;AAEO,MAAM,OAAO;AAAA,EAGlB,YAAY,WAA0B;AAFtC;AAGE,SAAK,YAAY;AAAA,EAAA;AAAA,EAGnB,WAAW;AAAA,EAAA;AAAA,EAEX,YAAY;AAAA,EAAA;AAAA,EAEZ,WAAW;AAAA,EAAA;AACb;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-resize-action.es.js","sources":["../../../../../src/modules/custom-image/actions/custom-resize-action.ts"],"sourcesContent":["import { Action } from './action'\r\n\r\nconst MIN_WIDTH = 40\r\n\r\nfunction getElementStyle(element) {\r\n return element.currentStyle\r\n ? element.currentStyle\r\n : window.getComputedStyle(element, null)\r\n}\r\nexport class CustomResizeAction extends Action {\r\n topLeftHandle: HTMLElement\r\n topRightHandle: HTMLElement\r\n bottomRightHandle: HTMLElement\r\n bottomLeftHandle: HTMLElement\r\n dragHandle: HTMLElement\r\n dragStartX: number\r\n preDragWidth: number\r\n targetRatio: number\r\n maxWidth: number\r\n minWidth: number\r\n\r\n constructor(formatter) {\r\n super(formatter)\r\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\r\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\r\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\r\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\r\n this.dragHandle = null\r\n this.dragStartX = 0\r\n this.preDragWidth = 0\r\n this.targetRatio = 0\r\n this.maxWidth = 0\r\n this.minWidth = MIN_WIDTH\r\n }\r\n\r\n onCreate() {\r\n const target: any = this.formatter.currentSpec.getTargetElement()\r\n this.formatter.overlay.setAttribute('data-image', target.src)\r\n this.formatter.overlay.appendChild(this.topLeftHandle)\r\n this.formatter.overlay.appendChild(this.topRightHandle)\r\n this.formatter.overlay.appendChild(this.bottomRightHandle)\r\n this.formatter.overlay.appendChild(this.bottomLeftHandle)\r\n this.repositionHandles(this.formatter.options.resize.handleStyle)\r\n }\r\n\r\n onDestroy() {\r\n this.setCursor('')\r\n this.formatter.overlay.removeChild(this.topLeftHandle)\r\n this.formatter.overlay.removeChild(this.topRightHandle)\r\n this.formatter.overlay.removeChild(this.bottomRightHandle)\r\n this.formatter.overlay.removeChild(this.bottomLeftHandle)\r\n }\r\n\r\n createHandle(position: string, cursor: string): HTMLElement {\r\n const box = document.createElement('div')\r\n box.classList.add(this.formatter.options.resize.handleClassName)\r\n box.setAttribute('data-position', position)\r\n box.style.cursor = cursor\r\n\r\n if (this.formatter.options.resize.handleStyle) {\r\n Object.assign(box.style, this.formatter.options.resize.handleStyle)\r\n }\r\n\r\n box.addEventListener('mousedown', this.onMouseDown)\r\n return box\r\n }\r\n\r\n repositionHandles(handleStyle: any) {\r\n let handleXOffset = '0px'\r\n let handleYOffset = '0px'\r\n if (handleStyle) {\r\n if (handleStyle.width) {\r\n handleXOffset = `${-Number.parseFloat(handleStyle.width) / 2}px`\r\n }\r\n if (handleStyle.height) {\r\n handleYOffset = `${-Number.parseFloat(handleStyle.height) / 2}px`\r\n }\r\n }\r\n\r\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset })\r\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset })\r\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset })\r\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset })\r\n }\r\n\r\n setCursor(value: string) {\r\n if (document.body) {\r\n document.body.style.cursor = value\r\n }\r\n\r\n if (this.formatter.currentSpec) {\r\n const target = this.formatter.currentSpec.getOverlayElement()\r\n if (target) {\r\n target.style.cursor = value\r\n }\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return\r\n }\r\n\r\n this.dragHandle = event.target\r\n this.setCursor(this.dragHandle.style.cursor)\r\n\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = this.formatter.currentSpec.getTargetElement()\r\n if (!target) {\r\n return\r\n }\r\n event.preventDefault()\r\n const rect = target.getBoundingClientRect()\r\n\r\n this.dragStartX = event.clientX\r\n this.preDragWidth = rect.width\r\n this.targetRatio = rect.height / rect.width\r\n\r\n let root: HTMLElement\r\n let rootStyle: any\r\n const tdWrap = this.findTd(target, 0)\r\n if (tdWrap) {\r\n root = tdWrap\r\n rootStyle = getElementStyle(tdWrap)\r\n }\r\n else {\r\n root = this.formatter.quill.root\r\n rootStyle = getElementStyle(root)\r\n }\r\n this.maxWidth = root.clientWidth\r\n - Number.parseFloat(rootStyle.paddingRight)\r\n - Number.parseFloat(rootStyle.paddingLeft)\r\n\r\n document.addEventListener('mousemove', this.onDrag)\r\n document.addEventListener('mouseup', this.onMouseUp)\r\n }\r\n\r\n findTd = (node: HTMLElement, level: number) => {\r\n if (level > 3) {\r\n return null\r\n }\r\n\r\n const tagName = node.tagName.toUpperCase()\r\n if (tagName === 'TD') {\r\n return node\r\n }\r\n else {\r\n const parentNode = node.parentElement\r\n if (parentNode) {\r\n return (this.findTd(parentNode, level += 1))\r\n }\r\n else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n onDrag = (event: MouseEvent) => {\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = this.formatter.currentSpec.getTargetElement()\r\n if (!target) {\r\n return\r\n }\r\n\r\n const deltaX = event.clientX - this.dragStartX\r\n let newWidth = 0\r\n\r\n if (this.dragHandle === this.topLeftHandle || this.dragHandle === this.bottomLeftHandle) {\r\n newWidth = Math.round(this.preDragWidth - deltaX)\r\n }\r\n else {\r\n newWidth = Math.round(this.preDragWidth + deltaX)\r\n }\r\n\r\n let minWidth = this.minWidth\r\n\r\n if (this.maxWidth < minWidth) {\r\n minWidth = this.maxWidth\r\n }\r\n\r\n if (newWidth > this.maxWidth) {\r\n newWidth = this.maxWidth\r\n }\r\n else if (newWidth < minWidth) {\r\n newWidth = minWidth\r\n }\r\n\r\n const newHeight = this.targetRatio * newWidth\r\n\r\n target.setAttribute('width', `${newWidth}`)\r\n target.setAttribute('height', `${newHeight}`)\r\n\r\n this.formatter.update()\r\n }\r\n\r\n onMouseUp = () => {\r\n this.setCursor('')\r\n document.removeEventListener('mousemove', this.onDrag)\r\n document.removeEventListener('mouseup', this.onMouseUp)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete-action.es.js","sources":["../../../../../src/modules/custom-image/actions/delete-action.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\r\nimport Quill from 'quill'\r\nimport { Action } from './action'\r\n\r\nexport class DeleteAction extends Action {\r\n onCreate() {\r\n document.addEventListener('keyup', this.onKeyUp, true)\r\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true)\r\n }\r\n\r\n onDestroy() {\r\n document.removeEventListener('keyup', this.onKeyUp)\r\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp)\r\n }\r\n\r\n onKeyUp = (event: any) => {\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n // delete or backspace\r\n if (event.keyCode === 46 || event.keyCode === 8) {\r\n const blot = Quill.find(this.formatter.currentSpec.getTargetElement()) as TypeParchment.Blot\r\n if (blot) {\r\n // TODO: fix later\r\n // @ts-ignore\r\n blot.deleteAt(0)\r\n }\r\n this.formatter.hide()\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAIO,MAAM,qBAAqB,OAAO;AAAA,EAAlC;AAAA;AAWL,mCAAU,CAAC,UAAe;AACpB,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MAAA;AAIF,UAAI,MAAM,YAAY,MAAM,MAAM,YAAY,GAAG;AAC/C,cAAM,OAAO,MAAM,KAAK,KAAK,UAAU,YAAY,kBAAkB;AACrE,YAAI,MAAM;AAGR,eAAK,SAAS,CAAC;AAAA,QAAA;AAEjB,aAAK,UAAU,KAAK;AAAA,MAAA;AAAA,IAExB;AAAA;AAAA,EAzBA,WAAW;AACT,aAAS,iBAAiB,SAAS,KAAK,SAAS,IAAI;AACrD,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,SAAS,IAAI;AAAA,EAAA;AAAA,EAGxE,YAAY;AACD,aAAA,oBAAoB,SAAS,KAAK,OAAO;AAClD,SAAK,UAAU,MAAM,KAAK,oBAAoB,SAAS,KAAK,OAAO;AAAA,EAAA;AAmBvE;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blot-formatter.es.js","sources":["../../../../src/modules/custom-image/blot-formatter.ts"],"sourcesContent":["import type FluentEditor from '../../core/fluent-editor'\r\nimport type { Action } from './actions'\r\nimport type { BlotFormatterOptions } from './options'\r\nimport type { BlotSpec } from './specs'\r\nimport { merge as deepmerge } from 'lodash-es'\r\nimport Quill from 'quill'\r\nimport { CustomImage } from './image'\r\nimport DefaultOptions from './options'\r\nimport { CustomImageSpec } from './specs'\r\n\r\nconst dontMerge = (_destination: Array<any>, source: Array<any>) => source\r\n\r\nexport class BlotFormatter {\r\n options: BlotFormatterOptions\r\n currentSpec: BlotSpec\r\n specs: BlotSpec[]\r\n overlay: HTMLElement\r\n actions: Action[]\r\n observer: MutationObserver\r\n\r\n static register() {\r\n Quill.register({\r\n 'formats/image': CustomImage,\r\n 'modules/image-spec': CustomImageSpec,\r\n }, true)\r\n }\r\n\r\n constructor(public quill: FluentEditor, options: Partial<BlotFormatterOptions> = {}) {\r\n this.options = deepmerge({}, DefaultOptions, options, { arrayMerge: dontMerge })\r\n if (options.allowInvalidUrl !== undefined) {\r\n this.options.allowInvalidUrl = options.allowInvalidUrl\r\n }\r\n CustomImage.setOptions(this.options.allowInvalidUrl)\r\n this.currentSpec = null\r\n this.actions = []\r\n this.overlay = document.createElement('div')\r\n this.overlay.classList.add(this.options.overlay.className)\r\n if (this.options.overlay.style) {\r\n Object.assign(this.overlay.style, this.options.overlay.style)\r\n }\r\n\r\n // disable native image resizing on firefox\r\n document.execCommand('enableObjectResizing', false, 'false') // eslint-disable-next-line-line no-undef\r\n this.quill.root.addEventListener('click', this.onClick)\r\n this.specs = this.options.specs.map((SpecClass: any) => new SpecClass(this))\r\n this.specs.forEach(spec => spec.init())\r\n }\r\n\r\n show(spec: BlotSpec) {\r\n this.currentSpec = spec\r\n this.currentSpec.setSelection()\r\n this.setUserSelect('none')\r\n this.quill.root.parentNode.appendChild(this.overlay)\r\n this.repositionOverlay()\r\n this.createActions(spec)\r\n\r\n // fix: 图片对齐之后,虚线外框应该跟随移动\r\n const imageDom = spec.getTargetElement()\r\n const win: any = window\r\n const MutationObserver: typeof window.MutationObserver = win.MutationObserver || win.WebKitMutationObserver || win.MozMutationObserver\r\n const element = imageDom.parentNode\r\n this.observer = new MutationObserver((mutationList) => {\r\n for (const mutation of mutationList) {\r\n const target = mutation.target as HTMLElement\r\n const image = target.querySelector('img')\r\n if (image) {\r\n this.repositionOverlay()\r\n }\r\n }\r\n })\r\n this.observer.observe(element, {\r\n attributes: true,\r\n attributeFilter: ['class'],\r\n attributeOldValue: true,\r\n subtree: true,\r\n })\r\n }\r\n\r\n hide() {\r\n if (!this.currentSpec) {\r\n return\r\n }\r\n\r\n const imgDom = this.currentSpec.getTargetElement()\r\n if (imgDom) {\r\n imgDom.classList.remove('current-select-img')\r\n }\r\n\r\n this.currentSpec.onHide()\r\n this.currentSpec = null\r\n this.quill.root.parentNode.removeChild(this.overlay)\r\n this.overlay.style.setProperty('display', 'none')\r\n this.setUserSelect('')\r\n this.destroyActions()\r\n }\r\n\r\n update() {\r\n this.repositionOverlay()\r\n this.actions.forEach(action => action.onUpdate())\r\n }\r\n\r\n createActions(spec: BlotSpec) {\r\n this.actions = spec.getActions().map((ActionClass: any) => {\r\n const action: Action = new ActionClass(this)\r\n action.onCreate()\r\n return action\r\n })\r\n }\r\n\r\n destroyActions() {\r\n this.actions.forEach((action: Action) => action.onDestroy())\r\n this.actions = []\r\n }\r\n\r\n repositionOverlay() {\r\n if (!this.currentSpec) {\r\n return\r\n }\r\n\r\n const overlayTarget = this.currentSpec.getOverlayElement()\r\n if (!overlayTarget) {\r\n return\r\n }\r\n\r\n const parent = this.quill.root.parentElement\r\n const specRect = overlayTarget.getBoundingClientRect()\r\n const parentRect = parent.getBoundingClientRect()\r\n\r\n Object.assign(this.overlay.style, {\r\n display: 'block',\r\n left: `${specRect.left - parentRect.left - 1 + parent.scrollLeft}px`,\r\n top: `${specRect.top - parentRect.top + parent.scrollTop}px`,\r\n width: `${specRect.width}px`,\r\n height: `${specRect.height}px`,\r\n })\r\n }\r\n\r\n setUserSelect(value: string) {\r\n const props: string[] = [\r\n 'userSelect',\r\n 'mozUserSelect',\r\n 'webkitUserSelect',\r\n 'msUserSelect',\r\n ]\r\n\r\n props.forEach((prop: string) => {\r\n // set on contenteditable element and <html>\r\n this.quill.root.style.setProperty(prop, value)\r\n if (document.documentElement) {\r\n document.documentElement.style.setProperty(prop, value)\r\n }\r\n })\r\n }\r\n\r\n onClick = () => {\r\n this.hide()\r\n }\r\n}\r\n"],"names":["deepmerge"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.es.js","sources":["../../../../src/modules/custom-image/image.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\r\nimport type TypeEmbed from 'quill/blots/embed'\r\nimport Quill from 'quill'\r\nimport { isNullOrUndefined, sanitize } from '../../config/editor.utils'\r\nimport { isObject } from '../../utils/is'\r\nimport { ALIGN_ATTR, alignmentHandler } from './actions'\r\n\r\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\r\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\r\n\r\nexport type ImageValue = string | {\r\n src: string\r\n align?: string\r\n height?: number\r\n width?: number\r\n}\r\nexport class CustomImage extends Embed {\r\n static blotName = 'image'\r\n static tagName = 'IMG'\r\n static ID_SEED = 0\r\n static allowInvalidUrl: boolean = false\r\n declare domNode: HTMLElement\r\n\r\n static setOptions(allowInvalidUrl: boolean) {\r\n this.allowInvalidUrl = allowInvalidUrl\r\n }\r\n\r\n static create(value: ImageValue) {\r\n const node = super.create(value) as HTMLElement\r\n const url = typeof value === 'string' ? value : value.src\r\n if (url) {\r\n const imgURL = this.sanitize(url)\r\n if (!imgURL?.startsWith('data:image')) {\r\n node.dataset.src = imgURL\r\n }\r\n node.setAttribute('src', imgURL)\r\n }\r\n node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)\r\n node.style.verticalAlign = 'baseline'\r\n if (isObject(value)) {\r\n if (value.align && alignmentHandler[value.align]) {\r\n node.setAttribute(ALIGN_ATTR, value.align)\r\n alignmentHandler[value.align](node)\r\n }\r\n if (value.width) {\r\n node.setAttribute('width', String(value.width))\r\n }\r\n if (value.height) {\r\n node.setAttribute('height', String(value.height))\r\n }\r\n }\r\n return node\r\n }\r\n\r\n static formats(domNode: HTMLElement) {\r\n return ATTRIBUTES.reduce((formats, attribute) => {\r\n if (domNode.hasAttribute(attribute)) {\r\n formats[attribute] = domNode.getAttribute(attribute)\r\n }\r\n return formats\r\n }, {})\r\n }\r\n\r\n static match(url: string) {\r\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\r\n }\r\n\r\n static register() {\r\n if (/Firefox/i.test(navigator.userAgent)) {\r\n setTimeout(() => {\r\n // Disable image resizing in Firefox\r\n document.execCommand('enableObjectResizing', false, 'false')\r\n }, 1)\r\n }\r\n }\r\n\r\n static sanitize(url: string) {\r\n if (sanitize(url, ['http', 'https', 'blob', 'data']) || this.allowInvalidUrl) {\r\n return url\r\n }\r\n return '//:0'\r\n }\r\n\r\n static value(domNode: HTMLElement) {\r\n const formats: any = {}\r\n const imageSrc = domNode.getAttribute('src')\r\n formats.src = this.sanitize(imageSrc)\r\n formats.imageId = domNode.dataset.imageId\r\n if (domNode.dataset.align) {\r\n formats.align = domNode.dataset.align\r\n }\r\n if (domNode.hasAttribute('width')) {\r\n formats.width = domNode.getAttribute('width')\r\n }\r\n if (domNode.hasAttribute('height')) {\r\n formats.height = domNode.getAttribute('height')\r\n }\r\n return formats\r\n }\r\n\r\n format(name: string, value: any) {\r\n if (ATTRIBUTES.includes(name)) {\r\n if (value) {\r\n this.domNode.setAttribute(name, value)\r\n }\r\n else {\r\n this.domNode.removeAttribute(name)\r\n }\r\n }\r\n else {\r\n super.format(name, value)\r\n }\r\n }\r\n\r\n unWrap() {\r\n this.parent.replaceWith(this as TypeEmbed)\r\n }\r\n\r\n wrap(name: string, value?: any): TypeParchment.Parent\r\n wrap(wrapper: TypeParchment.Parent): TypeParchment.Parent\r\n wrap(name: string | TypeParchment.Parent, value?: any) {\r\n const wrapper = (typeof name === 'string' ? this.scroll.create(name, value) : name) as TypeParchment.Parent\r\n if (!isNullOrUndefined(this.parent)) {\r\n this.parent.insertBefore(wrapper, this.next || undefined)\r\n }\r\n if (typeof wrapper.appendChild !== 'function') {\r\n throw new TypeError(`Cannot wrap ${name}`)\r\n }\r\n wrapper.appendChild(this)\r\n return wrapper\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.es.js","sources":["../../../../src/modules/custom-image/options.ts"],"sourcesContent":["import type { ImageToolbar, ImageToolbarButtons } from './actions'\r\nimport type { BlotSpec } from './specs'\r\nimport { ImageSpec } from './specs'\r\n\r\nexport interface OverlayOptions {\r\n // classname applied to the overlay element\r\n className: string\r\n // style applied to overlay element, or null to prevent styles\r\n style: Record<string, string>\r\n}\r\n\r\nexport interface ResizeOptions {\r\n // class name applied to the resize handles\r\n handleClassName: string\r\n // style applied to resize handles, or null to prevent styles\r\n handleStyle: Record<string, string>\r\n}\r\n\r\nexport interface ToolButtonOption {\r\n name: string\r\n icon: string\r\n isActive?: (el: HTMLElement) => boolean\r\n apply: (this: ImageToolbar, el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => void\r\n}\r\n\r\nexport interface ToolbarButtonOptions {\r\n buttons: Record<string, ToolButtonOption | boolean>\r\n}\r\n\r\nexport interface ToolbarOptions extends ToolbarButtonOptions {\r\n // class name applied to the root toolbar element\r\n mainClassName: string\r\n // style applied to root toolbar element, or null to prevent styles\r\n mainStyle: Record<string, unknown>\r\n // class name applied to each button in the toolbar\r\n buttonClassName: string\r\n /* whether or not to add the selected style to the buttons.\r\n they'll always get the is-selected class */\r\n addButtonSelectStyle: boolean\r\n // style applied to buttons, or null to prevent styles\r\n buttonStyle: Record<string, unknown>\r\n // style applied to the svgs in the buttons\r\n svgStyle: Record<string, unknown>\r\n}\r\n\r\nexport interface BlotFormatterOptionsInput {\r\n specs: typeof BlotSpec[]\r\n overlay: Partial<OverlayOptions>\r\n resize: Partial<ResizeOptions>\r\n toolbar: Partial<ToolbarOptions>\r\n}\r\nexport interface BlotFormatterOptions {\r\n specs: typeof BlotSpec[]\r\n overlay: OverlayOptions\r\n resize: ResizeOptions\r\n toolbar: ToolbarOptions\r\n allowInvalidUrl: boolean\r\n}\r\n\r\nexport const LEFT_ALIGN = 'align-left'\r\nexport const CENTER_ALIGN = 'align-center'\r\nexport const RIGHT_ALIGN = 'align-right'\r\nexport const COPY = 'copy'\r\nexport const DOWNLOAD = 'download'\r\nconst DefaultOptions: BlotFormatterOptions = {\r\n // 默认情况下,`file://` 格式的本地文件路径在浏览器环境无法读取,因此会被转换成 `//:0`,但是在一些特殊的场景下(比如:Electron),需要获取到图片的原始路径,进行后续的上传处理\r\n // 注意:该选项一旦设置为 true,本地磁盘路径会暴露出去,这可能会带来安全风险,请确保你了解相关的安全隐患\r\n allowInvalidUrl: false,\r\n\r\n specs: [\r\n ImageSpec,\r\n ],\r\n overlay: {\r\n className: 'blot-formatter__overlay',\r\n style: {\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n border: '1px dashed #444',\r\n },\r\n },\r\n toolbar: {\r\n mainClassName: 'blot-formatter__toolbar',\r\n mainStyle: {\r\n position: 'absolute',\r\n top: '-12px',\r\n right: '0',\r\n left: '0',\r\n height: '0',\r\n minWidth: '120px',\r\n font: '12px/1.0 Arial, Helvetica, sans-serif',\r\n textAlign: 'center',\r\n color: '#333',\r\n boxSizing: 'border-box',\r\n cursor: 'default',\r\n zIndex: '1',\r\n },\r\n buttonClassName: 'blot-formatter__toolbar-button',\r\n addButtonSelectStyle: true,\r\n buttonStyle: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '24px',\r\n height: '24px',\r\n background: 'white',\r\n border: '1px solid #999',\r\n verticalAlign: 'middle',\r\n cursor: 'pointer',\r\n },\r\n svgStyle: {\r\n display: 'inline-block',\r\n width: '16px',\r\n height: '16px',\r\n background: 'white',\r\n verticalAlign: 'middle',\r\n },\r\n buttons: {\r\n [LEFT_ALIGN]: true,\r\n [CENTER_ALIGN]: true,\r\n [RIGHT_ALIGN]: true,\r\n [COPY]: true,\r\n [DOWNLOAD]: true,\r\n },\r\n },\r\n resize: {\r\n handleClassName: 'blot-formatter__resize-handle',\r\n handleStyle: {\r\n position: 'absolute',\r\n height: '12px',\r\n width: '12px',\r\n backgroundColor: 'white',\r\n border: '1px solid #777',\r\n boxSizing: 'border-box',\r\n opacity: '0.80',\r\n },\r\n },\r\n}\r\n\r\nexport default DefaultOptions\r\n"],"names":[],"mappings":";;AA2DO,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM,OAAO;AACb,MAAM,WAAW;AACxB,MAAM,iBAAuC;AAAA;AAAA;AAAA,EAG3C,iBAAiB;AAAA,EAEjB,OAAO;AAAA,IACL;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AAAA,IACf,WAAW;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,IACA,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,aAAa;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,QAAQ;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,eAAe;AAAA,IACjB;AAAA,IACA,SAAS;AAAA,MACP,CAAC,UAAU,GAAG;AAAA,MACd,CAAC,YAAY,GAAG;AAAA,MAChB,CAAC,WAAW,GAAG;AAAA,MACf,CAAC,IAAI,GAAG;AAAA,MACR,CAAC,QAAQ,GAAG;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blot-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/blot-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport { CustomResizeAction, DeleteAction, ImageToolbarAction } from '../actions'\r\n\r\nexport class BlotSpec {\r\n formatter: BlotFormatter\r\n\r\n constructor(formatter: BlotFormatter) {\r\n this.formatter = formatter\r\n }\r\n\r\n init(): void {}\r\n\r\n getActions() {\r\n return [ImageToolbarAction, CustomResizeAction, DeleteAction]\r\n }\r\n\r\n getTargetElement(): HTMLElement | null {\r\n return null\r\n }\r\n\r\n getOverlayElement() {\r\n return this.getTargetElement()\r\n }\r\n\r\n setSelection(): void {\r\n this.formatter.quill.setSelection(null)\r\n }\r\n\r\n onHide() {}\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAGO,MAAM,SAAS;AAAA,EAGpB,YAAY,WAA0B;AAFtC;AAGE,SAAK,YAAY;AAAA,EAAA;AAAA,EAGnB,OAAa;AAAA,EAAA;AAAA,EAEb,aAAa;AACJ,WAAA,CAAC,oBAAoB,oBAAoB,YAAY;AAAA,EAAA;AAAA,EAG9D,mBAAuC;AAC9B,WAAA;AAAA,EAAA;AAAA,EAGT,oBAAoB;AAClB,WAAO,KAAK,iBAAiB;AAAA,EAAA;AAAA,EAG/B,eAAqB;AACd,SAAA,UAAU,MAAM,aAAa,IAAI;AAAA,EAAA;AAAA,EAGxC,SAAS;AAAA,EAAA;AACX;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/custom-image-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport { isInside } from '../../../config/editor.utils'\r\nimport { ImageSpec } from './image-spec'\r\n\r\nexport class CustomImageSpec extends ImageSpec {\r\n editorElem: HTMLElement | undefined\r\n observer: any\r\n oldRootScrollTop: number\r\n\r\n constructor(formatter: BlotFormatter) {\r\n super(formatter)\r\n this.formatter = formatter\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.editorElem = this.formatter.quill.container\r\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n }\r\n\r\n handleQuillRootScroll() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\r\n }\r\n }\r\n\r\n init(): void {\r\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\r\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\r\n\r\n super.init()\r\n }\r\n\r\n imageMouseOver(event) {\r\n const target = event.target\r\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\r\n if (target.nodeName === 'IMG' || isBlotFormatter) {\r\n // this.addImagePreviewOverlay(event);\r\n }\r\n }\r\n\r\n imageMouseout = (event) => {\r\n if (event.target.nodeName === 'IMG'\r\n || event.target.classList.contains('blot-formatter__overlay')) {\r\n const imgDom = event.target\r\n if (!isInside(event, imgDom)) {\r\n this.removeImagePreviewOverlay()\r\n }\r\n }\r\n }\r\n\r\n addImagePreviewOverlay(event) {\r\n const target = event.target\r\n const {\r\n left: imgLeft,\r\n width: imgWidth,\r\n } = target.getBoundingClientRect()\r\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\r\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\r\n\r\n const {\r\n left: editorLeft,\r\n top: editorTop,\r\n } = event.currentTarget.getBoundingClientRect()\r\n\r\n const imgRelativeLeft = imgLeft - editorLeft\r\n const imgRelativeTop = imgTop - editorTop\r\n\r\n const maxmizeWidth = 24\r\n const maxmizePadding = 15\r\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\r\n const previewTop = imgRelativeTop + maxmizePadding\r\n\r\n const previewStyle = `\r\n left: ${previewLeft}px;\r\n top: ${previewTop}px;\r\n width: ${maxmizeWidth}px;\r\n `\r\n const imageSrc = target.src || target.getAttribute('data-image')\r\n const imageId = target.getAttribute('data-image-id')\r\n\r\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\r\n if (!previewDom) {\r\n event.currentTarget.insertAdjacentHTML('beforeend', `\r\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\r\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\r\n data-image=\"${imageSrc}\"></i>\r\n </div>\r\n `)\r\n }\r\n }\r\n\r\n removeImagePreviewOverlay() {\r\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\r\n if (previewDom) {\r\n previewDom.parentNode.removeChild(previewDom)\r\n }\r\n }\r\n\r\n onHide() {\r\n this.removeImagePreviewOverlay()\r\n super.onHide()\r\n }\r\n\r\n resetOverlayMarginTop() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = '0px'\r\n }\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n const isReadonly = this.formatter.quill.options.readOnly\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\r\n return\r\n }\r\n\r\n this.img = el as HTMLImageElement\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.resetOverlayMarginTop()\r\n this.formatter.show(this)\r\n\r\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\r\n const imageDom = this.formatter.currentSpec?.getTargetElement()\r\n if (imageDom) {\r\n imageDom.classList.add('current-select-img')\r\n const quill = this.formatter.quill\r\n const imgBlot = quill.scroll.find(this.img)\r\n const index = quill.getIndex(imgBlot)\r\n const len = imgBlot.length()\r\n quill.setSelection(index, len)\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/image-spec.ts"],"sourcesContent":["import { BlotSpec } from './blot-spec'\r\n\r\nexport class ImageSpec extends BlotSpec {\r\n img: HTMLImageElement | null = null\r\n\r\n init() {\r\n this.formatter.quill.root.addEventListener('click', this.onClick)\r\n }\r\n\r\n getTargetElement() {\r\n return this.img\r\n }\r\n\r\n onHide() {\r\n this.img = null\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\r\n return\r\n }\r\n event.stopPropagation()\r\n\r\n this.img = el as HTMLImageElement\r\n this.formatter.show(this)\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAEO,MAAM,kBAAkB,SAAS;AAAA,EAAjC;AAAA;AACL,+BAA+B;AAc/B,mCAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MAAA;AAEF,YAAM,gBAAgB;AAEtB,WAAK,MAAM;AACN,WAAA,UAAU,KAAK,IAAI;AAAA,IAC1B;AAAA;AAAA,EArBA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAAA;AAAA,EAGlE,mBAAmB;AACjB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,SAAS;AACP,SAAK,MAAM;AAAA,EAAA;AAaf;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"divider.es.js","sources":["../../../src/modules/divider.ts"],"sourcesContent":["import type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\r\nimport Quill from 'quill'\r\n\r\nconst BlockEmbed = Quill.import('blots/block/embed') as typeof TypeBlockEmbed\r\n\r\nexport class DividerBlot extends BlockEmbed {\r\n static blotName = 'divider'\r\n static tagName = 'hr'\r\n\r\n static create() {\r\n const node = super.create() as HTMLElement\r\n node.setAttribute('contenteditable', 'false')\r\n return node\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAGA,MAAM,aAAa,MAAM,OAAO,mBAAmB;AAE5C,MAAM,oBAAoB,WAAW;AAAA,EAI1C,OAAO,SAAS;AACR,UAAA,OAAO,MAAM,OAAO;AACrB,SAAA,aAAa,mBAAmB,OAAO;AACrC,WAAA;AAAA,EAAA;AAEX;AARE,cADW,aACJ,YAAW;AAClB,cAFW,aAEJ,WAAU;"}
@@ -1,163 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import data from "../node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.es.js";
5
- import { computePosition } from "../node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js";
6
- import { Picker as $efa000751917694d$export$2e2bcd8739ae039 } from "../node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.es.js";
7
- import { debounce } from "lodash-es";
8
- const DEFAULT_OPTIONS = {
9
- theme: "light",
10
- set: "native",
11
- skinTonePosition: "none",
12
- previewPosition: "bottom",
13
- searchPosition: "sticky",
14
- categories: ["frequent", "people", "nature", "foods", "activity", "places", "objects", "symbols", "flags"],
15
- maxFrequentRows: 2,
16
- perLine: 8,
17
- navPosition: "top",
18
- noCountryFlags: false,
19
- dynamicWidth: false
20
- };
21
- const PICKER_DOM_ID = "emoji-picker";
22
- const LOCALE_MAP = {
23
- "zh-CN": "zh",
24
- "en-US": "en"
25
- };
26
- class EmojiModule {
27
- constructor(quill, options = {}) {
28
- __publicField(this, "quill");
29
- __publicField(this, "options");
30
- __publicField(this, "picker", null);
31
- __publicField(this, "isPickerVisible", false);
32
- __publicField(this, "cleanupResizeObserver", null);
33
- this.quill = quill;
34
- this.options = options;
35
- const toolbar = this.quill.getModule("toolbar");
36
- if (toolbar) {
37
- toolbar.addHandler("emoji", () => {
38
- if (this.isPickerVisible) {
39
- this.closeDialog();
40
- } else {
41
- this.openDialog();
42
- }
43
- });
44
- }
45
- }
46
- getEmojiButton() {
47
- return document.querySelector(".ql-emoji");
48
- }
49
- async updatePickerPosition() {
50
- const button = this.getEmojiButton();
51
- const pickerElement = document.getElementById(PICKER_DOM_ID);
52
- if (!button || !this.picker || !pickerElement) {
53
- return;
54
- }
55
- try {
56
- const { x, y } = await computePosition(button, pickerElement);
57
- this.picker.style.top = `${y}px`;
58
- this.picker.style.left = `${x}px`;
59
- } catch (error) {
60
- console.warn("Failed to compute picker position:", error);
61
- }
62
- }
63
- // 监听容器大小变化,更新表情选择弹窗位置
64
- setupContainerResizeObserver() {
65
- const container = this.quill.root.parentElement;
66
- if (!container) {
67
- return null;
68
- }
69
- const debouncedUpdate = debounce(() => {
70
- this.updatePickerPosition();
71
- }, 100);
72
- const resizeObserver = new ResizeObserver(() => {
73
- debouncedUpdate();
74
- });
75
- resizeObserver.observe(container);
76
- return () => {
77
- resizeObserver.disconnect();
78
- debouncedUpdate.cancel();
79
- };
80
- }
81
- // 创建表情选择弹窗
82
- createPicker() {
83
- const pickerConfig = {
84
- ...DEFAULT_OPTIONS,
85
- // emoji-mart 与 tiny-editor 国际化的的 locale 不一致使用 LOCALE_MAP 转换
86
- locale: LOCALE_MAP[this.quill.lang] ?? "en",
87
- ...this.options,
88
- data,
89
- onEmojiSelect: this.handleEmojiSelect.bind(this),
90
- onClickOutside: this.handleClickOutside.bind(this)
91
- };
92
- const picker = new $efa000751917694d$export$2e2bcd8739ae039(pickerConfig);
93
- picker.id = PICKER_DOM_ID;
94
- picker.style.position = "absolute";
95
- picker.style.zIndex = "1000";
96
- return picker;
97
- }
98
- // 打开表情弹窗
99
- openDialog() {
100
- if (this.picker) {
101
- return;
102
- }
103
- try {
104
- this.picker = this.createPicker();
105
- document.body.appendChild(this.picker);
106
- this.updatePickerPosition();
107
- this.cleanupResizeObserver = this.setupContainerResizeObserver();
108
- this.isPickerVisible = true;
109
- } catch (error) {
110
- console.error("Failed to open emoji picker:", error);
111
- this.closeDialog();
112
- }
113
- }
114
- // 关闭表情弹窗
115
- closeDialog() {
116
- var _a;
117
- if (!this.picker) {
118
- return;
119
- }
120
- this.isPickerVisible = false;
121
- this.picker.remove();
122
- this.picker = null;
123
- (_a = this.cleanupResizeObserver) == null ? void 0 : _a.call(this);
124
- this.cleanupResizeObserver = null;
125
- }
126
- // 处理表情选择事件
127
- handleEmojiSelect(emoji) {
128
- const selection = this.quill.getSelection(true);
129
- if (!selection) {
130
- console.warn("No selection available for emoji insertion");
131
- return;
132
- }
133
- try {
134
- const insertIndex = selection.index;
135
- this.quill.insertText(insertIndex, emoji.native, "user");
136
- this.closeDialog();
137
- this.quill.setSelection(insertIndex + emoji.native.length);
138
- } catch (error) {
139
- console.error("Failed to insert emoji:", error);
140
- }
141
- }
142
- // 处理外部点击事件
143
- handleClickOutside(event) {
144
- const button = this.getEmojiButton();
145
- const target = event.target;
146
- const isClickOnButton = target === button || target instanceof Element && (button == null ? void 0 : button.contains(target));
147
- if (isClickOnButton) {
148
- return;
149
- }
150
- this.closeDialog();
151
- }
152
- // 销毁模块,清理资源
153
- destroy() {
154
- var _a;
155
- (_a = this.cleanupResizeObserver) == null ? void 0 : _a.call(this);
156
- this.cleanupResizeObserver = null;
157
- this.closeDialog();
158
- }
159
- }
160
- export {
161
- EmojiModule
162
- };
163
- //# sourceMappingURL=emoji.es.js.map