@opentiny/fluent-editor 4.0.0-alpha.8 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (904) hide show
  1. package/es/config/editor.config.es.js +112 -0
  2. package/es/config/editor.config.es.js.map +1 -0
  3. package/es/config/editor.utils.es.js.map +1 -0
  4. package/es/config/i18n/en-us.es.js +131 -0
  5. package/es/config/i18n/en-us.es.js.map +1 -0
  6. package/es/config/i18n/zh-cn.es.js +131 -0
  7. package/es/config/i18n/zh-cn.es.js.map +1 -0
  8. package/es/config/index.es.js +67 -0
  9. package/es/config/index.es.js.map +1 -0
  10. package/es/core/fluent-editor.es.js.map +1 -0
  11. package/es/fluent-editor.es.js +88 -0
  12. package/es/fluent-editor.es.js.map +1 -0
  13. package/es/formats/soft-break.es.js.map +1 -0
  14. package/es/formats/video.es.js.map +1 -0
  15. package/es/index.es.js +137 -0
  16. package/es/index.es.js.map +1 -0
  17. package/es/modules/ai/constants.es.js.map +1 -0
  18. package/es/modules/ai/index.es.js +670 -0
  19. package/es/modules/ai/index.es.js.map +1 -0
  20. package/es/modules/collaborative-editing/awareness/awareness.es.js +92 -0
  21. package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -0
  22. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +16 -0
  23. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -0
  24. package/es/modules/collaborative-editing/collaborative-editing.es.js +110 -0
  25. package/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -0
  26. package/es/modules/collaborative-editing/module.es.js.map +1 -0
  27. package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -0
  28. package/es/modules/collaborative-editing/provider/webrtc.es.js +103 -0
  29. package/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -0
  30. package/es/modules/collaborative-editing/provider/websocket.es.js +113 -0
  31. package/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -0
  32. package/es/modules/counter.es.js.map +1 -0
  33. package/es/modules/custom-clipboard.es.js.map +1 -0
  34. package/es/modules/custom-image/actions/action.es.js.map +1 -0
  35. package/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -0
  36. package/es/modules/custom-image/actions/delete-action.es.js.map +1 -0
  37. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js +137 -0
  38. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +1 -0
  39. package/es/modules/custom-image/actions/toolbar-action.es.js.map +1 -0
  40. package/es/modules/custom-image/actions/toolbar.es.js.map +1 -0
  41. package/es/modules/custom-image/blot-formatter.es.js +140 -0
  42. package/es/modules/custom-image/blot-formatter.es.js.map +1 -0
  43. package/es/modules/custom-image/image.es.js.map +1 -0
  44. package/es/modules/custom-image/options.es.js.map +1 -0
  45. package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -0
  46. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -0
  47. package/es/modules/custom-image/specs/image-spec.es.js.map +1 -0
  48. package/es/modules/custom-uploader.es.js.map +1 -0
  49. package/es/modules/divider.es.js.map +1 -0
  50. package/es/modules/emoji.es.js +167 -0
  51. package/es/modules/emoji.es.js.map +1 -0
  52. package/es/modules/file/formats/file.es.js.map +1 -0
  53. package/es/modules/file/modules/file-bar.es.js.map +1 -0
  54. package/es/modules/file/modules/file-module.es.js.map +1 -0
  55. package/es/modules/flow-chart/config-utils.es.js +102 -0
  56. package/es/modules/flow-chart/config-utils.es.js.map +1 -0
  57. package/es/modules/flow-chart/formats/flow-chart-blot.es.js +369 -0
  58. package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -0
  59. package/es/modules/flow-chart/i18n/en-us.es.js +30 -0
  60. package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -0
  61. package/es/modules/flow-chart/i18n/index.es.js +12 -0
  62. package/es/modules/flow-chart/i18n/index.es.js.map +1 -0
  63. package/es/modules/flow-chart/i18n/zh-cn.es.js +30 -0
  64. package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -0
  65. package/es/modules/flow-chart/icons.es.js +27 -0
  66. package/es/modules/flow-chart/icons.es.js.map +1 -0
  67. package/es/modules/flow-chart/index.es.js +45 -0
  68. package/es/modules/flow-chart/index.es.js.map +1 -0
  69. package/es/modules/flow-chart/modules/context-menu.es.js +184 -0
  70. package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -0
  71. package/es/modules/flow-chart/modules/control-panel.es.js +286 -0
  72. package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -0
  73. package/es/modules/flow-chart/modules/custom-resize-action.es.js +150 -0
  74. package/es/modules/flow-chart/modules/custom-resize-action.es.js.map +1 -0
  75. package/es/modules/i18n.es.js.map +1 -0
  76. package/es/modules/index.es.js +31 -0
  77. package/es/modules/index.es.js.map +1 -0
  78. package/es/modules/link/formats/link.es.js.map +1 -0
  79. package/es/modules/link/modules/tooltip.es.js.map +1 -0
  80. package/es/modules/mathlive/formats.es.js.map +1 -0
  81. package/es/modules/mathlive/module.es.js.map +1 -0
  82. package/es/modules/mathlive/tooltip.es.js.map +1 -0
  83. package/es/modules/mention/mention-link.es.js.map +1 -0
  84. package/es/modules/mention/mention.es.js.map +1 -0
  85. package/es/modules/mind-map/config-utils.es.js +108 -0
  86. package/es/modules/mind-map/config-utils.es.js.map +1 -0
  87. package/es/modules/mind-map/formats/mind-map-blot.es.js +356 -0
  88. package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -0
  89. package/es/modules/mind-map/i18n/en-us.es.js +29 -0
  90. package/es/modules/mind-map/i18n/en-us.es.js.map +1 -0
  91. package/es/modules/mind-map/i18n/index.es.js +12 -0
  92. package/es/modules/mind-map/i18n/index.es.js.map +1 -0
  93. package/es/modules/mind-map/i18n/zh-cn.es.js +29 -0
  94. package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -0
  95. package/es/modules/mind-map/icons.es.js +45 -0
  96. package/es/modules/mind-map/icons.es.js.map +1 -0
  97. package/es/modules/mind-map/index.es.js +56 -0
  98. package/es/modules/mind-map/index.es.js.map +1 -0
  99. package/es/modules/mind-map/modules/context-menu.es.js +128 -0
  100. package/es/modules/mind-map/modules/context-menu.es.js.map +1 -0
  101. package/es/modules/mind-map/modules/control-panel.es.js +425 -0
  102. package/es/modules/mind-map/modules/control-panel.es.js.map +1 -0
  103. package/es/modules/mind-map/modules/custom-resize-action.es.js +161 -0
  104. package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -0
  105. package/es/modules/shortcut-key/index.es.js +245 -0
  106. package/es/modules/shortcut-key/index.es.js.map +1 -0
  107. package/es/modules/syntax.es.js.map +1 -0
  108. package/es/modules/table-up/index.es.js.map +1 -0
  109. package/es/modules/toolbar/better-picker.es.js.map +1 -0
  110. package/es/modules/toolbar/better-toolbar.es.js.map +1 -0
  111. package/es/modules/toolbar/toolbar-tip.es.js.map +1 -0
  112. package/es/themes/snow.es.js.map +1 -0
  113. package/es/tools/format-painter.es.js.map +1 -0
  114. package/es/tools/fullscreen.es.js.map +1 -0
  115. package/es/tools/screenshot.es.js.map +1 -0
  116. package/es/ui/icons.config.es.js +369 -0
  117. package/es/ui/icons.config.es.js.map +1 -0
  118. package/es/ui/icons.es.js +52 -0
  119. package/es/ui/icons.es.js.map +1 -0
  120. package/es/utils/debounce.es.js.map +1 -0
  121. package/es/utils/image.es.js.map +1 -0
  122. package/es/utils/is.es.js.map +1 -0
  123. package/es/utils/merge.es.js +27 -0
  124. package/es/utils/merge.es.js.map +1 -0
  125. package/es/utils/method.es.js.map +1 -0
  126. package/es/utils/scroll-lock.es.js.map +1 -0
  127. package/flow-chart.css +185 -0
  128. package/lib/config/editor.config.cjs.js +112 -0
  129. package/lib/config/editor.config.cjs.js.map +1 -0
  130. package/lib/config/editor.utils.cjs.js.map +1 -0
  131. package/lib/config/i18n/en-us.cjs.js +131 -0
  132. package/lib/config/i18n/en-us.cjs.js.map +1 -0
  133. package/lib/config/i18n/zh-cn.cjs.js +131 -0
  134. package/lib/config/i18n/zh-cn.cjs.js.map +1 -0
  135. package/lib/config/index.cjs.js +66 -0
  136. package/lib/config/index.cjs.js.map +1 -0
  137. package/lib/core/fluent-editor.cjs.js.map +1 -0
  138. package/lib/fluent-editor.cjs.js +88 -0
  139. package/lib/fluent-editor.cjs.js.map +1 -0
  140. package/lib/formats/soft-break.cjs.js.map +1 -0
  141. package/lib/formats/video.cjs.js.map +1 -0
  142. package/lib/index.cjs.js +158 -0
  143. package/lib/index.cjs.js.map +1 -0
  144. package/lib/modules/ai/constants.cjs.js.map +1 -0
  145. package/lib/modules/ai/index.cjs.js.map +1 -0
  146. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js +92 -0
  147. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -0
  148. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +16 -0
  149. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -0
  150. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js +110 -0
  151. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -0
  152. package/lib/modules/collaborative-editing/module.cjs.js.map +1 -0
  153. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -0
  154. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js +103 -0
  155. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -0
  156. package/lib/modules/collaborative-editing/provider/websocket.cjs.js +113 -0
  157. package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -0
  158. package/lib/modules/counter.cjs.js.map +1 -0
  159. package/lib/modules/custom-clipboard.cjs.js.map +1 -0
  160. package/lib/modules/custom-image/actions/action.cjs.js.map +1 -0
  161. package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -0
  162. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -0
  163. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +1 -0
  164. package/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +1 -0
  165. package/lib/modules/custom-image/actions/toolbar.cjs.js.map +1 -0
  166. package/lib/modules/custom-image/blot-formatter.cjs.js +140 -0
  167. package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -0
  168. package/lib/modules/custom-image/image.cjs.js.map +1 -0
  169. package/lib/modules/custom-image/options.cjs.js.map +1 -0
  170. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -0
  171. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -0
  172. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -0
  173. package/lib/modules/custom-uploader.cjs.js.map +1 -0
  174. package/lib/modules/divider.cjs.js.map +1 -0
  175. package/lib/modules/emoji.cjs.js +167 -0
  176. package/lib/modules/emoji.cjs.js.map +1 -0
  177. package/lib/modules/file/formats/file.cjs.js.map +1 -0
  178. package/lib/modules/file/modules/file-bar.cjs.js.map +1 -0
  179. package/lib/modules/file/modules/file-module.cjs.js.map +1 -0
  180. package/lib/modules/flow-chart/config-utils.cjs.js +102 -0
  181. package/lib/modules/flow-chart/config-utils.cjs.js.map +1 -0
  182. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js +369 -0
  183. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -0
  184. package/lib/modules/flow-chart/i18n/en-us.cjs.js +30 -0
  185. package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -0
  186. package/lib/modules/flow-chart/i18n/index.cjs.js +12 -0
  187. package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -0
  188. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js +30 -0
  189. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -0
  190. package/lib/modules/flow-chart/icons.cjs.js +27 -0
  191. package/lib/modules/flow-chart/icons.cjs.js.map +1 -0
  192. package/lib/modules/flow-chart/index.cjs.js +45 -0
  193. package/lib/modules/flow-chart/index.cjs.js.map +1 -0
  194. package/lib/modules/flow-chart/modules/context-menu.cjs.js +184 -0
  195. package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -0
  196. package/lib/modules/flow-chart/modules/control-panel.cjs.js +286 -0
  197. package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -0
  198. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js +150 -0
  199. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js.map +1 -0
  200. package/lib/modules/i18n.cjs.js.map +1 -0
  201. package/lib/modules/index.cjs.js +31 -0
  202. package/lib/modules/index.cjs.js.map +1 -0
  203. package/lib/modules/link/formats/link.cjs.js.map +1 -0
  204. package/lib/modules/link/modules/tooltip.cjs.js.map +1 -0
  205. package/lib/modules/mathlive/formats.cjs.js.map +1 -0
  206. package/lib/modules/mathlive/module.cjs.js.map +1 -0
  207. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -0
  208. package/lib/modules/mention/mention-link.cjs.js.map +1 -0
  209. package/lib/modules/mention/mention.cjs.js.map +1 -0
  210. package/lib/modules/mind-map/config-utils.cjs.js +108 -0
  211. package/lib/modules/mind-map/config-utils.cjs.js.map +1 -0
  212. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js +356 -0
  213. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -0
  214. package/lib/modules/mind-map/i18n/en-us.cjs.js +29 -0
  215. package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -0
  216. package/lib/modules/mind-map/i18n/index.cjs.js +12 -0
  217. package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -0
  218. package/lib/modules/mind-map/i18n/zh-cn.cjs.js +29 -0
  219. package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -0
  220. package/lib/modules/mind-map/icons.cjs.js +45 -0
  221. package/lib/modules/mind-map/icons.cjs.js.map +1 -0
  222. package/lib/modules/mind-map/index.cjs.js +56 -0
  223. package/lib/modules/mind-map/index.cjs.js.map +1 -0
  224. package/lib/modules/mind-map/modules/context-menu.cjs.js +128 -0
  225. package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -0
  226. package/lib/modules/mind-map/modules/control-panel.cjs.js +425 -0
  227. package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -0
  228. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js +161 -0
  229. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -0
  230. package/lib/modules/shortcut-key/index.cjs.js +245 -0
  231. package/lib/modules/shortcut-key/index.cjs.js.map +1 -0
  232. package/lib/modules/syntax.cjs.js.map +1 -0
  233. package/lib/modules/table-up/index.cjs.js.map +1 -0
  234. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -0
  235. package/lib/modules/toolbar/better-toolbar.cjs.js.map +1 -0
  236. package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -0
  237. package/lib/themes/snow.cjs.js.map +1 -0
  238. package/lib/tools/format-painter.cjs.js.map +1 -0
  239. package/lib/tools/fullscreen.cjs.js.map +1 -0
  240. package/lib/tools/screenshot.cjs.js.map +1 -0
  241. package/lib/ui/icons.cjs.js +52 -0
  242. package/lib/ui/icons.cjs.js.map +1 -0
  243. package/lib/ui/icons.config.cjs.js +369 -0
  244. package/lib/ui/icons.config.cjs.js.map +1 -0
  245. package/lib/utils/debounce.cjs.js.map +1 -0
  246. package/lib/utils/image.cjs.js.map +1 -0
  247. package/lib/utils/is.cjs.js.map +1 -0
  248. package/lib/utils/merge.cjs.js +27 -0
  249. package/lib/utils/merge.cjs.js.map +1 -0
  250. package/lib/utils/method.cjs.js.map +1 -0
  251. package/lib/utils/scroll-lock.cjs.js.map +1 -0
  252. package/mind-map.css +224 -0
  253. package/package.json +15 -37
  254. package/patches/quill@2.0.3.patch +33 -0
  255. package/scripts/apply-patches.cjs +248 -0
  256. package/style.css +3465 -0
  257. package/types/config/editor.config.d.ts +55 -0
  258. package/types/config/i18n/en-us.d.ts +125 -0
  259. package/types/config/i18n/zh-cn.d.ts +125 -0
  260. package/types/config/types/editor-modules.interface.d.ts +45 -0
  261. package/types/index.d.ts +8 -0
  262. package/types/modules/collaborative-editing/awareness/awareness.d.ts +28 -0
  263. package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +3 -0
  264. package/types/modules/collaborative-editing/collaborative-editing.d.ts +25 -0
  265. package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +26 -0
  266. package/types/modules/collaborative-editing/provider/webrtc.d.ts +37 -0
  267. package/types/modules/collaborative-editing/provider/websocket.d.ts +41 -0
  268. package/types/modules/collaborative-editing/types.d.ts +53 -0
  269. package/types/modules/flow-chart/config-utils.d.ts +10 -0
  270. package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +43 -0
  271. package/types/modules/flow-chart/i18n/en-us.d.ts +26 -0
  272. package/types/modules/flow-chart/i18n/index.d.ts +1 -0
  273. package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -0
  274. package/types/modules/flow-chart/icons.d.ts +12 -0
  275. package/types/modules/flow-chart/index.d.ts +10 -0
  276. package/types/modules/flow-chart/modules/context-menu.d.ts +3 -0
  277. package/types/modules/flow-chart/modules/control-panel.d.ts +3 -0
  278. package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -0
  279. package/types/modules/flow-chart/options.d.ts +29 -0
  280. package/types/modules/index.d.ts +18 -0
  281. package/types/modules/mind-map/config-utils.d.ts +12 -0
  282. package/types/modules/mind-map/formats/mind-map-blot.d.ts +44 -0
  283. package/types/modules/mind-map/i18n/en-us.d.ts +25 -0
  284. package/types/modules/mind-map/i18n/index.d.ts +1 -0
  285. package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -0
  286. package/types/modules/mind-map/icons.d.ts +21 -0
  287. package/types/modules/mind-map/index.d.ts +10 -0
  288. package/types/modules/mind-map/modules/context-menu.d.ts +3 -0
  289. package/types/modules/mind-map/modules/control-panel.d.ts +3 -0
  290. package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -0
  291. package/types/modules/mind-map/options.d.ts +27 -0
  292. package/types/ui/icons.config.d.ts +40 -0
  293. package/types/utils/merge.d.ts +7 -0
  294. package/LICENSE +0 -21
  295. package/dist/es/config/editor.config.es.js +0 -85
  296. package/dist/es/config/editor.config.es.js.map +0 -1
  297. package/dist/es/config/editor.utils.es.js.map +0 -1
  298. package/dist/es/config/i18n/en-us.es.js +0 -129
  299. package/dist/es/config/i18n/en-us.es.js.map +0 -1
  300. package/dist/es/config/i18n/zh-cn.es.js +0 -129
  301. package/dist/es/config/i18n/zh-cn.es.js.map +0 -1
  302. package/dist/es/config/index.es.js +0 -65
  303. package/dist/es/config/index.es.js.map +0 -1
  304. package/dist/es/core/fluent-editor.es.js.map +0 -1
  305. package/dist/es/fluent-editor.es.js +0 -84
  306. package/dist/es/fluent-editor.es.js.map +0 -1
  307. package/dist/es/formats/soft-break.es.js.map +0 -1
  308. package/dist/es/formats/video.es.js.map +0 -1
  309. package/dist/es/index.es.js +0 -104
  310. package/dist/es/index.es.js.map +0 -1
  311. package/dist/es/modules/ai/constants.es.js.map +0 -1
  312. package/dist/es/modules/ai/index.es.js +0 -670
  313. package/dist/es/modules/ai/index.es.js.map +0 -1
  314. package/dist/es/modules/collaborative-editing/awareness/awareness.es.js +0 -93
  315. package/dist/es/modules/collaborative-editing/awareness/awareness.es.js.map +0 -1
  316. package/dist/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +0 -12
  317. package/dist/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +0 -1
  318. package/dist/es/modules/collaborative-editing/collaborative-editing.es.js +0 -105
  319. package/dist/es/modules/collaborative-editing/collaborative-editing.es.js.map +0 -1
  320. package/dist/es/modules/collaborative-editing/module.es.js.map +0 -1
  321. package/dist/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +0 -1
  322. package/dist/es/modules/collaborative-editing/provider/webrtc.es.js +0 -99
  323. package/dist/es/modules/collaborative-editing/provider/webrtc.es.js.map +0 -1
  324. package/dist/es/modules/collaborative-editing/provider/websocket.es.js +0 -111
  325. package/dist/es/modules/collaborative-editing/provider/websocket.es.js.map +0 -1
  326. package/dist/es/modules/counter.es.js.map +0 -1
  327. package/dist/es/modules/custom-clipboard.es.js.map +0 -1
  328. package/dist/es/modules/custom-image/actions/action.es.js.map +0 -1
  329. package/dist/es/modules/custom-image/actions/custom-resize-action.es.js.map +0 -1
  330. package/dist/es/modules/custom-image/actions/delete-action.es.js.map +0 -1
  331. package/dist/es/modules/custom-image/actions/image-toolbar-buttons.es.js +0 -137
  332. package/dist/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +0 -1
  333. package/dist/es/modules/custom-image/actions/toolbar-action.es.js.map +0 -1
  334. package/dist/es/modules/custom-image/actions/toolbar.es.js.map +0 -1
  335. package/dist/es/modules/custom-image/blot-formatter.es.js +0 -140
  336. package/dist/es/modules/custom-image/blot-formatter.es.js.map +0 -1
  337. package/dist/es/modules/custom-image/image.es.js.map +0 -1
  338. package/dist/es/modules/custom-image/options.es.js.map +0 -1
  339. package/dist/es/modules/custom-image/specs/blot-spec.es.js.map +0 -1
  340. package/dist/es/modules/custom-image/specs/custom-image-spec.es.js.map +0 -1
  341. package/dist/es/modules/custom-image/specs/image-spec.es.js.map +0 -1
  342. package/dist/es/modules/custom-uploader.es.js.map +0 -1
  343. package/dist/es/modules/divider.es.js.map +0 -1
  344. package/dist/es/modules/emoji.es.js +0 -167
  345. package/dist/es/modules/emoji.es.js.map +0 -1
  346. package/dist/es/modules/file/formats/file.es.js.map +0 -1
  347. package/dist/es/modules/file/modules/file-bar.es.js.map +0 -1
  348. package/dist/es/modules/file/modules/file-module.es.js.map +0 -1
  349. package/dist/es/modules/i18n.es.js.map +0 -1
  350. package/dist/es/modules/index.es.js +0 -27
  351. package/dist/es/modules/index.es.js.map +0 -1
  352. package/dist/es/modules/link/formats/link.es.js.map +0 -1
  353. package/dist/es/modules/link/modules/tooltip.es.js.map +0 -1
  354. package/dist/es/modules/mathlive/formats.es.js.map +0 -1
  355. package/dist/es/modules/mathlive/module.es.js.map +0 -1
  356. package/dist/es/modules/mathlive/tooltip.es.js.map +0 -1
  357. package/dist/es/modules/mention/mention-link.es.js.map +0 -1
  358. package/dist/es/modules/mention/mention.es.js.map +0 -1
  359. package/dist/es/modules/shortcut-key/index.es.js +0 -229
  360. package/dist/es/modules/shortcut-key/index.es.js.map +0 -1
  361. package/dist/es/modules/syntax.es.js.map +0 -1
  362. package/dist/es/modules/table-up/index.es.js.map +0 -1
  363. package/dist/es/modules/toolbar/better-picker.es.js.map +0 -1
  364. package/dist/es/modules/toolbar/better-toolbar.es.js.map +0 -1
  365. package/dist/es/modules/toolbar/toolbar-tip.es.js.map +0 -1
  366. package/dist/es/themes/snow.es.js.map +0 -1
  367. package/dist/es/tools/format-painter.es.js.map +0 -1
  368. package/dist/es/tools/fullscreen.es.js.map +0 -1
  369. package/dist/es/tools/screenshot.es.js.map +0 -1
  370. package/dist/es/ui/icons.config.es.js +0 -365
  371. package/dist/es/ui/icons.config.es.js.map +0 -1
  372. package/dist/es/ui/icons.es.js +0 -50
  373. package/dist/es/ui/icons.es.js.map +0 -1
  374. package/dist/es/utils/debounce.es.js.map +0 -1
  375. package/dist/es/utils/image.es.js.map +0 -1
  376. package/dist/es/utils/is.es.js.map +0 -1
  377. package/dist/es/utils/method.es.js.map +0 -1
  378. package/dist/es/utils/scroll-lock.es.js.map +0 -1
  379. package/dist/lib/config/editor.config.cjs.js +0 -85
  380. package/dist/lib/config/editor.config.cjs.js.map +0 -1
  381. package/dist/lib/config/editor.utils.cjs.js.map +0 -1
  382. package/dist/lib/config/i18n/en-us.cjs.js +0 -129
  383. package/dist/lib/config/i18n/en-us.cjs.js.map +0 -1
  384. package/dist/lib/config/i18n/zh-cn.cjs.js +0 -129
  385. package/dist/lib/config/i18n/zh-cn.cjs.js.map +0 -1
  386. package/dist/lib/config/index.cjs.js +0 -64
  387. package/dist/lib/config/index.cjs.js.map +0 -1
  388. package/dist/lib/core/fluent-editor.cjs.js.map +0 -1
  389. package/dist/lib/fluent-editor.cjs.js +0 -84
  390. package/dist/lib/fluent-editor.cjs.js.map +0 -1
  391. package/dist/lib/formats/soft-break.cjs.js.map +0 -1
  392. package/dist/lib/formats/video.cjs.js.map +0 -1
  393. package/dist/lib/index.cjs.js +0 -125
  394. package/dist/lib/index.cjs.js.map +0 -1
  395. package/dist/lib/modules/ai/constants.cjs.js.map +0 -1
  396. package/dist/lib/modules/ai/index.cjs.js.map +0 -1
  397. package/dist/lib/modules/collaborative-editing/awareness/awareness.cjs.js +0 -110
  398. package/dist/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +0 -1
  399. package/dist/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +0 -12
  400. package/dist/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +0 -1
  401. package/dist/lib/modules/collaborative-editing/collaborative-editing.cjs.js +0 -122
  402. package/dist/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +0 -1
  403. package/dist/lib/modules/collaborative-editing/module.cjs.js.map +0 -1
  404. package/dist/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +0 -1
  405. package/dist/lib/modules/collaborative-editing/provider/webrtc.cjs.js +0 -116
  406. package/dist/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +0 -1
  407. package/dist/lib/modules/collaborative-editing/provider/websocket.cjs.js +0 -128
  408. package/dist/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +0 -1
  409. package/dist/lib/modules/counter.cjs.js.map +0 -1
  410. package/dist/lib/modules/custom-clipboard.cjs.js.map +0 -1
  411. package/dist/lib/modules/custom-image/actions/action.cjs.js.map +0 -1
  412. package/dist/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +0 -1
  413. package/dist/lib/modules/custom-image/actions/delete-action.cjs.js.map +0 -1
  414. package/dist/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +0 -1
  415. package/dist/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +0 -1
  416. package/dist/lib/modules/custom-image/actions/toolbar.cjs.js.map +0 -1
  417. package/dist/lib/modules/custom-image/blot-formatter.cjs.js +0 -140
  418. package/dist/lib/modules/custom-image/blot-formatter.cjs.js.map +0 -1
  419. package/dist/lib/modules/custom-image/image.cjs.js.map +0 -1
  420. package/dist/lib/modules/custom-image/options.cjs.js.map +0 -1
  421. package/dist/lib/modules/custom-image/specs/blot-spec.cjs.js.map +0 -1
  422. package/dist/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +0 -1
  423. package/dist/lib/modules/custom-image/specs/image-spec.cjs.js.map +0 -1
  424. package/dist/lib/modules/custom-uploader.cjs.js.map +0 -1
  425. package/dist/lib/modules/divider.cjs.js.map +0 -1
  426. package/dist/lib/modules/emoji.cjs.js +0 -167
  427. package/dist/lib/modules/emoji.cjs.js.map +0 -1
  428. package/dist/lib/modules/file/formats/file.cjs.js.map +0 -1
  429. package/dist/lib/modules/file/modules/file-bar.cjs.js.map +0 -1
  430. package/dist/lib/modules/file/modules/file-module.cjs.js.map +0 -1
  431. package/dist/lib/modules/i18n.cjs.js.map +0 -1
  432. package/dist/lib/modules/index.cjs.js +0 -27
  433. package/dist/lib/modules/index.cjs.js.map +0 -1
  434. package/dist/lib/modules/link/formats/link.cjs.js.map +0 -1
  435. package/dist/lib/modules/link/modules/tooltip.cjs.js.map +0 -1
  436. package/dist/lib/modules/mathlive/formats.cjs.js.map +0 -1
  437. package/dist/lib/modules/mathlive/module.cjs.js.map +0 -1
  438. package/dist/lib/modules/mathlive/tooltip.cjs.js.map +0 -1
  439. package/dist/lib/modules/mention/mention-link.cjs.js.map +0 -1
  440. package/dist/lib/modules/mention/mention.cjs.js.map +0 -1
  441. package/dist/lib/modules/shortcut-key/index.cjs.js +0 -229
  442. package/dist/lib/modules/shortcut-key/index.cjs.js.map +0 -1
  443. package/dist/lib/modules/syntax.cjs.js.map +0 -1
  444. package/dist/lib/modules/table-up/index.cjs.js.map +0 -1
  445. package/dist/lib/modules/toolbar/better-picker.cjs.js.map +0 -1
  446. package/dist/lib/modules/toolbar/better-toolbar.cjs.js.map +0 -1
  447. package/dist/lib/modules/toolbar/toolbar-tip.cjs.js.map +0 -1
  448. package/dist/lib/themes/snow.cjs.js.map +0 -1
  449. package/dist/lib/tools/format-painter.cjs.js.map +0 -1
  450. package/dist/lib/tools/fullscreen.cjs.js.map +0 -1
  451. package/dist/lib/tools/screenshot.cjs.js.map +0 -1
  452. package/dist/lib/ui/icons.cjs.js +0 -50
  453. package/dist/lib/ui/icons.cjs.js.map +0 -1
  454. package/dist/lib/ui/icons.config.cjs.js +0 -365
  455. package/dist/lib/ui/icons.config.cjs.js.map +0 -1
  456. package/dist/lib/utils/debounce.cjs.js.map +0 -1
  457. package/dist/lib/utils/image.cjs.js.map +0 -1
  458. package/dist/lib/utils/is.cjs.js.map +0 -1
  459. package/dist/lib/utils/method.cjs.js.map +0 -1
  460. package/dist/lib/utils/scroll-lock.cjs.js.map +0 -1
  461. package/dist/package.json +0 -67
  462. package/dist/style.css +0 -3463
  463. package/dist/types/config/editor.config.d.ts +0 -11
  464. package/dist/types/config/i18n/en-us.d.ts +0 -123
  465. package/dist/types/config/i18n/zh-cn.d.ts +0 -123
  466. package/dist/types/config/types/editor-modules.interface.d.ts +0 -41
  467. package/dist/types/index.d.ts +0 -8
  468. package/dist/types/modules/collaborative-editing/awareness/awareness.d.ts +0 -28
  469. package/dist/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +0 -2
  470. package/dist/types/modules/collaborative-editing/collaborative-editing.d.ts +0 -24
  471. package/dist/types/modules/collaborative-editing/provider/providerRegistry.d.ts +0 -25
  472. package/dist/types/modules/collaborative-editing/provider/webrtc.d.ts +0 -36
  473. package/dist/types/modules/collaborative-editing/provider/websocket.d.ts +0 -40
  474. package/dist/types/modules/collaborative-editing/types.d.ts +0 -37
  475. package/dist/types/modules/index.d.ts +0 -16
  476. package/dist/types/ui/icons.config.d.ts +0 -38
  477. package/scripts/pre-release.cjs +0 -35
  478. package/src/assets/ai.scss +0 -451
  479. package/src/assets/common/config.scss +0 -4
  480. package/src/assets/common.scss +0 -132
  481. package/src/assets/counter.scss +0 -16
  482. package/src/assets/custom-image.scss +0 -19
  483. package/src/assets/editor.scss +0 -351
  484. package/src/assets/fileBar.scss +0 -107
  485. package/src/assets/font.scss +0 -18
  486. package/src/assets/fullscreen.scss +0 -50
  487. package/src/assets/iconfont/iconfont.ttf +0 -0
  488. package/src/assets/iconfont/iconfont.woff +0 -0
  489. package/src/assets/iconfont/iconfont.woff2 +0 -0
  490. package/src/assets/imageBar.scss +0 -98
  491. package/src/assets/lineHeight.scss +0 -15
  492. package/src/assets/link.scss +0 -120
  493. package/src/assets/mathlive.scss +0 -40
  494. package/src/assets/mention.scss +0 -48
  495. package/src/assets/screenshot.scss +0 -78
  496. package/src/assets/size.scss +0 -11
  497. package/src/assets/style.scss +0 -46
  498. package/src/assets/svgs/align-center.svg +0 -41
  499. package/src/assets/svgs/align-justify.svg +0 -8
  500. package/src/assets/svgs/arrow-down.svg +0 -6
  501. package/src/assets/svgs/background-color.svg +0 -7
  502. package/src/assets/svgs/clean.svg +0 -8
  503. package/src/assets/svgs/code-block.svg +0 -5
  504. package/src/assets/svgs/code.svg +0 -25
  505. package/src/assets/svgs/color.svg +0 -7
  506. package/src/assets/svgs/direction-ltr.svg +0 -8
  507. package/src/assets/svgs/direction-rtl.svg +0 -8
  508. package/src/assets/svgs/divider.svg +0 -4
  509. package/src/assets/svgs/emoji.svg +0 -53
  510. package/src/assets/svgs/file.svg +0 -12
  511. package/src/assets/svgs/format-painter.svg +0 -10
  512. package/src/assets/svgs/formula.svg +0 -6
  513. package/src/assets/svgs/fullscreen.svg +0 -43
  514. package/src/assets/svgs/image.svg +0 -17
  515. package/src/assets/svgs/italic.svg +0 -6
  516. package/src/assets/svgs/link.svg +0 -9
  517. package/src/assets/svgs/list-bullet.svg +0 -16
  518. package/src/assets/svgs/list-ordered.svg +0 -18
  519. package/src/assets/svgs/list-task.svg +0 -5
  520. package/src/assets/svgs/redo.svg +0 -8
  521. package/src/assets/svgs/screenshot.svg +0 -17
  522. package/src/assets/svgs/script-sub.svg +0 -15
  523. package/src/assets/svgs/script-super.svg +0 -15
  524. package/src/assets/svgs/strike.svg +0 -6
  525. package/src/assets/svgs/underline.svg +0 -13
  526. package/src/assets/svgs/undo.svg +0 -8
  527. package/src/assets/svgs/video.svg +0 -10
  528. package/src/assets/tasklist.scss +0 -76
  529. package/src/assets/toolbar.scss +0 -385
  530. package/src/assets/variable.scss +0 -9
  531. package/src/assets/video.scss +0 -5
  532. package/src/attributors/font-size.ts +0 -6
  533. package/src/attributors/font-style.ts +0 -6
  534. package/src/attributors/index.ts +0 -4
  535. package/src/attributors/line-height.ts +0 -6
  536. package/src/attributors/text-indent.ts +0 -6
  537. package/src/config/base64-image.ts +0 -5
  538. package/src/config/editor.config.ts +0 -86
  539. package/src/config/editor.utils.ts +0 -193
  540. package/src/config/i18n/en-us.ts +0 -138
  541. package/src/config/i18n/zh-cn.ts +0 -137
  542. package/src/config/index.ts +0 -44
  543. package/src/config/types/editor-config.interface.ts +0 -16
  544. package/src/config/types/editor-modules.interface.ts +0 -47
  545. package/src/config/types/index.ts +0 -3
  546. package/src/config/types/type.ts +0 -2
  547. package/src/core/fluent-editor.ts +0 -31
  548. package/src/fluent-editor.ts +0 -72
  549. package/src/formats/emoji.ts +0 -10
  550. package/src/formats/index.ts +0 -4
  551. package/src/formats/soft-break.ts +0 -27
  552. package/src/formats/strike.ts +0 -11
  553. package/src/formats/video.ts +0 -53
  554. package/src/index.ts +0 -9
  555. package/src/modules/ai/constants.ts +0 -43
  556. package/src/modules/ai/icons.ts +0 -333
  557. package/src/modules/ai/index.ts +0 -850
  558. package/src/modules/ai/types.ts +0 -18
  559. package/src/modules/collaborative-editing/awareness/awareness.ts +0 -141
  560. package/src/modules/collaborative-editing/awareness/index.ts +0 -2
  561. package/src/modules/collaborative-editing/awareness/y-indexeddb.ts +0 -12
  562. package/src/modules/collaborative-editing/collaborative-editing.ts +0 -115
  563. package/src/modules/collaborative-editing/index.ts +0 -2
  564. package/src/modules/collaborative-editing/module.ts +0 -32
  565. package/src/modules/collaborative-editing/provider/index.ts +0 -3
  566. package/src/modules/collaborative-editing/provider/providerRegistry.ts +0 -57
  567. package/src/modules/collaborative-editing/provider/webrtc.ts +0 -125
  568. package/src/modules/collaborative-editing/provider/websocket.ts +0 -142
  569. package/src/modules/collaborative-editing/types.ts +0 -44
  570. package/src/modules/counter.ts +0 -84
  571. package/src/modules/custom-clipboard.ts +0 -537
  572. package/src/modules/custom-image/actions/action.ts +0 -15
  573. package/src/modules/custom-image/actions/custom-resize-action.ts +0 -207
  574. package/src/modules/custom-image/actions/delete-action.ts +0 -32
  575. package/src/modules/custom-image/actions/image-toolbar-buttons.ts +0 -135
  576. package/src/modules/custom-image/actions/index.ts +0 -6
  577. package/src/modules/custom-image/actions/toolbar-action.ts +0 -32
  578. package/src/modules/custom-image/actions/toolbar.ts +0 -145
  579. package/src/modules/custom-image/blot-formatter.ts +0 -158
  580. package/src/modules/custom-image/image.ts +0 -132
  581. package/src/modules/custom-image/index.ts +0 -4
  582. package/src/modules/custom-image/options.ts +0 -139
  583. package/src/modules/custom-image/specs/blot-spec.ts +0 -30
  584. package/src/modules/custom-image/specs/custom-image-spec.ts +0 -131
  585. package/src/modules/custom-image/specs/image-spec.ts +0 -28
  586. package/src/modules/custom-image/specs/index.ts +0 -3
  587. package/src/modules/custom-uploader.ts +0 -101
  588. package/src/modules/divider.ts +0 -15
  589. package/src/modules/emoji.ts +0 -230
  590. package/src/modules/file/formats/file.ts +0 -61
  591. package/src/modules/file/index.ts +0 -3
  592. package/src/modules/file/modules/file-bar.ts +0 -146
  593. package/src/modules/file/modules/file-module.ts +0 -33
  594. package/src/modules/i18n.ts +0 -66
  595. package/src/modules/index.ts +0 -16
  596. package/src/modules/link/formats/link.ts +0 -43
  597. package/src/modules/link/index.ts +0 -2
  598. package/src/modules/link/modules/tooltip.ts +0 -341
  599. package/src/modules/mathlive/formats.ts +0 -39
  600. package/src/modules/mathlive/index.ts +0 -3
  601. package/src/modules/mathlive/module.ts +0 -37
  602. package/src/modules/mathlive/tooltip.ts +0 -87
  603. package/src/modules/mention/constants.ts +0 -3
  604. package/src/modules/mention/index.ts +0 -2
  605. package/src/modules/mention/mention-link.ts +0 -64
  606. package/src/modules/mention/mention.ts +0 -404
  607. package/src/modules/shortcut-key/index.ts +0 -237
  608. package/src/modules/syntax.ts +0 -35
  609. package/src/modules/table-up/index.ts +0 -83
  610. package/src/modules/toolbar/better-picker.ts +0 -67
  611. package/src/modules/toolbar/better-toolbar.ts +0 -176
  612. package/src/modules/toolbar/index.ts +0 -3
  613. package/src/modules/toolbar/toolbar-tip.ts +0 -142
  614. package/src/themes/snow.ts +0 -309
  615. package/src/tools/format-painter.ts +0 -85
  616. package/src/tools/fullscreen.ts +0 -66
  617. package/src/tools/screenshot.ts +0 -231
  618. package/src/ui/icons.config.ts +0 -361
  619. package/src/ui/icons.ts +0 -89
  620. package/src/utils/debounce.ts +0 -150
  621. package/src/utils/image.ts +0 -22
  622. package/src/utils/is.ts +0 -9
  623. package/src/utils/method.ts +0 -77
  624. package/src/utils/scroll-lock.ts +0 -52
  625. package/tsconfig.json +0 -25
  626. package/vite.config.ts +0 -83
  627. /package/{dist/README.md → README.md} +0 -0
  628. /package/{dist/es → es}/attributors/font-size.es.js +0 -0
  629. /package/{dist/es → es}/attributors/font-size.es.js.map +0 -0
  630. /package/{dist/es → es}/attributors/font-style.es.js +0 -0
  631. /package/{dist/es → es}/attributors/font-style.es.js.map +0 -0
  632. /package/{dist/es → es}/attributors/index.es.js +0 -0
  633. /package/{dist/es → es}/attributors/index.es.js.map +0 -0
  634. /package/{dist/es → es}/attributors/line-height.es.js +0 -0
  635. /package/{dist/es → es}/attributors/line-height.es.js.map +0 -0
  636. /package/{dist/es → es}/attributors/text-indent.es.js +0 -0
  637. /package/{dist/es → es}/attributors/text-indent.es.js.map +0 -0
  638. /package/{dist/es → es}/config/base64-image.es.js +0 -0
  639. /package/{dist/es → es}/config/base64-image.es.js.map +0 -0
  640. /package/{dist/es → es}/config/editor.utils.es.js +0 -0
  641. /package/{dist/es → es}/config/types/editor-config.interface.es.js +0 -0
  642. /package/{dist/es → es}/config/types/editor-config.interface.es.js.map +0 -0
  643. /package/{dist/es → es}/config/types/editor-modules.interface.es.js +0 -0
  644. /package/{dist/es → es}/config/types/editor-modules.interface.es.js.map +0 -0
  645. /package/{dist/es → es}/config/types/index.es.js +0 -0
  646. /package/{dist/es → es}/config/types/index.es.js.map +0 -0
  647. /package/{dist/es → es}/config/types/type.es.js +0 -0
  648. /package/{dist/es → es}/config/types/type.es.js.map +0 -0
  649. /package/{dist/es → es}/core/fluent-editor.es.js +0 -0
  650. /package/{dist/es → es}/formats/emoji.es.js +0 -0
  651. /package/{dist/es → es}/formats/emoji.es.js.map +0 -0
  652. /package/{dist/es → es}/formats/index.es.js +0 -0
  653. /package/{dist/es → es}/formats/index.es.js.map +0 -0
  654. /package/{dist/es → es}/formats/soft-break.es.js +0 -0
  655. /package/{dist/es → es}/formats/strike.es.js +0 -0
  656. /package/{dist/es → es}/formats/strike.es.js.map +0 -0
  657. /package/{dist/es → es}/formats/video.es.js +0 -0
  658. /package/{dist/es → es}/modules/ai/constants.es.js +0 -0
  659. /package/{dist/es → es}/modules/ai/icons.es.js +0 -0
  660. /package/{dist/es → es}/modules/ai/icons.es.js.map +0 -0
  661. /package/{dist/es → es}/modules/collaborative-editing/awareness/index.es.js +0 -0
  662. /package/{dist/es → es}/modules/collaborative-editing/awareness/index.es.js.map +0 -0
  663. /package/{dist/es → es}/modules/collaborative-editing/index.es.js +0 -0
  664. /package/{dist/es → es}/modules/collaborative-editing/index.es.js.map +0 -0
  665. /package/{dist/es → es}/modules/collaborative-editing/module.es.js +0 -0
  666. /package/{dist/es → es}/modules/collaborative-editing/provider/providerRegistry.es.js +0 -0
  667. /package/{dist/es → es}/modules/collaborative-editing/types.es.js +0 -0
  668. /package/{dist/es → es}/modules/collaborative-editing/types.es.js.map +0 -0
  669. /package/{dist/es → es}/modules/counter.es.js +0 -0
  670. /package/{dist/es → es}/modules/custom-clipboard.es.js +0 -0
  671. /package/{dist/es → es}/modules/custom-image/actions/action.es.js +0 -0
  672. /package/{dist/es → es}/modules/custom-image/actions/custom-resize-action.es.js +0 -0
  673. /package/{dist/es → es}/modules/custom-image/actions/delete-action.es.js +0 -0
  674. /package/{dist/es → es}/modules/custom-image/actions/index.es.js +0 -0
  675. /package/{dist/es → es}/modules/custom-image/actions/index.es.js.map +0 -0
  676. /package/{dist/es → es}/modules/custom-image/actions/toolbar-action.es.js +0 -0
  677. /package/{dist/es → es}/modules/custom-image/actions/toolbar.es.js +0 -0
  678. /package/{dist/es → es}/modules/custom-image/image.es.js +0 -0
  679. /package/{dist/es → es}/modules/custom-image/index.es.js +0 -0
  680. /package/{dist/es → es}/modules/custom-image/index.es.js.map +0 -0
  681. /package/{dist/es → es}/modules/custom-image/options.es.js +0 -0
  682. /package/{dist/es → es}/modules/custom-image/specs/blot-spec.es.js +0 -0
  683. /package/{dist/es → es}/modules/custom-image/specs/custom-image-spec.es.js +0 -0
  684. /package/{dist/es → es}/modules/custom-image/specs/image-spec.es.js +0 -0
  685. /package/{dist/es → es}/modules/custom-image/specs/index.es.js +0 -0
  686. /package/{dist/es → es}/modules/custom-image/specs/index.es.js.map +0 -0
  687. /package/{dist/es → es}/modules/custom-uploader.es.js +0 -0
  688. /package/{dist/es → es}/modules/divider.es.js +0 -0
  689. /package/{dist/es → es}/modules/file/formats/file.es.js +0 -0
  690. /package/{dist/es → es}/modules/file/index.es.js +0 -0
  691. /package/{dist/es → es}/modules/file/index.es.js.map +0 -0
  692. /package/{dist/es → es}/modules/file/modules/file-bar.es.js +0 -0
  693. /package/{dist/es → es}/modules/file/modules/file-module.es.js +0 -0
  694. /package/{dist/es → es}/modules/i18n.es.js +0 -0
  695. /package/{dist/es → es}/modules/link/formats/link.es.js +0 -0
  696. /package/{dist/es → es}/modules/link/index.es.js +0 -0
  697. /package/{dist/es → es}/modules/link/index.es.js.map +0 -0
  698. /package/{dist/es → es}/modules/link/modules/tooltip.es.js +0 -0
  699. /package/{dist/es → es}/modules/mathlive/formats.es.js +0 -0
  700. /package/{dist/es → es}/modules/mathlive/index.es.js +0 -0
  701. /package/{dist/es → es}/modules/mathlive/index.es.js.map +0 -0
  702. /package/{dist/es → es}/modules/mathlive/module.es.js +0 -0
  703. /package/{dist/es → es}/modules/mathlive/tooltip.es.js +0 -0
  704. /package/{dist/es → es}/modules/mention/constants.es.js +0 -0
  705. /package/{dist/es → es}/modules/mention/constants.es.js.map +0 -0
  706. /package/{dist/es → es}/modules/mention/index.es.js +0 -0
  707. /package/{dist/es → es}/modules/mention/index.es.js.map +0 -0
  708. /package/{dist/es → es}/modules/mention/mention-link.es.js +0 -0
  709. /package/{dist/es → es}/modules/mention/mention.es.js +0 -0
  710. /package/{dist/es → es}/modules/syntax.es.js +0 -0
  711. /package/{dist/es → es}/modules/table-up/index.es.js +0 -0
  712. /package/{dist/es → es}/modules/toolbar/better-picker.es.js +0 -0
  713. /package/{dist/es → es}/modules/toolbar/better-toolbar.es.js +0 -0
  714. /package/{dist/es → es}/modules/toolbar/index.es.js +0 -0
  715. /package/{dist/es → es}/modules/toolbar/index.es.js.map +0 -0
  716. /package/{dist/es → es}/modules/toolbar/toolbar-tip.es.js +0 -0
  717. /package/{dist/es → es}/themes/snow.es.js +0 -0
  718. /package/{dist/es → es}/tools/format-painter.es.js +0 -0
  719. /package/{dist/es → es}/tools/fullscreen.es.js +0 -0
  720. /package/{dist/es → es}/tools/screenshot.es.js +0 -0
  721. /package/{dist/es → es}/utils/debounce.es.js +0 -0
  722. /package/{dist/es → es}/utils/image.es.js +0 -0
  723. /package/{dist/es → es}/utils/is.es.js +0 -0
  724. /package/{dist/es → es}/utils/method.es.js +0 -0
  725. /package/{dist/es → es}/utils/scroll-lock.es.js +0 -0
  726. /package/{dist/lib → lib}/attributors/font-size.cjs.js +0 -0
  727. /package/{dist/lib → lib}/attributors/font-size.cjs.js.map +0 -0
  728. /package/{dist/lib → lib}/attributors/font-style.cjs.js +0 -0
  729. /package/{dist/lib → lib}/attributors/font-style.cjs.js.map +0 -0
  730. /package/{dist/lib → lib}/attributors/index.cjs.js +0 -0
  731. /package/{dist/lib → lib}/attributors/index.cjs.js.map +0 -0
  732. /package/{dist/lib → lib}/attributors/line-height.cjs.js +0 -0
  733. /package/{dist/lib → lib}/attributors/line-height.cjs.js.map +0 -0
  734. /package/{dist/lib → lib}/attributors/text-indent.cjs.js +0 -0
  735. /package/{dist/lib → lib}/attributors/text-indent.cjs.js.map +0 -0
  736. /package/{dist/lib → lib}/config/base64-image.cjs.js +0 -0
  737. /package/{dist/lib → lib}/config/base64-image.cjs.js.map +0 -0
  738. /package/{dist/lib → lib}/config/editor.utils.cjs.js +0 -0
  739. /package/{dist/lib → lib}/config/types/editor-config.interface.cjs.js +0 -0
  740. /package/{dist/lib → lib}/config/types/editor-config.interface.cjs.js.map +0 -0
  741. /package/{dist/lib → lib}/config/types/editor-modules.interface.cjs.js +0 -0
  742. /package/{dist/lib → lib}/config/types/editor-modules.interface.cjs.js.map +0 -0
  743. /package/{dist/lib → lib}/config/types/index.cjs.js +0 -0
  744. /package/{dist/lib → lib}/config/types/index.cjs.js.map +0 -0
  745. /package/{dist/lib → lib}/config/types/type.cjs.js +0 -0
  746. /package/{dist/lib → lib}/config/types/type.cjs.js.map +0 -0
  747. /package/{dist/lib → lib}/core/fluent-editor.cjs.js +0 -0
  748. /package/{dist/lib → lib}/formats/emoji.cjs.js +0 -0
  749. /package/{dist/lib → lib}/formats/emoji.cjs.js.map +0 -0
  750. /package/{dist/lib → lib}/formats/index.cjs.js +0 -0
  751. /package/{dist/lib → lib}/formats/index.cjs.js.map +0 -0
  752. /package/{dist/lib → lib}/formats/soft-break.cjs.js +0 -0
  753. /package/{dist/lib → lib}/formats/strike.cjs.js +0 -0
  754. /package/{dist/lib → lib}/formats/strike.cjs.js.map +0 -0
  755. /package/{dist/lib → lib}/formats/video.cjs.js +0 -0
  756. /package/{dist/lib → lib}/modules/ai/constants.cjs.js +0 -0
  757. /package/{dist/lib → lib}/modules/ai/icons.cjs.js +0 -0
  758. /package/{dist/lib → lib}/modules/ai/icons.cjs.js.map +0 -0
  759. /package/{dist/lib → lib}/modules/ai/index.cjs.js +0 -0
  760. /package/{dist/lib → lib}/modules/collaborative-editing/awareness/index.cjs.js +0 -0
  761. /package/{dist/lib → lib}/modules/collaborative-editing/awareness/index.cjs.js.map +0 -0
  762. /package/{dist/lib → lib}/modules/collaborative-editing/index.cjs.js +0 -0
  763. /package/{dist/lib → lib}/modules/collaborative-editing/index.cjs.js.map +0 -0
  764. /package/{dist/lib → lib}/modules/collaborative-editing/module.cjs.js +0 -0
  765. /package/{dist/lib → lib}/modules/collaborative-editing/provider/providerRegistry.cjs.js +0 -0
  766. /package/{dist/lib → lib}/modules/collaborative-editing/types.cjs.js +0 -0
  767. /package/{dist/lib → lib}/modules/collaborative-editing/types.cjs.js.map +0 -0
  768. /package/{dist/lib → lib}/modules/counter.cjs.js +0 -0
  769. /package/{dist/lib → lib}/modules/custom-clipboard.cjs.js +0 -0
  770. /package/{dist/lib → lib}/modules/custom-image/actions/action.cjs.js +0 -0
  771. /package/{dist/lib → lib}/modules/custom-image/actions/custom-resize-action.cjs.js +0 -0
  772. /package/{dist/lib → lib}/modules/custom-image/actions/delete-action.cjs.js +0 -0
  773. /package/{dist/lib → lib}/modules/custom-image/actions/image-toolbar-buttons.cjs.js +0 -0
  774. /package/{dist/lib → lib}/modules/custom-image/actions/index.cjs.js +0 -0
  775. /package/{dist/lib → lib}/modules/custom-image/actions/index.cjs.js.map +0 -0
  776. /package/{dist/lib → lib}/modules/custom-image/actions/toolbar-action.cjs.js +0 -0
  777. /package/{dist/lib → lib}/modules/custom-image/actions/toolbar.cjs.js +0 -0
  778. /package/{dist/lib → lib}/modules/custom-image/image.cjs.js +0 -0
  779. /package/{dist/lib → lib}/modules/custom-image/index.cjs.js +0 -0
  780. /package/{dist/lib → lib}/modules/custom-image/index.cjs.js.map +0 -0
  781. /package/{dist/lib → lib}/modules/custom-image/options.cjs.js +0 -0
  782. /package/{dist/lib → lib}/modules/custom-image/specs/blot-spec.cjs.js +0 -0
  783. /package/{dist/lib → lib}/modules/custom-image/specs/custom-image-spec.cjs.js +0 -0
  784. /package/{dist/lib → lib}/modules/custom-image/specs/image-spec.cjs.js +0 -0
  785. /package/{dist/lib → lib}/modules/custom-image/specs/index.cjs.js +0 -0
  786. /package/{dist/lib → lib}/modules/custom-image/specs/index.cjs.js.map +0 -0
  787. /package/{dist/lib → lib}/modules/custom-uploader.cjs.js +0 -0
  788. /package/{dist/lib → lib}/modules/divider.cjs.js +0 -0
  789. /package/{dist/lib → lib}/modules/file/formats/file.cjs.js +0 -0
  790. /package/{dist/lib → lib}/modules/file/index.cjs.js +0 -0
  791. /package/{dist/lib → lib}/modules/file/index.cjs.js.map +0 -0
  792. /package/{dist/lib → lib}/modules/file/modules/file-bar.cjs.js +0 -0
  793. /package/{dist/lib → lib}/modules/file/modules/file-module.cjs.js +0 -0
  794. /package/{dist/lib → lib}/modules/i18n.cjs.js +0 -0
  795. /package/{dist/lib → lib}/modules/link/formats/link.cjs.js +0 -0
  796. /package/{dist/lib → lib}/modules/link/index.cjs.js +0 -0
  797. /package/{dist/lib → lib}/modules/link/index.cjs.js.map +0 -0
  798. /package/{dist/lib → lib}/modules/link/modules/tooltip.cjs.js +0 -0
  799. /package/{dist/lib → lib}/modules/mathlive/formats.cjs.js +0 -0
  800. /package/{dist/lib → lib}/modules/mathlive/index.cjs.js +0 -0
  801. /package/{dist/lib → lib}/modules/mathlive/index.cjs.js.map +0 -0
  802. /package/{dist/lib → lib}/modules/mathlive/module.cjs.js +0 -0
  803. /package/{dist/lib → lib}/modules/mathlive/tooltip.cjs.js +0 -0
  804. /package/{dist/lib → lib}/modules/mention/constants.cjs.js +0 -0
  805. /package/{dist/lib → lib}/modules/mention/constants.cjs.js.map +0 -0
  806. /package/{dist/lib → lib}/modules/mention/index.cjs.js +0 -0
  807. /package/{dist/lib → lib}/modules/mention/index.cjs.js.map +0 -0
  808. /package/{dist/lib → lib}/modules/mention/mention-link.cjs.js +0 -0
  809. /package/{dist/lib → lib}/modules/mention/mention.cjs.js +0 -0
  810. /package/{dist/lib → lib}/modules/syntax.cjs.js +0 -0
  811. /package/{dist/lib → lib}/modules/table-up/index.cjs.js +0 -0
  812. /package/{dist/lib → lib}/modules/toolbar/better-picker.cjs.js +0 -0
  813. /package/{dist/lib → lib}/modules/toolbar/better-toolbar.cjs.js +0 -0
  814. /package/{dist/lib → lib}/modules/toolbar/index.cjs.js +0 -0
  815. /package/{dist/lib → lib}/modules/toolbar/index.cjs.js.map +0 -0
  816. /package/{dist/lib → lib}/modules/toolbar/toolbar-tip.cjs.js +0 -0
  817. /package/{dist/lib → lib}/themes/snow.cjs.js +0 -0
  818. /package/{dist/lib → lib}/tools/format-painter.cjs.js +0 -0
  819. /package/{dist/lib → lib}/tools/fullscreen.cjs.js +0 -0
  820. /package/{dist/lib → lib}/tools/screenshot.cjs.js +0 -0
  821. /package/{dist/lib → lib}/utils/debounce.cjs.js +0 -0
  822. /package/{dist/lib → lib}/utils/image.cjs.js +0 -0
  823. /package/{dist/lib → lib}/utils/is.cjs.js +0 -0
  824. /package/{dist/lib → lib}/utils/method.cjs.js +0 -0
  825. /package/{dist/lib → lib}/utils/scroll-lock.cjs.js +0 -0
  826. /package/{dist/types → types}/attributors/font-size.d.ts +0 -0
  827. /package/{dist/types → types}/attributors/font-style.d.ts +0 -0
  828. /package/{dist/types → types}/attributors/index.d.ts +0 -0
  829. /package/{dist/types → types}/attributors/line-height.d.ts +0 -0
  830. /package/{dist/types → types}/attributors/text-indent.d.ts +0 -0
  831. /package/{dist/types → types}/config/base64-image.d.ts +0 -0
  832. /package/{dist/types → types}/config/editor.utils.d.ts +0 -0
  833. /package/{dist/types → types}/config/index.d.ts +0 -0
  834. /package/{dist/types → types}/config/types/editor-config.interface.d.ts +0 -0
  835. /package/{dist/types → types}/config/types/index.d.ts +0 -0
  836. /package/{dist/types → types}/config/types/type.d.ts +0 -0
  837. /package/{dist/types → types}/core/fluent-editor.d.ts +0 -0
  838. /package/{dist/types → types}/fluent-editor.d.ts +0 -0
  839. /package/{dist/types → types}/formats/emoji.d.ts +0 -0
  840. /package/{dist/types → types}/formats/index.d.ts +0 -0
  841. /package/{dist/types → types}/formats/soft-break.d.ts +0 -0
  842. /package/{dist/types → types}/formats/strike.d.ts +0 -0
  843. /package/{dist/types → types}/formats/video.d.ts +0 -0
  844. /package/{dist/types → types}/modules/ai/constants.d.ts +0 -0
  845. /package/{dist/types → types}/modules/ai/icons.d.ts +0 -0
  846. /package/{dist/types → types}/modules/ai/index.d.ts +0 -0
  847. /package/{dist/types → types}/modules/ai/types.d.ts +0 -0
  848. /package/{dist/types → types}/modules/collaborative-editing/awareness/index.d.ts +0 -0
  849. /package/{dist/types → types}/modules/collaborative-editing/index.d.ts +0 -0
  850. /package/{dist/types → types}/modules/collaborative-editing/module.d.ts +0 -0
  851. /package/{dist/types → types}/modules/collaborative-editing/provider/index.d.ts +0 -0
  852. /package/{dist/types → types}/modules/counter.d.ts +0 -0
  853. /package/{dist/types → types}/modules/custom-clipboard.d.ts +0 -0
  854. /package/{dist/types → types}/modules/custom-image/actions/action.d.ts +0 -0
  855. /package/{dist/types → types}/modules/custom-image/actions/custom-resize-action.d.ts +0 -0
  856. /package/{dist/types → types}/modules/custom-image/actions/delete-action.d.ts +0 -0
  857. /package/{dist/types → types}/modules/custom-image/actions/image-toolbar-buttons.d.ts +0 -0
  858. /package/{dist/types → types}/modules/custom-image/actions/index.d.ts +0 -0
  859. /package/{dist/types → types}/modules/custom-image/actions/toolbar-action.d.ts +0 -0
  860. /package/{dist/types → types}/modules/custom-image/actions/toolbar.d.ts +0 -0
  861. /package/{dist/types → types}/modules/custom-image/blot-formatter.d.ts +0 -0
  862. /package/{dist/types → types}/modules/custom-image/image.d.ts +0 -0
  863. /package/{dist/types → types}/modules/custom-image/index.d.ts +0 -0
  864. /package/{dist/types → types}/modules/custom-image/options.d.ts +0 -0
  865. /package/{dist/types → types}/modules/custom-image/specs/blot-spec.d.ts +0 -0
  866. /package/{dist/types → types}/modules/custom-image/specs/custom-image-spec.d.ts +0 -0
  867. /package/{dist/types → types}/modules/custom-image/specs/image-spec.d.ts +0 -0
  868. /package/{dist/types → types}/modules/custom-image/specs/index.d.ts +0 -0
  869. /package/{dist/types → types}/modules/custom-uploader.d.ts +0 -0
  870. /package/{dist/types → types}/modules/divider.d.ts +0 -0
  871. /package/{dist/types → types}/modules/emoji.d.ts +0 -0
  872. /package/{dist/types → types}/modules/file/formats/file.d.ts +0 -0
  873. /package/{dist/types → types}/modules/file/index.d.ts +0 -0
  874. /package/{dist/types → types}/modules/file/modules/file-bar.d.ts +0 -0
  875. /package/{dist/types → types}/modules/file/modules/file-module.d.ts +0 -0
  876. /package/{dist/types → types}/modules/i18n.d.ts +0 -0
  877. /package/{dist/types → types}/modules/link/formats/link.d.ts +0 -0
  878. /package/{dist/types → types}/modules/link/index.d.ts +0 -0
  879. /package/{dist/types → types}/modules/link/modules/tooltip.d.ts +0 -0
  880. /package/{dist/types → types}/modules/mathlive/formats.d.ts +0 -0
  881. /package/{dist/types → types}/modules/mathlive/index.d.ts +0 -0
  882. /package/{dist/types → types}/modules/mathlive/module.d.ts +0 -0
  883. /package/{dist/types → types}/modules/mathlive/tooltip.d.ts +0 -0
  884. /package/{dist/types → types}/modules/mention/constants.d.ts +0 -0
  885. /package/{dist/types → types}/modules/mention/index.d.ts +0 -0
  886. /package/{dist/types → types}/modules/mention/mention-link.d.ts +0 -0
  887. /package/{dist/types → types}/modules/mention/mention.d.ts +0 -0
  888. /package/{dist/types → types}/modules/shortcut-key/index.d.ts +0 -0
  889. /package/{dist/types → types}/modules/syntax.d.ts +0 -0
  890. /package/{dist/types → types}/modules/table-up/index.d.ts +0 -0
  891. /package/{dist/types → types}/modules/toolbar/better-picker.d.ts +0 -0
  892. /package/{dist/types → types}/modules/toolbar/better-toolbar.d.ts +0 -0
  893. /package/{dist/types → types}/modules/toolbar/index.d.ts +0 -0
  894. /package/{dist/types → types}/modules/toolbar/toolbar-tip.d.ts +0 -0
  895. /package/{dist/types → types}/themes/snow.d.ts +0 -0
  896. /package/{dist/types → types}/tools/format-painter.d.ts +0 -0
  897. /package/{dist/types → types}/tools/fullscreen.d.ts +0 -0
  898. /package/{dist/types → types}/tools/screenshot.d.ts +0 -0
  899. /package/{dist/types → types}/ui/icons.d.ts +0 -0
  900. /package/{dist/types → types}/utils/debounce.d.ts +0 -0
  901. /package/{dist/types → types}/utils/image.d.ts +0 -0
  902. /package/{dist/types → types}/utils/is.d.ts +0 -0
  903. /package/{dist/types → types}/utils/method.d.ts +0 -0
  904. /package/{dist/types → types}/utils/scroll-lock.d.ts +0 -0
@@ -1 +0,0 @@
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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"}
@@ -1,93 +0,0 @@
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
@@ -1 +0,0 @@
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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"}
@@ -1,12 +0,0 @@
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
@@ -1 +0,0 @@
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;"}
@@ -1,105 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import 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
@@ -1 +0,0 @@
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;"}
@@ -1 +0,0 @@
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;"}
@@ -1 +0,0 @@
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;"}
@@ -1,99 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { WebrtcProvider } from "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
@@ -1 +0,0 @@
1
- {"version":3,"file":"webrtc.es.js","sources":["../../../../../src/modules/collaborative-editing/provider/webrtc.ts"],"sourcesContent":["import type { Awareness } from 'y-protocols/awareness'\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;"}
@@ -1,111 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { Awareness } from "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
@@ -1 +0,0 @@
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;"}
@@ -1 +0,0 @@
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;"}