@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../src/modules/ai/index.ts"],"sourcesContent":["import type TypeToolbar from 'quill/modules/toolbar'\nimport type FluentEditor from '../../core/fluent-editor'\nimport type { AIOptions, OperationMenuItem, ResultMenuItem } from './types'\nimport {\n CLOSE,\n INPUT_PLACEHOLDER,\n INSERT_SUB_CONTENT_TEXT,\n INSERT_TEXT,\n MENU_ID_MAP,\n MENU_TITLE_DATA,\n REGENERATE,\n REPLACE_SELECT,\n RESULT_HEADER_TEXT,\n SELECT_PLACEHOLDER,\n STOP_ANSWER,\n THINK_TEXT,\n} from './constants'\nimport {\n ADJUST_ICON,\n AI_ICON,\n CALL_ICON,\n CLOSE_ICON,\n COPY_ICON,\n EDITOR_ICON,\n INSERT_ICON,\n MENU_CLOSE_ICON,\n REBUILD_ICON,\n REFRESH_ICON,\n REPLACE_SELECT_ICON,\n RIGHT_ARROW_ICON,\n SEND_BTN_ICON,\n STOP_ICON,\n THINK_ICON,\n} from './icons'\n\nexport class AI {\n toolbar: TypeToolbar\n host: string\n apiKey: string\n model: string\n message: string\n isBreak: boolean = false // 打断标记\n textNumber: number // 文本字数限制\n private _isSelectRangeMode: boolean = false // 选择/点击模式\n private _charCount: number = 0 // 文本字数\n private _debounceTimer = null\n private _inputPlaceholder: string = ''\n private _showOperationMenu: boolean = false\n private _isThinking: boolean = false // 思考中\n private _showResultPopupEl: boolean = false // 结果弹窗\n selectedText: string = '' // 选择的文本\n inputValue: string = '' // 存储输入框的值\n resultMenuList: ResultMenuItem[] = []\n operationMenuList: OperationMenuItem[] = []\n private _operationMenuItemList: OperationMenuItem[] = []\n\n private alertEl: HTMLDivElement | null = null\n private alertTimer: number | null = null\n private selectionBubbleEl: HTMLDivElement | null = null\n private selectionRange: any = null\n private dialogContainerEl: HTMLDivElement | null = null\n private wrapContainerEl: HTMLDivElement | null = null\n private aiIconEl: HTMLSpanElement | null = null\n private inputContainerEl: HTMLDivElement | null = null\n private inputEl: HTMLInputElement | null = null\n private menuContainerEl: HTMLDivElement | null = null\n private subMenuEl: HTMLDivElement | null = null\n private subMenuEditorEl: HTMLDivElement | null = null\n private subMenuToneEl: HTMLDivElement | null = null\n private subMenuAdjustEl: HTMLDivElement | null = null\n private inputRightEl: HTMLDivElement | null = null\n private inputSendBtnEl: HTMLSpanElement | null = null\n private inputCloseBtnEl: HTMLSpanElement | null = null\n private thinkContainerEl: HTMLDivElement | null = null // 思考元素\n private thinkBtnEl: HTMLDivElement | null = null\n private resultPopupEl: HTMLDivElement | null = null\n private resultPopupHeaderEl: HTMLDivElement | null = null\n private resultPopupContentEl: HTMLDivElement | null = null\n private resultPopupFooterEl: HTMLDivElement | null = null\n private resultPopupFooterTextEl: HTMLSpanElement | null = null\n private resultRefreshBtnEl: HTMLSpanElement | null = null\n private resultCopyBtnEl: HTMLSpanElement | null = null\n // 分享和朗读功能待放开\n // private resultShareBtnEl: HTMLSpanElement | null = null\n // private resultVoiceBtnEl: HTMLSpanElement | null = null\n private actionMenuEl: HTMLDivElement | null = null\n\n constructor(\n public quill: FluentEditor,\n public options: AIOptions,\n ) {\n this.quill = quill\n this.toolbar = quill.getModule('toolbar') as TypeToolbar\n // 添加AI按钮到工具栏\n if (typeof this.toolbar !== 'undefined') {\n this.toolbar.addHandler('ai', this.showAIInput.bind(this))\n }\n\n this.quill.on('selection-change', this.handleSelectionChange.bind(this))\n\n this.host = options.host || 'https://api.deepseek.com/v1'\n this.apiKey = options.apiKey\n this.model = options.model || 'deepseek-chat'\n this.textNumber = options.contentMaxLength || 5000\n\n this.resultMenuList = [\n { text: REPLACE_SELECT, icon: REPLACE_SELECT_ICON },\n { text: INSERT_TEXT, icon: INSERT_ICON, selectText: INSERT_SUB_CONTENT_TEXT },\n { text: REGENERATE, icon: REBUILD_ICON },\n { text: CLOSE, icon: MENU_CLOSE_ICON },\n ]\n\n this.operationMenuList = [\n { id: 'editor', text: '编辑调整内容', icon: EDITOR_ICON },\n { id: 'tone', text: '改写口吻', icon: CALL_ICON },\n { id: 'adjust', text: '整理选区内容', icon: ADJUST_ICON },\n ]\n }\n\n // 工具栏启动\n showAIInput() {\n // 创建输入框和结果弹窗\n this.create()\n\n this.selectionRange = this.quill.getSelection()\n if (this.selectionRange.length) {\n this.isSelectRangeMode = true\n }\n else {\n this.isSelectRangeMode = false\n }\n // 定位到编辑器焦点位置\n this.positionElements()\n\n // 添加ESC键监听\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.closeAIPanel()\n this.quill.container.removeEventListener('keydown', handleKeyDown)\n }\n }\n this.quill.container.addEventListener('keydown', handleKeyDown)\n }\n\n // 气泡启动\n private selectTextEvent() {\n if (!this.selectionRange) return\n this.create()\n // 定位到编辑器焦点位置\n this.positionElements()\n\n this.isSelectRangeMode = true\n }\n\n private create() {\n this.createResultElement()\n this.createOperationMenuElements()\n this.createInputBoxElements()\n\n // 创建事件监听\n this.addInputEvent()\n this.addResultEvent()\n this.handleActionMenuDisplay()\n // 添加到编辑器\n this.quill.container.appendChild(this.dialogContainerEl)\n }\n\n // 创建结果弹窗\n private createResultElement() {\n if (!this.resultPopupEl) {\n this.resultPopupEl = document.createElement('div')\n this.resultPopupEl.className = 'ql-ai-result'\n this.resultPopupHeaderEl = document.createElement('div')\n this.resultPopupHeaderEl.className = 'ql-ai-result-header'\n this.resultPopupHeaderEl.textContent = RESULT_HEADER_TEXT\n this.resultPopupContentEl = document.createElement('div')\n this.resultPopupContentEl.className = 'ql-ai-result-content'\n this.resultPopupFooterEl = document.createElement('div')\n this.resultPopupFooterEl.className = 'ql-ai-result-footer'\n this.resultPopupFooterTextEl = document.createElement('span')\n this.resultPopupFooterTextEl.className = 'ql-ai-result-footer-text'\n this.resultPopupFooterTextEl.textContent = `0`\n this.resultRefreshBtnEl = document.createElement('span')\n this.resultRefreshBtnEl.className = 'ql-ai-result-footer-refresh'\n this.resultRefreshBtnEl.innerHTML = REFRESH_ICON\n this.resultCopyBtnEl = document.createElement('span')\n this.resultCopyBtnEl.className = 'ql-ai-result-footer-copy'\n this.resultCopyBtnEl.innerHTML = COPY_ICON\n\n // 分享和朗读功能待放开\n // this.resultShareBtnEl = document.createElement('span')\n // this.resultShareBtnEl.className = 'ql-ai-result-footer-share'\n // this.resultShareBtnEl.innerHTML = SHARE_ICON\n // this.resultVoiceBtnEl = document.createElement('span')\n // this.resultVoiceBtnEl.className = 'ql-ai-result-footer-voice'\n // this.resultVoiceBtnEl.innerHTML = VOICE_ICON\n const resultFooterRightEl: HTMLDivElement = document.createElement('div')\n resultFooterRightEl.className = 'ql-ai-result-footer-right'\n resultFooterRightEl.appendChild(this.resultRefreshBtnEl)\n resultFooterRightEl.appendChild(this.resultCopyBtnEl)\n // 分享和朗读功能待放开\n // resultFooterRightEl.appendChild(this.resultShareBtnEl)\n // resultFooterRightEl.appendChild(this.resultVoiceBtnEl)\n this.resultPopupFooterEl.appendChild(this.resultPopupFooterTextEl)\n this.resultPopupFooterEl.appendChild(resultFooterRightEl)\n this.resultPopupEl.appendChild(this.resultPopupHeaderEl)\n this.resultPopupEl.appendChild(this.resultPopupContentEl)\n this.resultPopupEl.appendChild(this.resultPopupFooterEl)\n }\n this.showResultPopupEl = false\n }\n\n private createOperationMenuElements() {\n if (!this.menuContainerEl) {\n // 创建操作菜单容器\n this.menuContainerEl = document.createElement('div')\n this.menuContainerEl.className = 'ql-ai-menu-container'\n\n // 创建主菜单\n const mainMenu = document.createElement('div')\n mainMenu.className = 'ql-ai-main-menu'\n this.operationMenuList.forEach(({ text, icon, id }) => {\n const menuItem = document.createElement('div')\n menuItem.className = 'ql-ai-menu-item'\n menuItem.innerHTML = `${icon}<span>${text}</span>${RIGHT_ARROW_ICON}`\n menuItem.addEventListener('mouseenter', (e) => {\n e.stopPropagation()\n this.subMenuEl.style.display = 'block'\n this.subMenuEl.className = `ql-ai-sub-menu ${id}`\n this.createOperationMenuItem(id)\n })\n mainMenu.appendChild(menuItem)\n })\n if (!this.subMenuEl) {\n // 创建子菜单\n this.subMenuEl = document.createElement('div')\n this.subMenuEl.className = 'ql-ai-sub-menu'\n this.subMenuEl.style.display = 'none'\n }\n\n this.menuContainerEl.appendChild(mainMenu)\n this.menuContainerEl.appendChild(this.subMenuEl)\n }\n this.showOperationMenu = false\n }\n\n private createOperationMenuItem(id: string) {\n let menuItemBox = this[MENU_ID_MAP[id]]\n if (!menuItemBox) {\n menuItemBox = document.createElement('div')\n }\n // 清除子菜单容器中的所有子元素\n while (this.subMenuEl.firstChild) {\n this.subMenuEl.removeChild(this.subMenuEl.firstChild)\n }\n\n MENU_TITLE_DATA[id].forEach(({ text, icon, id }) => {\n const menuItem = document.createElement('div')\n menuItem.className = 'ql-ai-menu-item'\n menuItem.innerHTML = `${icon || ''}<span>${text}</span>`\n menuItem.addEventListener('click', (e) => {\n e.stopPropagation()\n this.handleOperationMenuItemClick(text, id)\n })\n menuItemBox.appendChild(menuItem)\n })\n this.subMenuEl.appendChild(menuItemBox)\n }\n\n private createInputBoxElements() {\n if (!this.dialogContainerEl) {\n this.dialogContainerEl = document.createElement('div')\n this.dialogContainerEl.className = 'ql-ai-dialog'\n this.wrapContainerEl = document.createElement('div')\n this.wrapContainerEl.className = 'ql-ai-wrapper'\n this.wrapContainerEl.style.width = `${this.quill.container.clientWidth - 30}px`\n\n // 添加AI图标\n this.createAIInputIcon()\n\n // 增加输入框\n this.inputEl = document.createElement('input')\n this.inputEl.type = 'text'\n this.inputPlaceholder = this._isSelectRangeMode ? SELECT_PLACEHOLDER : INPUT_PLACEHOLDER\n // 添加发送按钮\n this.inputSendBtnEl = document.createElement('span')\n this.inputSendBtnEl.className = 'ql-ai-input-right-send'\n this.inputSendBtnEl.innerHTML = SEND_BTN_ICON\n this.inputCloseBtnEl = document.createElement('span')\n this.inputCloseBtnEl.className = 'ql-ai-input-right-close'\n this.inputCloseBtnEl.innerHTML = CLOSE_ICON\n this.inputRightEl = document.createElement('div')\n this.inputRightEl.className = 'ql-ai-input-right'\n\n // 创建输入框\n this.inputContainerEl = document.createElement('div')\n this.inputContainerEl.className = 'ql-ai-input'\n this.inputContainerEl.appendChild(this.aiIconEl)\n this.inputContainerEl.appendChild(this.inputEl)\n this.inputRightEl.appendChild(this.inputSendBtnEl)\n this.inputRightEl.appendChild(this.inputCloseBtnEl)\n this.inputContainerEl.appendChild(this.inputRightEl) // 添加发送按钮\n this.wrapContainerEl.appendChild(this.resultPopupEl)\n this.wrapContainerEl.appendChild(this.inputContainerEl)\n this.wrapContainerEl.appendChild(this.menuContainerEl) // 添加菜单容器\n this.dialogContainerEl.appendChild(this.wrapContainerEl)\n }\n else {\n this.dialogContainerEl.style.display = 'block'\n }\n this.hiddenInputSendBtnEl()\n }\n\n private hiddenInputSendBtnEl(display = 'none') {\n if (this.inputEl && this.inputSendBtnEl) {\n this.inputSendBtnEl.style.display = display\n }\n }\n\n private copyResult() {\n if (!this.resultPopupContentEl) return\n\n try {\n const textToCopy = this.resultPopupContentEl.textContent || ''\n navigator.clipboard\n .writeText(textToCopy)\n .then(() => {\n this.showAlert('内容已复制到剪贴板')\n // 可以在这里添加复制成功的提示\n })\n .catch((err) => {\n this.showAlert(`复制失败:${err}`)\n })\n }\n catch (err) {\n this.showAlert(`复制失败:${err}`)\n // 兼容不支持clipboard API的浏览器\n const textarea = document.createElement('textarea')\n textarea.value = this.resultPopupContentEl.textContent || ''\n document.body.appendChild(textarea)\n textarea.select()\n document.execCommand('copy')\n document.body.removeChild(textarea)\n }\n }\n\n // 分享和朗读功能待放开\n // private shareResult() {\n // if (!this.resultPopupContentEl) return\n\n // const textToShare = this.resultPopupContentEl.textContent || ''\n // const title = 'AI生成内容分享'\n\n // if (navigator.share) {\n // navigator.share({\n // title,\n // text: textToShare,\n // })\n // .catch((err) => {\n // this.showAlert(`分享失败:${err}`)\n // })\n // }\n // else {\n // // 兼容不支持Web Share API的浏览器\n // const shareUrl = `mailto:?subject=${encodeURIComponent(title)}&body=${encodeURIComponent(textToShare)}`\n // window.open(shareUrl, '_blank')\n // }\n // }\n // private voiceResult() {\n // if (!this.resultPopupContentEl) return\n\n // const textToSpeak = this.resultPopupContentEl.textContent || ''\n\n // if ('speechSynthesis' in window) {\n // const utterance = new SpeechSynthesisUtterance(textToSpeak)\n // utterance.lang = 'zh-CN' // 设置中文语音\n // speechSynthesis.speak(utterance)\n // }\n // else {\n // this.showAlert('当前浏览器不支持语音合成API')\n // // 可以在这里添加不支持语音的提示\n // }\n // }\n\n private addResultEvent() {\n if (this.resultRefreshBtnEl) {\n this.resultRefreshBtnEl.addEventListener('click', () => {\n this.regenerateResponse()\n })\n }\n\n if (this.resultCopyBtnEl) {\n this.resultCopyBtnEl.addEventListener('click', () => {\n this.copyResult()\n })\n }\n\n // 分享和朗读功能待放开\n // if (this.resultShareBtnEl) {\n // this.resultShareBtnEl.addEventListener('click', () => {\n // this.shareResult()\n // })\n // }\n // if (this.resultVoiceBtnEl) {\n // this.resultVoiceBtnEl.addEventListener('click', () => {\n // this.voiceResult()\n // })\n // }\n }\n\n // 显示选中文本的气泡\n private showSelectionBubble() {\n if (!this.selectionBubbleEl) {\n this.selectionBubbleEl = document.createElement('div')\n this.selectionBubbleEl.className = 'ql-ai-selection-bubble'\n const icon = AI_ICON.replaceAll('paint_linear_2', 'paint_linear_bubble')\n this.selectionBubbleEl.innerHTML = `${icon}<span>AI 智能</span>`\n this.selectionBubbleEl.addEventListener('click', () => this.selectTextEvent())\n document.body.appendChild(this.selectionBubbleEl)\n }\n\n const { left, top } = this.quill.getBounds(this.selectionRange.index)\n const { left: endLeft } = this.quill.getBounds(this.selectionRange.index + this.selectionRange.length)\n const width = (endLeft - left) / 2\n const editorRect = this.quill.container.getBoundingClientRect()\n\n this.selectionBubbleEl.style.display = 'flex'\n this.selectionBubbleEl.style.left = `${left + editorRect.left + width - 45}px`\n this.selectionBubbleEl.style.top = `${top + editorRect.top - 40}px`\n }\n\n // 隐藏选中文本的气泡\n private hideSelectionBubble() {\n if (this.selectionBubbleEl) {\n this.selectionBubbleEl.style.display = 'none'\n }\n }\n\n // 处理文本选中变化\n private handleSelectionChange(range: any) {\n if (range && range.length > 0) {\n this.selectionRange = range\n this.showSelectionBubble()\n this.selectedText = this.quill.getText(range.index, range.length)\n }\n else {\n if (range && range.index !== null) {\n this.selectedText = ''\n this.closeAIPanel()\n }\n else {\n this.hideSelectionBubble()\n }\n }\n }\n\n private addInputEvent() {\n if (this.inputContainerEl) {\n this.inputContainerEl.addEventListener('click', () => {})\n }\n\n // 监听输入事件\n if (this.inputEl) {\n this.inputEl.addEventListener('input', () => {\n this.hiddenInputSendBtnEl(this.inputEl.value.trim() ? 'flex' : 'none')\n if (this.menuContainerEl && this._isSelectRangeMode) {\n this.showOperationMenu = !this.inputEl.value.trim() && !this._showResultPopupEl\n }\n })\n }\n\n // 给发送按钮添加点击事件\n if (this.inputSendBtnEl) {\n this.inputSendBtnEl.addEventListener('click', async () => {\n await this.queryAI()\n })\n }\n // 监听发送事件\n this.inputEl.addEventListener('keydown', async (e) => {\n if (e.key === 'Enter') {\n await this.queryAI()\n }\n })\n\n // 给关闭按钮添加点击事件\n if (this.inputCloseBtnEl) {\n this.inputCloseBtnEl.addEventListener('click', () => {\n this.closeAIPanel()\n })\n }\n }\n\n private positionElements() {\n if (!this.dialogContainerEl) return\n const range = this.selectionRange\n if (range) {\n const bounds = this.quill.getBounds(range.index)\n this.dialogContainerEl.style.position = 'absolute'\n this.dialogContainerEl.style.top = `${bounds.top + bounds.height + 20}px`\n }\n }\n\n // 添加创建alert元素的方法\n private createAlertElement() {\n if (!this.alertEl) {\n this.alertEl = document.createElement('div')\n this.alertEl.className = 'ql-ai-alert'\n this.alertEl.style.display = 'none'\n document.body.appendChild(this.alertEl)\n }\n }\n\n // 添加显示alert的方法\n private showAlert(message: string, duration: number = 3000) {\n this.createAlertElement()\n if (!this.alertEl) return\n\n // 清除之前的定时器\n if (this.alertTimer) {\n clearTimeout(this.alertTimer)\n this.alertTimer = null\n }\n\n this.alertEl.textContent = message\n this.alertEl.style.display = 'block'\n\n // 自动隐藏\n this.alertTimer = setTimeout(() => {\n if (this.alertEl) {\n this.alertEl.style.display = 'none'\n }\n this.alertTimer = null\n }, duration) as unknown as number\n }\n\n private createAIInputIcon() {\n if (!this.aiIconEl) {\n this.aiIconEl = document.createElement('span')\n this.aiIconEl.className = 'ql-ai-input-pre-icon'\n const icon = AI_ICON.replaceAll('paint_linear_2', 'paint_linear_ai_input')\n this.aiIconEl.innerHTML = icon\n }\n }\n\n // 添加处理子菜单点击的方法\n private handleOperationMenuItemClick(text: string, id: string = '') {\n let quetion = ''\n if (id.startsWith('1-') || id.startsWith('3-')) {\n quetion = `将目标文字${text},目标文字为:${this.selectedText}`\n }\n else if (id.startsWith('2-')) {\n quetion = `改写目标文字的口吻,让其变得${text},目标文字为:${this.selectedText}`\n }\n this.showOperationMenu = false\n this.queryAI(quetion)\n }\n\n private createActionMenu() {\n if (!this.actionMenuEl) {\n this.actionMenuEl = document.createElement('div')\n this.actionMenuEl.className = 'ql-ai-actions'\n\n this.resultMenuList.forEach(({ text, icon }) => {\n const menuItem = document.createElement('div')\n menuItem.className = 'ql-ai-action-item'\n menuItem.innerHTML = `${icon}<span class=\"ql-ai-result-menu-text\">${text}</span>`\n menuItem.addEventListener('click', () => this.handleAction(text))\n this.actionMenuEl.appendChild(menuItem)\n })\n\n this.wrapContainerEl.appendChild(this.actionMenuEl)\n }\n const secondMenuItemText = this.actionMenuEl.children[1].querySelector('.ql-ai-result-menu-text') as HTMLDivElement\n\n const firstChild = this.actionMenuEl.firstChild\n\n if (!this._isSelectRangeMode) {\n if (firstChild instanceof Element) {\n firstChild.classList.add('hidden')\n }\n\n secondMenuItemText.textContent = INSERT_TEXT\n }\n else {\n if (firstChild instanceof Element) {\n firstChild.classList.remove('hidden')\n }\n\n secondMenuItemText.textContent = INSERT_SUB_CONTENT_TEXT\n }\n\n this.isThinking = false\n }\n\n private handleActionMenuDisplay(value: string = 'none') {\n if (this.actionMenuEl) {\n this.actionMenuEl.style.display = value\n }\n }\n\n private switchInputEl(showInput = true) {\n if (this.inputContainerEl) {\n this.inputContainerEl.style.display = showInput ? 'flex' : 'none'\n }\n\n this.handleActionMenuDisplay(showInput ? 'block' : 'none')\n\n if (this.thinkContainerEl) {\n this.thinkContainerEl.style.display = showInput ? 'none' : 'flex'\n }\n }\n\n // 创建思考元素\n private createThinkElements() {\n if (!this.thinkContainerEl) {\n this.thinkContainerEl = document.createElement('div')\n this.thinkContainerEl.className = 'ql-ai-input'\n this.thinkContainerEl.innerHTML = `<span class=\"ql-ai-input-pre-icon ql-ai-think-icon\">${THINK_ICON}</span><span class=\"ql-ai-think-text\">${THINK_TEXT}</span>`\n this.thinkBtnEl = document.createElement('div')\n this.thinkBtnEl.className = 'ql-ai-think-btn'\n this.thinkBtnEl.innerHTML = `${STOP_ICON}<span>${STOP_ANSWER}</span>`\n this.thinkContainerEl.appendChild(this.thinkBtnEl)\n this.wrapContainerEl.appendChild(this.thinkContainerEl) // 添加发送按钮\n this.thinkBtnEl.addEventListener('click', () => {\n this.isBreak = true\n this.isThinking = false\n })\n }\n\n this.isThinking = true\n }\n\n // AI查询\n private async queryAI(question?: string): Promise<string> {\n this.createThinkElements()\n this.inputValue = question || this.inputEl.value\n if (this.inputValue.trim() === '') {\n return\n }\n\n // 有信息\n this.isBreak = false // 重置打断标记,防止重复打断ai\n // 这里实现实际的AI查询逻辑\n try {\n const response = await fetch(`${this.host}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({\n model: this.model,\n prompt: this.inputValue,\n stream: true,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let content = ''\n\n while (true) {\n if (this.isBreak) {\n this.isBreak = false\n break\n }\n\n const { done, value } = await reader.read()\n if (done) break\n\n const chunk = decoder.decode(value)\n const lines = chunk.split('\\n').filter(line => line.trim() !== '')\n\n for (const line of lines) {\n try {\n const data = JSON.parse(line)\n content += data.response || ''\n this.showAIResponse(content)\n }\n catch (e) {\n console.error('解析错误:', e)\n }\n }\n }\n\n // 创建操作菜单\n this.createActionMenu()\n this.inputEl.value = '' // 清空输入框\n this.hiddenInputSendBtnEl()\n return content\n }\n catch (error) {\n console.error('AI查询失败:', error)\n return 'AI查询失败,请重试'\n }\n }\n\n private showAIResponse(response: string) {\n if (!this.resultPopupEl) return\n\n // 显示结果\n if (this._charCount <= this.textNumber) {\n this.resultPopupContentEl.innerHTML = response\n this.charCount = this.resultPopupContentEl.textContent.replace(/\\s+/g, '').length\n }\n else {\n this.isBreak = true\n this.charCount = 0\n }\n this.showResultPopupEl = true\n }\n\n private handleAction(action: string) {\n switch (action) {\n case REPLACE_SELECT:\n this.replaceSelectText()\n break\n case INSERT_TEXT:\n this.insertAIResponse()\n break\n case REGENERATE:\n this.regenerateResponse()\n break\n case CLOSE:\n this.closeAIPanel()\n break\n }\n }\n\n private replaceSelectText() {\n if (!this.resultPopupContentEl) return\n const range = this.quill.getSelection(true)\n if (range && range.length > 0) {\n // 删除选中内容\n this.quill.deleteText(range.index, range.length)\n // 插入AI生成的内容\n this.quill.clipboard.dangerouslyPasteHTML(range.index, this.resultPopupContentEl.innerHTML)\n }\n this.closeAIPanel()\n }\n\n private insertAIResponse() {\n if (!this.resultPopupContentEl) return\n const range = this.quill.getSelection(true)\n if (range) {\n this.quill.clipboard.dangerouslyPasteHTML(range.index + range.length, this.resultPopupContentEl.innerHTML)\n }\n this.closeAIPanel()\n }\n\n private async regenerateResponse() {\n await this.queryAI(this.inputValue)\n }\n\n private closeAIPanel() {\n this.isBreak = true // 停止查询\n\n if (this.dialogContainerEl) {\n this.dialogContainerEl.style.display = 'none'\n }\n\n if (this.actionMenuEl) {\n this.actionMenuEl.style.display = 'none'\n }\n\n this.showResultPopupEl = false\n\n if (this.inputEl && this.inputEl.value.trim() !== '') {\n this.inputEl.value = '' // 清空输入框\n }\n this.hideSelectionBubble()\n }\n\n set charCount(value: number) {\n // 清除之前的定时器\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer)\n }\n\n this._debounceTimer = setTimeout(() => {\n this._charCount = value\n if (this.resultPopupFooterTextEl) {\n this.resultPopupFooterTextEl.textContent = `${this._charCount}/${this.textNumber}`\n }\n clearTimeout(this._debounceTimer)\n this._debounceTimer = null\n }, 210)\n }\n\n get charCount() {\n return this._charCount\n }\n\n set inputPlaceholder(value: string) {\n this._inputPlaceholder = value\n if (this.inputEl) {\n this.inputEl.placeholder = value\n }\n }\n\n get inputPlaceholder() {\n return this._inputPlaceholder\n }\n\n set showOperationMenu(value: boolean) {\n this._showOperationMenu = value\n if (this.menuContainerEl) {\n this.menuContainerEl.style.display = value ? 'flex' : 'none'\n }\n }\n\n get showOperationMenu() {\n return this._showOperationMenu\n }\n\n set isSelectRangeMode(value: boolean) {\n this._isSelectRangeMode = value\n this.showOperationMenu = value\n this.inputPlaceholder = value ? SELECT_PLACEHOLDER : INPUT_PLACEHOLDER\n this.hideSelectionBubble()\n }\n\n get isSelectRangeMode() {\n return this._isSelectRangeMode\n }\n\n set isThinking(value: boolean) {\n this._isThinking = value\n this.switchInputEl(!value)\n }\n\n get isThinking() {\n return this._isThinking\n }\n\n set showResultPopupEl(value: boolean) {\n this._showResultPopupEl = value\n if (this.resultPopupEl) {\n this.resultPopupEl.style.display = value ? 'block' : 'none'\n }\n }\n\n get showResultPopupEl() {\n return this._showResultPopupEl\n }\n}\n"],"names":["id"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import * as Y from "yjs";
2
+ function setupAwareness(options, defaultAwareness) {
3
+ if (!defaultAwareness) return null;
4
+ const awareness = defaultAwareness;
5
+ if (options == null ? void 0 : options.state) {
6
+ awareness.setLocalStateField("user", options.state);
7
+ }
8
+ return awareness;
9
+ }
10
+ function bindAwarenessToCursors(awareness, cursorsModule, quill, yText) {
11
+ if (!cursorsModule || !awareness) return;
12
+ const doc = yText.doc;
13
+ const updateCursor = (clientId, state) => {
14
+ try {
15
+ if ((state == null ? void 0 : state.cursor) && clientId !== awareness.clientID) {
16
+ const user = state.user || {};
17
+ const color = user.color || "#ff6b6b";
18
+ const name = user.name || `User ${clientId}`;
19
+ cursorsModule.createCursor(clientId.toString(), name, color);
20
+ const anchor = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(state.cursor.anchor), doc);
21
+ const head = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(state.cursor.head), doc);
22
+ if (anchor && head && anchor.type === yText && clientId) {
23
+ setTimeout(() => {
24
+ cursorsModule.moveCursor(clientId.toString(), {
25
+ index: anchor.index,
26
+ length: head.index - anchor.index
27
+ });
28
+ }, 0);
29
+ }
30
+ } else {
31
+ cursorsModule.removeCursor(clientId.toString());
32
+ }
33
+ } catch (err) {
34
+ console.error("Cursor update failed:", err);
35
+ }
36
+ };
37
+ const selectionChangeHandler = (range) => {
38
+ setTimeout(() => {
39
+ var _a;
40
+ if (range) {
41
+ const anchor = Y.createRelativePositionFromTypeIndex(yText, range.index);
42
+ const head = Y.createRelativePositionFromTypeIndex(yText, range.index + range.length);
43
+ const currentState = awareness.getLocalState();
44
+ if (!(currentState == null ? void 0 : currentState.cursor) || !Y.compareRelativePositions(anchor, currentState.cursor.anchor) || !Y.compareRelativePositions(head, currentState.cursor.head)) {
45
+ awareness.setLocalStateField("cursor", { anchor, head });
46
+ }
47
+ } else {
48
+ if (((_a = awareness.getLocalState()) == null ? void 0 : _a.cursor) !== null) {
49
+ awareness.setLocalStateField("cursor", null);
50
+ }
51
+ }
52
+ }, 0);
53
+ };
54
+ const changeHandler = ({ added, updated, removed }) => {
55
+ if (quill.composition.isComposing) return;
56
+ const states = awareness.getStates();
57
+ added.forEach((id) => {
58
+ updateCursor(id, states.get(id));
59
+ });
60
+ updated.forEach((id) => {
61
+ updateCursor(id, states.get(id));
62
+ });
63
+ removed.forEach((id) => {
64
+ cursorsModule.removeCursor(id.toString());
65
+ });
66
+ };
67
+ awareness.on("change", changeHandler);
68
+ quill.on("editor-change", (eventName, ...args) => {
69
+ if (quill.composition.isComposing) return;
70
+ if (eventName === "text-change") {
71
+ if (args[2] === "user") {
72
+ const range = quill.getSelection();
73
+ selectionChangeHandler(range);
74
+ }
75
+ } else if (eventName === "selection-change") {
76
+ if (args[2] === "user") {
77
+ selectionChangeHandler(args[0]);
78
+ }
79
+ }
80
+ });
81
+ awareness.getStates().forEach((state, clientId) => {
82
+ updateCursor(clientId, state);
83
+ });
84
+ return () => {
85
+ awareness.off("change", changeHandler);
86
+ quill.off("editor-change", selectionChangeHandler);
87
+ };
88
+ }
89
+ export {
90
+ bindAwarenessToCursors,
91
+ setupAwareness
92
+ };
93
+ //# sourceMappingURL=awareness.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awareness.es.js","sources":["../../../../../src/modules/collaborative-editing/awareness/awareness.ts"],"sourcesContent":["import type QuillCursors from 'quill-cursors'\nimport type { Awareness } from 'y-protocols/awareness'\nimport type FluentEditor from '../../../core/fluent-editor'\nimport * as Y from 'yjs'\n\nexport interface AwarenessState {\n name?: string\n color?: string\n}\n\nexport interface AwarenessEvents {\n change?: (changes: { added: number[], updated: number[], removed: number[] }, transactionOrigin: any) => void\n update?: ({ added, updated, removed }: { added: number[], updated: number[], removed: number[] }, origin: any) => void\n destroy?: () => void\n}\n\nexport interface AwarenessOptions {\n state?: AwarenessState\n events?: AwarenessEvents\n timeout?: number | undefined\n}\n\nexport function setupAwareness(options?: AwarenessOptions, defaultAwareness?: Awareness): Awareness | null {\n if (!defaultAwareness) return null\n\n const awareness = defaultAwareness\n\n if (options?.state) {\n awareness.setLocalStateField('user', options.state)\n }\n\n return awareness\n}\n\nexport function bindAwarenessToCursors(\n awareness: Awareness,\n cursorsModule: QuillCursors,\n quill: FluentEditor,\n yText: Y.Text,\n): (() => void) | void {\n if (!cursorsModule || !awareness) return\n\n const doc = yText.doc!\n\n const updateCursor = (clientId: number, state: any) => {\n try {\n if (state?.cursor && clientId !== awareness.clientID) {\n const user = state.user || {}\n const color = user.color || '#ff6b6b'\n const name = user.name || `User ${clientId}`\n\n cursorsModule.createCursor(clientId.toString(), name, color)\n\n const anchor = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(state.cursor.anchor), doc)\n const head = Y.createAbsolutePositionFromRelativePosition(Y.createRelativePositionFromJSON(state.cursor.head), doc)\n\n if (anchor && head && anchor.type === yText && clientId) {\n setTimeout(() => {\n cursorsModule.moveCursor(clientId.toString(), {\n index: anchor.index,\n length: head.index - anchor.index,\n })\n }, 0)\n }\n }\n else {\n cursorsModule.removeCursor(clientId.toString())\n }\n }\n catch (err) {\n console.error('Cursor update failed:', err)\n }\n }\n\n const selectionChangeHandler = (range: { index: number, length: number } | null) => {\n setTimeout(() => {\n if (range) {\n const anchor = Y.createRelativePositionFromTypeIndex(yText, range.index)\n const head = Y.createRelativePositionFromTypeIndex(yText, range.index + range.length)\n\n const currentState = awareness.getLocalState()\n if (!currentState?.cursor\n || !Y.compareRelativePositions(anchor, currentState.cursor.anchor)\n || !Y.compareRelativePositions(head, currentState.cursor.head)) {\n awareness.setLocalStateField('cursor', { anchor, head })\n }\n }\n else {\n if (awareness.getLocalState()?.cursor !== null) {\n awareness.setLocalStateField('cursor', null)\n }\n }\n }, 0)\n }\n\n const changeHandler = ({ added, updated, removed }: {\n added: number[]\n updated: number[]\n removed: number[]\n }) => {\n if (quill.composition.isComposing) return\n const states = awareness.getStates()\n\n added.forEach((id) => {\n updateCursor(id, states.get(id))\n })\n\n updated.forEach((id) => {\n updateCursor(id, states.get(id))\n })\n\n removed.forEach((id) => {\n cursorsModule.removeCursor(id.toString())\n })\n }\n\n awareness.on('change', changeHandler)\n quill.on('editor-change', (eventName, ...args) => {\n if (quill.composition.isComposing) return\n if (eventName === 'text-change') {\n if (args[2] === 'user') {\n const range = quill.getSelection()\n selectionChangeHandler(range)\n }\n }\n else if (eventName === 'selection-change') {\n if (args[2] === 'user') {\n selectionChangeHandler(args[0] as { index: number, length: number } | null)\n }\n }\n })\n\n awareness.getStates().forEach((state, clientId) => {\n updateCursor(clientId, state)\n })\n\n return () => {\n awareness.off('change', changeHandler)\n quill.off('editor-change', selectionChangeHandler)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { IndexeddbPersistence } from "y-indexeddb";
2
+ function setupIndexedDB(doc) {
3
+ const fullDbName = `tiny-editor-${doc.guid}`;
4
+ new IndexeddbPersistence(fullDbName, doc);
5
+ return () => {
6
+ indexedDB.deleteDatabase(fullDbName);
7
+ };
8
+ }
9
+ export {
10
+ setupIndexedDB
11
+ };
12
+ //# sourceMappingURL=y-indexeddb.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"y-indexeddb.es.js","sources":["../../../../../src/modules/collaborative-editing/awareness/y-indexeddb.ts"],"sourcesContent":["import type { Doc } from 'yjs'\nimport { IndexeddbPersistence } from 'y-indexeddb'\n\nexport function setupIndexedDB(doc: Doc): () => void {\n const fullDbName = `tiny-editor-${doc.guid}`\n\n new IndexeddbPersistence(fullDbName, doc)\n\n return (): void => {\n indexedDB.deleteDatabase(fullDbName)\n }\n}\n"],"names":[],"mappings":";AAGO,SAAS,eAAe,KAAsB;AAC7C,QAAA,aAAa,eAAe,IAAI,IAAI;AAEtC,MAAA,qBAAqB,YAAY,GAAG;AAExC,SAAO,MAAY;AACjB,cAAU,eAAe,UAAU;AAAA,EACrC;AACF;"}
@@ -0,0 +1,105 @@
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 QuillCursors from "quill-cursors";
5
+ import { Awareness } from "y-protocols/awareness";
6
+ import { QuillBinding } from "y-quill";
7
+ import * as Y from "yjs";
8
+ import "./awareness/index.es.js";
9
+ import { setupIndexedDB } from "./awareness/y-indexeddb.es.js";
10
+ import { createProvider } from "./provider/providerRegistry.es.js";
11
+ import { setupAwareness, bindAwarenessToCursors } from "./awareness/awareness.es.js";
12
+ class CollaborativeEditor {
13
+ constructor(quill, options) {
14
+ __publicField(this, "ydoc", new Y.Doc());
15
+ __publicField(this, "provider");
16
+ __publicField(this, "awareness");
17
+ __publicField(this, "cursors");
18
+ __publicField(this, "cleanupBindings", null);
19
+ __publicField(this, "clearIndexedDB", null);
20
+ this.quill = quill;
21
+ this.options = options;
22
+ this.ydoc = this.options.ydoc || new Y.Doc();
23
+ if (this.options.cursors !== false) {
24
+ const cursorsOptions = typeof this.options.cursors === "object" ? this.options.cursors : {};
25
+ this.cursors = new QuillCursors(quill, cursorsOptions);
26
+ }
27
+ if (this.options.awareness) {
28
+ const awareness = setupAwareness(this.options.awareness, new Awareness(this.ydoc));
29
+ if (!awareness) {
30
+ throw new Error("Failed to initialize awareness");
31
+ }
32
+ this.awareness = awareness;
33
+ } else {
34
+ this.awareness = new Awareness(this.ydoc);
35
+ }
36
+ if (this.options.provider) {
37
+ const providerConfig = this.options.provider;
38
+ try {
39
+ const provider = createProvider({
40
+ doc: this.ydoc,
41
+ options: providerConfig.options,
42
+ type: providerConfig.type,
43
+ awareness: this.awareness,
44
+ onConnect: this.options.onConnect,
45
+ onDisconnect: this.options.onDisconnect,
46
+ onError: this.options.onError,
47
+ onSyncChange: this.options.onSyncChange
48
+ });
49
+ this.provider = provider;
50
+ } catch (error) {
51
+ console.warn(
52
+ `[yjs] Error creating provider of type ${providerConfig.type}:`,
53
+ error
54
+ );
55
+ }
56
+ }
57
+ if (this.provider) {
58
+ const ytext = this.ydoc.getText("tiny-editor");
59
+ this.cleanupBindings = bindAwarenessToCursors(this.awareness, this.cursors, quill, ytext) || null;
60
+ new QuillBinding(
61
+ ytext,
62
+ this.quill,
63
+ this.awareness
64
+ );
65
+ } else {
66
+ console.error("Failed to initialize collaborative editor: no valid provider configured");
67
+ }
68
+ if (this.options.offline !== false) {
69
+ this.clearIndexedDB = setupIndexedDB(this.ydoc);
70
+ }
71
+ }
72
+ getAwareness() {
73
+ return this.awareness;
74
+ }
75
+ getProvider() {
76
+ return this.provider;
77
+ }
78
+ getYDoc() {
79
+ return this.ydoc;
80
+ }
81
+ get isConnected() {
82
+ var _a;
83
+ return ((_a = this.provider) == null ? void 0 : _a.isConnected) ?? false;
84
+ }
85
+ get isSynced() {
86
+ var _a;
87
+ return ((_a = this.provider) == null ? void 0 : _a.isSynced) ?? false;
88
+ }
89
+ getCursors() {
90
+ return this.cursors;
91
+ }
92
+ async destroy() {
93
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
94
+ (_a = this.cleanupBindings) == null ? void 0 : _a.call(this);
95
+ (_c = (_b = this.provider) == null ? void 0 : _b.destroy) == null ? void 0 : _c.call(_b);
96
+ (_d = this.cursors) == null ? void 0 : _d.clearCursors();
97
+ (_f = (_e = this.awareness) == null ? void 0 : _e.destroy) == null ? void 0 : _f.call(_e);
98
+ (_g = this.clearIndexedDB) == null ? void 0 : _g.call(this);
99
+ (_i = (_h = this.ydoc) == null ? void 0 : _h.destroy) == null ? void 0 : _i.call(_h);
100
+ }
101
+ }
102
+ export {
103
+ CollaborativeEditor
104
+ };
105
+ //# sourceMappingURL=collaborative-editing.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaborative-editing.es.js","sources":["../../../../src/modules/collaborative-editing/collaborative-editing.ts"],"sourcesContent":["import type FluentEditor from '../../fluent-editor'\nimport type { UnifiedProvider } from './provider/providerRegistry'\nimport type { YjsOptions } from './types'\nimport QuillCursors from 'quill-cursors'\nimport { Awareness } from 'y-protocols/awareness'\nimport { QuillBinding } from 'y-quill'\nimport * as Y from 'yjs'\nimport { bindAwarenessToCursors, setupAwareness } from './awareness'\nimport { setupIndexedDB } from './awareness/y-indexeddb'\nimport { createProvider } from './provider/providerRegistry'\n\nexport class CollaborativeEditor {\n private ydoc: Y.Doc = new Y.Doc()\n private provider: UnifiedProvider\n private awareness: Awareness\n private cursors: QuillCursors | null\n private cleanupBindings: (() => void) | null = null\n private clearIndexedDB: (() => void) | null = null\n\n constructor(\n public quill: FluentEditor,\n public options: YjsOptions,\n ) {\n this.ydoc = this.options.ydoc || new Y.Doc()\n\n if (this.options.cursors !== false) {\n const cursorsOptions = typeof this.options.cursors === 'object' ? this.options.cursors : {}\n this.cursors = new QuillCursors(quill, cursorsOptions)\n }\n\n if (this.options.awareness) {\n const awareness = setupAwareness(this.options.awareness, new Awareness(this.ydoc))\n if (!awareness) {\n throw new Error('Failed to initialize awareness')\n }\n this.awareness = awareness\n }\n else {\n this.awareness = new Awareness(this.ydoc)\n }\n\n if (this.options.provider) {\n const providerConfig = this.options.provider\n try {\n const provider = createProvider({\n doc: this.ydoc,\n options: providerConfig.options,\n type: providerConfig.type,\n awareness: this.awareness,\n onConnect: this.options.onConnect,\n onDisconnect: this.options.onDisconnect,\n onError: this.options.onError,\n onSyncChange: this.options.onSyncChange,\n })\n this.provider = provider\n }\n catch (error) {\n console.warn(\n `[yjs] Error creating provider of type ${providerConfig.type}:`,\n error,\n )\n }\n }\n\n if (this.provider) {\n const ytext = this.ydoc.getText('tiny-editor')\n this.cleanupBindings = bindAwarenessToCursors(this.awareness, this.cursors, quill, ytext) || null\n new QuillBinding(\n ytext,\n this.quill,\n this.awareness,\n )\n }\n else {\n console.error('Failed to initialize collaborative editor: no valid provider configured')\n }\n\n if (this.options.offline !== false) {\n this.clearIndexedDB = setupIndexedDB(this.ydoc)\n }\n }\n\n public getAwareness() {\n return this.awareness\n }\n\n public getProvider() {\n return this.provider\n }\n\n public getYDoc() {\n return this.ydoc\n }\n\n get isConnected() {\n return this.provider?.isConnected ?? false\n }\n\n get isSynced() {\n return this.provider?.isSynced ?? false\n }\n\n public getCursors() {\n return this.cursors\n }\n\n public async destroy() {\n this.cleanupBindings?.()\n this.provider?.destroy?.()\n this.cursors?.clearCursors()\n this.awareness?.destroy?.()\n this.clearIndexedDB?.()\n this.ydoc?.destroy?.()\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAWO,MAAM,oBAAoB;AAAA,EAQ/B,YACS,OACA,SACP;AAVM,gCAAc,IAAI,EAAE,IAAI;AACxB;AACA;AACA;AACA,2CAAuC;AACvC,0CAAsC;AAGrC,SAAA,QAAA;AACA,SAAA,UAAA;AAEP,SAAK,OAAO,KAAK,QAAQ,QAAQ,IAAI,EAAE,IAAI;AAEvC,QAAA,KAAK,QAAQ,YAAY,OAAO;AAC5B,YAAA,iBAAiB,OAAO,KAAK,QAAQ,YAAY,WAAW,KAAK,QAAQ,UAAU,CAAC;AAC1F,WAAK,UAAU,IAAI,aAAa,OAAO,cAAc;AAAA,IAAA;AAGnD,QAAA,KAAK,QAAQ,WAAW;AACpB,YAAA,YAAY,eAAe,KAAK,QAAQ,WAAW,IAAI,UAAU,KAAK,IAAI,CAAC;AACjF,UAAI,CAAC,WAAW;AACR,cAAA,IAAI,MAAM,gCAAgC;AAAA,MAAA;AAElD,WAAK,YAAY;AAAA,IAAA,OAEd;AACH,WAAK,YAAY,IAAI,UAAU,KAAK,IAAI;AAAA,IAAA;AAGtC,QAAA,KAAK,QAAQ,UAAU;AACnB,YAAA,iBAAiB,KAAK,QAAQ;AAChC,UAAA;AACF,cAAM,WAAW,eAAe;AAAA,UAC9B,KAAK,KAAK;AAAA,UACV,SAAS,eAAe;AAAA,UACxB,MAAM,eAAe;AAAA,UACrB,WAAW,KAAK;AAAA,UAChB,WAAW,KAAK,QAAQ;AAAA,UACxB,cAAc,KAAK,QAAQ;AAAA,UAC3B,SAAS,KAAK,QAAQ;AAAA,UACtB,cAAc,KAAK,QAAQ;AAAA,QAAA,CAC5B;AACD,aAAK,WAAW;AAAA,eAEX,OAAO;AACJ,gBAAA;AAAA,UACN,yCAAyC,eAAe,IAAI;AAAA,UAC5D;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAGF,QAAI,KAAK,UAAU;AACjB,YAAM,QAAQ,KAAK,KAAK,QAAQ,aAAa;AACxC,WAAA,kBAAkB,uBAAuB,KAAK,WAAW,KAAK,SAAS,OAAO,KAAK,KAAK;AACzF,UAAA;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IAAA,OAEG;AACH,cAAQ,MAAM,yEAAyE;AAAA,IAAA;AAGrF,QAAA,KAAK,QAAQ,YAAY,OAAO;AAC7B,WAAA,iBAAiB,eAAe,KAAK,IAAI;AAAA,IAAA;AAAA,EAChD;AAAA,EAGK,eAAe;AACpB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGP,cAAc;AACnB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGP,UAAU;AACf,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,IAAI,cAAc;;AACT,aAAA,UAAK,aAAL,mBAAe,gBAAe;AAAA,EAAA;AAAA,EAGvC,IAAI,WAAW;;AACN,aAAA,UAAK,aAAL,mBAAe,aAAY;AAAA,EAAA;AAAA,EAG7B,aAAa;AAClB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,MAAa,UAAU;;AACrB,eAAK,oBAAL;AACA,qBAAK,aAAL,mBAAe,YAAf;AACA,eAAK,YAAL,mBAAc;AACd,qBAAK,cAAL,mBAAgB,YAAhB;AACA,eAAK,mBAAL;AACA,qBAAK,SAAL,mBAAW,YAAX;AAAA,EAAqB;AAEzB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.es.js","sources":["../../../../src/modules/collaborative-editing/module.ts"],"sourcesContent":["import type FluentEditor from '../../fluent-editor'\nimport { CollaborativeEditor } from './collaborative-editing'\n\nexport class CollaborationModule {\n private collaborativeEditor: CollaborativeEditor\n\n constructor(public quill: FluentEditor, public options: any) {\n this.collaborativeEditor = new CollaborativeEditor(quill, options)\n\n window.addEventListener(\n 'beforeunload',\n () => { void this.collaborativeEditor.destroy().catch(err => console.warn('[yjs] destroy failed:', err)) },\n { once: true },\n )\n }\n\n public getCursors() {\n return this.collaborativeEditor.getCursors()\n }\n\n public getAwareness() {\n return this.collaborativeEditor.getAwareness()\n }\n\n public getProvider() {\n return this.collaborativeEditor.getProvider()\n }\n\n public async destroy() {\n await this.collaborativeEditor.destroy()\n }\n}\n"],"names":[],"mappings":";;;;AAGO,MAAM,oBAAoB;AAAA,EAG/B,YAAmB,OAA4B,SAAc;AAFrD;AAEW,SAAA,QAAA;AAA4B,SAAA,UAAA;AAC7C,SAAK,sBAAsB,IAAI,oBAAoB,OAAO,OAAO;AAE1D,WAAA;AAAA,MACL;AAAA,MACA,MAAM;AAAO,aAAA,KAAK,oBAAoB,QAAA,EAAU,MAAM,SAAO,QAAQ,KAAK,yBAAyB,GAAG,CAAC;AAAA,MAAE;AAAA,MACzG,EAAE,MAAM,KAAK;AAAA,IACf;AAAA,EAAA;AAAA,EAGK,aAAa;AACX,WAAA,KAAK,oBAAoB,WAAW;AAAA,EAAA;AAAA,EAGtC,eAAe;AACb,WAAA,KAAK,oBAAoB,aAAa;AAAA,EAAA;AAAA,EAGxC,cAAc;AACZ,WAAA,KAAK,oBAAoB,YAAY;AAAA,EAAA;AAAA,EAG9C,MAAa,UAAU;AACf,UAAA,KAAK,oBAAoB,QAAQ;AAAA,EAAA;AAE3C;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerRegistry.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/providerRegistry.ts"],"sourcesContent":["import type { Awareness } from 'y-protocols/awareness'\nimport type * as Y from 'yjs'\nimport type { ProviderEventHandlers } from '../types'\nimport { WebRTCProviderWrapper } from './webrtc'\nimport { WebsocketProviderWrapper } from './websocket'\n\nexport type ProviderRegistry = Record<string, ProviderConstructor>\n\nexport type ProviderConstructor<T = any> = new (\n props: ProviderConstructorProps<T>\n) => UnifiedProvider\n\nexport type ProviderConstructorProps<T = any> = {\n options: T\n awareness?: Awareness\n doc?: Y.Doc\n} & ProviderEventHandlers\n\nexport interface UnifiedProvider extends ProviderEventHandlers {\n awareness: Awareness\n document: Y.Doc\n type: 'webrtc' | 'websocket' | string\n connect: () => void\n destroy: () => void\n disconnect: () => void\n isConnected: boolean\n isSynced: boolean\n}\n\nconst providerRegistry: ProviderRegistry = {\n websocket: WebsocketProviderWrapper,\n webrtc: WebRTCProviderWrapper,\n}\n\nexport function registerProviderType<T>(type: string, providerClass: ProviderConstructor<T>) {\n providerRegistry[type as string]\n = providerClass as ProviderConstructor\n}\n\nexport function getProviderClass(type: string): ProviderConstructor | undefined {\n return providerRegistry[type]\n}\n\nexport function createProvider({\n type,\n ...props\n}: ProviderConstructorProps & {\n type: string\n}) {\n const ProviderClass = getProviderClass(type)\n\n if (!ProviderClass) {\n throw new Error(`Provider type \"${type}\" not found in registry`)\n }\n\n return new ProviderClass(props)\n}\n"],"names":[],"mappings":";;AA6BA,MAAM,mBAAqC;AAAA,EACzC,WAAW;AAAA,EACX,QAAQ;AACV;AAEgB,SAAA,qBAAwB,MAAc,eAAuC;AAC3F,mBAAiB,IAAc,IAC3B;AACN;AAEO,SAAS,iBAAiB,MAA+C;AAC9E,SAAO,iBAAiB,IAAI;AAC9B;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAEG;AACK,QAAA,gBAAgB,iBAAiB,IAAI;AAE3C,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,kBAAkB,IAAI,yBAAyB;AAAA,EAAA;AAG1D,SAAA,IAAI,cAAc,KAAK;AAChC;"}
@@ -0,0 +1,99 @@
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 "y-webrtc";
5
+ import * as Y from "yjs";
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 Y.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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/webrtc.ts"],"sourcesContent":["import type { Awareness } from 'y-protocols/awareness'\nimport type { ProviderEventHandlers } from '../types'\nimport type { UnifiedProvider } from './providerRegistry'\nimport { WebrtcProvider } from 'y-webrtc'\nimport * as Y from 'yjs'\n\nexport interface WebRTCProviderOptions {\n roomName: string\n filterBcConns?: boolean\n maxConns?: number\n password?: string\n peerOpts?: Record<string, unknown>\n signaling?: string[]\n}\n\nexport class WebRTCProviderWrapper implements UnifiedProvider {\n private provider: WebrtcProvider\n private _isConnected = false\n private _isSynced = false\n\n onConnect?: () => void\n onDisconnect?: () => void\n onError?: (error: Error) => void\n onSyncChange?: (isSynced: boolean) => void\n\n document: Y.Doc\n awareness: Awareness\n type: 'webrtc'\n\n connect = () => {\n try {\n this.provider.connect()\n }\n catch (error) {\n console.warn('[yjs] Error connecting WebRTC provider:', error)\n }\n }\n\n destroy = () => {\n try {\n this.provider.destroy()\n }\n catch (error) {\n console.warn('[yjs] Error destroying WebRTC provider:', error)\n }\n }\n\n disconnect = () => {\n try {\n this.provider.disconnect()\n this._isConnected = false\n this._isSynced = false\n }\n catch (error) {\n console.warn('[yjs] Error disconnecting WebRTC provider:', error)\n }\n }\n\n constructor({\n awareness,\n doc,\n options,\n onConnect,\n onDisconnect,\n onError,\n onSyncChange,\n }: {\n options: WebRTCProviderOptions\n awareness?: Awareness\n doc?: Y.Doc\n } & ProviderEventHandlers) {\n this.onConnect = onConnect\n this.onDisconnect = onDisconnect\n this.onError = onError\n this.onSyncChange = onSyncChange\n\n this.document = doc || new Y.Doc()\n try {\n this.provider = new WebrtcProvider(options.roomName, this.document, {\n awareness,\n ...options,\n })\n\n this.provider.on('status', (status: { connected: boolean }) => {\n const wasConnected = this._isConnected\n this._isConnected = status.connected\n if (status.connected) {\n if (!wasConnected) {\n this.onConnect?.()\n }\n if (!this._isSynced) {\n this._isSynced = true\n this.onSyncChange?.(true)\n }\n }\n else {\n if (wasConnected) {\n this.onDisconnect?.()\n\n if (this._isSynced) {\n this._isSynced = false\n this.onSyncChange?.(false)\n }\n }\n }\n })\n }\n catch (error) {\n console.warn('[yjs] Error creating WebRTC provider:', error)\n onError?.(error instanceof Error ? error : new Error(String(error)))\n }\n }\n\n get isConnected() {\n return this._isConnected\n }\n\n get isSynced() {\n return this._isSynced\n }\n\n getProvider() {\n return this.provider\n }\n}\n"],"names":[],"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,IAAI,EAAE,IAAI;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;"}
@@ -0,0 +1,111 @@
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 "y-protocols/awareness";
5
+ import { WebsocketProvider } from "y-websocket";
6
+ import * as Y from "yjs";
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 Y.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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/websocket.ts"],"sourcesContent":["import type { ProviderEventHandlers } from '../types'\nimport type { UnifiedProvider } from './providerRegistry'\nimport { Awareness } from 'y-protocols/awareness'\nimport { WebsocketProvider } from 'y-websocket'\nimport * as Y from 'yjs'\n\nexport interface WebsocketProviderOptions {\n serverUrl: string\n roomName: string\n connect?: boolean\n awareness?: any\n params?: Record<string, string>\n protocols?: string[]\n WebSocketPolyfill?: typeof WebSocket\n resyncInterval?: number\n maxBackoffTime?: number\n disableBc?: boolean\n}\n\nexport class WebsocketProviderWrapper implements UnifiedProvider {\n private provider: WebsocketProvider\n\n private _isConnected = false\n private _isSynced = false\n\n onConnect?: () => void\n onDisconnect?: () => void\n onError?: (error: Error) => void\n onSyncChange?: (isSynced: boolean) => void\n\n document: Y.Doc\n awareness: Awareness\n type: 'websocket'\n\n connect = () => {\n try {\n this.provider.connect()\n }\n catch (error) {\n console.warn('[yjs] Error connecting WebSocket provider:', error)\n }\n }\n\n destroy = () => {\n try {\n this.provider.destroy()\n }\n catch (error) {\n console.warn('[yjs] Error destroying WebSocket provider:', error)\n }\n }\n\n disconnect = () => {\n try {\n this.provider.disconnect()\n const wasSynced = this._isSynced\n\n this._isConnected = false\n this._isSynced = false\n\n if (wasSynced) {\n this.onSyncChange?.(false)\n }\n }\n catch (error) {\n console.warn('[yjs] Error disconnecting WebSocket provider:', error)\n }\n }\n\n constructor({\n awareness,\n doc,\n options,\n onConnect,\n onDisconnect,\n onError,\n onSyncChange,\n }: {\n options: WebsocketProviderOptions\n awareness?: Awareness\n doc?: Y.Doc\n } & ProviderEventHandlers) {\n this.onConnect = onConnect\n this.onDisconnect = onDisconnect\n this.onError = onError\n this.onSyncChange = onSyncChange\n\n this.document = doc || new Y.Doc()\n this.awareness = awareness ?? new Awareness(this.document)\n try {\n this.provider = new WebsocketProvider(\n options.serverUrl,\n options.roomName,\n this.document,\n {\n awareness: this.awareness,\n ...options,\n },\n )\n\n this.provider.on('status', (event: { status: 'connected' | 'disconnected' | 'connecting' }) => {\n const wasConnected = this._isConnected\n this._isConnected = event.status === 'connected'\n\n if (event.status === 'connected') {\n if (!wasConnected) {\n this.onConnect?.()\n }\n if (!this._isSynced) {\n this._isSynced = true\n this.onSyncChange?.(true)\n }\n }\n else if (event.status === 'disconnected') {\n if (wasConnected) {\n this.onDisconnect?.()\n if (this._isSynced) {\n this._isSynced = false\n this.onSyncChange?.(false)\n }\n }\n }\n })\n }\n catch (error) {\n console.warn('[yjs] Error creating WebSocket provider:', error)\n onError?.(error instanceof Error ? error : new Error(String(error)))\n }\n }\n\n get isConnected() {\n return this._isConnected\n }\n\n get isSynced() {\n return this._isSynced\n }\n\n getProvider() {\n return this.provider\n }\n}\n"],"names":[],"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,IAAI,EAAE,IAAI;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;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter.es.js","sources":["../../../src/modules/counter.ts"],"sourcesContent":["import type { AnyFunction } from '../config'\nimport type FluentEditor from '../fluent-editor'\nimport Quill from 'quill'\nimport { CHANGE_LANGUAGE_EVENT } from '../config'\n\nexport interface ICounterOption {\n format?: 'text' | 'html'\n unit?: 'word' | 'char'\n count?: number\n template?: string | AnyFunction\n errorTemplate?: string | AnyFunction\n}\n\nexport default class Counter {\n container: HTMLDivElement\n options: ICounterOption\n\n constructor(public quill: FluentEditor, options: ICounterOption) {\n this.options = this.resolveOptions(options)\n this.container = quill.addContainer('ql-counter')\n quill.on(Quill.events.TEXT_CHANGE, this.renderCount)\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, () => {\n this.options = this.resolveOptions(options)\n this.renderCount()\n })\n this.renderCount()\n }\n\n resolveOptions(options: ICounterOption) {\n return Object.assign({\n format: 'text',\n unit: 'char',\n template: this.quill.getLangText('counter-template'),\n count: 500,\n }, options)\n }\n\n renderCount = () => {\n setTimeout(() => {\n // @ts-ignore\n const { format, count: totalCount, unit, template: counterTemplate, errorTemplate } = this.options\n const count = this.getContentLength(format)\n const restCount = totalCount - count\n const countUnit = unit === 'char' ? this.quill.getLangText('char') : this.quill.getLangText('word')\n let template: any = counterTemplate\n if (typeof template === 'function') {\n template = template(count, restCount)\n }\n const desc = template.replace('{{count}}', count)\n .replace('{{totalCount}}', String(totalCount))\n .replace('{{restCount}}', String(restCount))\n .replace(/{{countUnit}}/g, countUnit)\n\n let limitTemplate: any = errorTemplate || this.quill.getLangText('counter-limit-tips')\n if (typeof limitTemplate === 'function') {\n limitTemplate = limitTemplate(count, restCount)\n }\n const limitTips = limitTemplate.replace('{{countUnit}}', countUnit)\n if (restCount < 0) {\n this.container.innerHTML = errorTemplate ? limitTips : `<span style=\"color:red\">${limitTips}</span>`\n }\n else {\n this.container.innerHTML = desc\n }\n })\n }\n\n getContentLength(format) {\n let content = this.quill.getText()\n if (format === 'html') {\n let html = this.quill.root.innerHTML\n // 编辑器初始时\n if (html === '<p><br></p>' || html === '<div><br><div>') {\n html = ''\n }\n content = html\n }\n const text = content.replace(/\\s/g, '').trim()\n if (this.options.unit === 'word') {\n return !content.trim() ? 0 : content.trim().split(/\\s+/).length\n }\n return text.length\n }\n}\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;"}