@opentiny/fluent-editor 4.0.0-alpha.9 → 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 (385) hide show
  1. package/README.md +88 -88
  2. package/es/attributors/line-height.es.js.map +1 -1
  3. package/es/config/base64-image.es.js.map +1 -1
  4. package/es/config/editor.config.es.js +27 -0
  5. package/es/config/editor.config.es.js.map +1 -1
  6. package/es/config/editor.utils.es.js.map +1 -1
  7. package/es/config/i18n/en-us.es.js +2 -0
  8. package/es/config/i18n/en-us.es.js.map +1 -1
  9. package/es/config/i18n/zh-cn.es.js +2 -0
  10. package/es/config/i18n/zh-cn.es.js.map +1 -1
  11. package/es/config/index.es.js +3 -1
  12. package/es/config/index.es.js.map +1 -1
  13. package/es/core/fluent-editor.es.js.map +1 -1
  14. package/es/fluent-editor.es.js +17 -13
  15. package/es/fluent-editor.es.js.map +1 -1
  16. package/es/formats/emoji.es.js.map +1 -1
  17. package/es/formats/soft-break.es.js.map +1 -1
  18. package/es/formats/strike.es.js.map +1 -1
  19. package/es/formats/video.es.js.map +1 -1
  20. package/es/index.es.js +35 -2
  21. package/es/index.es.js.map +1 -1
  22. package/es/modules/ai/constants.es.js.map +1 -1
  23. package/es/modules/ai/icons.es.js.map +1 -1
  24. package/es/modules/ai/index.es.js +1 -1
  25. package/es/modules/ai/index.es.js.map +1 -1
  26. package/es/modules/collaborative-editing/awareness/awareness.es.js +6 -7
  27. package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -1
  28. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +7 -3
  29. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -1
  30. package/es/modules/collaborative-editing/collaborative-editing.es.js +13 -8
  31. package/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -1
  32. package/es/modules/collaborative-editing/module.es.js.map +1 -1
  33. package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -1
  34. package/es/modules/collaborative-editing/provider/webrtc.es.js +8 -4
  35. package/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -1
  36. package/es/modules/collaborative-editing/provider/websocket.es.js +6 -4
  37. package/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -1
  38. package/es/modules/counter.es.js.map +1 -1
  39. package/es/modules/custom-clipboard.es.js.map +1 -1
  40. package/es/modules/custom-image/actions/action.es.js.map +1 -1
  41. package/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -1
  42. package/es/modules/custom-image/actions/delete-action.es.js.map +1 -1
  43. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js +1 -1
  44. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +1 -1
  45. package/es/modules/custom-image/actions/toolbar-action.es.js.map +1 -1
  46. package/es/modules/custom-image/actions/toolbar.es.js.map +1 -1
  47. package/es/modules/custom-image/blot-formatter.es.js +1 -1
  48. package/es/modules/custom-image/blot-formatter.es.js.map +1 -1
  49. package/es/modules/custom-image/image.es.js.map +1 -1
  50. package/es/modules/custom-image/options.es.js.map +1 -1
  51. package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -1
  52. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -1
  53. package/es/modules/custom-image/specs/image-spec.es.js.map +1 -1
  54. package/es/modules/custom-uploader.es.js.map +1 -1
  55. package/es/modules/divider.es.js.map +1 -1
  56. package/es/modules/emoji.es.js +1 -1
  57. package/es/modules/emoji.es.js.map +1 -1
  58. package/es/modules/file/formats/file.es.js.map +1 -1
  59. package/es/modules/file/modules/file-bar.es.js.map +1 -1
  60. package/es/modules/file/modules/file-module.es.js.map +1 -1
  61. package/es/modules/flow-chart/config-utils.es.js +102 -0
  62. package/es/modules/flow-chart/config-utils.es.js.map +1 -0
  63. package/es/modules/flow-chart/formats/flow-chart-blot.es.js +369 -0
  64. package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -0
  65. package/es/modules/flow-chart/i18n/en-us.es.js +30 -0
  66. package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -0
  67. package/es/modules/flow-chart/i18n/index.es.js +12 -0
  68. package/es/modules/flow-chart/i18n/index.es.js.map +1 -0
  69. package/es/modules/flow-chart/i18n/zh-cn.es.js +30 -0
  70. package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -0
  71. package/es/modules/flow-chart/icons.es.js +27 -0
  72. package/es/modules/flow-chart/icons.es.js.map +1 -0
  73. package/es/modules/flow-chart/index.es.js +45 -0
  74. package/es/modules/flow-chart/index.es.js.map +1 -0
  75. package/es/modules/flow-chart/modules/context-menu.es.js +184 -0
  76. package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -0
  77. package/es/modules/flow-chart/modules/control-panel.es.js +286 -0
  78. package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -0
  79. package/es/modules/flow-chart/modules/custom-resize-action.es.js +150 -0
  80. package/es/modules/flow-chart/modules/custom-resize-action.es.js.map +1 -0
  81. package/es/modules/i18n.es.js.map +1 -1
  82. package/es/modules/index.es.js +4 -0
  83. package/es/modules/index.es.js.map +1 -1
  84. package/es/modules/link/formats/link.es.js.map +1 -1
  85. package/es/modules/link/modules/tooltip.es.js.map +1 -1
  86. package/es/modules/mathlive/formats.es.js.map +1 -1
  87. package/es/modules/mathlive/module.es.js.map +1 -1
  88. package/es/modules/mathlive/tooltip.es.js.map +1 -1
  89. package/es/modules/mention/constants.es.js.map +1 -1
  90. package/es/modules/mention/mention-link.es.js.map +1 -1
  91. package/es/modules/mention/mention.es.js.map +1 -1
  92. package/es/modules/mind-map/config-utils.es.js +108 -0
  93. package/es/modules/mind-map/config-utils.es.js.map +1 -0
  94. package/es/modules/mind-map/formats/mind-map-blot.es.js +356 -0
  95. package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -0
  96. package/es/modules/mind-map/i18n/en-us.es.js +29 -0
  97. package/es/modules/mind-map/i18n/en-us.es.js.map +1 -0
  98. package/es/modules/mind-map/i18n/index.es.js +12 -0
  99. package/es/modules/mind-map/i18n/index.es.js.map +1 -0
  100. package/es/modules/mind-map/i18n/zh-cn.es.js +29 -0
  101. package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -0
  102. package/es/modules/mind-map/icons.es.js +45 -0
  103. package/es/modules/mind-map/icons.es.js.map +1 -0
  104. package/es/modules/mind-map/index.es.js +56 -0
  105. package/es/modules/mind-map/index.es.js.map +1 -0
  106. package/es/modules/mind-map/modules/context-menu.es.js +128 -0
  107. package/es/modules/mind-map/modules/context-menu.es.js.map +1 -0
  108. package/es/modules/mind-map/modules/control-panel.es.js +425 -0
  109. package/es/modules/mind-map/modules/control-panel.es.js.map +1 -0
  110. package/es/modules/mind-map/modules/custom-resize-action.es.js +161 -0
  111. package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -0
  112. package/es/modules/shortcut-key/index.es.js +16 -0
  113. package/es/modules/shortcut-key/index.es.js.map +1 -1
  114. package/es/modules/syntax.es.js.map +1 -1
  115. package/es/modules/table-up/index.es.js.map +1 -1
  116. package/es/modules/toolbar/better-picker.es.js.map +1 -1
  117. package/es/modules/toolbar/better-toolbar.es.js.map +1 -1
  118. package/es/modules/toolbar/toolbar-tip.es.js.map +1 -1
  119. package/es/themes/snow.es.js.map +1 -1
  120. package/es/tools/format-painter.es.js.map +1 -1
  121. package/es/tools/fullscreen.es.js.map +1 -1
  122. package/es/tools/screenshot.es.js.map +1 -1
  123. package/es/ui/icons.config.es.js +4 -0
  124. package/es/ui/icons.config.es.js.map +1 -1
  125. package/es/ui/icons.es.js +4 -2
  126. package/es/ui/icons.es.js.map +1 -1
  127. package/es/utils/debounce.es.js.map +1 -1
  128. package/es/utils/image.es.js.map +1 -1
  129. package/es/utils/is.es.js.map +1 -1
  130. package/es/utils/merge.es.js +27 -0
  131. package/es/utils/merge.es.js.map +1 -0
  132. package/es/utils/method.es.js.map +1 -1
  133. package/es/utils/scroll-lock.es.js.map +1 -1
  134. package/flow-chart.css +185 -0
  135. package/lib/attributors/line-height.cjs.js.map +1 -1
  136. package/lib/config/base64-image.cjs.js.map +1 -1
  137. package/lib/config/editor.config.cjs.js +27 -0
  138. package/lib/config/editor.config.cjs.js.map +1 -1
  139. package/lib/config/editor.utils.cjs.js.map +1 -1
  140. package/lib/config/i18n/en-us.cjs.js +2 -0
  141. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  142. package/lib/config/i18n/zh-cn.cjs.js +2 -0
  143. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  144. package/lib/config/index.cjs.js +2 -0
  145. package/lib/config/index.cjs.js.map +1 -1
  146. package/lib/core/fluent-editor.cjs.js.map +1 -1
  147. package/lib/fluent-editor.cjs.js +23 -19
  148. package/lib/fluent-editor.cjs.js.map +1 -1
  149. package/lib/formats/emoji.cjs.js.map +1 -1
  150. package/lib/formats/soft-break.cjs.js.map +1 -1
  151. package/lib/formats/strike.cjs.js.map +1 -1
  152. package/lib/formats/video.cjs.js.map +1 -1
  153. package/lib/index.cjs.js +39 -6
  154. package/lib/index.cjs.js.map +1 -1
  155. package/lib/modules/ai/constants.cjs.js.map +1 -1
  156. package/lib/modules/ai/icons.cjs.js.map +1 -1
  157. package/lib/modules/ai/index.cjs.js.map +1 -1
  158. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js +6 -24
  159. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -1
  160. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +7 -3
  161. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -1
  162. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js +19 -31
  163. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -1
  164. package/lib/modules/collaborative-editing/module.cjs.js.map +1 -1
  165. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -1
  166. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js +10 -23
  167. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -1
  168. package/lib/modules/collaborative-editing/provider/websocket.cjs.js +10 -25
  169. package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -1
  170. package/lib/modules/counter.cjs.js.map +1 -1
  171. package/lib/modules/custom-clipboard.cjs.js.map +1 -1
  172. package/lib/modules/custom-image/actions/action.cjs.js.map +1 -1
  173. package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -1
  174. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -1
  175. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +1 -1
  176. package/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +1 -1
  177. package/lib/modules/custom-image/actions/toolbar.cjs.js.map +1 -1
  178. package/lib/modules/custom-image/blot-formatter.cjs.js +2 -2
  179. package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -1
  180. package/lib/modules/custom-image/image.cjs.js.map +1 -1
  181. package/lib/modules/custom-image/options.cjs.js.map +1 -1
  182. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -1
  183. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -1
  184. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -1
  185. package/lib/modules/custom-uploader.cjs.js.map +1 -1
  186. package/lib/modules/divider.cjs.js.map +1 -1
  187. package/lib/modules/emoji.cjs.js +2 -2
  188. package/lib/modules/emoji.cjs.js.map +1 -1
  189. package/lib/modules/file/formats/file.cjs.js.map +1 -1
  190. package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
  191. package/lib/modules/file/modules/file-module.cjs.js.map +1 -1
  192. package/lib/modules/flow-chart/config-utils.cjs.js +102 -0
  193. package/lib/modules/flow-chart/config-utils.cjs.js.map +1 -0
  194. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js +369 -0
  195. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -0
  196. package/lib/modules/flow-chart/i18n/en-us.cjs.js +30 -0
  197. package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -0
  198. package/lib/modules/flow-chart/i18n/index.cjs.js +12 -0
  199. package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -0
  200. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js +30 -0
  201. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -0
  202. package/lib/modules/flow-chart/icons.cjs.js +27 -0
  203. package/lib/modules/flow-chart/icons.cjs.js.map +1 -0
  204. package/lib/modules/flow-chart/index.cjs.js +45 -0
  205. package/lib/modules/flow-chart/index.cjs.js.map +1 -0
  206. package/lib/modules/flow-chart/modules/context-menu.cjs.js +184 -0
  207. package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -0
  208. package/lib/modules/flow-chart/modules/control-panel.cjs.js +286 -0
  209. package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -0
  210. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js +150 -0
  211. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js.map +1 -0
  212. package/lib/modules/i18n.cjs.js.map +1 -1
  213. package/lib/modules/index.cjs.js +9 -5
  214. package/lib/modules/index.cjs.js.map +1 -1
  215. package/lib/modules/link/formats/link.cjs.js.map +1 -1
  216. package/lib/modules/link/modules/tooltip.cjs.js.map +1 -1
  217. package/lib/modules/mathlive/formats.cjs.js.map +1 -1
  218. package/lib/modules/mathlive/module.cjs.js.map +1 -1
  219. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
  220. package/lib/modules/mention/constants.cjs.js.map +1 -1
  221. package/lib/modules/mention/mention-link.cjs.js.map +1 -1
  222. package/lib/modules/mention/mention.cjs.js.map +1 -1
  223. package/lib/modules/mind-map/config-utils.cjs.js +108 -0
  224. package/lib/modules/mind-map/config-utils.cjs.js.map +1 -0
  225. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js +356 -0
  226. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -0
  227. package/lib/modules/mind-map/i18n/en-us.cjs.js +29 -0
  228. package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -0
  229. package/lib/modules/mind-map/i18n/index.cjs.js +12 -0
  230. package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -0
  231. package/lib/modules/mind-map/i18n/zh-cn.cjs.js +29 -0
  232. package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -0
  233. package/lib/modules/mind-map/icons.cjs.js +45 -0
  234. package/lib/modules/mind-map/icons.cjs.js.map +1 -0
  235. package/lib/modules/mind-map/index.cjs.js +56 -0
  236. package/lib/modules/mind-map/index.cjs.js.map +1 -0
  237. package/lib/modules/mind-map/modules/context-menu.cjs.js +128 -0
  238. package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -0
  239. package/lib/modules/mind-map/modules/control-panel.cjs.js +425 -0
  240. package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -0
  241. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js +161 -0
  242. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -0
  243. package/lib/modules/shortcut-key/index.cjs.js +16 -0
  244. package/lib/modules/shortcut-key/index.cjs.js.map +1 -1
  245. package/lib/modules/syntax.cjs.js.map +1 -1
  246. package/lib/modules/table-up/index.cjs.js.map +1 -1
  247. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
  248. package/lib/modules/toolbar/better-toolbar.cjs.js.map +1 -1
  249. package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -1
  250. package/lib/themes/snow.cjs.js.map +1 -1
  251. package/lib/tools/format-painter.cjs.js.map +1 -1
  252. package/lib/tools/fullscreen.cjs.js.map +1 -1
  253. package/lib/tools/screenshot.cjs.js.map +1 -1
  254. package/lib/ui/icons.cjs.js +3 -1
  255. package/lib/ui/icons.cjs.js.map +1 -1
  256. package/lib/ui/icons.config.cjs.js +4 -0
  257. package/lib/ui/icons.config.cjs.js.map +1 -1
  258. package/lib/utils/debounce.cjs.js.map +1 -1
  259. package/lib/utils/image.cjs.js.map +1 -1
  260. package/lib/utils/is.cjs.js.map +1 -1
  261. package/lib/utils/merge.cjs.js +27 -0
  262. package/lib/utils/merge.cjs.js.map +1 -0
  263. package/lib/utils/method.cjs.js.map +1 -1
  264. package/lib/utils/scroll-lock.cjs.js.map +1 -1
  265. package/mind-map.css +224 -0
  266. package/package.json +45 -67
  267. package/patches/quill@2.0.3.patch +33 -0
  268. package/scripts/apply-patches.cjs +248 -0
  269. package/style.css +4 -2
  270. package/types/attributors/font-size.d.ts +1 -1
  271. package/types/attributors/font-style.d.ts +1 -1
  272. package/types/attributors/index.d.ts +4 -4
  273. package/types/attributors/line-height.d.ts +1 -1
  274. package/types/attributors/text-indent.d.ts +1 -1
  275. package/types/config/base64-image.d.ts +2 -2
  276. package/types/config/editor.config.d.ts +55 -11
  277. package/types/config/editor.utils.d.ts +40 -40
  278. package/types/config/i18n/en-us.d.ts +125 -123
  279. package/types/config/i18n/zh-cn.d.ts +125 -123
  280. package/types/config/index.d.ts +7 -7
  281. package/types/config/types/editor-config.interface.d.ts +11 -12
  282. package/types/config/types/editor-modules.interface.d.ts +40 -37
  283. package/types/config/types/index.d.ts +3 -3
  284. package/types/config/types/type.d.ts +2 -2
  285. package/types/core/fluent-editor.d.ts +10 -11
  286. package/types/fluent-editor.d.ts +1 -2
  287. package/types/formats/emoji.d.ts +7 -8
  288. package/types/formats/index.d.ts +4 -4
  289. package/types/formats/soft-break.d.ts +11 -12
  290. package/types/formats/strike.d.ts +7 -8
  291. package/types/formats/video.d.ts +12 -13
  292. package/types/index.d.ts +7 -8
  293. package/types/modules/ai/constants.d.ts +30 -30
  294. package/types/modules/ai/icons.d.ts +21 -21
  295. package/types/modules/ai/index.d.ts +93 -94
  296. package/types/modules/ai/types.d.ts +16 -16
  297. package/types/modules/collaborative-editing/awareness/awareness.d.ts +25 -26
  298. package/types/modules/collaborative-editing/awareness/index.d.ts +2 -2
  299. package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +3 -3
  300. package/types/modules/collaborative-editing/collaborative-editing.d.ts +22 -22
  301. package/types/modules/collaborative-editing/index.d.ts +2 -2
  302. package/types/modules/collaborative-editing/module.d.ts +10 -11
  303. package/types/modules/collaborative-editing/provider/index.d.ts +3 -3
  304. package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -25
  305. package/types/modules/collaborative-editing/provider/webrtc.d.ts +35 -35
  306. package/types/modules/collaborative-editing/provider/websocket.d.ts +39 -39
  307. package/types/modules/collaborative-editing/types.d.ts +51 -35
  308. package/types/modules/counter.d.ts +21 -22
  309. package/types/modules/custom-clipboard.d.ts +23 -24
  310. package/types/modules/custom-image/actions/action.d.ts +7 -8
  311. package/types/modules/custom-image/actions/custom-resize-action.d.ts +22 -23
  312. package/types/modules/custom-image/actions/delete-action.d.ts +5 -6
  313. package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +15 -16
  314. package/types/modules/custom-image/actions/index.d.ts +6 -6
  315. package/types/modules/custom-image/actions/toolbar-action.d.ts +7 -8
  316. package/types/modules/custom-image/actions/toolbar.d.ts +16 -17
  317. package/types/modules/custom-image/blot-formatter.d.ts +19 -20
  318. package/types/modules/custom-image/image.d.ts +26 -27
  319. package/types/modules/custom-image/index.d.ts +4 -4
  320. package/types/modules/custom-image/options.d.ts +45 -46
  321. package/types/modules/custom-image/specs/blot-spec.d.ts +10 -11
  322. package/types/modules/custom-image/specs/custom-image-spec.d.ts +15 -16
  323. package/types/modules/custom-image/specs/image-spec.d.ts +7 -8
  324. package/types/modules/custom-image/specs/index.d.ts +3 -3
  325. package/types/modules/custom-uploader.d.ts +37 -38
  326. package/types/modules/divider.d.ts +7 -8
  327. package/types/modules/emoji.d.ts +35 -36
  328. package/types/modules/file/formats/file.d.ts +17 -18
  329. package/types/modules/file/index.d.ts +3 -3
  330. package/types/modules/file/modules/file-bar.d.ts +14 -14
  331. package/types/modules/file/modules/file-module.d.ts +7 -8
  332. package/types/modules/flow-chart/config-utils.d.ts +10 -0
  333. package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +43 -0
  334. package/types/modules/flow-chart/i18n/en-us.d.ts +26 -0
  335. package/types/modules/flow-chart/i18n/index.d.ts +1 -0
  336. package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -0
  337. package/types/modules/flow-chart/icons.d.ts +12 -0
  338. package/types/modules/flow-chart/index.d.ts +10 -0
  339. package/types/modules/flow-chart/modules/context-menu.d.ts +3 -0
  340. package/types/modules/flow-chart/modules/control-panel.d.ts +3 -0
  341. package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -0
  342. package/types/modules/flow-chart/options.d.ts +29 -0
  343. package/types/modules/i18n.d.ts +13 -14
  344. package/types/modules/index.d.ts +18 -16
  345. package/types/modules/link/formats/link.d.ts +14 -15
  346. package/types/modules/link/index.d.ts +2 -2
  347. package/types/modules/link/modules/tooltip.d.ts +25 -26
  348. package/types/modules/mathlive/formats.d.ts +20 -21
  349. package/types/modules/mathlive/index.d.ts +3 -3
  350. package/types/modules/mathlive/module.d.ts +7 -8
  351. package/types/modules/mathlive/tooltip.d.ts +14 -15
  352. package/types/modules/mention/constants.d.ts +3 -3
  353. package/types/modules/mention/index.d.ts +2 -2
  354. package/types/modules/mention/mention-link.d.ts +14 -15
  355. package/types/modules/mention/mention.d.ts +52 -53
  356. package/types/modules/mind-map/config-utils.d.ts +12 -0
  357. package/types/modules/mind-map/formats/mind-map-blot.d.ts +44 -0
  358. package/types/modules/mind-map/i18n/en-us.d.ts +25 -0
  359. package/types/modules/mind-map/i18n/index.d.ts +1 -0
  360. package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -0
  361. package/types/modules/mind-map/icons.d.ts +21 -0
  362. package/types/modules/mind-map/index.d.ts +10 -0
  363. package/types/modules/mind-map/modules/context-menu.d.ts +3 -0
  364. package/types/modules/mind-map/modules/control-panel.d.ts +3 -0
  365. package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -0
  366. package/types/modules/mind-map/options.d.ts +27 -0
  367. package/types/modules/shortcut-key/index.d.ts +67 -68
  368. package/types/modules/syntax.d.ts +12 -13
  369. package/types/modules/table-up/index.d.ts +32 -33
  370. package/types/modules/toolbar/better-picker.d.ts +13 -14
  371. package/types/modules/toolbar/better-toolbar.d.ts +6 -7
  372. package/types/modules/toolbar/index.d.ts +3 -3
  373. package/types/modules/toolbar/toolbar-tip.d.ts +7 -8
  374. package/types/themes/snow.d.ts +9 -10
  375. package/types/tools/format-painter.d.ts +12 -13
  376. package/types/tools/fullscreen.d.ts +4 -5
  377. package/types/tools/screenshot.d.ts +17 -18
  378. package/types/ui/icons.config.d.ts +40 -38
  379. package/types/ui/icons.d.ts +6 -6
  380. package/types/utils/debounce.d.ts +6 -6
  381. package/types/utils/image.d.ts +1 -1
  382. package/types/utils/is.d.ts +6 -6
  383. package/types/utils/merge.d.ts +7 -0
  384. package/types/utils/method.d.ts +6 -6
  385. package/types/utils/scroll-lock.d.ts +6 -6
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ require("../../../config/index.cjs.js");
7
+ const i18n = require("../../i18n.cjs.js");
8
+ const index = require("../i18n/index.cjs.js");
9
+ const icons = require("../icons.cjs.js");
10
+ const editor_config = require("../../../config/editor.config.cjs.js");
11
+ class FlowChartControlPanelHandler {
12
+ constructor(quill, blot) {
13
+ __publicField(this, "texts");
14
+ __publicField(this, "lang");
15
+ this.quill = quill;
16
+ this.blot = blot;
17
+ const i18nModule = this.quill.getModule("i18n");
18
+ index.registerFlowChartI18N(i18n.I18N);
19
+ this.lang = i18nModule.options.lang;
20
+ this.texts = this.resolveTexts();
21
+ this.quill.emitter.on(editor_config.CHANGE_LANGUAGE_EVENT, (lang) => {
22
+ this.lang = lang;
23
+ this.texts = this.resolveTexts();
24
+ this.updateControlPanelTexts();
25
+ });
26
+ }
27
+ getText(key) {
28
+ return this.texts[key];
29
+ }
30
+ resolveTexts() {
31
+ return {
32
+ exportTitle: i18n.I18N.parserText("flowChart.controlPanel.exportTitle", this.lang),
33
+ zoomOutTitle: i18n.I18N.parserText("flowChart.controlPanel.zoomOutTitle", this.lang),
34
+ zoomInTitle: i18n.I18N.parserText("flowChart.controlPanel.zoomInTitle", this.lang),
35
+ fitTitle: i18n.I18N.parserText("flowChart.controlPanel.fitTitle", this.lang),
36
+ backTitle: i18n.I18N.parserText("flowChart.controlPanel.backTitle", this.lang),
37
+ forwardTitle: i18n.I18N.parserText("flowChart.controlPanel.forwardTitle", this.lang),
38
+ setEdgeTypeTitle: i18n.I18N.parserText("flowChart.controlPanel.setEdgeTypeTitle", this.lang),
39
+ panelStatusTitle: i18n.I18N.parserText("flowChart.controlPanel.panelStatusTitle", this.lang),
40
+ screenTypeTitle: i18n.I18N.parserText("flowChart.controlPanel.screenTypeTitle", this.lang)
41
+ };
42
+ }
43
+ updateControlPanelTexts() {
44
+ const controlItems = this.blot.domNode.querySelectorAll(".ql-flow-chart-control-item");
45
+ const controlItemMap = {
46
+ "zoom-out": "zoomOutTitle",
47
+ "zoom-in": "zoomInTitle",
48
+ "fit": "fitTitle",
49
+ "back": "backTitle",
50
+ "forward": "forwardTitle",
51
+ "set-edge-type": "setEdgeTypeTitle",
52
+ "panel-status": "panelStatusTitle",
53
+ "screen-type": "screenTypeTitle"
54
+ };
55
+ controlItems.forEach((item) => {
56
+ const controlType = item.dataset.controlType;
57
+ if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {
58
+ item.title = this.texts[controlItemMap[controlType]];
59
+ }
60
+ });
61
+ }
62
+ }
63
+ const controlPanelHandlers = /* @__PURE__ */ new WeakMap();
64
+ const DISABLED_OPACITY = "0.5";
65
+ const ENABLED_OPACITY = "1";
66
+ function createControlPanel(blot, quill) {
67
+ const controlPanel = document.createElement("div");
68
+ controlPanel.className = "ql-flow-chart-control";
69
+ const controlRightUpPanel = document.createElement("div");
70
+ controlRightUpPanel.className = "ql-flow-chart-right-up-control";
71
+ const handler = new FlowChartControlPanelHandler(quill, blot);
72
+ controlPanelHandlers.set(blot, handler);
73
+ const zoomOutBtn = createControlItem("zoom-out", handler.getText("zoomOutTitle"), () => handleZoomOut(blot));
74
+ const zoomInBtn = createControlItem("zoom-in", handler.getText("zoomInTitle"), () => handleZoomIn(blot));
75
+ const resetBtn = createControlItem("fit", handler.getText("fitTitle"), () => handleResetZoom(blot));
76
+ const backBtn = createControlItem("back", handler.getText("backTitle"), () => handleUndo(blot));
77
+ const forwardBtn = createControlItem("forward", handler.getText("forwardTitle"), () => handleRedo(blot));
78
+ const setEdgeTypeBtn = createControlItem("set-edge-type", handler.getText("setEdgeTypeTitle"), () => handleSetEdgeType(blot));
79
+ const panelStatusBtn = createControlItem("panel-status", handler.getText("panelStatusTitle"));
80
+ const screenTypeBtn = createControlItem("screen-type", handler.getText("screenTypeTitle"), () => handleScreenTypeBtn(blot));
81
+ const updateButtonState = (historyData) => {
82
+ if (!historyData.data) {
83
+ backBtn.style.opacity = DISABLED_OPACITY;
84
+ backBtn.style.cursor = "not-allowed";
85
+ forwardBtn.style.opacity = DISABLED_OPACITY;
86
+ forwardBtn.style.cursor = "not-allowed";
87
+ return;
88
+ }
89
+ const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0;
90
+ const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0;
91
+ if (backBtn) {
92
+ backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY;
93
+ backBtn.style.cursor = isUndoAvailable ? "pointer" : "not-allowed";
94
+ }
95
+ if (forwardBtn) {
96
+ forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY;
97
+ forwardBtn.style.cursor = isRedoAvailable ? "pointer" : "not-allowed";
98
+ }
99
+ };
100
+ updateButtonState(blot.flowChart.history);
101
+ blot.flowChart.on("history:change", (data) => {
102
+ updateButtonState(data);
103
+ });
104
+ setTimeout(() => {
105
+ const controlLeftUpPanel = blot.domNode.querySelector(".lf-dndpanel");
106
+ controlLeftUpPanel.append(setEdgeTypeBtn);
107
+ }, 0);
108
+ controlRightUpPanel.append(panelStatusBtn);
109
+ blot.domNode.appendChild(controlRightUpPanel);
110
+ controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn);
111
+ blot.domNode.appendChild(controlPanel);
112
+ }
113
+ function handleUndo(blot) {
114
+ if (blot.flowChart) {
115
+ blot.flowChart.undo();
116
+ }
117
+ }
118
+ function handleRedo(blot) {
119
+ if (blot.flowChart) {
120
+ blot.flowChart.redo();
121
+ }
122
+ }
123
+ function handleZoomIn(blot) {
124
+ if (blot.flowChart) {
125
+ blot.flowChart.zoom(true);
126
+ }
127
+ }
128
+ function handleZoomOut(blot) {
129
+ if (blot.flowChart) {
130
+ blot.flowChart.zoom(false);
131
+ }
132
+ }
133
+ function handleResetZoom(blot) {
134
+ if (blot.flowChart) {
135
+ blot.flowChart.resetZoom();
136
+ }
137
+ }
138
+ function createControlItem(iconClass, title, onClick, disabled = false) {
139
+ const controlItem = document.createElement("div");
140
+ controlItem.className = "ql-flow-chart-control-item";
141
+ controlItem.title = title;
142
+ controlItem.dataset.controlType = iconClass;
143
+ controlItem.style.cursor = disabled ? "not-allowed" : "pointer";
144
+ const iconMap = {
145
+ "back": icons.backIcon,
146
+ "forward": icons.forwardIcon,
147
+ "zoom-out": icons.zoomOutIcon,
148
+ "zoom-in": icons.zoomInIcon,
149
+ "fit": icons.fitIcon,
150
+ "screen-type": icons.screenTypeIcon,
151
+ "panel-status": icons.contractIcon,
152
+ "set-edge-type": icons.lineIcon
153
+ };
154
+ const icon = document.createElement("i");
155
+ icon.innerHTML = iconMap[iconClass] || "";
156
+ controlItem.appendChild(icon);
157
+ if (!disabled) {
158
+ controlItem.addEventListener("click", onClick);
159
+ }
160
+ return controlItem;
161
+ }
162
+ function handleSetEdgeType(blot) {
163
+ const controlLeftUpPanel = blot.domNode.querySelector(".lf-dndpanel");
164
+ if (!controlLeftUpPanel) return;
165
+ let edgeTypePanel = controlLeftUpPanel.querySelector(".ql-flow-chart-edge-panel");
166
+ if (!edgeTypePanel) {
167
+ edgeTypePanel = document.createElement("div");
168
+ edgeTypePanel.className = "ql-flow-chart-edge-panel";
169
+ edgeTypePanel.style.display = "flex";
170
+ edgeTypePanel.style.justifyContent = "space-around";
171
+ edgeTypePanel.style.flexWrap = "nowrap";
172
+ edgeTypePanel.style.width = "auto";
173
+ edgeTypePanel.style.minWidth = "100%";
174
+ edgeTypePanel.style.padding = "8px";
175
+ edgeTypePanel.style.boxSizing = "border-box";
176
+ edgeTypePanel.style.position = "absolute";
177
+ edgeTypePanel.style.top = "170px";
178
+ controlLeftUpPanel.appendChild(edgeTypePanel);
179
+ const edgeTypes = [
180
+ {
181
+ name: "line",
182
+ displayName: "直线",
183
+ icon: icons.lineIcon
184
+ },
185
+ {
186
+ name: "polyline",
187
+ displayName: "折线",
188
+ icon: icons.polyLineIcon
189
+ },
190
+ {
191
+ name: "bezier",
192
+ displayName: "贝塞尔曲线",
193
+ icon: icons.bezierIcon
194
+ }
195
+ ];
196
+ edgeTypes.forEach((edgeType) => {
197
+ const edgeItem = document.createElement("div");
198
+ edgeItem.className = "ql-flow-chart-edge-item";
199
+ edgeItem.style.padding = "8px";
200
+ edgeItem.style.cursor = "pointer";
201
+ edgeItem.style.textAlign = "center";
202
+ const edgeIcon = document.createElement("div");
203
+ edgeIcon.className = `ql-flow-chart-edge-type-icon`;
204
+ edgeIcon.style.width = "24px";
205
+ edgeIcon.style.height = "24px";
206
+ edgeIcon.style.margin = "0 auto";
207
+ if (edgeType.icon) {
208
+ edgeIcon.innerHTML = edgeType.icon;
209
+ }
210
+ edgeItem.appendChild(edgeIcon);
211
+ edgeItem.addEventListener("click", () => {
212
+ const { edges = [] } = blot.flowChart.getSelectElements();
213
+ if (edges.length > 0) {
214
+ edges.forEach((edge) => {
215
+ blot.flowChart.changeEdgeType(edge.id, edgeType.name);
216
+ });
217
+ blot.data = blot.flowChart.getGraphData();
218
+ blot.domNode.setAttribute("data-flow-chart", JSON.stringify(blot.data));
219
+ }
220
+ edgeTypePanel.style.display = "none";
221
+ });
222
+ edgeTypePanel.appendChild(edgeItem);
223
+ });
224
+ } else {
225
+ edgeTypePanel.style.display = "flex";
226
+ edgeTypePanel.style.justifyContent = "space-around";
227
+ edgeTypePanel.style.flexWrap = "nowrap";
228
+ }
229
+ const handleOutsideClick = (e) => {
230
+ let setEdgeTypeBtn = null;
231
+ const controlItems = controlLeftUpPanel.querySelectorAll(".ql-flow-chart-control-item");
232
+ controlItems.forEach((item) => {
233
+ const iconEl = item.querySelector("i");
234
+ if (iconEl && iconEl.className.includes("set-edge-type")) {
235
+ setEdgeTypeBtn = item;
236
+ }
237
+ });
238
+ if (!edgeTypePanel.contains(e.target) && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target))) {
239
+ edgeTypePanel.style.display = "none";
240
+ document.removeEventListener("click", handleOutsideClick);
241
+ }
242
+ };
243
+ document.removeEventListener("click", handleOutsideClick);
244
+ setTimeout(() => {
245
+ document.addEventListener("click", handleOutsideClick);
246
+ }, 0);
247
+ }
248
+ function handleScreenTypeBtn(blot) {
249
+ const screenTypeBtn = blot.domNode.querySelector('[data-control-type="screen-type"]');
250
+ if (!screenTypeBtn || !blot.domNode) return;
251
+ const flowChartContainer = blot.domNode;
252
+ const isFullscreen = flowChartContainer.style.position === "fixed";
253
+ if (isFullscreen) {
254
+ const originalPosition = flowChartContainer.getAttribute("data-original-position");
255
+ const originalWidth = flowChartContainer.getAttribute("data-original-width");
256
+ const originalHeight = flowChartContainer.getAttribute("data-original-height");
257
+ if (originalWidth && originalHeight) {
258
+ flowChartContainer.style.position = originalPosition;
259
+ flowChartContainer.style.width = originalWidth;
260
+ flowChartContainer.style.height = originalHeight;
261
+ flowChartContainer.style.zIndex = "0";
262
+ }
263
+ const iconElement = screenTypeBtn.querySelector("i");
264
+ if (iconElement) {
265
+ iconElement.innerHTML = icons.screenTypeIcon;
266
+ }
267
+ } else {
268
+ flowChartContainer.setAttribute("data-original-position", flowChartContainer.style.position || "");
269
+ flowChartContainer.setAttribute("data-original-width", flowChartContainer.style.width || "");
270
+ flowChartContainer.setAttribute("data-original-height", flowChartContainer.style.height || "");
271
+ flowChartContainer.style.position = "fixed";
272
+ flowChartContainer.style.top = "0";
273
+ flowChartContainer.style.left = "0";
274
+ flowChartContainer.style.width = "100vw";
275
+ flowChartContainer.style.height = "100vh";
276
+ flowChartContainer.style.zIndex = "100";
277
+ const iconElement = screenTypeBtn.querySelector("i");
278
+ if (iconElement) {
279
+ iconElement.innerHTML = icons.screenReduceIcon;
280
+ }
281
+ }
282
+ blot.flowChart.resize();
283
+ blot.flowChart.translateCenter();
284
+ }
285
+ exports.createControlPanel = createControlPanel;
286
+ //# sourceMappingURL=control-panel.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-panel.cjs.js","sources":["../../../../../src/modules/flow-chart/modules/control-panel.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\nimport type FlowChartPlaceholderBlot from '../formats/flow-chart-blot'\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\nimport { I18N } from '../../../modules/i18n'\nimport { registerFlowChartI18N } from '../i18n'\nimport { backIcon, bezierIcon, contractIcon, fitIcon, forwardIcon, lineIcon, polyLineIcon, screenReduceIcon, screenTypeIcon, zoomInIcon, zoomOutIcon } from '../icons'\n\nclass FlowChartControlPanelHandler {\n private texts: Record<string, string>\n private lang: string\n getText(key: keyof Record<string, string>): string {\n return this.texts[key]\n }\n\n constructor(private quill: FluentEditor, private blot: FlowChartPlaceholderBlot) {\n const i18nModule = this.quill.getModule('i18n') as I18N\n registerFlowChartI18N(I18N)\n this.lang = i18nModule.options.lang\n this.texts = this.resolveTexts()\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, (lang: string) => {\n this.lang = lang\n this.texts = this.resolveTexts()\n this.updateControlPanelTexts()\n })\n }\n\n resolveTexts() {\n return {\n exportTitle: I18N.parserText('flowChart.controlPanel.exportTitle', this.lang),\n zoomOutTitle: I18N.parserText('flowChart.controlPanel.zoomOutTitle', this.lang),\n zoomInTitle: I18N.parserText('flowChart.controlPanel.zoomInTitle', this.lang),\n fitTitle: I18N.parserText('flowChart.controlPanel.fitTitle', this.lang),\n backTitle: I18N.parserText('flowChart.controlPanel.backTitle', this.lang),\n forwardTitle: I18N.parserText('flowChart.controlPanel.forwardTitle', this.lang),\n setEdgeTypeTitle: I18N.parserText('flowChart.controlPanel.setEdgeTypeTitle', this.lang),\n panelStatusTitle: I18N.parserText('flowChart.controlPanel.panelStatusTitle', this.lang),\n screenTypeTitle: I18N.parserText('flowChart.controlPanel.screenTypeTitle', this.lang),\n }\n }\n\n updateControlPanelTexts() {\n const controlItems = this.blot.domNode.querySelectorAll('.ql-flow-chart-control-item')\n\n const controlItemMap: Record<string, string> = {\n 'zoom-out': 'zoomOutTitle',\n 'zoom-in': 'zoomInTitle',\n 'fit': 'fitTitle',\n 'back': 'backTitle',\n 'forward': 'forwardTitle',\n 'set-edge-type': 'setEdgeTypeTitle',\n 'panel-status': 'panelStatusTitle',\n 'screen-type': 'screenTypeTitle',\n }\n\n controlItems.forEach((item) => {\n const controlType = (item as HTMLElement).dataset.controlType\n if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {\n (item as HTMLElement).title = this.texts[controlItemMap[controlType]]\n }\n })\n }\n}\n\nconst controlPanelHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartControlPanelHandler>()\n\nconst DISABLED_OPACITY = '0.5'\nconst ENABLED_OPACITY = '1'\nexport function createControlPanel(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\n // 中间的控制面板\n const controlPanel = document.createElement('div')\n controlPanel.className = 'ql-flow-chart-control'\n // 右上的控制面板\n const controlRightUpPanel = document.createElement('div')\n controlRightUpPanel.className = 'ql-flow-chart-right-up-control'\n\n const handler = new FlowChartControlPanelHandler(quill, blot)\n controlPanelHandlers.set(blot, handler)\n const zoomOutBtn = createControlItem('zoom-out', handler.getText('zoomOutTitle'), () => handleZoomOut(blot))\n const zoomInBtn = createControlItem('zoom-in', handler.getText('zoomInTitle'), () => handleZoomIn(blot))\n const resetBtn = createControlItem('fit', handler.getText('fitTitle'), () => handleResetZoom(blot))\n const backBtn = createControlItem('back', handler.getText('backTitle'), () => handleUndo(blot))\n const forwardBtn = createControlItem('forward', handler.getText('forwardTitle'), () => handleRedo(blot))\n const setEdgeTypeBtn = createControlItem('set-edge-type', handler.getText('setEdgeTypeTitle'), () => handleSetEdgeType(blot))\n const panelStatusBtn = createControlItem('panel-status', handler.getText('panelStatusTitle'))\n const screenTypeBtn = createControlItem('screen-type', handler.getText('screenTypeTitle'), () => handleScreenTypeBtn(blot))\n\n const updateButtonState = (historyData: any) => {\n if (!historyData.data) {\n backBtn.style.opacity = DISABLED_OPACITY\n backBtn.style.cursor = 'not-allowed'\n forwardBtn.style.opacity = DISABLED_OPACITY\n forwardBtn.style.cursor = 'not-allowed'\n return\n }\n const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0\n const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0\n\n if (backBtn) {\n backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n backBtn.style.cursor = isUndoAvailable ? 'pointer' : 'not-allowed'\n }\n\n if (forwardBtn) {\n forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n forwardBtn.style.cursor = isRedoAvailable ? 'pointer' : 'not-allowed'\n }\n }\n updateButtonState(blot.flowChart.history)\n blot.flowChart.on('history:change', (data: any) => {\n updateButtonState(data)\n })\n\n setTimeout(() => {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n controlLeftUpPanel.append(setEdgeTypeBtn)\n }, 0)\n controlRightUpPanel.append(panelStatusBtn)\n blot.domNode.appendChild(controlRightUpPanel)\n controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn)\n blot.domNode.appendChild(controlPanel)\n}\n\nfunction handleUndo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.undo()\n }\n}\n\nfunction handleRedo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.redo()\n }\n}\n\nfunction handleZoomIn(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(true)\n }\n}\n\nfunction handleZoomOut(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(false)\n }\n}\n\nfunction handleResetZoom(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.resetZoom()\n }\n}\n\nfunction createControlItem(iconClass: string, title: string, onClick?: () => void, disabled = false) {\n const controlItem = document.createElement('div')\n controlItem.className = 'ql-flow-chart-control-item'\n controlItem.title = title\n controlItem.dataset.controlType = iconClass\n controlItem.style.cursor = disabled ? 'not-allowed' : 'pointer'\n\n const iconMap: Record<string, string> = {\n 'back': backIcon,\n 'forward': forwardIcon,\n 'zoom-out': zoomOutIcon,\n 'zoom-in': zoomInIcon,\n 'fit': fitIcon,\n 'screen-type': screenTypeIcon,\n 'panel-status': contractIcon,\n 'set-edge-type': lineIcon,\n }\n\n const icon = document.createElement('i')\n icon.innerHTML = iconMap[iconClass] || ''\n controlItem.appendChild(icon)\n\n if (!disabled) {\n controlItem.addEventListener('click', onClick)\n }\n\n return controlItem\n}\n\nfunction handleSetEdgeType(blot: FlowChartPlaceholderBlot): void {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n if (!controlLeftUpPanel) return\n let edgeTypePanel = controlLeftUpPanel.querySelector('.ql-flow-chart-edge-panel') as HTMLElement\n if (!edgeTypePanel) {\n edgeTypePanel = document.createElement('div')\n edgeTypePanel.className = 'ql-flow-chart-edge-panel'\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n edgeTypePanel.style.width = 'auto'\n edgeTypePanel.style.minWidth = '100%'\n edgeTypePanel.style.padding = '8px'\n edgeTypePanel.style.boxSizing = 'border-box'\n edgeTypePanel.style.position = 'absolute'\n edgeTypePanel.style.top = '170px'\n controlLeftUpPanel.appendChild(edgeTypePanel)\n\n const edgeTypes = [\n {\n name: 'line',\n displayName: '直线',\n icon: lineIcon,\n },\n {\n name: 'polyline',\n displayName: '折线',\n icon: polyLineIcon,\n },\n {\n name: 'bezier',\n displayName: '贝塞尔曲线',\n icon: bezierIcon,\n },\n ]\n\n edgeTypes.forEach((edgeType) => {\n const edgeItem = document.createElement('div')\n edgeItem.className = 'ql-flow-chart-edge-item'\n edgeItem.style.padding = '8px'\n edgeItem.style.cursor = 'pointer'\n edgeItem.style.textAlign = 'center'\n\n const edgeIcon = document.createElement('div')\n edgeIcon.className = `ql-flow-chart-edge-type-icon`\n edgeIcon.style.width = '24px'\n edgeIcon.style.height = '24px'\n edgeIcon.style.margin = '0 auto'\n if (edgeType.icon) {\n edgeIcon.innerHTML = edgeType.icon\n }\n\n edgeItem.appendChild(edgeIcon)\n\n edgeItem.addEventListener('click', () => {\n const { edges = [] } = blot.flowChart.getSelectElements()\n if (edges.length > 0) {\n edges.forEach((edge) => {\n blot.flowChart.changeEdgeType(edge.id, edgeType.name)\n })\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n\n edgeTypePanel.style.display = 'none'\n })\n edgeTypePanel.appendChild(edgeItem)\n })\n }\n else {\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n }\n\n const handleOutsideClick = (e: MouseEvent) => {\n let setEdgeTypeBtn: HTMLElement | null = null\n const controlItems = controlLeftUpPanel.querySelectorAll('.ql-flow-chart-control-item')\n controlItems.forEach((item) => {\n const iconEl = item.querySelector('i')\n if (iconEl && iconEl.className.includes('set-edge-type')) {\n setEdgeTypeBtn = item as HTMLElement\n }\n })\n if (!edgeTypePanel.contains(e.target as Node)\n && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target as Node))) {\n edgeTypePanel.style.display = 'none'\n document.removeEventListener('click', handleOutsideClick)\n }\n }\n\n document.removeEventListener('click', handleOutsideClick)\n setTimeout(() => {\n document.addEventListener('click', handleOutsideClick)\n }, 0)\n}\n\nfunction handleScreenTypeBtn(blot: FlowChartPlaceholderBlot): void {\n const screenTypeBtn = blot.domNode.querySelector('[data-control-type=\"screen-type\"]') as HTMLElement | null\n if (!screenTypeBtn || !blot.domNode) return\n\n const flowChartContainer = blot.domNode\n const isFullscreen = flowChartContainer.style.position === 'fixed'\n\n if (isFullscreen) {\n const originalPosition = flowChartContainer.getAttribute('data-original-position')\n const originalWidth = flowChartContainer.getAttribute('data-original-width')\n const originalHeight = flowChartContainer.getAttribute('data-original-height')\n if (originalWidth && originalHeight) {\n flowChartContainer.style.position = originalPosition\n flowChartContainer.style.width = originalWidth\n flowChartContainer.style.height = originalHeight\n flowChartContainer.style.zIndex = '0'\n }\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenTypeIcon\n }\n }\n else {\n flowChartContainer.setAttribute('data-original-position', flowChartContainer.style.position || '')\n flowChartContainer.setAttribute('data-original-width', flowChartContainer.style.width || '')\n flowChartContainer.setAttribute('data-original-height', flowChartContainer.style.height || '')\n flowChartContainer.style.position = 'fixed'\n flowChartContainer.style.top = '0'\n flowChartContainer.style.left = '0'\n flowChartContainer.style.width = '100vw'\n flowChartContainer.style.height = '100vh'\n flowChartContainer.style.zIndex = '100'\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenReduceIcon\n }\n }\n blot.flowChart.resize()\n blot.flowChart.translateCenter()\n}\n"],"names":["registerFlowChartI18N","I18N","CHANGE_LANGUAGE_EVENT","backIcon","forwardIcon","zoomOutIcon","zoomInIcon","fitIcon","screenTypeIcon","contractIcon","lineIcon","polyLineIcon","bezierIcon","screenReduceIcon"],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ const MIN_WIDTH = 350;
7
+ const MIN_HEIGHT = 290;
8
+ class FlowChartResizeAction {
9
+ constructor(blot) {
10
+ __publicField(this, "topLeftHandle");
11
+ __publicField(this, "topRightHandle");
12
+ __publicField(this, "bottomRightHandle");
13
+ __publicField(this, "bottomLeftHandle");
14
+ __publicField(this, "dragHandle", null);
15
+ __publicField(this, "dragStartX", 0);
16
+ __publicField(this, "dragStartY", 0);
17
+ __publicField(this, "preDragWidth", 0);
18
+ __publicField(this, "preDragHeight", 0);
19
+ __publicField(this, "targetRatio", 0);
20
+ __publicField(this, "blot");
21
+ this.blot = blot;
22
+ this.topLeftHandle = this.createHandle("top-left", "nwse-resize");
23
+ this.topRightHandle = this.createHandle("top-right", "nesw-resize");
24
+ this.bottomRightHandle = this.createHandle("bottom-right", "nwse-resize");
25
+ this.bottomLeftHandle = this.createHandle("bottom-left", "nesw-resize");
26
+ this.init();
27
+ }
28
+ isFullscreen() {
29
+ const container = this.blot.domNode;
30
+ return container.style.position === "fixed" && container.style.width === "100vw" && container.style.height === "100vh";
31
+ }
32
+ init() {
33
+ const container = this.blot.domNode;
34
+ container.style.position = "relative";
35
+ container.appendChild(this.topLeftHandle);
36
+ container.appendChild(this.topRightHandle);
37
+ container.appendChild(this.bottomRightHandle);
38
+ container.appendChild(this.bottomLeftHandle);
39
+ this.repositionHandles();
40
+ }
41
+ createHandle(position, cursor) {
42
+ const box = document.createElement("div");
43
+ box.classList.add("ql-flow-chart-resize-handle");
44
+ box.setAttribute("data-position", position);
45
+ Object.assign(box.style, {
46
+ cursor,
47
+ position: "absolute",
48
+ width: "10px",
49
+ height: "10px",
50
+ background: "#4285f4",
51
+ border: "1px solid white",
52
+ borderRadius: "50%",
53
+ zIndex: "99",
54
+ userSelect: "none"
55
+ });
56
+ box.addEventListener("mousedown", this.onMouseDown.bind(this));
57
+ return box;
58
+ }
59
+ repositionHandles() {
60
+ const container = this.blot.domNode;
61
+ const rect = container.getBoundingClientRect();
62
+ Object.assign(this.topLeftHandle.style, {
63
+ left: "-5px",
64
+ top: "-5px"
65
+ });
66
+ Object.assign(this.topRightHandle.style, {
67
+ right: "-5px",
68
+ top: "-5px"
69
+ });
70
+ Object.assign(this.bottomRightHandle.style, {
71
+ right: "-5px",
72
+ bottom: "-5px"
73
+ });
74
+ Object.assign(this.bottomLeftHandle.style, {
75
+ left: "-5px",
76
+ bottom: "-5px"
77
+ });
78
+ }
79
+ onMouseDown(event) {
80
+ if (this.isFullscreen()) {
81
+ return;
82
+ }
83
+ if (!(event.target instanceof HTMLElement)) {
84
+ return;
85
+ }
86
+ this.dragHandle = event.target;
87
+ document.body.style.cursor = this.dragHandle.style.cursor;
88
+ const container = this.blot.domNode;
89
+ const rect = container.getBoundingClientRect();
90
+ this.dragStartX = event.clientX;
91
+ this.dragStartY = event.clientY;
92
+ this.preDragWidth = rect.width;
93
+ this.preDragHeight = rect.height;
94
+ this.targetRatio = rect.height / rect.width;
95
+ event.preventDefault();
96
+ document.addEventListener("mousemove", this.onDrag.bind(this));
97
+ document.addEventListener("mouseup", this.onMouseUp.bind(this));
98
+ }
99
+ onDrag(event) {
100
+ if (!this.dragHandle) return;
101
+ const container = this.blot.domNode;
102
+ let newWidth = this.preDragWidth;
103
+ let newHeight = this.preDragHeight;
104
+ const deltaX = event.clientX - this.dragStartX;
105
+ const deltaY = event.clientY - this.dragStartY;
106
+ switch (this.dragHandle.dataset.position) {
107
+ case "top-left":
108
+ newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX);
109
+ newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY);
110
+ break;
111
+ case "top-right":
112
+ newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX);
113
+ newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY);
114
+ break;
115
+ case "bottom-right":
116
+ newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX);
117
+ newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY);
118
+ break;
119
+ case "bottom-left":
120
+ newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX);
121
+ newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY);
122
+ break;
123
+ }
124
+ container.style.width = `${newWidth}px`;
125
+ container.style.height = `${newHeight}px`;
126
+ container.setAttribute("width", String(newWidth));
127
+ container.setAttribute("height", String(newHeight));
128
+ if (this.blot.flowChart) {
129
+ this.blot.flowChart.resize(newWidth, newHeight);
130
+ }
131
+ this.blot.data.width = newWidth;
132
+ this.blot.data.height = newHeight;
133
+ container.setAttribute("data-flow-chart", JSON.stringify(this.blot.data));
134
+ }
135
+ onMouseUp() {
136
+ document.body.style.cursor = "";
137
+ document.removeEventListener("mousemove", this.onDrag.bind(this));
138
+ document.removeEventListener("mouseup", this.onMouseUp.bind(this));
139
+ this.dragHandle = null;
140
+ }
141
+ destroy() {
142
+ const container = this.blot.domNode;
143
+ container.removeChild(this.topLeftHandle);
144
+ container.removeChild(this.topRightHandle);
145
+ container.removeChild(this.bottomRightHandle);
146
+ container.removeChild(this.bottomLeftHandle);
147
+ }
148
+ }
149
+ exports.FlowChartResizeAction = FlowChartResizeAction;
150
+ //# sourceMappingURL=custom-resize-action.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-resize-action.cjs.js","sources":["../../../../../src/modules/flow-chart/modules/custom-resize-action.ts"],"sourcesContent":["const MIN_WIDTH = 350\nconst MIN_HEIGHT = 290\n\nexport class FlowChartResizeAction {\n topLeftHandle: HTMLElement\n topRightHandle: HTMLElement\n bottomRightHandle: HTMLElement\n bottomLeftHandle: HTMLElement\n dragHandle: HTMLElement | null = null\n dragStartX: number = 0\n dragStartY: number = 0\n preDragWidth: number = 0\n preDragHeight: number = 0\n targetRatio: number = 0\n blot: any\n\n constructor(blot: any) {\n this.blot = blot\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\n this.init()\n }\n\n isFullscreen(): boolean {\n const container = this.blot.domNode\n return container.style.position === 'fixed' && container.style.width === '100vw' && container.style.height === '100vh'\n }\n\n init() {\n const container = this.blot.domNode\n container.style.position = 'relative'\n container.appendChild(this.topLeftHandle)\n container.appendChild(this.topRightHandle)\n container.appendChild(this.bottomRightHandle)\n container.appendChild(this.bottomLeftHandle)\n this.repositionHandles()\n }\n\n createHandle(position: string, cursor: string): HTMLElement {\n const box = document.createElement('div')\n box.classList.add('ql-flow-chart-resize-handle')\n box.setAttribute('data-position', position)\n Object.assign(box.style, {\n cursor,\n position: 'absolute',\n width: '10px',\n height: '10px',\n background: '#4285f4',\n border: '1px solid white',\n borderRadius: '50%',\n zIndex: '99',\n userSelect: 'none',\n })\n box.addEventListener('mousedown', this.onMouseDown.bind(this))\n return box\n }\n\n repositionHandles() {\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n Object.assign(this.topLeftHandle.style, {\n left: '-5px',\n top: '-5px',\n })\n Object.assign(this.topRightHandle.style, {\n right: '-5px',\n top: '-5px',\n })\n Object.assign(this.bottomRightHandle.style, {\n right: '-5px',\n bottom: '-5px',\n })\n Object.assign(this.bottomLeftHandle.style, {\n left: '-5px',\n bottom: '-5px',\n })\n }\n\n onMouseDown(event: MouseEvent) {\n if (this.isFullscreen()) {\n return\n }\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n this.dragHandle = event.target\n document.body.style.cursor = this.dragHandle.style.cursor\n\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n this.dragStartX = event.clientX\n this.dragStartY = event.clientY\n this.preDragWidth = rect.width\n this.preDragHeight = rect.height\n this.targetRatio = rect.height / rect.width\n\n event.preventDefault()\n document.addEventListener('mousemove', this.onDrag.bind(this))\n document.addEventListener('mouseup', this.onMouseUp.bind(this))\n }\n\n onDrag(event: MouseEvent) {\n if (!this.dragHandle) return\n\n const container = this.blot.domNode\n let newWidth = this.preDragWidth\n let newHeight = this.preDragHeight\n\n const deltaX = event.clientX - this.dragStartX\n const deltaY = event.clientY - this.dragStartY\n\n switch (this.dragHandle.dataset.position) {\n case 'top-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'top-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'bottom-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n case 'bottom-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n }\n\n container.style.width = `${newWidth}px`\n container.style.height = `${newHeight}px`\n container.setAttribute('width', String(newWidth))\n container.setAttribute('height', String(newHeight))\n\n if (this.blot.flowChart) {\n this.blot.flowChart.resize(newWidth, newHeight)\n }\n\n this.blot.data.width = newWidth\n this.blot.data.height = newHeight\n container.setAttribute('data-flow-chart', JSON.stringify(this.blot.data))\n }\n\n onMouseUp() {\n document.body.style.cursor = ''\n document.removeEventListener('mousemove', this.onDrag.bind(this))\n document.removeEventListener('mouseup', this.onMouseUp.bind(this))\n this.dragHandle = null\n }\n\n destroy() {\n const container = this.blot.domNode\n container.removeChild(this.topLeftHandle)\n container.removeChild(this.topRightHandle)\n container.removeChild(this.bottomRightHandle)\n container.removeChild(this.bottomLeftHandle)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.cjs.js","sources":["../../../src/modules/i18n.ts"],"sourcesContent":["import type FluentEditor from '../fluent-editor'\r\nimport { CHANGE_LANGUAGE_EVENT, defaultLanguage } from '../config'\r\nimport { isUndefined } from '../utils/is'\r\n\r\nconst langs: Record<string, Record<string, string>> = {}\r\n\r\nexport interface I18NOptions {\r\n lang: string\r\n}\r\nexport class I18N {\r\n static register(inputLangs: Record<string, Record<string, string>>, isCover: boolean = true) {\r\n for (const lang in inputLangs) {\r\n const texts = inputLangs[lang]\r\n if (isCover) {\r\n langs[lang] = texts\r\n }\r\n else {\r\n if (!langs[lang]) langs[lang] = {}\r\n Object.assign(langs[lang], texts)\r\n }\r\n }\r\n }\r\n\r\n static parserText(text: string, lang: string): string {\r\n const i18nPattern = /^_i18n\"([^\"]*)\"/\r\n const match = text.match(i18nPattern)\r\n let key = text\r\n if (match) {\r\n key = match[1]\r\n }\r\n return langs[lang]?.[key] || key\r\n }\r\n\r\n options: I18NOptions = {\r\n lang: '',\r\n }\r\n\r\n constructor(public quill: FluentEditor, options: Partial<I18NOptions>) {\r\n this.options = Object.assign({}, options, this.resolveLanguageOption(options || {}))\r\n // wait until all module registed\r\n Promise.resolve().then(() => this.changeLanguage(this.options, true))\r\n }\r\n\r\n resolveLanguageOption(options: Partial<I18NOptions>): I18NOptions {\r\n if (isUndefined(options.lang)) {\r\n options.lang = defaultLanguage\r\n }\r\n if (!(options.lang in langs)) {\r\n console.warn(`The language ${options.lang} is not supported. Use the default language: ${defaultLanguage}`)\r\n options.lang = defaultLanguage\r\n }\r\n return {\r\n lang: options.lang,\r\n }\r\n }\r\n\r\n changeLanguage(options: Partial<I18NOptions>, force: boolean = false) {\r\n const currentLang = this.options.lang\r\n const langOps = this.resolveLanguageOption(options)\r\n if (langOps.lang === currentLang && !force) return\r\n this.options.lang = langOps.lang\r\n this.quill.emitter.emit(CHANGE_LANGUAGE_EVENT, this.options.lang, langs[langOps.lang])\r\n }\r\n}\r\n\r\nexport default I18N\r\n"],"names":["isUndefined","defaultLanguage","CHANGE_LANGUAGE_EVENT"],"mappings":";;;;;;;;AAIA,MAAM,QAAgD,CAAC;AAKhD,MAAM,KAAK;AAAA,EA4BhB,YAAmB,OAAqB,SAA+B;AAJvE,mCAAuB;AAAA,MACrB,MAAM;AAAA,IACR;AAEmB,SAAA,QAAA;AACZ,SAAA,UAAU,OAAO,OAAO,CAAC,GAAG,SAAS,KAAK,sBAAsB,WAAW,CAAA,CAAE,CAAC;AAE3E,YAAA,UAAU,KAAK,MAAM,KAAK,eAAe,KAAK,SAAS,IAAI,CAAC;AAAA,EAAA;AAAA,EA9BtE,OAAO,SAAS,YAAoD,UAAmB,MAAM;AAC3F,eAAW,QAAQ,YAAY;AACvB,YAAA,QAAQ,WAAW,IAAI;AAC7B,UAAI,SAAS;AACX,cAAM,IAAI,IAAI;AAAA,MAAA,OAEX;AACH,YAAI,CAAC,MAAM,IAAI,EAAS,OAAA,IAAI,IAAI,CAAC;AACjC,eAAO,OAAO,MAAM,IAAI,GAAG,KAAK;AAAA,MAAA;AAAA,IAClC;AAAA,EACF;AAAA,EAGF,OAAO,WAAW,MAAc,MAAsB;;AACpD,UAAM,cAAc;AACd,UAAA,QAAQ,KAAK,MAAM,WAAW;AACpC,QAAI,MAAM;AACV,QAAI,OAAO;AACT,YAAM,MAAM,CAAC;AAAA,IAAA;AAEf,aAAO,WAAM,IAAI,MAAV,mBAAc,SAAQ;AAAA,EAAA;AAAA,EAa/B,sBAAsB,SAA4C;AAC5D,QAAAA,GAAA,YAAY,QAAQ,IAAI,GAAG;AAC7B,cAAQ,OAAOC,cAAA;AAAA,IAAA;AAEb,QAAA,EAAE,QAAQ,QAAQ,QAAQ;AAC5B,cAAQ,KAAK,gBAAgB,QAAQ,IAAI,gDAAgDA,cAAe,eAAA,EAAE;AAC1G,cAAQ,OAAOA,cAAA;AAAA,IAAA;AAEV,WAAA;AAAA,MACL,MAAM,QAAQ;AAAA,IAChB;AAAA,EAAA;AAAA,EAGF,eAAe,SAA+B,QAAiB,OAAO;AAC9D,UAAA,cAAc,KAAK,QAAQ;AAC3B,UAAA,UAAU,KAAK,sBAAsB,OAAO;AAClD,QAAI,QAAQ,SAAS,eAAe,CAAC,MAAO;AACvC,SAAA,QAAQ,OAAO,QAAQ;AACvB,SAAA,MAAM,QAAQ,KAAKC,cAAAA,uBAAuB,KAAK,QAAQ,MAAM,MAAM,QAAQ,IAAI,CAAC;AAAA,EAAA;AAEzF;;;"}
1
+ {"version":3,"file":"i18n.cjs.js","sources":["../../../src/modules/i18n.ts"],"sourcesContent":["import type FluentEditor from '../fluent-editor'\r\nimport { CHANGE_LANGUAGE_EVENT, defaultLanguage } from '../config'\r\nimport { isUndefined } from '../utils/is'\r\n\r\nconst langs: Record<string, Record<string, string>> = {}\r\n\r\nexport interface I18NOptions {\r\n lang: string\r\n}\r\nexport class I18N {\r\n static register(inputLangs: Record<string, Record<string, string>>, isCover: boolean = true) {\r\n for (const lang in inputLangs) {\r\n const texts = inputLangs[lang]\r\n if (isCover) {\r\n langs[lang] = texts\r\n }\r\n else {\r\n if (!langs[lang]) langs[lang] = {}\r\n Object.assign(langs[lang], texts)\r\n }\r\n }\r\n }\r\n\r\n static parserText(text: string, lang: string): string {\r\n const i18nPattern = /^_i18n\"([^\"]*)\"/\r\n const match = text.match(i18nPattern)\r\n let key = text\r\n if (match) {\r\n key = match[1]\r\n }\r\n return langs[lang]?.[key] || key\r\n }\r\n\r\n options: I18NOptions = {\r\n lang: '',\r\n }\r\n\r\n constructor(public quill: FluentEditor, options: Partial<I18NOptions>) {\r\n this.options = Object.assign({}, options, this.resolveLanguageOption(options || {}))\r\n // wait until all module registed\r\n Promise.resolve().then(() => this.changeLanguage(this.options, true))\r\n }\r\n\r\n resolveLanguageOption(options: Partial<I18NOptions>): I18NOptions {\r\n if (isUndefined(options.lang)) {\r\n options.lang = defaultLanguage\r\n }\r\n if (!(options.lang in langs)) {\r\n console.warn(`The language ${options.lang} is not supported. Use the default language: ${defaultLanguage}`)\r\n options.lang = defaultLanguage\r\n }\r\n return {\r\n lang: options.lang,\r\n }\r\n }\r\n\r\n changeLanguage(options: Partial<I18NOptions>, force: boolean = false) {\r\n const currentLang = this.options.lang\r\n const langOps = this.resolveLanguageOption(options)\r\n if (langOps.lang === currentLang && !force) return\r\n this.options.lang = langOps.lang\r\n this.quill.emitter.emit(CHANGE_LANGUAGE_EVENT, this.options.lang, langs[langOps.lang])\r\n }\r\n}\r\n\r\nexport default I18N\r\n"],"names":["isUndefined","defaultLanguage","CHANGE_LANGUAGE_EVENT"],"mappings":";;;;;;;;AAIA,MAAM,QAAgD,CAAA;AAK/C,MAAM,KAAK;AAAA,EA4BhB,YAAmB,OAAqB,SAA+B;AAJvE,mCAAuB;AAAA,MACrB,MAAM;AAAA,IAAA;AAGW,SAAA,QAAA;AACjB,SAAK,UAAU,OAAO,OAAO,CAAA,GAAI,SAAS,KAAK,sBAAsB,WAAW,CAAA,CAAE,CAAC;AAEnF,YAAQ,UAAU,KAAK,MAAM,KAAK,eAAe,KAAK,SAAS,IAAI,CAAC;AAAA,EACtE;AAAA,EA/BA,OAAO,SAAS,YAAoD,UAAmB,MAAM;AAC3F,eAAW,QAAQ,YAAY;AAC7B,YAAM,QAAQ,WAAW,IAAI;AAC7B,UAAI,SAAS;AACX,cAAM,IAAI,IAAI;AAAA,MAChB,OACK;AACH,YAAI,CAAC,MAAM,IAAI,EAAG,OAAM,IAAI,IAAI,CAAA;AAChC,eAAO,OAAO,MAAM,IAAI,GAAG,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,MAAc,MAAsB;;AACpD,UAAM,cAAc;AACpB,UAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,QAAI,MAAM;AACV,QAAI,OAAO;AACT,YAAM,MAAM,CAAC;AAAA,IACf;AACA,aAAO,WAAM,IAAI,MAAV,mBAAc,SAAQ;AAAA,EAC/B;AAAA,EAYA,sBAAsB,SAA4C;AAChE,QAAIA,GAAAA,YAAY,QAAQ,IAAI,GAAG;AAC7B,cAAQ,OAAOC,cAAAA;AAAAA,IACjB;AACA,QAAI,EAAE,QAAQ,QAAQ,QAAQ;AAC5B,cAAQ,KAAK,gBAAgB,QAAQ,IAAI,gDAAgDA,cAAAA,eAAe,EAAE;AAC1G,cAAQ,OAAOA,cAAAA;AAAAA,IACjB;AACA,WAAO;AAAA,MACL,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,eAAe,SAA+B,QAAiB,OAAO;AACpE,UAAM,cAAc,KAAK,QAAQ;AACjC,UAAM,UAAU,KAAK,sBAAsB,OAAO;AAClD,QAAI,QAAQ,SAAS,eAAe,CAAC,MAAO;AAC5C,SAAK,QAAQ,OAAO,QAAQ;AAC5B,SAAK,MAAM,QAAQ,KAAKC,cAAAA,uBAAuB,KAAK,QAAQ,MAAM,MAAM,QAAQ,IAAI,CAAC;AAAA,EACvF;AACF;;;"}
@@ -8,20 +8,24 @@ const customUploader = require("./custom-uploader.cjs.js");
8
8
  const divider = require("./divider.cjs.js");
