@opentiny/fluent-editor 4.0.0-alpha.12 → 4.0.0-alpha.14

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 (338) 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.map +1 -1
  5. package/es/config/editor.utils.es.js.map +1 -1
  6. package/es/config/i18n/en-us.es.js.map +1 -1
  7. package/es/config/i18n/zh-cn.es.js.map +1 -1
  8. package/es/config/index.es.js.map +1 -1
  9. package/es/core/fluent-editor.es.js.map +1 -1
  10. package/es/fluent-editor.es.js.map +1 -1
  11. package/es/formats/emoji.es.js.map +1 -1
  12. package/es/formats/soft-break.es.js.map +1 -1
  13. package/es/formats/strike.es.js.map +1 -1
  14. package/es/formats/video.es.js.map +1 -1
  15. package/es/modules/ai/constants.es.js.map +1 -1
  16. package/es/modules/ai/icons.es.js.map +1 -1
  17. package/es/modules/ai/index.es.js.map +1 -1
  18. package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -1
  19. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -1
  20. package/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -1
  21. package/es/modules/collaborative-editing/module.es.js.map +1 -1
  22. package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -1
  23. package/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -1
  24. package/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -1
  25. package/es/modules/counter.es.js.map +1 -1
  26. package/es/modules/custom-clipboard.es.js.map +1 -1
  27. package/es/modules/custom-image/actions/action.es.js.map +1 -1
  28. package/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -1
  29. package/es/modules/custom-image/actions/delete-action.es.js.map +1 -1
  30. package/es/modules/custom-image/blot-formatter.es.js +1 -1
  31. package/es/modules/custom-image/blot-formatter.es.js.map +1 -1
  32. package/es/modules/custom-image/image.es.js.map +1 -1
  33. package/es/modules/custom-image/options.es.js.map +1 -1
  34. package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -1
  35. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -1
  36. package/es/modules/custom-image/specs/image-spec.es.js.map +1 -1
  37. package/es/modules/divider.es.js.map +1 -1
  38. package/es/modules/emoji.es.js +1 -1
  39. package/es/modules/emoji.es.js.map +1 -1
  40. package/es/modules/file/formats/file.es.js.map +1 -1
  41. package/es/modules/file/modules/file-bar.es.js.map +1 -1
  42. package/es/modules/file/modules/file-module.es.js.map +1 -1
  43. package/es/modules/flow-chart/config-utils.es.js.map +1 -1
  44. package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -1
  45. package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -1
  46. package/es/modules/flow-chart/i18n/index.es.js.map +1 -1
  47. package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -1
  48. package/es/modules/flow-chart/icons.es.js.map +1 -1
  49. package/es/modules/flow-chart/index.es.js.map +1 -1
  50. package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -1
  51. package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -1
  52. package/es/modules/flow-chart/modules/custom-resize-action.es.js.map +1 -1
  53. package/es/modules/link/formats/link.es.js.map +1 -1
  54. package/es/modules/link/modules/tooltip.es.js.map +1 -1
  55. package/es/modules/mathlive/formats.es.js.map +1 -1
  56. package/es/modules/mathlive/tooltip.es.js.map +1 -1
  57. package/es/modules/mention/constants.es.js.map +1 -1
  58. package/es/modules/mention/mention-link.es.js.map +1 -1
  59. package/es/modules/mention/mention.es.js.map +1 -1
  60. package/es/modules/mind-map/config-utils.es.js.map +1 -1
  61. package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -1
  62. package/es/modules/mind-map/i18n/en-us.es.js.map +1 -1
  63. package/es/modules/mind-map/i18n/index.es.js.map +1 -1
  64. package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -1
  65. package/es/modules/mind-map/icons.es.js.map +1 -1
  66. package/es/modules/mind-map/index.es.js.map +1 -1
  67. package/es/modules/mind-map/modules/context-menu.es.js.map +1 -1
  68. package/es/modules/mind-map/modules/control-panel.es.js +2 -2
  69. package/es/modules/mind-map/modules/control-panel.es.js.map +1 -1
  70. package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -1
  71. package/es/modules/syntax.es.js.map +1 -1
  72. package/es/modules/toolbar/better-picker.es.js.map +1 -1
  73. package/es/themes/snow.es.js.map +1 -1
  74. package/es/tools/screenshot.es.js.map +1 -1
  75. package/es/ui/icons.config.es.js.map +1 -1
  76. package/es/ui/icons.es.js.map +1 -1
  77. package/es/utils/debounce.es.js.map +1 -1
  78. package/es/utils/merge.es.js +27 -0
  79. package/es/utils/merge.es.js.map +1 -0
  80. package/es/utils/method.es.js.map +1 -1
  81. package/lib/attributors/line-height.cjs.js.map +1 -1
  82. package/lib/config/base64-image.cjs.js.map +1 -1
  83. package/lib/config/editor.config.cjs.js.map +1 -1
  84. package/lib/config/editor.utils.cjs.js.map +1 -1
  85. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  86. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  87. package/lib/config/index.cjs.js.map +1 -1
  88. package/lib/core/fluent-editor.cjs.js.map +1 -1
  89. package/lib/fluent-editor.cjs.js.map +1 -1
  90. package/lib/formats/emoji.cjs.js.map +1 -1
  91. package/lib/formats/soft-break.cjs.js.map +1 -1
  92. package/lib/formats/strike.cjs.js.map +1 -1
  93. package/lib/formats/video.cjs.js.map +1 -1
  94. package/lib/modules/ai/constants.cjs.js.map +1 -1
  95. package/lib/modules/ai/icons.cjs.js.map +1 -1
  96. package/lib/modules/ai/index.cjs.js.map +1 -1
  97. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -1
  98. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -1
  99. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -1
  100. package/lib/modules/collaborative-editing/module.cjs.js.map +1 -1
  101. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -1
  102. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -1
  103. package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -1
  104. package/lib/modules/counter.cjs.js.map +1 -1
  105. package/lib/modules/custom-clipboard.cjs.js.map +1 -1
  106. package/lib/modules/custom-image/actions/action.cjs.js.map +1 -1
  107. package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -1
  108. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -1
  109. package/lib/modules/custom-image/blot-formatter.cjs.js +2 -2
  110. package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -1
  111. package/lib/modules/custom-image/image.cjs.js.map +1 -1
  112. package/lib/modules/custom-image/options.cjs.js.map +1 -1
  113. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -1
  114. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -1
  115. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -1
  116. package/lib/modules/divider.cjs.js.map +1 -1
  117. package/lib/modules/emoji.cjs.js +2 -2
  118. package/lib/modules/emoji.cjs.js.map +1 -1
  119. package/lib/modules/file/formats/file.cjs.js.map +1 -1
  120. package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
  121. package/lib/modules/file/modules/file-module.cjs.js.map +1 -1
  122. package/lib/modules/flow-chart/config-utils.cjs.js.map +1 -1
  123. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -1
  124. package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -1
  125. package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -1
  126. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -1
  127. package/lib/modules/flow-chart/icons.cjs.js.map +1 -1
  128. package/lib/modules/flow-chart/index.cjs.js.map +1 -1
  129. package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -1
  130. package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -1
  131. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js.map +1 -1
  132. package/lib/modules/link/formats/link.cjs.js.map +1 -1
  133. package/lib/modules/link/modules/tooltip.cjs.js.map +1 -1
  134. package/lib/modules/mathlive/formats.cjs.js.map +1 -1
  135. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
  136. package/lib/modules/mention/constants.cjs.js.map +1 -1
  137. package/lib/modules/mention/mention-link.cjs.js.map +1 -1
  138. package/lib/modules/mention/mention.cjs.js.map +1 -1
  139. package/lib/modules/mind-map/config-utils.cjs.js.map +1 -1
  140. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -1
  141. package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -1
  142. package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -1
  143. package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -1
  144. package/lib/modules/mind-map/icons.cjs.js.map +1 -1
  145. package/lib/modules/mind-map/index.cjs.js.map +1 -1
  146. package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -1
  147. package/lib/modules/mind-map/modules/control-panel.cjs.js +2 -2
  148. package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -1
  149. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -1
  150. package/lib/modules/syntax.cjs.js.map +1 -1
  151. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
  152. package/lib/themes/snow.cjs.js.map +1 -1
  153. package/lib/tools/screenshot.cjs.js.map +1 -1
  154. package/lib/ui/icons.cjs.js.map +1 -1
  155. package/lib/ui/icons.config.cjs.js.map +1 -1
  156. package/lib/utils/debounce.cjs.js.map +1 -1
  157. package/lib/utils/merge.cjs.js +27 -0
  158. package/lib/utils/merge.cjs.js.map +1 -0
  159. package/lib/utils/method.cjs.js.map +1 -1
  160. package/package.json +13 -3
  161. package/patches/quill@2.0.3.patch +33 -33
  162. package/scripts/apply-patches.cjs +248 -248
  163. package/types/attributors/font-size.d.ts +1 -1
  164. package/types/attributors/font-style.d.ts +1 -1
  165. package/types/attributors/index.d.ts +4 -4
  166. package/types/attributors/line-height.d.ts +1 -1
  167. package/types/attributors/text-indent.d.ts +1 -1
  168. package/types/config/base64-image.d.ts +2 -2
  169. package/types/config/editor.config.d.ts +11 -11
  170. package/types/config/editor.utils.d.ts +40 -40
  171. package/types/config/i18n/en-us.d.ts +125 -125
  172. package/types/config/i18n/zh-cn.d.ts +125 -125
  173. package/types/config/index.d.ts +7 -7
  174. package/types/config/types/additional-toolbar-item.interface.d.ts +8 -0
  175. package/types/config/types/content-change.interface.d.ts +13 -0
  176. package/types/config/types/content-save.interface.d.ts +6 -0
  177. package/types/config/types/counter-option.interface.d.ts +9 -0
  178. package/types/config/types/editor-config.interface.d.ts +12 -11
  179. package/types/config/types/editor-modules.interface.d.ts +39 -38
  180. package/types/config/types/editor-toolbar.interface.d.ts +6 -0
  181. package/types/config/types/file-operation.interface.d.ts +12 -0
  182. package/types/config/types/focus-change.interface.d.ts +4 -0
  183. package/types/config/types/fullscreen-module.interface.d.ts +4 -0
  184. package/types/config/types/help-panel-item.interface.d.ts +5 -0
  185. package/types/config/types/help-panel-option.interface.d.ts +7 -0
  186. package/types/config/types/image-module.interface.d.ts +3 -0
  187. package/types/config/types/image-upload.interface.d.ts +7 -0
  188. package/types/config/types/index.d.ts +3 -3
  189. package/types/config/types/load-on-demand-module.interface.d.ts +5 -0
  190. package/types/config/types/mention-module.interface.d.ts +8 -0
  191. package/types/config/types/paste-change.interface.d.ts +6 -0
  192. package/types/config/types/quick-menu-module.interface.d.ts +3 -0
  193. package/types/config/types/range.interface.d.ts +4 -0
  194. package/types/config/types/registry-options.interface.d.ts +5 -0
  195. package/types/config/types/selection-change.interface.d.ts +8 -0
  196. package/types/config/types/toolbar-item.interface.d.ts +13 -0
  197. package/types/config/types/type.d.ts +2 -2
  198. package/types/config/types/validate-error.interface.d.ts +13 -0
  199. package/types/core/fluent-editor.d.ts +11 -10
  200. package/types/fluent-editor.d.ts +2 -1
  201. package/types/formats/emoji.d.ts +8 -7
  202. package/types/formats/index.d.ts +4 -4
  203. package/types/formats/soft-break.d.ts +12 -11
  204. package/types/formats/strike.d.ts +8 -7
  205. package/types/formats/video.d.ts +13 -12
  206. package/types/index.d.ts +8 -7
  207. package/types/modules/ai/constants.d.ts +30 -30
  208. package/types/modules/ai/icons.d.ts +21 -21
  209. package/types/modules/ai/index.d.ts +94 -93
  210. package/types/modules/ai/types.d.ts +16 -16
  211. package/types/modules/collaborative-editing/awareness/awareness.d.ts +26 -25
  212. package/types/modules/collaborative-editing/awareness/index.d.ts +2 -2
  213. package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +3 -2
  214. package/types/modules/collaborative-editing/collaborative-editing.d.ts +21 -20
  215. package/types/modules/collaborative-editing/index.d.ts +2 -2
  216. package/types/modules/collaborative-editing/module.d.ts +11 -10
  217. package/types/modules/collaborative-editing/provider/index.d.ts +3 -3
  218. package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -24
  219. package/types/modules/collaborative-editing/provider/webrtc.d.ts +34 -33
  220. package/types/modules/collaborative-editing/provider/websocket.d.ts +38 -37
  221. package/types/modules/collaborative-editing/types.d.ts +46 -45
  222. package/types/modules/counter.d.ts +22 -21
  223. package/types/modules/custom-clipboard.d.ts +24 -23
  224. package/types/modules/custom-image/BlotFormatter.d.ts +29 -0
  225. package/types/modules/custom-image/{options.d.ts → Options.d.ts} +46 -45
  226. package/types/modules/custom-image/actions/{action.d.ts → Action.d.ts} +8 -7
  227. package/types/modules/custom-image/actions/CustomResizeAction.d.ts +24 -0
  228. package/types/modules/custom-image/actions/DeleteAction.d.ts +7 -0
  229. package/types/modules/custom-image/actions/custom-resize-action.d.ts +23 -22
  230. package/types/modules/custom-image/actions/delete-action.d.ts +6 -5
  231. package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +16 -15
  232. package/types/modules/custom-image/actions/index.d.ts +6 -6
  233. package/types/modules/custom-image/actions/toolbar-action.d.ts +8 -7
  234. package/types/modules/custom-image/actions/toolbar.d.ts +17 -16
  235. package/types/modules/custom-image/blot-formatter.d.ts +20 -19
  236. package/types/modules/custom-image/image-bar.d.ts +15 -0
  237. package/types/modules/custom-image/image.d.ts +27 -26
  238. package/types/modules/custom-image/index.d.ts +4 -4
  239. package/types/modules/custom-image/specs/BlotSpec.d.ts +13 -0
  240. package/types/modules/custom-image/specs/CustomImageSpec.d.ts +21 -0
  241. package/types/modules/custom-image/specs/ImageSpec.d.ts +10 -0
  242. package/types/modules/custom-image/specs/blot-spec.d.ts +11 -10
  243. package/types/modules/custom-image/specs/custom-image-spec.d.ts +16 -15
  244. package/types/modules/custom-image/specs/image-spec.d.ts +8 -7
  245. package/types/modules/custom-image/specs/index.d.ts +3 -3
  246. package/types/modules/custom-uploader.d.ts +38 -37
  247. package/types/modules/divider.d.ts +8 -7
  248. package/types/modules/emoji/emoji-list/index.d.ts +1 -0
  249. package/types/modules/emoji/emoji-list/people.d.ts +1 -0
  250. package/types/modules/emoji/emoji-list.d.ts +2 -0
  251. package/types/modules/emoji/emoji-map.d.ts +2 -0
  252. package/types/modules/emoji/emoji-sprite.d.ts +1 -0
  253. package/types/modules/emoji/formats/emoji-blot.d.ts +13 -0
  254. package/types/modules/emoji/index.d.ts +10 -0
  255. package/types/modules/emoji/modules/emoji.d.ts +38 -0
  256. package/types/modules/emoji/modules/toolbar-emoji.d.ts +8 -0
  257. package/types/modules/emoji/utils.d.ts +1 -0
  258. package/types/modules/emoji.d.ts +36 -35
  259. package/types/modules/file/formats/file.d.ts +18 -17
  260. package/types/modules/file/index.d.ts +3 -3
  261. package/types/modules/file/modules/file-bar.d.ts +14 -14
  262. package/types/modules/file/modules/file-module.d.ts +8 -7
  263. package/types/modules/flow-chart/config-utils.d.ts +10 -9
  264. package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +41 -40
  265. package/types/modules/flow-chart/i18n/en-us.d.ts +26 -26
  266. package/types/modules/flow-chart/i18n/index.d.ts +1 -1
  267. package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -26
  268. package/types/modules/flow-chart/icons.d.ts +12 -12
  269. package/types/modules/flow-chart/index.d.ts +9 -8
  270. package/types/modules/flow-chart/modules/context-menu.d.ts +2 -1
  271. package/types/modules/flow-chart/modules/control-panel.d.ts +2 -1
  272. package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -22
  273. package/types/modules/flow-chart/options.d.ts +29 -29
  274. package/types/modules/global-link/constants.d.ts +3 -0
  275. package/types/modules/global-link/formats/customer-widget-link.d.ts +14 -0
  276. package/types/modules/global-link/formats/doc-link.d.ts +17 -0
  277. package/types/modules/global-link/formats/wiki-link.d.ts +16 -0
  278. package/types/modules/global-link/formats/work-item-link.d.ts +16 -0
  279. package/types/modules/global-link/global-link-panel.d.ts +19 -0
  280. package/types/modules/global-link/index.d.ts +18 -0
  281. package/types/modules/global-link/utils/createTable.d.ts +1 -0
  282. package/types/modules/i18n.d.ts +14 -13
  283. package/types/modules/index.d.ts +18 -18
  284. package/types/modules/link/formats/link.d.ts +15 -14
  285. package/types/modules/link/index.d.ts +2 -2
  286. package/types/modules/link/modules/tooltip.d.ts +26 -25
  287. package/types/modules/mathlive/formats.d.ts +21 -20
  288. package/types/modules/mathlive/index.d.ts +3 -3
  289. package/types/modules/mathlive/module.d.ts +8 -7
  290. package/types/modules/mathlive/tooltip.d.ts +15 -14
  291. package/types/modules/mention/{mention.d.ts → Mention.d.ts} +53 -52
  292. package/types/modules/mention/MentionLink.d.ts +16 -0
  293. package/types/modules/mention/constants.d.ts +3 -3
  294. package/types/modules/mention/index.d.ts +2 -2
  295. package/types/modules/mention/mention-link.d.ts +15 -14
  296. package/types/modules/mind-map/config-utils.d.ts +12 -11
  297. package/types/modules/mind-map/formats/mind-map-blot.d.ts +42 -41
  298. package/types/modules/mind-map/i18n/en-us.d.ts +25 -25
  299. package/types/modules/mind-map/i18n/index.d.ts +1 -1
  300. package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -25
  301. package/types/modules/mind-map/icons.d.ts +21 -21
  302. package/types/modules/mind-map/index.d.ts +9 -8
  303. package/types/modules/mind-map/modules/context-menu.d.ts +2 -1
  304. package/types/modules/mind-map/modules/control-panel.d.ts +2 -1
  305. package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -23
  306. package/types/modules/mind-map/options.d.ts +27 -27
  307. package/types/modules/quick-menu.d.ts +22 -0
  308. package/types/modules/shortcut-key/index.d.ts +68 -67
  309. package/types/modules/syntax.d.ts +13 -12
  310. package/types/modules/table/better-table.d.ts +35 -0
  311. package/types/modules/table/formats/header.d.ts +23 -0
  312. package/types/modules/table/formats/list.d.ts +34 -0
  313. package/types/modules/table/formats/table.d.ts +147 -0
  314. package/types/modules/table/modules/table-column-tool.d.ts +23 -0
  315. package/types/modules/table/modules/table-operation-menu.d.ts +38 -0
  316. package/types/modules/table/modules/table-scroll-bar.d.ts +33 -0
  317. package/types/modules/table/modules/table-selection.d.ts +37 -0
  318. package/types/modules/table/modules/table-selector.d.ts +22 -0
  319. package/types/modules/table/table-config.d.ts +38 -0
  320. package/types/modules/table/utils/index.d.ts +17 -0
  321. package/types/modules/table/utils/node-matchers.d.ts +9 -0
  322. package/types/modules/table-up/index.d.ts +33 -32
  323. package/types/modules/toolbar/better-picker.d.ts +14 -13
  324. package/types/modules/toolbar/better-toolbar.d.ts +7 -6
  325. package/types/modules/toolbar/index.d.ts +3 -3
  326. package/types/modules/toolbar/toolbar-tip.d.ts +8 -7
  327. package/types/themes/snow.d.ts +10 -9
  328. package/types/tools/format-painter.d.ts +13 -12
  329. package/types/tools/fullscreen.d.ts +5 -4
  330. package/types/tools/screenshot.d.ts +18 -17
  331. package/types/ui/icons.config.d.ts +40 -40
  332. package/types/ui/icons.d.ts +6 -6
  333. package/types/utils/debounce.d.ts +6 -6
  334. package/types/utils/image.d.ts +1 -1
  335. package/types/utils/is.d.ts +6 -6
  336. package/types/utils/merge.d.ts +7 -0
  337. package/types/utils/method.d.ts +6 -6
  338. package/types/utils/scroll-lock.d.ts +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"mention.es.js","sources":["../../../../src/modules/mention/mention.ts"],"sourcesContent":["import Quill from 'quill'\nimport { isNullOrUndefined } from '../../config/editor.utils'\nimport { DEFAULT_MENTION_CHAR, ON_MENTION_LINK_REMOVE } from './constants'\nimport { MentionLink } from './mention-link'\n\nconst Delta = Quill.import('delta')\nconst Parchment = Quill.import('parchment')\nconst { Scope } = Parchment\n\nexport interface MentionOption {\n containerClass?: string\n // dataAttributes?: string[]\n defaultLink?: string\n itemActiveClass?: string\n itemKey: string\n itemClass?: string\n listClass?: string\n listHideClass?: string\n maxHeight?: number\n mentionChar?: string\n remove?: (data: any) => void\n renderMentionItem?: (data: any) => string | HTMLElement\n renderMentionText?: (data: any) => string | HTMLElement\n search?: (term: string) => Promise<any[]> | any[]\n searchKey: string\n select?: (data: any) => void\n target?: string\n}\n\nexport class Mention {\n private readonly options: MentionOption\n private readonly mentionListEL: HTMLUListElement\n private activeMentionIndex = 0\n private latestMentionList: any[]\n private latestMentionCharPos: number\n private latestCaretPos: number\n private searchTerm = ''\n private needInsertBr = true\n private readonly defaultOptions: MentionOption = {\n defaultLink: '#',\n target: '_blank',\n mentionChar: DEFAULT_MENTION_CHAR,\n maxHeight: 200,\n renderMentionItem(data: any) {\n let mentionItem = data.name || data.id\n if (this.itemKey) {\n mentionItem = data[this.itemKey]\n }\n const dom = document.createElement('SPAN')\n dom.textContent = mentionItem\n return dom\n },\n renderMentionText(data: any) {\n let mentionText = data.name || data.id\n if (this.itemKey) {\n mentionText = data[this.itemKey]\n }\n return `${mentionText}`\n },\n containerClass: 'ql-mention-list-container',\n listClass: 'ql-mention-list',\n listHideClass: 'ql-mention-list--hide',\n itemClass: 'ql-mention-item',\n itemActiveClass: 'ql-mention-item--active',\n itemKey: 'name',\n searchKey: 'name',\n // dataAttributes: ['id'],\n select(_data: any) {},\n remove(_data: any) {},\n }\n\n static register() {\n Quill.register(MentionLink)\n }\n\n // @ts-ignore\n constructor(private quill: Quill, options: MentionOption) {\n if (!options.search) {\n console.warn('please provide a search function!')\n return\n }\n\n this.options = Object.assign(this.defaultOptions, options)\n const container = document.createElement('div')\n container.classList.add('ql-mention-list-container')\n if (this.options.containerClass !== 'ql-mention-list-container') {\n container.classList.add(this.options.containerClass)\n }\n this.mentionListEL = document.createElement('ul')\n this.mentionListEL.classList.add(this.options.listClass, this.options.listHideClass)\n this.mentionListEL.style.cssText += `\n max-height: ${this.options.maxHeight}px;\n `\n\n quill.on(Quill.events.TEXT_CHANGE, this.handleTextChange)\n quill.keyboard.addBinding({ key: 'ArrowUp' }, this.handleArrowUpKey)\n quill.keyboard.addBinding({ key: 'ArrowDown' }, this.handleArrowDownKey)\n quill.keyboard.addBinding({ key: 'Enter' }, this.handleEnterKey)\n quill.keyboard.addBinding({ key: 'Tab' }, this.handleEnterKey)\n quill.keyboard.addBinding({ key: 'Escape' }, this.handleEscapeKey)\n quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop())\n quill.keyboard.bindings.Tab.unshift(quill.keyboard.bindings.Tab.pop())\n quill.keyboard.bindings.Escape.unshift(quill.keyboard.bindings.Escape.pop())\n\n const customKeyboardEnter = {\n key: 'Enter',\n shiftKey: null,\n handler: (range, context) => {\n const lineFormats = Object.keys(context.format).reduce(\n (formats, format) => {\n if (\n this.quill.scroll.query(format, Scope.BLOCK)\n && !Array.isArray(context.format[format])\n ) {\n formats[format] = context.format[format]\n }\n return formats\n },\n {},\n )\n\n // fix: 解决@提醒之后插入多余空行和光标位置不对的问题\n let selectionIndex = range.index - this.searchTerm.length\n let delta = new Delta()\n .retain(range.index)\n .delete(range.length)\n if (this.needInsertBr) {\n delta = delta.insert('\\n', lineFormats)\n selectionIndex = range.index + 1\n }\n\n this.quill.updateContents(delta, Quill.sources.USER)\n this.quill.setSelection(selectionIndex, Quill.sources.SILENT)\n this.quill.focus()\n\n Object.keys(context.format).forEach((name) => {\n if (!isNullOrUndefined(lineFormats[name])) return\n if (Array.isArray(context.format[name])) return\n if (name === 'code' || name === 'link') return\n this.quill.format(name, context.format[name], Quill.sources.USER)\n })\n\n this.needInsertBr = true // 标记是否是输入@提醒的Enter\n },\n }\n\n // 用自定义的Enter替换内置的Enter\n quill.keyboard.bindings.Enter = quill.keyboard.bindings.Enter.map((item) => {\n const buildinKeyboardEnter = item.format === undefined && item.shiftKey === null\n if (buildinKeyboardEnter) {\n return customKeyboardEnter\n }\n else {\n return item\n }\n })\n\n this.on('click', this.handleMouseClick)\n this.on('mouseover', this.handleMouseEnter)\n quill.emitter.on(ON_MENTION_LINK_REMOVE, async ({ mention, name }) => {\n const [result] = (mention && [mention]) || (await this.options.search(name))\n this.options.remove(result)\n })\n container.appendChild(this.mentionListEL)\n quill.container.parentElement.insertBefore(container, quill.container)\n }\n\n on(eventName, callback) {\n this.mentionListEL.addEventListener(eventName, (evt) => {\n let\n target = evt.target\n let targetItemEL\n\n while (this.mentionListEL.contains(target) && target !== this.mentionListEL) {\n if (target.classList.contains(this.options.itemClass)) {\n targetItemEL = target\n }\n target = target.parentElement\n }\n\n if (targetItemEL) {\n callback.call(this, targetItemEL, this.getMentionItemIndex(targetItemEL))\n }\n })\n }\n\n getMentionItemIndex(itemEl: Element) {\n return [].reduce.call(this.mentionListEL.children, (index, item, idx) => item === itemEl ? idx : index, -1)\n }\n\n handleTextChange = (_delta, _oldDelta, source) => {\n // defer handler to make sure that we can get correct quill selection range.\n setTimeout(() => {\n if (Quill.sources.USER === source) {\n const range = this.quill.getSelection()\n if (!range) {\n return\n }\n\n const caretPos = this.latestCaretPos = range.index\n // beforeCaretText的计算有问题,没有把图片内容和@提醒内容的非字符内容算进去\n const content = this.quill.getContents()\n const beforeCaretText = content.reduce((newText, op) => {\n if (typeof op.insert === 'string') {\n return (newText += op.insert)\n }\n else {\n return (newText += ' ') // 将图片内容和@提醒内容的非字符内容置为' ',算一个位置\n }\n }, '')\n const mentionCharPos = beforeCaretText.lastIndexOf(this.options.mentionChar)\n\n if (mentionCharPos > -1) {\n const searchTerm = beforeCaretText.substring(mentionCharPos + this.options.mentionChar.length, caretPos)\n this.searchTerm = searchTerm\n if (!''.startsWith.call(searchTerm, ' ')) {\n this.latestMentionCharPos = mentionCharPos\n this.searchMentionListByTerm(searchTerm)\n }\n else {\n this.hideMentionList()\n }\n }\n else {\n this.hideMentionList()\n }\n }\n })\n }\n\n handleMouseClick(_itemEl: HTMLLIElement, index: number) {\n this.selectMentionItem(index, true)\n this.quill.focus()\n }\n\n handleMouseEnter(_itemEl: HTMLLIElement, index: number) {\n this.activeMentionIndex = index\n this.highlightMentionItem(index)\n }\n\n handleArrowUpKey = () => {\n if (this.isOpen()) {\n this.activeMentionIndex\n = (this.activeMentionIndex + this.latestMentionList.length - 1) % this.latestMentionList.length\n this.highlightMentionItem(this.activeMentionIndex)\n return false\n }\n return true\n }\n\n handleArrowDownKey = () => {\n if (this.isOpen()) {\n this.activeMentionIndex = (this.activeMentionIndex + 1) % this.latestMentionList.length\n this.highlightMentionItem(this.activeMentionIndex)\n return false\n }\n return true\n }\n\n handleEnterKey = () => {\n if (this.isOpen()) {\n this.selectMentionItem()\n this.needInsertBr = false\n }\n return true\n }\n\n handleEscapeKey = () => {\n if (this.isOpen()) {\n this.hideMentionList()\n return false\n }\n return true\n }\n\n getActiveMentionItem() {\n return this.mentionListEL.querySelector(`.${this.options.itemActiveClass}`)\n }\n\n isOpen() {\n return !this.mentionListEL.classList.contains(this.options.listHideClass)\n }\n\n async searchMentionListByTerm(term: string) {\n const mentionList = await this.options.search(term)\n this.latestMentionList = mentionList\n if (!mentionList || mentionList.length === 0) {\n return this.hideMentionList()\n }\n\n this.showMentionList(mentionList)\n }\n\n showMentionList(mentionList: any[]) {\n if (!this.isOpen()) {\n this.mentionListEL.classList.remove(this.options.listHideClass)\n }\n this.activeMentionIndex = 0\n this.setMentionListPos()\n this.render(mentionList)\n }\n\n hideMentionList() {\n if (this.isOpen()) {\n this.activeMentionIndex = 0\n this.mentionListEL.classList.add(this.options.listHideClass)\n }\n }\n\n setMentionListPos() {\n const cursorIndex = this.quill.selection.savedRange.index\n const cursorBounds = this.quill.getBounds(cursorIndex)\n const { left, top } = cursorBounds\n const container = this.quill.container\n const hostElement = container.parentNode as HTMLDivElement\n const { left: editorLeft, top: editorTop } = container.getBoundingClientRect()\n const { left: hostElementLeft, top: hostElementTop } = hostElement.getBoundingClientRect()\n const relativeLeft = editorLeft - hostElementLeft\n const relativeTop = editorTop - hostElementTop\n const menuLeft = left + relativeLeft - 5\n const menuTop = top + relativeTop + 20\n this.mentionListEL.style.cssText += `\n left: ${menuLeft}px;\n top: ${menuTop}px;\n `\n }\n\n render(mentionList: any[]) {\n const wrapEl = document.createElement('div');\n\n [].forEach.call(mentionList, (mentionItem, index) => {\n const mentionItemEl = document.createElement('li')\n mentionItemEl.classList.add(this.options.itemClass)\n if (index === this.activeMentionIndex) {\n mentionItemEl.classList.add(this.options.itemActiveClass)\n }\n const renderResult = this.options.renderMentionItem(mentionItem)\n if (typeof renderResult === 'string') {\n mentionItemEl.insertAdjacentHTML('afterbegin', renderResult)\n }\n else {\n mentionItemEl.insertAdjacentElement('afterbegin', renderResult)\n }\n wrapEl.appendChild(mentionItemEl)\n })\n\n this.mentionListEL.innerHTML = wrapEl.innerHTML\n }\n\n highlightMentionItem(index: number) {\n const oldActiveItem = this.getActiveMentionItem()\n if (oldActiveItem) {\n oldActiveItem.classList.remove(this.options.itemActiveClass)\n }\n\n const newActiveItem = this.mentionListEL.querySelector(`.${this.options.itemClass}:nth-of-type(${index + 1})`)\n if (newActiveItem) {\n newActiveItem.classList.add(this.options.itemActiveClass)\n this.scrollIntoView(newActiveItem)\n }\n }\n\n scrollIntoView(node: Element): void {\n const nodeAsAny: any = node\n if (nodeAsAny.scrollIntoViewIfNeeded) {\n nodeAsAny.scrollIntoViewIfNeeded(false)\n return\n }\n if (node.scrollIntoView) {\n node.scrollIntoView(false)\n }\n }\n\n selectMentionItem(index = this.activeMentionIndex, isClick?: boolean) {\n const activeMentionItem = this.latestMentionList[index]\n this.insertMentionBlot(activeMentionItem, isClick)\n this.options.select(activeMentionItem)\n this.hideMentionList()\n }\n\n insertMentionBlot(activeMentionItem: any, isClick?: boolean) {\n const mention = this.options.renderMentionText(activeMentionItem)\n const delta = new Delta()\n .retain(this.latestMentionCharPos)\n .delete(this.latestCaretPos - this.latestMentionCharPos)\n .insert({\n [MentionLink.blotName]: {\n char: this.options.mentionChar,\n text: mention,\n mention: activeMentionItem,\n link: activeMentionItem.link || this.options.defaultLink,\n target: activeMentionItem.target || this.options.target,\n searchKey: this.options.searchKey,\n },\n })\n if (isClick) {\n this.quill.updateContents(delta, Quill.sources.USER)\n }\n else {\n this.quill.updateContents(delta, Quill.sources.API)\n }\n this.quill.setSelection(this.latestMentionCharPos + 1, Quill.sources.API)\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mention.es.js","sources":["../../../../src/modules/mention/mention.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { isNullOrUndefined } from '../../config/editor.utils'\r\nimport { DEFAULT_MENTION_CHAR, ON_MENTION_LINK_REMOVE } from './constants'\r\nimport { MentionLink } from './mention-link'\r\n\r\nconst Delta = Quill.import('delta')\r\nconst Parchment = Quill.import('parchment')\r\nconst { Scope } = Parchment\r\n\r\nexport interface MentionOption {\r\n containerClass?: string\r\n // dataAttributes?: string[]\r\n defaultLink?: string\r\n itemActiveClass?: string\r\n itemKey: string\r\n itemClass?: string\r\n listClass?: string\r\n listHideClass?: string\r\n maxHeight?: number\r\n mentionChar?: string\r\n remove?: (data: any) => void\r\n renderMentionItem?: (data: any) => string | HTMLElement\r\n renderMentionText?: (data: any) => string | HTMLElement\r\n search?: (term: string) => Promise<any[]> | any[]\r\n searchKey: string\r\n select?: (data: any) => void\r\n target?: string\r\n}\r\n\r\nexport class Mention {\r\n private readonly options: MentionOption\r\n private readonly mentionListEL: HTMLUListElement\r\n private activeMentionIndex = 0\r\n private latestMentionList: any[]\r\n private latestMentionCharPos: number\r\n private latestCaretPos: number\r\n private searchTerm = ''\r\n private needInsertBr = true\r\n private readonly defaultOptions: MentionOption = {\r\n defaultLink: '#',\r\n target: '_blank',\r\n mentionChar: DEFAULT_MENTION_CHAR,\r\n maxHeight: 200,\r\n renderMentionItem(data: any) {\r\n let mentionItem = data.name || data.id\r\n if (this.itemKey) {\r\n mentionItem = data[this.itemKey]\r\n }\r\n const dom = document.createElement('SPAN')\r\n dom.textContent = mentionItem\r\n return dom\r\n },\r\n renderMentionText(data: any) {\r\n let mentionText = data.name || data.id\r\n if (this.itemKey) {\r\n mentionText = data[this.itemKey]\r\n }\r\n return `${mentionText}`\r\n },\r\n containerClass: 'ql-mention-list-container',\r\n listClass: 'ql-mention-list',\r\n listHideClass: 'ql-mention-list--hide',\r\n itemClass: 'ql-mention-item',\r\n itemActiveClass: 'ql-mention-item--active',\r\n itemKey: 'name',\r\n searchKey: 'name',\r\n // dataAttributes: ['id'],\r\n select(_data: any) {},\r\n remove(_data: any) {},\r\n }\r\n\r\n static register() {\r\n Quill.register(MentionLink)\r\n }\r\n\r\n // @ts-ignore\r\n constructor(private quill: Quill, options: MentionOption) {\r\n if (!options.search) {\r\n console.warn('please provide a search function!')\r\n return\r\n }\r\n\r\n this.options = Object.assign(this.defaultOptions, options)\r\n const container = document.createElement('div')\r\n container.classList.add('ql-mention-list-container')\r\n if (this.options.containerClass !== 'ql-mention-list-container') {\r\n container.classList.add(this.options.containerClass)\r\n }\r\n this.mentionListEL = document.createElement('ul')\r\n this.mentionListEL.classList.add(this.options.listClass, this.options.listHideClass)\r\n this.mentionListEL.style.cssText += `\r\n max-height: ${this.options.maxHeight}px;\r\n `\r\n\r\n quill.on(Quill.events.TEXT_CHANGE, this.handleTextChange)\r\n quill.keyboard.addBinding({ key: 'ArrowUp' }, this.handleArrowUpKey)\r\n quill.keyboard.addBinding({ key: 'ArrowDown' }, this.handleArrowDownKey)\r\n quill.keyboard.addBinding({ key: 'Enter' }, this.handleEnterKey)\r\n quill.keyboard.addBinding({ key: 'Tab' }, this.handleEnterKey)\r\n quill.keyboard.addBinding({ key: 'Escape' }, this.handleEscapeKey)\r\n quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop())\r\n quill.keyboard.bindings.Tab.unshift(quill.keyboard.bindings.Tab.pop())\r\n quill.keyboard.bindings.Escape.unshift(quill.keyboard.bindings.Escape.pop())\r\n\r\n const customKeyboardEnter = {\r\n key: 'Enter',\r\n shiftKey: null,\r\n handler: (range, context) => {\r\n const lineFormats = Object.keys(context.format).reduce(\r\n (formats, format) => {\r\n if (\r\n this.quill.scroll.query(format, Scope.BLOCK)\r\n && !Array.isArray(context.format[format])\r\n ) {\r\n formats[format] = context.format[format]\r\n }\r\n return formats\r\n },\r\n {},\r\n )\r\n\r\n // fix: 解决@提醒之后插入多余空行和光标位置不对的问题\r\n let selectionIndex = range.index - this.searchTerm.length\r\n let delta = new Delta()\r\n .retain(range.index)\r\n .delete(range.length)\r\n if (this.needInsertBr) {\r\n delta = delta.insert('\\n', lineFormats)\r\n selectionIndex = range.index + 1\r\n }\r\n\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(selectionIndex, Quill.sources.SILENT)\r\n this.quill.focus()\r\n\r\n Object.keys(context.format).forEach((name) => {\r\n if (!isNullOrUndefined(lineFormats[name])) return\r\n if (Array.isArray(context.format[name])) return\r\n if (name === 'code' || name === 'link') return\r\n this.quill.format(name, context.format[name], Quill.sources.USER)\r\n })\r\n\r\n this.needInsertBr = true // 标记是否是输入@提醒的Enter\r\n },\r\n }\r\n\r\n // 用自定义的Enter替换内置的Enter\r\n quill.keyboard.bindings.Enter = quill.keyboard.bindings.Enter.map((item) => {\r\n const buildinKeyboardEnter = item.format === undefined && item.shiftKey === null\r\n if (buildinKeyboardEnter) {\r\n return customKeyboardEnter\r\n }\r\n else {\r\n return item\r\n }\r\n })\r\n\r\n this.on('click', this.handleMouseClick)\r\n this.on('mouseover', this.handleMouseEnter)\r\n quill.emitter.on(ON_MENTION_LINK_REMOVE, async ({ mention, name }) => {\r\n const [result] = (mention && [mention]) || (await this.options.search(name))\r\n this.options.remove(result)\r\n })\r\n container.appendChild(this.mentionListEL)\r\n quill.container.parentElement.insertBefore(container, quill.container)\r\n }\r\n\r\n on(eventName, callback) {\r\n this.mentionListEL.addEventListener(eventName, (evt) => {\r\n let\r\n target = evt.target\r\n let targetItemEL\r\n\r\n while (this.mentionListEL.contains(target) && target !== this.mentionListEL) {\r\n if (target.classList.contains(this.options.itemClass)) {\r\n targetItemEL = target\r\n }\r\n target = target.parentElement\r\n }\r\n\r\n if (targetItemEL) {\r\n callback.call(this, targetItemEL, this.getMentionItemIndex(targetItemEL))\r\n }\r\n })\r\n }\r\n\r\n getMentionItemIndex(itemEl: Element) {\r\n return [].reduce.call(this.mentionListEL.children, (index, item, idx) => item === itemEl ? idx : index, -1)\r\n }\r\n\r\n handleTextChange = (_delta, _oldDelta, source) => {\r\n // defer handler to make sure that we can get correct quill selection range.\r\n setTimeout(() => {\r\n if (Quill.sources.USER === source) {\r\n const range = this.quill.getSelection()\r\n if (!range) {\r\n return\r\n }\r\n\r\n const caretPos = this.latestCaretPos = range.index\r\n // beforeCaretText的计算有问题,没有把图片内容和@提醒内容的非字符内容算进去\r\n const content = this.quill.getContents()\r\n const beforeCaretText = content.reduce((newText, op) => {\r\n if (typeof op.insert === 'string') {\r\n return (newText += op.insert)\r\n }\r\n else {\r\n return (newText += ' ') // 将图片内容和@提醒内容的非字符内容置为' ',算一个位置\r\n }\r\n }, '')\r\n const mentionCharPos = beforeCaretText.lastIndexOf(this.options.mentionChar)\r\n\r\n if (mentionCharPos > -1) {\r\n const searchTerm = beforeCaretText.substring(mentionCharPos + this.options.mentionChar.length, caretPos)\r\n this.searchTerm = searchTerm\r\n if (!''.startsWith.call(searchTerm, ' ')) {\r\n this.latestMentionCharPos = mentionCharPos\r\n this.searchMentionListByTerm(searchTerm)\r\n }\r\n else {\r\n this.hideMentionList()\r\n }\r\n }\r\n else {\r\n this.hideMentionList()\r\n }\r\n }\r\n })\r\n }\r\n\r\n handleMouseClick(_itemEl: HTMLLIElement, index: number) {\r\n this.selectMentionItem(index, true)\r\n this.quill.focus()\r\n }\r\n\r\n handleMouseEnter(_itemEl: HTMLLIElement, index: number) {\r\n this.activeMentionIndex = index\r\n this.highlightMentionItem(index)\r\n }\r\n\r\n handleArrowUpKey = () => {\r\n if (this.isOpen()) {\r\n this.activeMentionIndex\r\n = (this.activeMentionIndex + this.latestMentionList.length - 1) % this.latestMentionList.length\r\n this.highlightMentionItem(this.activeMentionIndex)\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n handleArrowDownKey = () => {\r\n if (this.isOpen()) {\r\n this.activeMentionIndex = (this.activeMentionIndex + 1) % this.latestMentionList.length\r\n this.highlightMentionItem(this.activeMentionIndex)\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n handleEnterKey = () => {\r\n if (this.isOpen()) {\r\n this.selectMentionItem()\r\n this.needInsertBr = false\r\n }\r\n return true\r\n }\r\n\r\n handleEscapeKey = () => {\r\n if (this.isOpen()) {\r\n this.hideMentionList()\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n getActiveMentionItem() {\r\n return this.mentionListEL.querySelector(`.${this.options.itemActiveClass}`)\r\n }\r\n\r\n isOpen() {\r\n return !this.mentionListEL.classList.contains(this.options.listHideClass)\r\n }\r\n\r\n async searchMentionListByTerm(term: string) {\r\n const mentionList = await this.options.search(term)\r\n this.latestMentionList = mentionList\r\n if (!mentionList || mentionList.length === 0) {\r\n return this.hideMentionList()\r\n }\r\n\r\n this.showMentionList(mentionList)\r\n }\r\n\r\n showMentionList(mentionList: any[]) {\r\n if (!this.isOpen()) {\r\n this.mentionListEL.classList.remove(this.options.listHideClass)\r\n }\r\n this.activeMentionIndex = 0\r\n this.setMentionListPos()\r\n this.render(mentionList)\r\n }\r\n\r\n hideMentionList() {\r\n if (this.isOpen()) {\r\n this.activeMentionIndex = 0\r\n this.mentionListEL.classList.add(this.options.listHideClass)\r\n }\r\n }\r\n\r\n setMentionListPos() {\r\n const cursorIndex = this.quill.selection.savedRange.index\r\n const cursorBounds = this.quill.getBounds(cursorIndex)\r\n const { left, top } = cursorBounds\r\n const container = this.quill.container\r\n const hostElement = container.parentNode as HTMLDivElement\r\n const { left: editorLeft, top: editorTop } = container.getBoundingClientRect()\r\n const { left: hostElementLeft, top: hostElementTop } = hostElement.getBoundingClientRect()\r\n const relativeLeft = editorLeft - hostElementLeft\r\n const relativeTop = editorTop - hostElementTop\r\n const menuLeft = left + relativeLeft - 5\r\n const menuTop = top + relativeTop + 20\r\n this.mentionListEL.style.cssText += `\r\n left: ${menuLeft}px;\r\n top: ${menuTop}px;\r\n `\r\n }\r\n\r\n render(mentionList: any[]) {\r\n const wrapEl = document.createElement('div');\r\n\r\n [].forEach.call(mentionList, (mentionItem, index) => {\r\n const mentionItemEl = document.createElement('li')\r\n mentionItemEl.classList.add(this.options.itemClass)\r\n if (index === this.activeMentionIndex) {\r\n mentionItemEl.classList.add(this.options.itemActiveClass)\r\n }\r\n const renderResult = this.options.renderMentionItem(mentionItem)\r\n if (typeof renderResult === 'string') {\r\n mentionItemEl.insertAdjacentHTML('afterbegin', renderResult)\r\n }\r\n else {\r\n mentionItemEl.insertAdjacentElement('afterbegin', renderResult)\r\n }\r\n wrapEl.appendChild(mentionItemEl)\r\n })\r\n\r\n this.mentionListEL.innerHTML = wrapEl.innerHTML\r\n }\r\n\r\n highlightMentionItem(index: number) {\r\n const oldActiveItem = this.getActiveMentionItem()\r\n if (oldActiveItem) {\r\n oldActiveItem.classList.remove(this.options.itemActiveClass)\r\n }\r\n\r\n const newActiveItem = this.mentionListEL.querySelector(`.${this.options.itemClass}:nth-of-type(${index + 1})`)\r\n if (newActiveItem) {\r\n newActiveItem.classList.add(this.options.itemActiveClass)\r\n this.scrollIntoView(newActiveItem)\r\n }\r\n }\r\n\r\n scrollIntoView(node: Element): void {\r\n const nodeAsAny: any = node\r\n if (nodeAsAny.scrollIntoViewIfNeeded) {\r\n nodeAsAny.scrollIntoViewIfNeeded(false)\r\n return\r\n }\r\n if (node.scrollIntoView) {\r\n node.scrollIntoView(false)\r\n }\r\n }\r\n\r\n selectMentionItem(index = this.activeMentionIndex, isClick?: boolean) {\r\n const activeMentionItem = this.latestMentionList[index]\r\n this.insertMentionBlot(activeMentionItem, isClick)\r\n this.options.select(activeMentionItem)\r\n this.hideMentionList()\r\n }\r\n\r\n insertMentionBlot(activeMentionItem: any, isClick?: boolean) {\r\n const mention = this.options.renderMentionText(activeMentionItem)\r\n const delta = new Delta()\r\n .retain(this.latestMentionCharPos)\r\n .delete(this.latestCaretPos - this.latestMentionCharPos)\r\n .insert({\r\n [MentionLink.blotName]: {\r\n char: this.options.mentionChar,\r\n text: mention,\r\n mention: activeMentionItem,\r\n link: activeMentionItem.link || this.options.defaultLink,\r\n target: activeMentionItem.target || this.options.target,\r\n searchKey: this.options.searchKey,\r\n },\r\n })\r\n if (isClick) {\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n }\r\n else {\r\n this.quill.updateContents(delta, Quill.sources.API)\r\n }\r\n this.quill.setSelection(this.latestMentionCharPos + 1, Quill.sources.API)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-utils.es.js","sources":["../../../../src/modules/mind-map/config-utils.ts"],"sourcesContent":["import type Quill from 'quill'\nimport type { BackgroundConfig, LineConfig } from './options'\n\nexport function getBackgroundConfig(quill: Quill | null): false | object {\n const MindMapModule = quill?.options.modules?.['mind-map']\n if (!MindMapModule || typeof MindMapModule !== 'object') {\n return false\n }\n if ('background' in MindMapModule) {\n const background = MindMapModule.background as BackgroundConfig | boolean | undefined\n\n if (background === false || background === undefined) {\n return false\n }\n if (typeof background === 'object' && background !== null) {\n const typedBackground = background as BackgroundConfig\n const backgroundConfig: any = {}\n\n if (typedBackground.color) {\n backgroundConfig.backgroundColor = typedBackground.color\n }\n if (typedBackground.image) {\n backgroundConfig.backgroundImage = typedBackground.image\n }\n if (typedBackground.repeat) {\n backgroundConfig.backgroundRepeat = typedBackground.repeat\n }\n if (typedBackground.position) {\n backgroundConfig.backgroundPosition = typedBackground.position\n }\n if (typedBackground.size) {\n backgroundConfig.backgroundSize = typedBackground.size\n }\n return backgroundConfig\n }\n }\n return false\n}\n\nexport function getLineConfig(quill: Quill | null): false | object {\n const MindMapModule = quill?.options.modules?.['mind-map']\n if (!MindMapModule || typeof MindMapModule !== 'object') {\n return false\n }\n if ('line' in MindMapModule) {\n const line = MindMapModule.line as LineConfig | boolean | undefined\n\n if (line === false || line === undefined) {\n return false\n }\n if (typeof line === 'object' && line !== null) {\n const typedLine = line as LineConfig\n const lineConfig: any = {}\n\n if (typedLine.color) {\n lineConfig.lineColor = typedLine.color\n }\n if (typedLine.width) {\n lineConfig.lineWidth = typedLine.width\n }\n if (typedLine.dasharray) {\n lineConfig.lineDasharray = typedLine.dasharray\n }\n if (typedLine.style) {\n lineConfig.lineStyle = typedLine.style\n }\n return lineConfig\n }\n }\n return false\n}\n\nexport function getResizeConfig(quill: Quill | null): boolean {\n const MindMapModule = quill?.options.modules?.['mind-map']\n if (!MindMapModule || typeof MindMapModule !== 'object') {\n return false\n }\n if ('resize' in MindMapModule) {\n const resize = (MindMapModule as any).resize as boolean | undefined\n return resize === true\n }\n return false\n}\n\nexport function getThemeConfig(quill: Quill | null): string {\n const MindMapModule = quill?.options.modules?.['mind-map']\n if (!MindMapModule || typeof MindMapModule !== 'object') {\n return 'default'\n }\n if ('theme' in MindMapModule) {\n const theme = MindMapModule.theme as string | undefined\n return theme || 'default'\n }\n return 'default'\n}\n\nexport function getAllConfigs(quill: Quill | null): {\n backgroundConfig: false | object\n resizeConfig: boolean\n lineConfig: false | object\n themeConfig: string\n deps?: any\n} {\n const deps = (quill?.options.modules?.['mind-map'] as any)?.deps\n return {\n backgroundConfig: getBackgroundConfig(quill),\n resizeConfig: getResizeConfig(quill),\n lineConfig: getLineConfig(quill),\n themeConfig: getThemeConfig(quill),\n deps,\n }\n}\n"],"names":[],"mappings":"AAGO,SAAS,oBAAoB,OAAqC;AAAlE;AACL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,eAAe;AACjC,UAAM,aAAa,cAAc;AAEjC,QAAI,eAAe,SAAS,eAAe,QAAW;AACpD,aAAO;AAAA,IACT;AACA,QAAI,OAAO,eAAe,YAAY,eAAe,MAAM;AACzD,YAAM,kBAAkB;AACxB,YAAM,mBAAwB,CAAA;AAE9B,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,QAAQ;AAC1B,yBAAiB,mBAAmB,gBAAgB;AAAA,MACtD;AACA,UAAI,gBAAgB,UAAU;AAC5B,yBAAiB,qBAAqB,gBAAgB;AAAA,MACxD;AACA,UAAI,gBAAgB,MAAM;AACxB,yBAAiB,iBAAiB,gBAAgB;AAAA,MACpD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAAqC;AApC5D;AAqCL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,UAAU,eAAe;AAC3B,UAAM,OAAO,cAAc;AAE3B,QAAI,SAAS,SAAS,SAAS,QAAW;AACxC,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,YAAM,YAAY;AAClB,YAAM,aAAkB,CAAA;AAExB,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,UAAI,UAAU,WAAW;AACvB,mBAAW,gBAAgB,UAAU;AAAA,MACvC;AACA,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAA8B;AArEvD;AAsEL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,YAAY,eAAe;AAC7B,UAAM,SAAU,cAAsB;AACtC,WAAO,WAAW;AAAA,EACpB;AACA,SAAO;AACT;AAEO,SAAS,eAAe,OAA6B;AAjFrD;AAkFL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,WAAW,eAAe;AAC5B,UAAM,QAAQ,cAAc;AAC5B,WAAO,SAAS;AAAA,EAClB;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAM5B;AAnGK;AAoGL,QAAM,QAAQ,0CAAO,QAAQ,YAAf,mBAAyB,gBAAzB,mBAA8C;AAC5D,SAAO;AAAA,IACL,kBAAkB,oBAAoB,KAAK;AAAA,IAC3C,cAAc,gBAAgB,KAAK;AAAA,IACnC,YAAY,cAAc,KAAK;AAAA,IAC/B,aAAa,eAAe,KAAK;AAAA,IACjC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"config-utils.es.js","sources":["../../../../src/modules/mind-map/config-utils.ts"],"sourcesContent":["import type Quill from 'quill'\r\nimport type { BackgroundConfig, LineConfig } from './options'\r\n\r\nexport function getBackgroundConfig(quill: Quill | null): false | object {\r\n const MindMapModule = quill?.options.modules?.['mind-map']\r\n if (!MindMapModule || typeof MindMapModule !== 'object') {\r\n return false\r\n }\r\n if ('background' in MindMapModule) {\r\n const background = MindMapModule.background as BackgroundConfig | boolean | undefined\r\n\r\n if (background === false || background === undefined) {\r\n return false\r\n }\r\n if (typeof background === 'object' && background !== null) {\r\n const typedBackground = background as BackgroundConfig\r\n const backgroundConfig: any = {}\r\n\r\n if (typedBackground.color) {\r\n backgroundConfig.backgroundColor = typedBackground.color\r\n }\r\n if (typedBackground.image) {\r\n backgroundConfig.backgroundImage = typedBackground.image\r\n }\r\n if (typedBackground.repeat) {\r\n backgroundConfig.backgroundRepeat = typedBackground.repeat\r\n }\r\n if (typedBackground.position) {\r\n backgroundConfig.backgroundPosition = typedBackground.position\r\n }\r\n if (typedBackground.size) {\r\n backgroundConfig.backgroundSize = typedBackground.size\r\n }\r\n return backgroundConfig\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport function getLineConfig(quill: Quill | null): false | object {\r\n const MindMapModule = quill?.options.modules?.['mind-map']\r\n if (!MindMapModule || typeof MindMapModule !== 'object') {\r\n return false\r\n }\r\n if ('line' in MindMapModule) {\r\n const line = MindMapModule.line as LineConfig | boolean | undefined\r\n\r\n if (line === false || line === undefined) {\r\n return false\r\n }\r\n if (typeof line === 'object' && line !== null) {\r\n const typedLine = line as LineConfig\r\n const lineConfig: any = {}\r\n\r\n if (typedLine.color) {\r\n lineConfig.lineColor = typedLine.color\r\n }\r\n if (typedLine.width) {\r\n lineConfig.lineWidth = typedLine.width\r\n }\r\n if (typedLine.dasharray) {\r\n lineConfig.lineDasharray = typedLine.dasharray\r\n }\r\n if (typedLine.style) {\r\n lineConfig.lineStyle = typedLine.style\r\n }\r\n return lineConfig\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport function getResizeConfig(quill: Quill | null): boolean {\r\n const MindMapModule = quill?.options.modules?.['mind-map']\r\n if (!MindMapModule || typeof MindMapModule !== 'object') {\r\n return false\r\n }\r\n if ('resize' in MindMapModule) {\r\n const resize = (MindMapModule as any).resize as boolean | undefined\r\n return resize === true\r\n }\r\n return false\r\n}\r\n\r\nexport function getThemeConfig(quill: Quill | null): string {\r\n const MindMapModule = quill?.options.modules?.['mind-map']\r\n if (!MindMapModule || typeof MindMapModule !== 'object') {\r\n return 'default'\r\n }\r\n if ('theme' in MindMapModule) {\r\n const theme = MindMapModule.theme as string | undefined\r\n return theme || 'default'\r\n }\r\n return 'default'\r\n}\r\n\r\nexport function getAllConfigs(quill: Quill | null): {\r\n backgroundConfig: false | object\r\n resizeConfig: boolean\r\n lineConfig: false | object\r\n themeConfig: string\r\n deps?: any\r\n} {\r\n const deps = (quill?.options.modules?.['mind-map'] as any)?.deps\r\n return {\r\n backgroundConfig: getBackgroundConfig(quill),\r\n resizeConfig: getResizeConfig(quill),\r\n lineConfig: getLineConfig(quill),\r\n themeConfig: getThemeConfig(quill),\r\n deps,\r\n }\r\n}\r\n"],"names":[],"mappings":"AAGO,SAAS,oBAAoB,OAAqC;AAAlE;AACL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,eAAe;AACjC,UAAM,aAAa,cAAc;AAEjC,QAAI,eAAe,SAAS,eAAe,QAAW;AACpD,aAAO;AAAA,IACT;AACA,QAAI,OAAO,eAAe,YAAY,eAAe,MAAM;AACzD,YAAM,kBAAkB;AACxB,YAAM,mBAAwB,CAAA;AAE9B,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,QAAQ;AAC1B,yBAAiB,mBAAmB,gBAAgB;AAAA,MACtD;AACA,UAAI,gBAAgB,UAAU;AAC5B,yBAAiB,qBAAqB,gBAAgB;AAAA,MACxD;AACA,UAAI,gBAAgB,MAAM;AACxB,yBAAiB,iBAAiB,gBAAgB;AAAA,MACpD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAAqC;AApC5D;AAqCL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,UAAU,eAAe;AAC3B,UAAM,OAAO,cAAc;AAE3B,QAAI,SAAS,SAAS,SAAS,QAAW;AACxC,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,YAAM,YAAY;AAClB,YAAM,aAAkB,CAAA;AAExB,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,UAAI,UAAU,WAAW;AACvB,mBAAW,gBAAgB,UAAU;AAAA,MACvC;AACA,UAAI,UAAU,OAAO;AACnB,mBAAW,YAAY,UAAU;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAA8B;AArEvD;AAsEL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,YAAY,eAAe;AAC7B,UAAM,SAAU,cAAsB;AACtC,WAAO,WAAW;AAAA,EACpB;AACA,SAAO;AACT;AAEO,SAAS,eAAe,OAA6B;AAjFrD;AAkFL,QAAM,iBAAgB,oCAAO,QAAQ,YAAf,mBAAyB;AAC/C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AACA,MAAI,WAAW,eAAe;AAC5B,UAAM,QAAQ,cAAc;AAC5B,WAAO,SAAS;AAAA,EAClB;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAM5B;AAnGK;AAoGL,QAAM,QAAQ,0CAAO,QAAQ,YAAf,mBAAyB,gBAAzB,mBAA8C;AAC5D,SAAO;AAAA,IACL,kBAAkB,oBAAoB,KAAK;AAAA,IAC3C,cAAc,gBAAgB,KAAK;AAAA,IACnC,YAAY,cAAc,KAAK;AAAA,IAC/B,aAAa,eAAe,KAAK;AAAA,IACjC;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"mind-map-blot.es.js","sources":["../../../../../src/modules/mind-map/formats/mind-map-blot.ts"],"sourcesContent":["import type { Root } from 'parchment'\nimport type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\nimport type FluentEditor from '../../../core/fluent-editor'\nimport Quill from 'quill'\nimport { getAllConfigs } from '../config-utils'\nimport { contractIcon, expandIcon } from '../icons'\nimport { initContextMenu } from '../modules/context-menu'\nimport { createControlPanel } from '../modules/control-panel'\nimport { MindMapResizeAction } from '../modules/custom-resize-action'\nimport '../style/mind-map.scss'\n\nconst BlockEmbed = Quill.import('blots/embed') as typeof TypeBlockEmbed\n\nclass MindMapPlaceholderBlot extends BlockEmbed {\n static blotName = 'mind-map'\n static tagName = 'div'\n static className = 'ql-mind-map-item'\n quill: Quill | null = null\n mindMap: any | null = null\n data: any\n zoomCount = 0\n contextMenu: HTMLElement | null = null\n currentNode: any = null\n width: number = 100\n height: number = 500\n parentObserver: MutationObserver | null = null\n nextPObserver: MutationObserver | null = null\n\n constructor(scroll: Root, domNode: HTMLElement) {\n super(scroll, domNode)\n const data = MindMapPlaceholderBlot.value(domNode)\n this.width = data.width || 100\n this.height = data.height || 500\n this.domNode.style.width = `${this.width}${data.width ? 'px' : '%'}`\n this.domNode.style.height = `${this.height}px`\n this.domNode.style.maxWidth = '100%'\n this.domNode.style.border = '1px solid #e8e8e8'\n this.domNode.setAttribute('contenteditable', 'false')\n this.data = MindMapPlaceholderBlot.value(domNode)\n this.initMindMap()\n }\n\n static value(domNode: HTMLElement): any {\n const dataStr = JSON.parse(domNode.getAttribute('data-mind-map'))\n const value = dataStr\n if (domNode.hasAttribute('width')) {\n value.width = Number.parseInt(domNode.getAttribute('width'), 10)\n }\n if (domNode.hasAttribute('height')) {\n value.height = Number.parseInt(domNode.getAttribute('height'), 10)\n }\n return dataStr\n }\n\n static create(value: any): HTMLElement {\n const node = super.create() as HTMLElement\n if (value) {\n node.setAttribute('data-mind-map', JSON.stringify(value))\n }\n if (value.width) {\n node.setAttribute('width', String(value.width))\n node.style.width = `${value.width}%`\n }\n if (value.height) {\n node.setAttribute('height', String(value.height))\n node.style.height = `${value.height}px`\n }\n node.setAttribute('contenteditable', 'false')\n return node\n }\n\n private static findQuill(el: HTMLElement): Quill | null {\n let cur: HTMLElement | null = el\n while (cur) {\n const q = (cur as any).__quillInstance\n if (q) return q\n cur = cur.parentElement\n }\n return null\n }\n\n attach() {\n super.attach()\n this.quill = MindMapPlaceholderBlot.findQuill(this.domNode)\n }\n\n initMindMap(): void {\n if (this.domNode.isConnected) {\n this.insertMindMapEditor()\n }\n else {\n const observer = new MutationObserver(() => {\n if (this.domNode.isConnected) {\n this.insertMindMapEditor()\n observer.disconnect()\n }\n })\n observer.observe(document.body, { childList: true, subtree: true })\n }\n }\n\n insertMindMapEditor(): void {\n this.domNode.style.width = `${this.width}${this.data.width ? 'px' : '%'}`\n this.domNode.style.height = `${this.height}px`\n while (this.domNode.firstChild) {\n this.domNode.removeChild(this.domNode.firstChild)\n }\n this.updateAlignmentStyle()\n this.observeParentAlignment()\n const { backgroundConfig, resizeConfig, lineConfig, themeConfig, deps } = getAllConfigs(this.quill)\n const { SimpleMindMap, Themes, Drag, Export } = deps || window as any\n Themes.init(SimpleMindMap)\n SimpleMindMap.usePlugin(Drag).usePlugin(Export)\n this.mindMap = new SimpleMindMap ({\n el: this.domNode,\n mousewheelAction: 'zoom',\n disableMouseWheelZoom: true,\n layout: this.data.layout,\n theme: themeConfig,\n data: this.data.root ? this.data.root : this.data,\n } as any)\n\n const styleConfig = { ...backgroundConfig }\n if (lineConfig && typeof lineConfig === 'object') {\n Object.assign(styleConfig, lineConfig)\n }\n\n this.mindMap.setThemeConfig(styleConfig)\n\n const handleScroll = () => {\n if (this.mindMap && this.domNode && this.domNode.isConnected) {\n this.mindMap.getElRectInfo()\n }\n }\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n\n this.domNode.addEventListener('remove', () => {\n window.removeEventListener('scroll', handleScroll)\n })\n\n if (resizeConfig) {\n new MindMapResizeAction(this)\n }\n createControlPanel(this, this.quill as FluentEditor) // 创建控制面板\n initContextMenu(this, this.quill as FluentEditor) // 初始化右键菜单\n this.observeOwnParentChange()\n this.observeNextPElement()\n this.addMouseHoverEvents()\n this.mindMap.on('node_tree_render_end', () => {\n this.data = this.mindMap.getData({})\n this.domNode.setAttribute('data-mind-map', JSON.stringify(this.data))\n })\n this.mindMap.on('node_dblclick', this.handleNodeDblClick.bind(this))\n this.domNode.addEventListener('click', (e) => {\n if (this.quill) {\n this.mindMap.getElRectInfo()\n const mindMapBlot = Quill.find(this.domNode)\n const index = this.quill.getIndex(mindMapBlot as MindMapPlaceholderBlot)\n if (index && typeof index === 'number') {\n this.quill.setSelection(index + 1, 0)\n }\n }\n })\n }\n\n addMouseHoverEvents(): void {\n this.domNode.addEventListener('mouseenter', () => {\n this.showControlPanel()\n })\n\n this.domNode.addEventListener('mouseleave', () => {\n this.mindMap.execCommand('CLEAR_ACTIVE_NODE')\n this.hideControlPanel()\n })\n }\n\n getControlElements(): { leftUpControl: HTMLElement | null, control: HTMLElement | null, panelStatusIcon: HTMLElement | null } {\n const leftUpControl = this.domNode.querySelector('.ql-mind-map-left-up-control') as HTMLElement | null\n const control = this.domNode.querySelector('.ql-mind-map-control') as HTMLElement | null\n const panelStatusIcon = this.domNode.querySelector('[data-control-type=\"panel-status\"]') as HTMLElement | null\n return { leftUpControl, control, panelStatusIcon }\n }\n\n showControlPanel(): void {\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\n if (!leftUpControl || !control) return\n\n leftUpControl.style.display = 'inline-flex'\n control.style.display = 'flex'\n if (panelStatusIcon) {\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\n iconElement.innerHTML = expandIcon\n }\n }\n\n hideControlPanel(): void {\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\n if (!leftUpControl || !control) return\n\n leftUpControl.style.display = 'none'\n control.style.display = 'none'\n if (panelStatusIcon) {\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\n iconElement.innerHTML = contractIcon\n }\n }\n\n // 监听父元素变化\n observeOwnParentChange(): void {\n let currentParent = this.domNode.parentElement\n const observer = new MutationObserver(() => {\n if (this.domNode.parentElement !== currentParent) {\n currentParent = this.domNode.parentElement\n this.observeParentAlignment()\n }\n })\n\n observer.observe(document.body, {\n attributes: false,\n childList: true,\n subtree: true,\n })\n }\n\n // 监听父元素对齐变化\n observeParentAlignment(): void {\n if (this.parentObserver) {\n this.parentObserver.disconnect()\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n this.updateAlignmentStyle()\n }\n })\n })\n\n this.parentObserver = observer\n\n const parent = this.domNode.parentElement\n if (parent) {\n observer.observe(parent, {\n attributes: true,\n attributeFilter: ['class'],\n })\n this.updateAlignmentStyle()\n }\n }\n\n // 更新对齐样式\n updateAlignmentStyle(): void {\n const parent = this.domNode.parentElement\n if (!parent) return\n\n this.domNode.style.margin = ''\n this.domNode.style.display = 'block'\n\n if (parent.classList.contains('ql-align-center')) {\n this.domNode.style.margin = '0 auto'\n }\n else if (parent.classList.contains('ql-align-right')) {\n this.domNode.style.marginLeft = 'auto'\n this.domNode.style.marginRight = '0'\n }\n else {\n this.domNode.style.marginLeft = '0'\n this.domNode.style.marginRight = 'auto'\n }\n }\n\n observeNextPElement(): void {\n if (this.nextPObserver) {\n this.nextPObserver.disconnect()\n }\n const parentElement = this.domNode.parentElement\n if (!parentElement) {\n return\n }\n const trackedParentElement = parentElement\n const parentElementId = parentElement.getAttribute('id') || `mind-map-parent-${Date.now()}`\n parentElement.setAttribute('id', parentElementId)\n const observer = new MutationObserver(() => {\n if (!document.contains(trackedParentElement)) {\n const elementById = document.getElementById(parentElementId)\n if (!elementById) {\n this.remove()\n observer.disconnect()\n }\n }\n })\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n })\n this.nextPObserver = observer\n }\n\n handleNodeDblClick(node: any, e: any) {\n if (node && node.uid && e) {\n this.currentNode = node\n this.createEditInput(node, e)\n }\n }\n\n // 创建编辑输入框\n createEditInput(node: any, e: any) {\n const input = document.createElement('textarea')\n input.className = 'ql-mind-map-edit-input'\n input.value = node.nodeData.data.text || ''\n const autoResize = () => {\n input.style.height = 'auto'\n input.style.height = `${input.scrollHeight}px`\n }\n Object.assign(input.style, {\n position: 'absolute',\n boxSizing: 'border-box',\n width: '100px',\n height: '35px',\n padding: '5px',\n lineHeight: '1.2',\n fontFamily: '微软雅黑',\n fontSize: '16px',\n whiteSpace: 'pre',\n textAlign: 'center',\n background: '#fff',\n border: '1px solid #edefed',\n borderRadius: '3px',\n outline: 'none',\n transform: 'translate(-50%, -50%)',\n resize: 'none',\n zIndex: '1000',\n left: `${e.pageX ? e.pageX : 100}px`,\n top: `${e.pageY ? e.pageY : 100}px`,\n overflow: 'hidden',\n })\n\n document.body.appendChild(input)\n autoResize()\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && event.shiftKey) {\n autoResize()\n }\n })\n input.focus()\n\n const currentNode = node\n const handleDrawClick = () => {\n this.updateNodeText(input.value, currentNode)\n input.remove()\n this.mindMap.off('draw_click', handleDrawClick)\n }\n\n this.mindMap.on('draw_click', handleDrawClick)\n\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n this.updateNodeText(input.value, currentNode)\n input.remove()\n this.mindMap.off('draw_click', handleDrawClick)\n }\n })\n }\n\n updateNodeText(text: string, node: any) {\n if (node && this.mindMap) {\n node.setText(text)\n const editWraps = document.querySelectorAll('.smm-node-edit-wrap')\n editWraps.forEach((editWrap) => {\n const input = editWrap.querySelector('input, textarea')\n if (input) {\n (input as HTMLInputElement | HTMLTextAreaElement).value = text\n }\n else {\n editWrap.textContent = text\n }\n })\n this.data = this.mindMap.getData({})\n this.domNode.setAttribute('data-mind-map', JSON.stringify(this.data))\n }\n }\n\n format(name: string, value: any) {\n }\n\n remove() {\n this.mindMap.destroy()\n if (this.nextPObserver) {\n this.nextPObserver.disconnect()\n this.nextPObserver = null\n }\n super.remove()\n }\n}\n\nexport default MindMapPlaceholderBlot\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mind-map-blot.es.js","sources":["../../../../../src/modules/mind-map/formats/mind-map-blot.ts"],"sourcesContent":["import type { Root } from 'parchment'\r\nimport type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\r\nimport type FluentEditor from '../../../core/fluent-editor'\r\nimport Quill from 'quill'\r\nimport { getAllConfigs } from '../config-utils'\r\nimport { contractIcon, expandIcon } from '../icons'\r\nimport { initContextMenu } from '../modules/context-menu'\r\nimport { createControlPanel } from '../modules/control-panel'\r\nimport { MindMapResizeAction } from '../modules/custom-resize-action'\r\nimport '../style/mind-map.scss'\r\n\r\nconst BlockEmbed = Quill.import('blots/embed') as typeof TypeBlockEmbed\r\n\r\nclass MindMapPlaceholderBlot extends BlockEmbed {\r\n static blotName = 'mind-map'\r\n static tagName = 'div'\r\n static className = 'ql-mind-map-item'\r\n quill: Quill | null = null\r\n mindMap: any | null = null\r\n data: any\r\n zoomCount = 0\r\n contextMenu: HTMLElement | null = null\r\n currentNode: any = null\r\n width: number = 100\r\n height: number = 500\r\n parentObserver: MutationObserver | null = null\r\n nextPObserver: MutationObserver | null = null\r\n\r\n constructor(scroll: Root, domNode: HTMLElement) {\r\n super(scroll, domNode)\r\n const data = MindMapPlaceholderBlot.value(domNode)\r\n this.width = data.width || 100\r\n this.height = data.height || 500\r\n this.domNode.style.width = `${this.width}${data.width ? 'px' : '%'}`\r\n this.domNode.style.height = `${this.height}px`\r\n this.domNode.style.maxWidth = '100%'\r\n this.domNode.style.border = '1px solid #e8e8e8'\r\n this.domNode.setAttribute('contenteditable', 'false')\r\n this.data = MindMapPlaceholderBlot.value(domNode)\r\n this.initMindMap()\r\n }\r\n\r\n static value(domNode: HTMLElement): any {\r\n const dataStr = JSON.parse(domNode.getAttribute('data-mind-map'))\r\n const value = dataStr\r\n if (domNode.hasAttribute('width')) {\r\n value.width = Number.parseInt(domNode.getAttribute('width'), 10)\r\n }\r\n if (domNode.hasAttribute('height')) {\r\n value.height = Number.parseInt(domNode.getAttribute('height'), 10)\r\n }\r\n return dataStr\r\n }\r\n\r\n static create(value: any): HTMLElement {\r\n const node = super.create() as HTMLElement\r\n if (value) {\r\n node.setAttribute('data-mind-map', JSON.stringify(value))\r\n }\r\n if (value.width) {\r\n node.setAttribute('width', String(value.width))\r\n node.style.width = `${value.width}%`\r\n }\r\n if (value.height) {\r\n node.setAttribute('height', String(value.height))\r\n node.style.height = `${value.height}px`\r\n }\r\n node.setAttribute('contenteditable', 'false')\r\n return node\r\n }\r\n\r\n private static findQuill(el: HTMLElement): Quill | null {\r\n let cur: HTMLElement | null = el\r\n while (cur) {\r\n const q = (cur as any).__quillInstance\r\n if (q) return q\r\n cur = cur.parentElement\r\n }\r\n return null\r\n }\r\n\r\n attach() {\r\n super.attach()\r\n this.quill = MindMapPlaceholderBlot.findQuill(this.domNode)\r\n }\r\n\r\n initMindMap(): void {\r\n if (this.domNode.isConnected) {\r\n this.insertMindMapEditor()\r\n }\r\n else {\r\n const observer = new MutationObserver(() => {\r\n if (this.domNode.isConnected) {\r\n this.insertMindMapEditor()\r\n observer.disconnect()\r\n }\r\n })\r\n observer.observe(document.body, { childList: true, subtree: true })\r\n }\r\n }\r\n\r\n insertMindMapEditor(): void {\r\n this.domNode.style.width = `${this.width}${this.data.width ? 'px' : '%'}`\r\n this.domNode.style.height = `${this.height}px`\r\n while (this.domNode.firstChild) {\r\n this.domNode.removeChild(this.domNode.firstChild)\r\n }\r\n this.updateAlignmentStyle()\r\n this.observeParentAlignment()\r\n const { backgroundConfig, resizeConfig, lineConfig, themeConfig, deps } = getAllConfigs(this.quill)\r\n const { SimpleMindMap, Themes, Drag, Export } = deps || window as any\r\n Themes.init(SimpleMindMap)\r\n SimpleMindMap.usePlugin(Drag).usePlugin(Export)\r\n this.mindMap = new SimpleMindMap ({\r\n el: this.domNode,\r\n mousewheelAction: 'zoom',\r\n disableMouseWheelZoom: true,\r\n layout: this.data.layout,\r\n theme: themeConfig,\r\n data: this.data.root ? this.data.root : this.data,\r\n } as any)\r\n\r\n const styleConfig = { ...backgroundConfig }\r\n if (lineConfig && typeof lineConfig === 'object') {\r\n Object.assign(styleConfig, lineConfig)\r\n }\r\n\r\n this.mindMap.setThemeConfig(styleConfig)\r\n\r\n const handleScroll = () => {\r\n if (this.mindMap && this.domNode && this.domNode.isConnected) {\r\n this.mindMap.getElRectInfo()\r\n }\r\n }\r\n\r\n window.addEventListener('scroll', handleScroll, { passive: true })\r\n\r\n this.domNode.addEventListener('remove', () => {\r\n window.removeEventListener('scroll', handleScroll)\r\n })\r\n\r\n if (resizeConfig) {\r\n new MindMapResizeAction(this)\r\n }\r\n createControlPanel(this, this.quill as FluentEditor) // 创建控制面板\r\n initContextMenu(this, this.quill as FluentEditor) // 初始化右键菜单\r\n this.observeOwnParentChange()\r\n this.observeNextPElement()\r\n this.addMouseHoverEvents()\r\n this.mindMap.on('node_tree_render_end', () => {\r\n this.data = this.mindMap.getData({})\r\n this.domNode.setAttribute('data-mind-map', JSON.stringify(this.data))\r\n })\r\n this.mindMap.on('node_dblclick', this.handleNodeDblClick.bind(this))\r\n this.domNode.addEventListener('click', (e) => {\r\n if (this.quill) {\r\n this.mindMap.getElRectInfo()\r\n const mindMapBlot = Quill.find(this.domNode)\r\n const index = this.quill.getIndex(mindMapBlot as MindMapPlaceholderBlot)\r\n if (index && typeof index === 'number') {\r\n this.quill.setSelection(index + 1, 0)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addMouseHoverEvents(): void {\r\n this.domNode.addEventListener('mouseenter', () => {\r\n this.showControlPanel()\r\n })\r\n\r\n this.domNode.addEventListener('mouseleave', () => {\r\n this.mindMap.execCommand('CLEAR_ACTIVE_NODE')\r\n this.hideControlPanel()\r\n })\r\n }\r\n\r\n getControlElements(): { leftUpControl: HTMLElement | null, control: HTMLElement | null, panelStatusIcon: HTMLElement | null } {\r\n const leftUpControl = this.domNode.querySelector('.ql-mind-map-left-up-control') as HTMLElement | null\r\n const control = this.domNode.querySelector('.ql-mind-map-control') as HTMLElement | null\r\n const panelStatusIcon = this.domNode.querySelector('[data-control-type=\"panel-status\"]') as HTMLElement | null\r\n return { leftUpControl, control, panelStatusIcon }\r\n }\r\n\r\n showControlPanel(): void {\r\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\r\n if (!leftUpControl || !control) return\r\n\r\n leftUpControl.style.display = 'inline-flex'\r\n control.style.display = 'flex'\r\n if (panelStatusIcon) {\r\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\r\n iconElement.innerHTML = expandIcon\r\n }\r\n }\r\n\r\n hideControlPanel(): void {\r\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\r\n if (!leftUpControl || !control) return\r\n\r\n leftUpControl.style.display = 'none'\r\n control.style.display = 'none'\r\n if (panelStatusIcon) {\r\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\r\n iconElement.innerHTML = contractIcon\r\n }\r\n }\r\n\r\n // 监听父元素变化\r\n observeOwnParentChange(): void {\r\n let currentParent = this.domNode.parentElement\r\n const observer = new MutationObserver(() => {\r\n if (this.domNode.parentElement !== currentParent) {\r\n currentParent = this.domNode.parentElement\r\n this.observeParentAlignment()\r\n }\r\n })\r\n\r\n observer.observe(document.body, {\r\n attributes: false,\r\n childList: true,\r\n subtree: true,\r\n })\r\n }\r\n\r\n // 监听父元素对齐变化\r\n observeParentAlignment(): void {\r\n if (this.parentObserver) {\r\n this.parentObserver.disconnect()\r\n }\r\n\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.attributeName === 'class') {\r\n this.updateAlignmentStyle()\r\n }\r\n })\r\n })\r\n\r\n this.parentObserver = observer\r\n\r\n const parent = this.domNode.parentElement\r\n if (parent) {\r\n observer.observe(parent, {\r\n attributes: true,\r\n attributeFilter: ['class'],\r\n })\r\n this.updateAlignmentStyle()\r\n }\r\n }\r\n\r\n // 更新对齐样式\r\n updateAlignmentStyle(): void {\r\n const parent = this.domNode.parentElement\r\n if (!parent) return\r\n\r\n this.domNode.style.margin = ''\r\n this.domNode.style.display = 'block'\r\n\r\n if (parent.classList.contains('ql-align-center')) {\r\n this.domNode.style.margin = '0 auto'\r\n }\r\n else if (parent.classList.contains('ql-align-right')) {\r\n this.domNode.style.marginLeft = 'auto'\r\n this.domNode.style.marginRight = '0'\r\n }\r\n else {\r\n this.domNode.style.marginLeft = '0'\r\n this.domNode.style.marginRight = 'auto'\r\n }\r\n }\r\n\r\n observeNextPElement(): void {\r\n if (this.nextPObserver) {\r\n this.nextPObserver.disconnect()\r\n }\r\n const parentElement = this.domNode.parentElement\r\n if (!parentElement) {\r\n return\r\n }\r\n const trackedParentElement = parentElement\r\n const parentElementId = parentElement.getAttribute('id') || `mind-map-parent-${Date.now()}`\r\n parentElement.setAttribute('id', parentElementId)\r\n const observer = new MutationObserver(() => {\r\n if (!document.contains(trackedParentElement)) {\r\n const elementById = document.getElementById(parentElementId)\r\n if (!elementById) {\r\n this.remove()\r\n observer.disconnect()\r\n }\r\n }\r\n })\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n })\r\n this.nextPObserver = observer\r\n }\r\n\r\n handleNodeDblClick(node: any, e: any) {\r\n if (node && node.uid && e) {\r\n this.currentNode = node\r\n this.createEditInput(node, e)\r\n }\r\n }\r\n\r\n // 创建编辑输入框\r\n createEditInput(node: any, e: any) {\r\n const input = document.createElement('textarea')\r\n input.className = 'ql-mind-map-edit-input'\r\n input.value = node.nodeData.data.text || ''\r\n const autoResize = () => {\r\n input.style.height = 'auto'\r\n input.style.height = `${input.scrollHeight}px`\r\n }\r\n Object.assign(input.style, {\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n width: '100px',\r\n height: '35px',\r\n padding: '5px',\r\n lineHeight: '1.2',\r\n fontFamily: '微软雅黑',\r\n fontSize: '16px',\r\n whiteSpace: 'pre',\r\n textAlign: 'center',\r\n background: '#fff',\r\n border: '1px solid #edefed',\r\n borderRadius: '3px',\r\n outline: 'none',\r\n transform: 'translate(-50%, -50%)',\r\n resize: 'none',\r\n zIndex: '1000',\r\n left: `${e.pageX ? e.pageX : 100}px`,\r\n top: `${e.pageY ? e.pageY : 100}px`,\r\n overflow: 'hidden',\r\n })\r\n\r\n document.body.appendChild(input)\r\n autoResize()\r\n input.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter' && event.shiftKey) {\r\n autoResize()\r\n }\r\n })\r\n input.focus()\r\n\r\n const currentNode = node\r\n const handleDrawClick = () => {\r\n this.updateNodeText(input.value, currentNode)\r\n input.remove()\r\n this.mindMap.off('draw_click', handleDrawClick)\r\n }\r\n\r\n this.mindMap.on('draw_click', handleDrawClick)\r\n\r\n input.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter' && !event.shiftKey) {\r\n event.preventDefault()\r\n this.updateNodeText(input.value, currentNode)\r\n input.remove()\r\n this.mindMap.off('draw_click', handleDrawClick)\r\n }\r\n })\r\n }\r\n\r\n updateNodeText(text: string, node: any) {\r\n if (node && this.mindMap) {\r\n node.setText(text)\r\n const editWraps = document.querySelectorAll('.smm-node-edit-wrap')\r\n editWraps.forEach((editWrap) => {\r\n const input = editWrap.querySelector('input, textarea')\r\n if (input) {\r\n (input as HTMLInputElement | HTMLTextAreaElement).value = text\r\n }\r\n else {\r\n editWrap.textContent = text\r\n }\r\n })\r\n this.data = this.mindMap.getData({})\r\n this.domNode.setAttribute('data-mind-map', JSON.stringify(this.data))\r\n }\r\n }\r\n\r\n format(name: string, value: any) {\r\n }\r\n\r\n remove() {\r\n this.mindMap.destroy()\r\n if (this.nextPObserver) {\r\n this.nextPObserver.disconnect()\r\n this.nextPObserver = null\r\n }\r\n super.remove()\r\n }\r\n}\r\n\r\nexport default MindMapPlaceholderBlot\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"en-us.es.js","sources":["../../../../../src/modules/mind-map/i18n/en-us.ts"],"sourcesContent":["export const MIND_MAP_EN_US = {\n 'mindMap.controlPanel.zoomOutTitle': 'Zoom Out View',\n 'mindMap.controlPanel.zoomInTitle': 'Zoom In View',\n 'mindMap.controlPanel.fitTitle': 'Fit View Size',\n 'mindMap.controlPanel.backTitle': 'Step Back',\n 'mindMap.controlPanel.forwardTitle': 'Step Forward',\n 'mindMap.controlPanel.inserChildNodeTitle': 'Insert Child Node',\n 'mindMap.controlPanel.inserNodeTitle': 'Insert Sibling Node',\n 'mindMap.controlPanel.inserParentNodeTitle': 'Insert Parent Node',\n 'mindMap.controlPanel.removeNodeTitle': 'Delete Current Node',\n 'mindMap.controlPanel.setLayoutTitle': 'Set Layout',\n 'mindMap.layout.logicalStructure': 'Logical Structure',\n 'mindMap.layout.catalogOrganization': 'Catalog Organization',\n 'mindMap.layout.mindMap': 'Mind Map',\n 'mindMap.layout.organizationStructure': 'Organization Structure',\n 'mindMap.layout.timeline': 'Timeline',\n 'mindMap.layout.fishbone': 'Fishbone Diagram',\n 'mindMap.contextMenu.copy': 'Copy',\n 'mindMap.contextMenu.cut': 'Cut',\n 'mindMap.contextMenu.paste': 'Paste',\n 'mindMap.contextMenu.deleteContent': 'Delete',\n 'mindMap.controlPanel.panelStatusTitle': 'Panel Status',\n 'mindMap.controlPanel.screenTypeTitle': 'Screen Type',\n 'mindMap.controlPanel.insertIconTitle': 'Insert Icon',\n}\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,uCAAuC;AAAA,EACvC,6CAA6C;AAAA,EAC7C,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,mCAAmC;AAAA,EACnC,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,wCAAwC;AAAA,EACxC,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,wCAAwC;AAAA,EACxC,wCAAwC;AAC1C;"}
1
+ {"version":3,"file":"en-us.es.js","sources":["../../../../../src/modules/mind-map/i18n/en-us.ts"],"sourcesContent":["export const MIND_MAP_EN_US = {\r\n 'mindMap.controlPanel.zoomOutTitle': 'Zoom Out View',\r\n 'mindMap.controlPanel.zoomInTitle': 'Zoom In View',\r\n 'mindMap.controlPanel.fitTitle': 'Fit View Size',\r\n 'mindMap.controlPanel.backTitle': 'Step Back',\r\n 'mindMap.controlPanel.forwardTitle': 'Step Forward',\r\n 'mindMap.controlPanel.inserChildNodeTitle': 'Insert Child Node',\r\n 'mindMap.controlPanel.inserNodeTitle': 'Insert Sibling Node',\r\n 'mindMap.controlPanel.inserParentNodeTitle': 'Insert Parent Node',\r\n 'mindMap.controlPanel.removeNodeTitle': 'Delete Current Node',\r\n 'mindMap.controlPanel.setLayoutTitle': 'Set Layout',\r\n 'mindMap.layout.logicalStructure': 'Logical Structure',\r\n 'mindMap.layout.catalogOrganization': 'Catalog Organization',\r\n 'mindMap.layout.mindMap': 'Mind Map',\r\n 'mindMap.layout.organizationStructure': 'Organization Structure',\r\n 'mindMap.layout.timeline': 'Timeline',\r\n 'mindMap.layout.fishbone': 'Fishbone Diagram',\r\n 'mindMap.contextMenu.copy': 'Copy',\r\n 'mindMap.contextMenu.cut': 'Cut',\r\n 'mindMap.contextMenu.paste': 'Paste',\r\n 'mindMap.contextMenu.deleteContent': 'Delete',\r\n 'mindMap.controlPanel.panelStatusTitle': 'Panel Status',\r\n 'mindMap.controlPanel.screenTypeTitle': 'Screen Type',\r\n 'mindMap.controlPanel.insertIconTitle': 'Insert Icon',\r\n}\r\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,uCAAuC;AAAA,EACvC,6CAA6C;AAAA,EAC7C,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,mCAAmC;AAAA,EACnC,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,wCAAwC;AAAA,EACxC,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,wCAAwC;AAAA,EACxC,wCAAwC;AAC1C;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../../../src/modules/mind-map/i18n/index.ts"],"sourcesContent":["import { MIND_MAP_EN_US } from './en-us'\nimport { MIND_MAP_ZH_CN } from './zh-cn'\n\nexport function registerMindMapI18N(I18N: any) {\n I18N.register({\n 'en-US': MIND_MAP_EN_US,\n 'zh-CN': MIND_MAP_ZH_CN,\n }, false)\n}\n"],"names":[],"mappings":";;AAGO,SAAS,oBAAoB,MAAW;AAC7C,OAAK,SAAS;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,GACR,KAAK;AACV;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../src/modules/mind-map/i18n/index.ts"],"sourcesContent":["import { MIND_MAP_EN_US } from './en-us'\r\nimport { MIND_MAP_ZH_CN } from './zh-cn'\r\n\r\nexport function registerMindMapI18N(I18N: any) {\r\n I18N.register({\r\n 'en-US': MIND_MAP_EN_US,\r\n 'zh-CN': MIND_MAP_ZH_CN,\r\n }, false)\r\n}\r\n"],"names":[],"mappings":";;AAGO,SAAS,oBAAoB,MAAW;AAC7C,OAAK,SAAS;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,GACR,KAAK;AACV;"}
@@ -1 +1 @@
1
- {"version":3,"file":"zh-cn.es.js","sources":["../../../../../src/modules/mind-map/i18n/zh-cn.ts"],"sourcesContent":["export const MIND_MAP_ZH_CN = {\n 'mindMap.controlPanel.zoomOutTitle': '缩小视图',\n 'mindMap.controlPanel.zoomInTitle': '放大视图',\n 'mindMap.controlPanel.fitTitle': '适应视图大小',\n 'mindMap.controlPanel.backTitle': '后退一步',\n 'mindMap.controlPanel.forwardTitle': '前进一步',\n 'mindMap.controlPanel.inserChildNodeTitle': '插入子节点',\n 'mindMap.controlPanel.inserNodeTitle': '插入同级节点',\n 'mindMap.controlPanel.inserParentNodeTitle': '插入父节点',\n 'mindMap.controlPanel.removeNodeTitle': '删除当前节点',\n 'mindMap.controlPanel.setLayoutTitle': '设置布局',\n 'mindMap.layout.logicalStructure': '逻辑结构',\n 'mindMap.layout.catalogOrganization': '目录组织',\n 'mindMap.layout.mindMap': '思维导图',\n 'mindMap.layout.organizationStructure': '组织结构',\n 'mindMap.layout.timeline': '时间轴',\n 'mindMap.layout.fishbone': '鱼骨图',\n 'mindMap.contextMenu.copy': '复制',\n 'mindMap.contextMenu.cut': '剪切',\n 'mindMap.contextMenu.paste': '粘贴',\n 'mindMap.contextMenu.deleteContent': '删除',\n 'mindMap.controlPanel.panelStatusTitle': '面板状态',\n 'mindMap.controlPanel.screenTypeTitle': '屏幕类型',\n 'mindMap.controlPanel.insertIconTitle': '插入图标',\n}\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,uCAAuC;AAAA,EACvC,6CAA6C;AAAA,EAC7C,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,mCAAmC;AAAA,EACnC,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,wCAAwC;AAAA,EACxC,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,wCAAwC;AAAA,EACxC,wCAAwC;AAC1C;"}
1
+ {"version":3,"file":"zh-cn.es.js","sources":["../../../../../src/modules/mind-map/i18n/zh-cn.ts"],"sourcesContent":["export const MIND_MAP_ZH_CN = {\r\n 'mindMap.controlPanel.zoomOutTitle': '缩小视图',\r\n 'mindMap.controlPanel.zoomInTitle': '放大视图',\r\n 'mindMap.controlPanel.fitTitle': '适应视图大小',\r\n 'mindMap.controlPanel.backTitle': '后退一步',\r\n 'mindMap.controlPanel.forwardTitle': '前进一步',\r\n 'mindMap.controlPanel.inserChildNodeTitle': '插入子节点',\r\n 'mindMap.controlPanel.inserNodeTitle': '插入同级节点',\r\n 'mindMap.controlPanel.inserParentNodeTitle': '插入父节点',\r\n 'mindMap.controlPanel.removeNodeTitle': '删除当前节点',\r\n 'mindMap.controlPanel.setLayoutTitle': '设置布局',\r\n 'mindMap.layout.logicalStructure': '逻辑结构',\r\n 'mindMap.layout.catalogOrganization': '目录组织',\r\n 'mindMap.layout.mindMap': '思维导图',\r\n 'mindMap.layout.organizationStructure': '组织结构',\r\n 'mindMap.layout.timeline': '时间轴',\r\n 'mindMap.layout.fishbone': '鱼骨图',\r\n 'mindMap.contextMenu.copy': '复制',\r\n 'mindMap.contextMenu.cut': '剪切',\r\n 'mindMap.contextMenu.paste': '粘贴',\r\n 'mindMap.contextMenu.deleteContent': '删除',\r\n 'mindMap.controlPanel.panelStatusTitle': '面板状态',\r\n 'mindMap.controlPanel.screenTypeTitle': '屏幕类型',\r\n 'mindMap.controlPanel.insertIconTitle': '插入图标',\r\n}\r\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,uCAAuC;AAAA,EACvC,6CAA6C;AAAA,EAC7C,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,mCAAmC;AAAA,EACnC,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,wCAAwC;AAAA,EACxC,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,wCAAwC;AAAA,EACxC,wCAAwC;AAC1C;"}