9
9
  const emoji = require("./emoji.cjs.js");
10
10
  require("./file/index.cjs.js");
11
+ const index = require("./flow-chart/index.cjs.js");
11
12
  const i18n = require("./i18n.cjs.js");
12
13
  require("./link/index.cjs.js");
13
14
  require("./mathlive/index.cjs.js");
14
15
  require("./mention/index.cjs.js");
15
- const index = require("./shortcut-key/index.cjs.js");
16
+ const index$1 = require("./mind-map/index.cjs.js");
17
+ const index$2 = require("./shortcut-key/index.cjs.js");
16
18
  require("./syntax.cjs.js");
17
- const index$1 = require("./table-up/index.cjs.js");
19
+ const index$3 = require("./table-up/index.cjs.js");
18
20
  require("./toolbar/index.cjs.js");
19
21
  exports.CustomClipboard = customClipboard.CustomClipboard;
20
22
  exports.FileUploader = customUploader.FileUploader;
21
23
  exports.DividerBlot = divider.DividerBlot;
22
24
  exports.EmojiModule = emoji.EmojiModule;
25
+ exports.FlowChartModule = index.FlowChartModule;
23
26
  exports.I18N = i18n.I18N;
24
- exports.ShortCutKey = index.ShortCutKey;
25
- exports.shortKey = index.shortKey;
26
- exports.generateTableUp = index$1.generateTableUp;
27
+ exports.MindMapModule = index$1.MindMapModule;
28
+ exports.ShortCutKey = index$2.ShortCutKey;
29
+ exports.shortKey = index$2.shortKey;
30
+ exports.generateTableUp = index$3.generateTableUp;
27
31
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"link.cjs.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\r\nimport Quill from 'quill'\r\nimport { hadProtocol, sanitize } from '../../../config/editor.utils'\r\n\r\nconst Inline = Quill.import('blots/inline') as typeof TypeInline\r\n\r\nexport class LinkBlot extends Inline {\r\n static blotName = 'link'\r\n static tagName = 'A'\r\n static SANITIZED_URL = 'about:blank'\r\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']\r\n static className = 'ql-normal-link'\r\n\r\n static autoProtocol: string = ''\r\n static create(value: string) {\r\n const node = super.create(value)\r\n let href = value\r\n if (!hadProtocol(href) && this.autoProtocol) {\r\n href = `${this.autoProtocol}://${value}`\r\n }\r\n href = this.sanitize(href)\r\n node.setAttribute('href', href)\r\n node.setAttribute('target', '_blank')\r\n return node\r\n }\r\n\r\n static formats(domNode: HTMLElement): string | null {\r\n return domNode.getAttribute('href')\r\n }\r\n\r\n static sanitize(url: string) {\r\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\r\n }\r\n\r\n format(name: string, value: any) {\r\n if (name !== this.statics.blotName || [false, null].includes(value)) {\r\n super.format(name, value)\r\n }\r\n else {\r\n this.domNode.setAttribute('href', LinkBlot.sanitize(value))\r\n }\r\n }\r\n}\r\n"],"names":["hadProtocol","sanitize"],"mappings":";;;;;;;AAIA,MAAM,SAAS,MAAM,OAAO,cAAc;AAEnC,MAAM,YAAN,MAAM,kBAAiB,OAAO;AAAA,EAQnC,OAAO,OAAO,OAAe;AACrB,UAAA,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO;AACX,QAAI,CAACA,aAAAA,YAAY,IAAI,KAAK,KAAK,cAAc;AAC3C,aAAO,GAAG,KAAK,YAAY,MAAM,KAAK;AAAA,IAAA;AAEjC,WAAA,KAAK,SAAS,IAAI;AACpB,SAAA,aAAa,QAAQ,IAAI;AACzB,SAAA,aAAa,UAAU,QAAQ;AAC7B,WAAA;AAAA,EAAA;AAAA,EAGT,OAAO,QAAQ,SAAqC;AAC3C,WAAA,QAAQ,aAAa,MAAM;AAAA,EAAA;AAAA,EAGpC,OAAO,SAAS,KAAa;AAC3B,WAAOC,aAAAA,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAAA;AAAA,EAG7D,OAAO,MAAc,OAAY;AAC3B,QAAA,SAAS,KAAK,QAAQ,YAAY,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,GAAG;AAC7D,YAAA,OAAO,MAAM,KAAK;AAAA,IAAA,OAErB;AACH,WAAK,QAAQ,aAAa,QAAQ,UAAS,SAAS,KAAK,CAAC;AAAA,IAAA;AAAA,EAC5D;AAEJ;AAnCE,cADW,WACJ,YAAW;AAClB,cAFW,WAEJ,WAAU;AACjB,cAHW,WAGJ,iBAAgB;AACvB,cAJW,WAIJ,sBAAqB,CAAC,QAAQ,SAAS,UAAU,KAAK;AAC7D,cALW,WAKJ,aAAY;AAEnB,cAPW,WAOJ,gBAAuB;AAPzB,IAAM,WAAN;;"}
1
+ {"version":3,"file":"link.cjs.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\nimport Quill from 'quill'\nimport { hadProtocol, sanitize } from '../../../config/editor.utils'\n\nconst Inline = Quill.import('blots/inline') as typeof TypeInline\n\nexport class LinkBlot extends Inline {\n static blotName = 'link'\n static tagName = 'A'\n static SANITIZED_URL = 'about:blank'\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']\n static className = 'ql-normal-link'\n\n static autoProtocol: string = ''\n static create(value: string) {\n const node = super.create(value)\n let href = value\n if (!hadProtocol(href) && this.autoProtocol) {\n href = `${this.autoProtocol}://${value}`\n }\n href = this.sanitize(href)\n node.setAttribute('href', href)\n node.setAttribute('target', '_blank')\n return node\n }\n\n static formats(domNode: HTMLElement): string | null {\n return domNode.getAttribute('href')\n }\n\n static sanitize(url: string) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\n }\n\n format(name: string, value: any) {\n if (name !== this.statics.blotName || [false, null].includes(value)) {\n super.format(name, value)\n }\n else {\n this.domNode.setAttribute('href', LinkBlot.sanitize(value))\n }\n }\n}\n"],"names":["hadProtocol","sanitize"],"mappings":";;;;;;;AAIA,MAAM,SAAS,MAAM,OAAO,cAAc;AAEnC,MAAM,YAAN,MAAM,kBAAiB,OAAO;AAAA,EAQnC,OAAO,OAAO,OAAe;AAC3B,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO;AACX,QAAI,CAACA,aAAAA,YAAY,IAAI,KAAK,KAAK,cAAc;AAC3C,aAAO,GAAG,KAAK,YAAY,MAAM,KAAK;AAAA,IACxC;AACA,WAAO,KAAK,SAAS,IAAI;AACzB,SAAK,aAAa,QAAQ,IAAI;AAC9B,SAAK,aAAa,UAAU,QAAQ;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,SAAqC;AAClD,WAAO,QAAQ,aAAa,MAAM;AAAA,EACpC;AAAA,EAEA,OAAO,SAAS,KAAa;AAC3B,WAAOC,aAAAA,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAC7D;AAAA,EAEA,OAAO,MAAc,OAAY;AAC/B,QAAI,SAAS,KAAK,QAAQ,YAAY,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,GAAG;AACnE,YAAM,OAAO,MAAM,KAAK;AAAA,IAC1B,OACK;AACH,WAAK,QAAQ,aAAa,QAAQ,UAAS,SAAS,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;AAnCE,cADW,WACJ,YAAW;AAClB,cAFW,WAEJ,WAAU;AACjB,cAHW,WAGJ,iBAAgB;AACvB,cAJW,WAIJ,sBAAqB,CAAC,QAAQ,SAAS,UAAU,KAAK;AAC7D,cALW,WAKJ,aAAY;AAEnB,cAPW,WAOJ,gBAAuB;AAPzB,IAAM,WAAN;;"}