@opentiny/fluent-editor 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (706) hide show
  1. package/README.md +88 -105
  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 +0 -2
  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 +2 -2
  12. package/es/config/index.es.js.map +1 -1
  13. package/es/config/types/index.es.js +0 -20
  14. package/es/config/types/index.es.js.map +1 -1
  15. package/es/core/fluent-editor.es.js +4 -1
  16. package/es/core/fluent-editor.es.js.map +1 -1
  17. package/es/fluent-editor.es.js +33 -22
  18. package/es/fluent-editor.es.js.map +1 -1
  19. package/es/formats/emoji.es.js +14 -0
  20. package/es/formats/emoji.es.js.map +1 -0
  21. package/es/formats/index.es.js +11 -0
  22. package/es/formats/index.es.js.map +1 -0
  23. package/es/formats/soft-break.es.js +12 -5
  24. package/es/formats/soft-break.es.js.map +1 -1
  25. package/es/formats/strike.es.js +8 -5
  26. package/es/formats/strike.es.js.map +1 -1
  27. package/es/formats/video.es.js +14 -10
  28. package/es/formats/video.es.js.map +1 -1
  29. package/es/index.es.js +96 -31
  30. package/es/index.es.js.map +1 -1
  31. package/es/modules/ai/constants.es.js +50 -0
  32. package/es/modules/ai/constants.es.js.map +1 -0
  33. package/es/modules/ai/icons.es.js +319 -0
  34. package/es/modules/ai/icons.es.js.map +1 -0
  35. package/es/modules/ai/index.es.js +670 -0
  36. package/es/modules/ai/index.es.js.map +1 -0
  37. package/es/modules/collaborative-editing/awareness/awareness.es.js +93 -0
  38. package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -0
  39. package/es/modules/collaborative-editing/awareness/index.es.js +8 -0
  40. package/es/modules/{emoji/emoji-list → collaborative-editing/awareness}/index.es.js.map +1 -1
  41. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +12 -0
  42. package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -0
  43. package/es/modules/collaborative-editing/collaborative-editing.es.js +105 -0
  44. package/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -0
  45. package/es/modules/collaborative-editing/index.es.js +6 -0
  46. package/es/modules/collaborative-editing/index.es.js.map +1 -0
  47. package/es/modules/collaborative-editing/module.es.js +35 -0
  48. package/es/modules/collaborative-editing/module.es.js.map +1 -0
  49. package/es/modules/collaborative-editing/provider/providerRegistry.es.js +28 -0
  50. package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -0
  51. package/es/modules/collaborative-editing/provider/webrtc.es.js +99 -0
  52. package/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -0
  53. package/es/modules/collaborative-editing/provider/websocket.es.js +111 -0
  54. package/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -0
  55. package/es/modules/collaborative-editing/types.es.js +2 -0
  56. package/es/modules/collaborative-editing/types.es.js.map +1 -0
  57. package/es/modules/counter.es.js +8 -3
  58. package/es/modules/counter.es.js.map +1 -1
  59. package/es/modules/custom-clipboard.es.js +20 -22
  60. package/es/modules/custom-clipboard.es.js.map +1 -1
  61. package/es/modules/custom-image/actions/action.es.js +19 -0
  62. package/es/modules/custom-image/actions/action.es.js.map +1 -0
  63. package/es/modules/custom-image/actions/{CustomResizeAction.es.js → custom-resize-action.es.js} +24 -11
  64. package/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -0
  65. package/es/modules/custom-image/actions/{DeleteAction.es.js → delete-action.es.js} +8 -5
  66. package/es/modules/custom-image/actions/delete-action.es.js.map +1 -0
  67. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js +137 -0
  68. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +1 -0
  69. package/es/modules/custom-image/actions/index.es.js +18 -0
  70. package/es/modules/custom-image/actions/index.es.js.map +1 -0
  71. package/es/modules/custom-image/actions/toolbar-action.es.js +33 -0
  72. package/es/modules/custom-image/actions/toolbar-action.es.js.map +1 -0
  73. package/es/modules/custom-image/actions/toolbar.es.js +110 -0
  74. package/es/modules/custom-image/actions/toolbar.es.js.map +1 -0
  75. package/es/modules/custom-image/{BlotFormatter.es.js → blot-formatter.es.js} +27 -49
  76. package/es/modules/custom-image/blot-formatter.es.js.map +1 -0
  77. package/es/modules/custom-image/image.es.js +39 -7
  78. package/es/modules/custom-image/image.es.js.map +1 -1
  79. package/es/modules/custom-image/index.es.js +9 -0
  80. package/es/modules/custom-image/index.es.js.map +1 -0
  81. package/es/modules/custom-image/options.es.js +88 -0
  82. package/es/modules/custom-image/options.es.js.map +1 -0
  83. package/es/modules/custom-image/specs/blot-spec.es.js +33 -0
  84. package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -0
  85. package/es/modules/custom-image/specs/{CustomImageSpec.es.js → custom-image-spec.es.js} +13 -14
  86. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -0
  87. package/es/modules/custom-image/specs/image-spec.es.js +32 -0
  88. package/es/modules/custom-image/specs/image-spec.es.js.map +1 -0
  89. package/es/modules/custom-image/specs/index.es.js +9 -0
  90. package/es/modules/custom-image/specs/index.es.js.map +1 -0
  91. package/es/modules/custom-uploader.es.js +7 -5
  92. package/es/modules/custom-uploader.es.js.map +1 -1
  93. package/es/modules/divider.es.js +8 -7
  94. package/es/modules/divider.es.js.map +1 -1
  95. package/es/modules/emoji.es.js +167 -0
  96. package/es/modules/emoji.es.js.map +1 -0
  97. package/es/modules/file/formats/file.es.js +10 -8
  98. package/es/modules/file/formats/file.es.js.map +1 -1
  99. package/es/modules/file/index.es.js +6 -28
  100. package/es/modules/file/index.es.js.map +1 -1
  101. package/es/modules/file/modules/file-bar.es.js +11 -3
  102. package/es/modules/file/modules/file-bar.es.js.map +1 -1
  103. package/es/modules/file/modules/file-module.es.js +35 -0
  104. package/es/modules/file/modules/file-module.es.js.map +1 -0
  105. package/es/modules/flow-chart/config-utils.es.js +102 -0
  106. package/es/modules/flow-chart/config-utils.es.js.map +1 -0
  107. package/es/modules/flow-chart/formats/flow-chart-blot.es.js +369 -0
  108. package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -0
  109. package/es/modules/flow-chart/i18n/en-us.es.js +30 -0
  110. package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -0
  111. package/es/modules/flow-chart/i18n/index.es.js +12 -0
  112. package/es/modules/flow-chart/i18n/index.es.js.map +1 -0
  113. package/es/modules/flow-chart/i18n/zh-cn.es.js +30 -0
  114. package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -0
  115. package/es/modules/flow-chart/icons.es.js +27 -0
  116. package/es/modules/flow-chart/icons.es.js.map +1 -0
  117. package/es/modules/flow-chart/index.es.js +45 -0
  118. package/es/modules/flow-chart/index.es.js.map +1 -0
  119. package/es/modules/flow-chart/modules/context-menu.es.js +184 -0
  120. package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -0
  121. package/es/modules/flow-chart/modules/control-panel.es.js +286 -0
  122. package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -0
  123. package/es/modules/flow-chart/modules/custom-resize-action.es.js +150 -0
  124. package/es/modules/flow-chart/modules/custom-resize-action.es.js.map +1 -0
  125. package/es/modules/flow-chart/style/flow-chart.css +185 -0
  126. package/es/modules/i18n.es.js +6 -3
  127. package/es/modules/i18n.es.js.map +1 -1
  128. package/es/modules/index.es.js +31 -0
  129. package/es/modules/index.es.js.map +1 -0
  130. package/es/modules/link/formats/link.es.js +14 -10
  131. package/es/modules/link/formats/link.es.js.map +1 -1
  132. package/es/modules/link/index.es.js +4 -12
  133. package/es/modules/link/index.es.js.map +1 -1
  134. package/es/modules/link/modules/tooltip.es.js +28 -19
  135. package/es/modules/link/modules/tooltip.es.js.map +1 -1
  136. package/es/modules/mathlive/formats.es.js +10 -7
  137. package/es/modules/mathlive/formats.es.js.map +1 -1
  138. package/es/modules/mathlive/index.es.js +6 -30
  139. package/es/modules/mathlive/index.es.js.map +1 -1
  140. package/es/modules/mathlive/module.es.js +40 -0
  141. package/es/modules/mathlive/module.es.js.map +1 -0
  142. package/es/modules/mathlive/tooltip.es.js +9 -5
  143. package/es/modules/mathlive/tooltip.es.js.map +1 -1
  144. package/es/modules/mention/constants.es.js.map +1 -1
  145. package/es/modules/mention/index.es.js +7 -0
  146. package/es/modules/mention/index.es.js.map +1 -0
  147. package/es/modules/mention/{MentionLink.es.js → mention-link.es.js} +14 -6
  148. package/es/modules/mention/mention-link.es.js.map +1 -0
  149. package/es/modules/mention/{Mention.es.js → mention.es.js} +28 -20
  150. package/es/modules/mention/mention.es.js.map +1 -0
  151. package/es/modules/mind-map/config-utils.es.js +108 -0
  152. package/es/modules/mind-map/config-utils.es.js.map +1 -0
  153. package/es/modules/mind-map/formats/mind-map-blot.es.js +356 -0
  154. package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -0
  155. package/es/modules/mind-map/i18n/en-us.es.js +29 -0
  156. package/es/modules/mind-map/i18n/en-us.es.js.map +1 -0
  157. package/es/modules/mind-map/i18n/index.es.js +12 -0
  158. package/es/modules/mind-map/i18n/index.es.js.map +1 -0
  159. package/es/modules/mind-map/i18n/zh-cn.es.js +29 -0
  160. package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -0
  161. package/es/modules/mind-map/icons.es.js +45 -0
  162. package/es/modules/mind-map/icons.es.js.map +1 -0
  163. package/es/modules/mind-map/index.es.js +56 -0
  164. package/es/modules/mind-map/index.es.js.map +1 -0
  165. package/es/modules/mind-map/modules/context-menu.es.js +128 -0
  166. package/es/modules/mind-map/modules/context-menu.es.js.map +1 -0
  167. package/es/modules/mind-map/modules/control-panel.es.js +424 -0
  168. package/es/modules/mind-map/modules/control-panel.es.js.map +1 -0
  169. package/es/modules/mind-map/modules/custom-resize-action.es.js +161 -0
  170. package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -0
  171. package/es/modules/mind-map/style/mind-map.css +224 -0
  172. package/es/modules/shortcut-key/index.es.js +16 -0
  173. package/es/modules/shortcut-key/index.es.js.map +1 -1
  174. package/es/modules/syntax.es.js +4 -0
  175. package/es/modules/syntax.es.js.map +1 -1
  176. package/es/modules/table-up/index.es.js +16 -6
  177. package/es/modules/table-up/index.es.js.map +1 -1
  178. package/es/modules/toolbar/better-picker.es.js +5 -0
  179. package/es/modules/toolbar/better-picker.es.js.map +1 -1
  180. package/es/modules/toolbar/better-toolbar.es.js +138 -0
  181. package/es/modules/toolbar/better-toolbar.es.js.map +1 -0
  182. package/es/modules/toolbar/index.es.js +5 -135
  183. package/es/modules/toolbar/index.es.js.map +1 -1
  184. package/es/modules/toolbar/toolbar-tip.es.js.map +1 -1
  185. package/es/themes/snow.es.js +18 -10
  186. package/es/themes/snow.es.js.map +1 -1
  187. package/es/tools/format-painter.es.js +8 -2
  188. package/es/tools/format-painter.es.js.map +1 -1
  189. package/es/tools/fullscreen.es.js.map +1 -1
  190. package/es/tools/screenshot.es.js.map +1 -1
  191. package/es/ui/icons.config.es.js +57 -0
  192. package/es/ui/icons.config.es.js.map +1 -1
  193. package/es/ui/icons.es.js +5 -2
  194. package/es/ui/icons.es.js.map +1 -1
  195. package/es/utils/debounce.es.js.map +1 -1
  196. package/es/utils/image.es.js.map +1 -1
  197. package/es/utils/is.es.js.map +1 -1
  198. package/es/utils/method.es.js.map +1 -1
  199. package/es/utils/scroll-lock.es.js.map +1 -1
  200. package/lib/attributors/line-height.cjs.js.map +1 -1
  201. package/lib/config/base64-image.cjs.js.map +1 -1
  202. package/lib/config/editor.config.cjs.js.map +1 -1
  203. package/lib/config/editor.utils.cjs.js +0 -2
  204. package/lib/config/editor.utils.cjs.js.map +1 -1
  205. package/lib/config/i18n/en-us.cjs.js +2 -0
  206. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  207. package/lib/config/i18n/zh-cn.cjs.js +2 -0
  208. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  209. package/lib/config/index.cjs.js +1 -1
  210. package/lib/config/index.cjs.js.map +1 -1
  211. package/lib/config/types/index.cjs.js +0 -20
  212. package/lib/config/types/index.cjs.js.map +1 -1
  213. package/lib/core/fluent-editor.cjs.js +4 -1
  214. package/lib/core/fluent-editor.cjs.js.map +1 -1
  215. package/lib/fluent-editor.cjs.js +41 -30
  216. package/lib/fluent-editor.cjs.js.map +1 -1
  217. package/lib/formats/emoji.cjs.js +14 -0
  218. package/lib/formats/emoji.cjs.js.map +1 -0
  219. package/lib/formats/index.cjs.js +11 -0
  220. package/lib/formats/index.cjs.js.map +1 -0
  221. package/lib/formats/soft-break.cjs.js +13 -6
  222. package/lib/formats/soft-break.cjs.js.map +1 -1
  223. package/lib/formats/strike.cjs.js +9 -6
  224. package/lib/formats/strike.cjs.js.map +1 -1
  225. package/lib/formats/video.cjs.js +15 -11
  226. package/lib/formats/video.cjs.js.map +1 -1
  227. package/lib/index.cjs.js +118 -35
  228. package/lib/index.cjs.js.map +1 -1
  229. package/lib/modules/ai/constants.cjs.js +50 -0
  230. package/lib/modules/ai/constants.cjs.js.map +1 -0
  231. package/lib/modules/ai/icons.cjs.js +319 -0
  232. package/lib/modules/ai/icons.cjs.js.map +1 -0
  233. package/lib/modules/ai/index.cjs.js +670 -0
  234. package/lib/modules/ai/index.cjs.js.map +1 -0
  235. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js +110 -0
  236. package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -0
  237. package/lib/modules/collaborative-editing/awareness/index.cjs.js +8 -0
  238. package/lib/modules/collaborative-editing/awareness/index.cjs.js.map +1 -0
  239. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +12 -0
  240. package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -0
  241. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js +122 -0
  242. package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -0
  243. package/lib/modules/collaborative-editing/index.cjs.js +6 -0
  244. package/lib/modules/{emoji/emoji-list → collaborative-editing}/index.cjs.js.map +1 -1
  245. package/lib/modules/collaborative-editing/module.cjs.js +35 -0
  246. package/lib/modules/collaborative-editing/module.cjs.js.map +1 -0
  247. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js +28 -0
  248. package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -0
  249. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js +116 -0
  250. package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -0
  251. package/lib/modules/collaborative-editing/provider/websocket.cjs.js +128 -0
  252. package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -0
  253. package/lib/modules/collaborative-editing/types.cjs.js +2 -0
  254. package/lib/modules/collaborative-editing/types.cjs.js.map +1 -0
  255. package/lib/modules/counter.cjs.js +8 -3
  256. package/lib/modules/counter.cjs.js.map +1 -1
  257. package/lib/modules/custom-clipboard.cjs.js +21 -23
  258. package/lib/modules/custom-clipboard.cjs.js.map +1 -1
  259. package/lib/modules/custom-image/actions/action.cjs.js +19 -0
  260. package/lib/modules/custom-image/actions/action.cjs.js.map +1 -0
  261. package/lib/modules/custom-image/actions/{CustomResizeAction.cjs.js → custom-resize-action.cjs.js} +26 -13
  262. package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -0
  263. package/lib/modules/custom-image/actions/{DeleteAction.cjs.js → delete-action.cjs.js} +10 -7
  264. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -0
  265. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js +137 -0
  266. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +1 -0
  267. package/lib/modules/custom-image/actions/index.cjs.js +18 -0
  268. package/lib/modules/custom-image/actions/index.cjs.js.map +1 -0
  269. package/lib/modules/custom-image/actions/toolbar-action.cjs.js +33 -0
  270. package/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +1 -0
  271. package/lib/modules/custom-image/actions/toolbar.cjs.js +110 -0
  272. package/lib/modules/custom-image/actions/toolbar.cjs.js.map +1 -0
  273. package/lib/modules/custom-image/{BlotFormatter.cjs.js → blot-formatter.cjs.js} +28 -50
  274. package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -0
  275. package/lib/modules/custom-image/image.cjs.js +40 -8
  276. package/lib/modules/custom-image/image.cjs.js.map +1 -1
  277. package/lib/modules/custom-image/index.cjs.js +9 -0
  278. package/lib/modules/custom-image/index.cjs.js.map +1 -0
  279. package/lib/modules/custom-image/options.cjs.js +88 -0
  280. package/lib/modules/custom-image/options.cjs.js.map +1 -0
  281. package/lib/modules/custom-image/specs/blot-spec.cjs.js +33 -0
  282. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -0
  283. package/lib/modules/custom-image/specs/{CustomImageSpec.cjs.js → custom-image-spec.cjs.js} +14 -15
  284. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -0
  285. package/lib/modules/custom-image/specs/image-spec.cjs.js +32 -0
  286. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -0
  287. package/lib/modules/custom-image/specs/index.cjs.js +9 -0
  288. package/lib/modules/custom-image/specs/index.cjs.js.map +1 -0
  289. package/lib/modules/custom-uploader.cjs.js +7 -5
  290. package/lib/modules/custom-uploader.cjs.js.map +1 -1
  291. package/lib/modules/divider.cjs.js +9 -8
  292. package/lib/modules/divider.cjs.js.map +1 -1
  293. package/lib/modules/emoji.cjs.js +167 -0
  294. package/lib/modules/emoji.cjs.js.map +1 -0
  295. package/lib/modules/file/formats/file.cjs.js +11 -9
  296. package/lib/modules/file/formats/file.cjs.js.map +1 -1
  297. package/lib/modules/file/index.cjs.js +5 -27
  298. package/lib/modules/file/index.cjs.js.map +1 -1
  299. package/lib/modules/file/modules/file-bar.cjs.js +12 -4
  300. package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
  301. package/lib/modules/file/modules/file-module.cjs.js +35 -0
  302. package/lib/modules/file/modules/file-module.cjs.js.map +1 -0
  303. package/lib/modules/flow-chart/config-utils.cjs.js +102 -0
  304. package/lib/modules/flow-chart/config-utils.cjs.js.map +1 -0
  305. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js +369 -0
  306. package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -0
  307. package/lib/modules/flow-chart/i18n/en-us.cjs.js +30 -0
  308. package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -0
  309. package/lib/modules/flow-chart/i18n/index.cjs.js +12 -0
  310. package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -0
  311. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js +30 -0
  312. package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -0
  313. package/lib/modules/flow-chart/icons.cjs.js +27 -0
  314. package/lib/modules/flow-chart/icons.cjs.js.map +1 -0
  315. package/lib/modules/flow-chart/index.cjs.js +45 -0
  316. package/lib/modules/flow-chart/index.cjs.js.map +1 -0
  317. package/lib/modules/flow-chart/modules/context-menu.cjs.js +184 -0
  318. package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -0
  319. package/lib/modules/flow-chart/modules/control-panel.cjs.js +286 -0
  320. package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -0
  321. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js +150 -0
  322. package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js.map +1 -0
  323. package/lib/modules/flow-chart/style/flow-chart.css +185 -0
  324. package/lib/modules/i18n.cjs.js +6 -3
  325. package/lib/modules/i18n.cjs.js.map +1 -1
  326. package/lib/modules/index.cjs.js +31 -0
  327. package/lib/modules/index.cjs.js.map +1 -0
  328. package/lib/modules/link/formats/link.cjs.js +15 -11
  329. package/lib/modules/link/formats/link.cjs.js.map +1 -1
  330. package/lib/modules/link/index.cjs.js +4 -12
  331. package/lib/modules/link/index.cjs.js.map +1 -1
  332. package/lib/modules/link/modules/tooltip.cjs.js +28 -19
  333. package/lib/modules/link/modules/tooltip.cjs.js.map +1 -1
  334. package/lib/modules/mathlive/formats.cjs.js +11 -8
  335. package/lib/modules/mathlive/formats.cjs.js.map +1 -1
  336. package/lib/modules/mathlive/index.cjs.js +5 -29
  337. package/lib/modules/mathlive/index.cjs.js.map +1 -1
  338. package/lib/modules/mathlive/module.cjs.js +40 -0
  339. package/lib/modules/mathlive/module.cjs.js.map +1 -0
  340. package/lib/modules/mathlive/tooltip.cjs.js +10 -6
  341. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
  342. package/lib/modules/mention/constants.cjs.js.map +1 -1
  343. package/lib/modules/mention/index.cjs.js +7 -0
  344. package/lib/modules/mention/index.cjs.js.map +1 -0
  345. package/lib/modules/mention/{MentionLink.cjs.js → mention-link.cjs.js} +15 -7
  346. package/lib/modules/mention/mention-link.cjs.js.map +1 -0
  347. package/lib/modules/mention/{Mention.cjs.js → mention.cjs.js} +30 -22
  348. package/lib/modules/mention/mention.cjs.js.map +1 -0
  349. package/lib/modules/mind-map/config-utils.cjs.js +108 -0
  350. package/lib/modules/mind-map/config-utils.cjs.js.map +1 -0
  351. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js +356 -0
  352. package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -0
  353. package/lib/modules/mind-map/i18n/en-us.cjs.js +29 -0
  354. package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -0
  355. package/lib/modules/mind-map/i18n/index.cjs.js +12 -0
  356. package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -0
  357. package/lib/modules/mind-map/i18n/zh-cn.cjs.js +29 -0
  358. package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -0
  359. package/lib/modules/mind-map/icons.cjs.js +45 -0
  360. package/lib/modules/mind-map/icons.cjs.js.map +1 -0
  361. package/lib/modules/mind-map/index.cjs.js +56 -0
  362. package/lib/modules/mind-map/index.cjs.js.map +1 -0
  363. package/lib/modules/mind-map/modules/context-menu.cjs.js +128 -0
  364. package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -0
  365. package/lib/modules/mind-map/modules/control-panel.cjs.js +424 -0
  366. package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -0
  367. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js +161 -0
  368. package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -0
  369. package/lib/modules/mind-map/style/mind-map.css +224 -0
  370. package/lib/modules/shortcut-key/index.cjs.js +16 -0
  371. package/lib/modules/shortcut-key/index.cjs.js.map +1 -1
  372. package/lib/modules/syntax.cjs.js +4 -0
  373. package/lib/modules/syntax.cjs.js.map +1 -1
  374. package/lib/modules/table-up/index.cjs.js +16 -6
  375. package/lib/modules/table-up/index.cjs.js.map +1 -1
  376. package/lib/modules/toolbar/better-picker.cjs.js +5 -0
  377. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
  378. package/lib/modules/toolbar/better-toolbar.cjs.js +138 -0
  379. package/lib/modules/toolbar/better-toolbar.cjs.js.map +1 -0
  380. package/lib/modules/toolbar/index.cjs.js +6 -136
  381. package/lib/modules/toolbar/index.cjs.js.map +1 -1
  382. package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -1
  383. package/lib/themes/snow.cjs.js +19 -11
  384. package/lib/themes/snow.cjs.js.map +1 -1
  385. package/lib/tools/format-painter.cjs.js +8 -2
  386. package/lib/tools/format-painter.cjs.js.map +1 -1
  387. package/lib/tools/fullscreen.cjs.js.map +1 -1
  388. package/lib/tools/screenshot.cjs.js.map +1 -1
  389. package/lib/ui/icons.cjs.js +4 -1
  390. package/lib/ui/icons.cjs.js.map +1 -1
  391. package/lib/ui/icons.config.cjs.js +57 -0
  392. package/lib/ui/icons.config.cjs.js.map +1 -1
  393. package/lib/utils/debounce.cjs.js.map +1 -1
  394. package/lib/utils/image.cjs.js.map +1 -1
  395. package/lib/utils/is.cjs.js.map +1 -1
  396. package/lib/utils/method.cjs.js.map +1 -1
  397. package/lib/utils/scroll-lock.cjs.js.map +1 -1
  398. package/package.json +72 -59
  399. package/style.css +2357 -2234
  400. package/types/attributors/font-size.d.ts +1 -1
  401. package/types/attributors/font-style.d.ts +1 -1
  402. package/types/attributors/index.d.ts +4 -4
  403. package/types/attributors/line-height.d.ts +1 -1
  404. package/types/attributors/text-indent.d.ts +1 -1
  405. package/types/config/base64-image.d.ts +2 -2
  406. package/types/config/editor.config.d.ts +11 -11
  407. package/types/config/editor.utils.d.ts +40 -41
  408. package/types/config/i18n/en-us.d.ts +125 -123
  409. package/types/config/i18n/zh-cn.d.ts +125 -123
  410. package/types/config/index.d.ts +7 -6
  411. package/types/config/types/editor-config.interface.d.ts +11 -16
  412. package/types/config/types/editor-modules.interface.d.ts +44 -32
  413. package/types/config/types/index.d.ts +3 -23
  414. package/types/config/types/type.d.ts +2 -6
  415. package/types/core/fluent-editor.d.ts +10 -12
  416. package/types/fluent-editor.d.ts +1 -2
  417. package/types/formats/emoji.d.ts +8 -0
  418. package/types/formats/index.d.ts +4 -0
  419. package/types/formats/soft-break.d.ts +12 -14
  420. package/types/formats/strike.d.ts +8 -7
  421. package/types/formats/video.d.ts +13 -16
  422. package/types/index.d.ts +7 -7
  423. package/types/modules/ai/constants.d.ts +30 -0
  424. package/types/modules/ai/icons.d.ts +21 -0
  425. package/types/modules/ai/index.d.ts +96 -0
  426. package/types/modules/ai/types.d.ts +16 -0
  427. package/types/modules/collaborative-editing/awareness/awareness.d.ts +28 -0
  428. package/types/modules/collaborative-editing/awareness/index.d.ts +2 -0
  429. package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +2 -0
  430. package/types/modules/collaborative-editing/collaborative-editing.d.ts +24 -0
  431. package/types/modules/collaborative-editing/index.d.ts +2 -0
  432. package/types/modules/collaborative-editing/module.d.ts +11 -0
  433. package/types/modules/collaborative-editing/provider/index.d.ts +3 -0
  434. package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -0
  435. package/types/modules/collaborative-editing/provider/webrtc.d.ts +36 -0
  436. package/types/modules/collaborative-editing/provider/websocket.d.ts +40 -0
  437. package/types/modules/collaborative-editing/types.d.ts +37 -0
  438. package/types/modules/counter.d.ts +22 -16
  439. package/types/modules/custom-clipboard.d.ts +23 -27
  440. package/types/modules/custom-image/actions/action.d.ts +8 -0
  441. package/types/modules/custom-image/actions/{CustomResizeAction.d.ts → custom-resize-action.d.ts} +23 -24
  442. package/types/modules/custom-image/actions/delete-action.d.ts +6 -0
  443. package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +16 -0
  444. package/types/modules/custom-image/actions/index.d.ts +6 -0
  445. package/types/modules/custom-image/actions/toolbar-action.d.ts +11 -0
  446. package/types/modules/custom-image/actions/toolbar.d.ts +19 -0
  447. package/types/modules/custom-image/blot-formatter.d.ts +23 -0
  448. package/types/modules/custom-image/image.d.ts +27 -24
  449. package/types/modules/custom-image/index.d.ts +4 -0
  450. package/types/modules/custom-image/options.d.ts +47 -0
  451. package/types/modules/custom-image/specs/blot-spec.d.ts +12 -0
  452. package/types/modules/custom-image/specs/{CustomImageSpec.d.ts → custom-image-spec.d.ts} +17 -21
  453. package/types/modules/custom-image/specs/image-spec.d.ts +8 -0
  454. package/types/modules/custom-image/specs/index.d.ts +3 -0
  455. package/types/modules/custom-uploader.d.ts +40 -0
  456. package/types/modules/divider.d.ts +8 -7
  457. package/types/modules/emoji.d.ts +39 -0
  458. package/types/modules/file/formats/file.d.ts +17 -18
  459. package/types/modules/file/index.d.ts +3 -11
  460. package/types/modules/file/modules/file-bar.d.ts +14 -14
  461. package/types/modules/file/modules/file-module.d.ts +9 -0
  462. package/types/modules/flow-chart/config-utils.d.ts +10 -0
  463. package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +43 -0
  464. package/types/modules/flow-chart/i18n/en-us.d.ts +26 -0
  465. package/types/modules/flow-chart/i18n/index.d.ts +1 -0
  466. package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -0
  467. package/types/modules/flow-chart/icons.d.ts +12 -0
  468. package/types/modules/flow-chart/index.d.ts +10 -0
  469. package/types/modules/flow-chart/modules/context-menu.d.ts +3 -0
  470. package/types/modules/flow-chart/modules/control-panel.d.ts +3 -0
  471. package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -0
  472. package/types/modules/flow-chart/options.d.ts +29 -0
  473. package/types/modules/i18n.d.ts +13 -15
  474. package/types/modules/index.d.ts +18 -0
  475. package/types/modules/link/formats/link.d.ts +14 -15
  476. package/types/modules/link/index.d.ts +2 -6
  477. package/types/modules/link/modules/tooltip.d.ts +26 -32
  478. package/types/modules/mathlive/formats.d.ts +20 -21
  479. package/types/modules/mathlive/index.d.ts +3 -9
  480. package/types/modules/mathlive/module.d.ts +9 -0
  481. package/types/modules/mathlive/tooltip.d.ts +14 -15
  482. package/types/modules/mention/constants.d.ts +3 -3
  483. package/types/modules/mention/index.d.ts +2 -0
  484. package/types/modules/mention/{MentionLink.d.ts → mention-link.d.ts} +15 -15
  485. package/types/modules/mention/{Mention.d.ts → mention.d.ts} +52 -54
  486. package/types/modules/mind-map/config-utils.d.ts +12 -0
  487. package/types/modules/mind-map/formats/mind-map-blot.d.ts +44 -0
  488. package/types/modules/mind-map/i18n/en-us.d.ts +25 -0
  489. package/types/modules/mind-map/i18n/index.d.ts +1 -0
  490. package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -0
  491. package/types/modules/mind-map/icons.d.ts +21 -0
  492. package/types/modules/mind-map/index.d.ts +10 -0
  493. package/types/modules/mind-map/modules/context-menu.d.ts +3 -0
  494. package/types/modules/mind-map/modules/control-panel.d.ts +3 -0
  495. package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -0
  496. package/types/modules/mind-map/options.d.ts +26 -0
  497. package/types/modules/shortcut-key/index.d.ts +67 -64
  498. package/types/modules/syntax.d.ts +12 -13
  499. package/types/modules/table-up/index.d.ts +32 -64
  500. package/types/modules/toolbar/better-picker.d.ts +13 -14
  501. package/types/modules/toolbar/better-toolbar.d.ts +7 -0
  502. package/types/modules/toolbar/index.d.ts +3 -9
  503. package/types/modules/toolbar/toolbar-tip.d.ts +7 -8
  504. package/types/themes/snow.d.ts +9 -10
  505. package/types/tools/format-painter.d.ts +12 -14
  506. package/types/tools/fullscreen.d.ts +6 -3
  507. package/types/tools/screenshot.d.ts +17 -18
  508. package/types/ui/icons.config.d.ts +40 -36
  509. package/types/ui/icons.d.ts +6 -6
  510. package/types/utils/debounce.d.ts +6 -6
  511. package/types/utils/image.d.ts +1 -1
  512. package/types/utils/is.d.ts +6 -6
  513. package/types/utils/method.d.ts +6 -6
  514. package/types/utils/scroll-lock.d.ts +6 -6
  515. package/es/config/types/additional-toolbar-item.interface.es.js +0 -2
  516. package/es/config/types/additional-toolbar-item.interface.es.js.map +0 -1
  517. package/es/config/types/content-change.interface.es.js +0 -2
  518. package/es/config/types/content-change.interface.es.js.map +0 -1
  519. package/es/config/types/content-save.interface.es.js +0 -2
  520. package/es/config/types/content-save.interface.es.js.map +0 -1
  521. package/es/config/types/counter-option.interface.es.js +0 -2
  522. package/es/config/types/counter-option.interface.es.js.map +0 -1
  523. package/es/config/types/editor-toolbar.interface.es.js +0 -2
  524. package/es/config/types/editor-toolbar.interface.es.js.map +0 -1
  525. package/es/config/types/file-operation.interface.es.js +0 -2
  526. package/es/config/types/file-operation.interface.es.js.map +0 -1
  527. package/es/config/types/focus-change.interface.es.js +0 -2
  528. package/es/config/types/focus-change.interface.es.js.map +0 -1
  529. package/es/config/types/fullscreen-module.interface.es.js +0 -2
  530. package/es/config/types/fullscreen-module.interface.es.js.map +0 -1
  531. package/es/config/types/help-panel-item.interface.es.js +0 -2
  532. package/es/config/types/help-panel-item.interface.es.js.map +0 -1
  533. package/es/config/types/help-panel-option.interface.es.js +0 -2
  534. package/es/config/types/help-panel-option.interface.es.js.map +0 -1
  535. package/es/config/types/image-module.interface.es.js +0 -2
  536. package/es/config/types/image-module.interface.es.js.map +0 -1
  537. package/es/config/types/image-upload.interface.es.js +0 -2
  538. package/es/config/types/image-upload.interface.es.js.map +0 -1
  539. package/es/config/types/load-on-demand-module.interface.es.js +0 -2
  540. package/es/config/types/load-on-demand-module.interface.es.js.map +0 -1
  541. package/es/config/types/mention-module.interface.es.js +0 -2
  542. package/es/config/types/mention-module.interface.es.js.map +0 -1
  543. package/es/config/types/paste-change.interface.es.js +0 -2
  544. package/es/config/types/paste-change.interface.es.js.map +0 -1
  545. package/es/config/types/quick-menu-module.interface.es.js +0 -2
  546. package/es/config/types/quick-menu-module.interface.es.js.map +0 -1
  547. package/es/config/types/range.interface.es.js +0 -2
  548. package/es/config/types/range.interface.es.js.map +0 -1
  549. package/es/config/types/registry-options.interface.es.js +0 -2
  550. package/es/config/types/registry-options.interface.es.js.map +0 -1
  551. package/es/config/types/selection-change.interface.es.js +0 -2
  552. package/es/config/types/selection-change.interface.es.js.map +0 -1
  553. package/es/config/types/toolbar-item.interface.es.js +0 -2
  554. package/es/config/types/toolbar-item.interface.es.js.map +0 -1
  555. package/es/config/types/validate-error.interface.es.js +0 -2
  556. package/es/config/types/validate-error.interface.es.js.map +0 -1
  557. package/es/modules/custom-image/BlotFormatter.es.js.map +0 -1
  558. package/es/modules/custom-image/Options.es.js +0 -95
  559. package/es/modules/custom-image/Options.es.js.map +0 -1
  560. package/es/modules/custom-image/actions/Action.es.js +0 -15
  561. package/es/modules/custom-image/actions/Action.es.js.map +0 -1
  562. package/es/modules/custom-image/actions/CustomResizeAction.es.js.map +0 -1
  563. package/es/modules/custom-image/actions/DeleteAction.es.js.map +0 -1
  564. package/es/modules/custom-image/image-bar.es.js +0 -127
  565. package/es/modules/custom-image/image-bar.es.js.map +0 -1
  566. package/es/modules/custom-image/specs/BlotSpec.es.js +0 -27
  567. package/es/modules/custom-image/specs/BlotSpec.es.js.map +0 -1
  568. package/es/modules/custom-image/specs/CustomImageSpec.es.js.map +0 -1
  569. package/es/modules/custom-image/specs/ImageSpec.es.js +0 -29
  570. package/es/modules/custom-image/specs/ImageSpec.es.js.map +0 -1
  571. package/es/modules/emoji/emoji-list/index.es.js +0 -5
  572. package/es/modules/emoji/emoji-list/people.es.js +0 -114
  573. package/es/modules/emoji/emoji-list/people.es.js.map +0 -1
  574. package/es/modules/emoji/emoji-list.es.js +0 -9
  575. package/es/modules/emoji/emoji-list.es.js.map +0 -1
  576. package/es/modules/emoji/emoji-map.es.js +0 -9
  577. package/es/modules/emoji/emoji-map.es.js.map +0 -1
  578. package/es/modules/emoji/emoji-sprite.es.js +0 -5
  579. package/es/modules/emoji/emoji-sprite.es.js.map +0 -1
  580. package/es/modules/emoji/formats/emoji-blot.es.js +0 -41
  581. package/es/modules/emoji/formats/emoji-blot.es.js.map +0 -1
  582. package/es/modules/emoji/index.es.js +0 -8
  583. package/es/modules/emoji/index.es.js.map +0 -1
  584. package/es/modules/emoji/modules/emoji.es.js +0 -248
  585. package/es/modules/emoji/modules/emoji.es.js.map +0 -1
  586. package/es/modules/emoji/modules/toolbar-emoji.es.js +0 -153
  587. package/es/modules/emoji/modules/toolbar-emoji.es.js.map +0 -1
  588. package/es/modules/emoji/utils.es.js +0 -19
  589. package/es/modules/emoji/utils.es.js.map +0 -1
  590. package/es/modules/mention/Mention.es.js.map +0 -1
  591. package/es/modules/mention/MentionLink.es.js.map +0 -1
  592. package/lib/config/types/additional-toolbar-item.interface.cjs.js +0 -2
  593. package/lib/config/types/additional-toolbar-item.interface.cjs.js.map +0 -1
  594. package/lib/config/types/content-change.interface.cjs.js +0 -2
  595. package/lib/config/types/content-change.interface.cjs.js.map +0 -1
  596. package/lib/config/types/content-save.interface.cjs.js +0 -2
  597. package/lib/config/types/content-save.interface.cjs.js.map +0 -1
  598. package/lib/config/types/counter-option.interface.cjs.js +0 -2
  599. package/lib/config/types/counter-option.interface.cjs.js.map +0 -1
  600. package/lib/config/types/editor-toolbar.interface.cjs.js +0 -2
  601. package/lib/config/types/editor-toolbar.interface.cjs.js.map +0 -1
  602. package/lib/config/types/file-operation.interface.cjs.js +0 -2
  603. package/lib/config/types/file-operation.interface.cjs.js.map +0 -1
  604. package/lib/config/types/focus-change.interface.cjs.js +0 -2
  605. package/lib/config/types/focus-change.interface.cjs.js.map +0 -1
  606. package/lib/config/types/fullscreen-module.interface.cjs.js +0 -2
  607. package/lib/config/types/fullscreen-module.interface.cjs.js.map +0 -1
  608. package/lib/config/types/help-panel-item.interface.cjs.js +0 -2
  609. package/lib/config/types/help-panel-item.interface.cjs.js.map +0 -1
  610. package/lib/config/types/help-panel-option.interface.cjs.js +0 -2
  611. package/lib/config/types/help-panel-option.interface.cjs.js.map +0 -1
  612. package/lib/config/types/image-module.interface.cjs.js +0 -2
  613. package/lib/config/types/image-module.interface.cjs.js.map +0 -1
  614. package/lib/config/types/image-upload.interface.cjs.js +0 -2
  615. package/lib/config/types/image-upload.interface.cjs.js.map +0 -1
  616. package/lib/config/types/load-on-demand-module.interface.cjs.js +0 -2
  617. package/lib/config/types/load-on-demand-module.interface.cjs.js.map +0 -1
  618. package/lib/config/types/mention-module.interface.cjs.js +0 -2
  619. package/lib/config/types/mention-module.interface.cjs.js.map +0 -1
  620. package/lib/config/types/paste-change.interface.cjs.js +0 -2
  621. package/lib/config/types/paste-change.interface.cjs.js.map +0 -1
  622. package/lib/config/types/quick-menu-module.interface.cjs.js +0 -2
  623. package/lib/config/types/quick-menu-module.interface.cjs.js.map +0 -1
  624. package/lib/config/types/range.interface.cjs.js +0 -2
  625. package/lib/config/types/range.interface.cjs.js.map +0 -1
  626. package/lib/config/types/registry-options.interface.cjs.js +0 -2
  627. package/lib/config/types/registry-options.interface.cjs.js.map +0 -1
  628. package/lib/config/types/selection-change.interface.cjs.js +0 -2
  629. package/lib/config/types/selection-change.interface.cjs.js.map +0 -1
  630. package/lib/config/types/toolbar-item.interface.cjs.js +0 -2
  631. package/lib/config/types/toolbar-item.interface.cjs.js.map +0 -1
  632. package/lib/config/types/validate-error.interface.cjs.js +0 -2
  633. package/lib/config/types/validate-error.interface.cjs.js.map +0 -1
  634. package/lib/modules/custom-image/BlotFormatter.cjs.js.map +0 -1
  635. package/lib/modules/custom-image/Options.cjs.js +0 -95
  636. package/lib/modules/custom-image/Options.cjs.js.map +0 -1
  637. package/lib/modules/custom-image/actions/Action.cjs.js +0 -15
  638. package/lib/modules/custom-image/actions/Action.cjs.js.map +0 -1
  639. package/lib/modules/custom-image/actions/CustomResizeAction.cjs.js.map +0 -1
  640. package/lib/modules/custom-image/actions/DeleteAction.cjs.js.map +0 -1
  641. package/lib/modules/custom-image/image-bar.cjs.js +0 -127
  642. package/lib/modules/custom-image/image-bar.cjs.js.map +0 -1
  643. package/lib/modules/custom-image/specs/BlotSpec.cjs.js +0 -27
  644. package/lib/modules/custom-image/specs/BlotSpec.cjs.js.map +0 -1
  645. package/lib/modules/custom-image/specs/CustomImageSpec.cjs.js.map +0 -1
  646. package/lib/modules/custom-image/specs/ImageSpec.cjs.js +0 -29
  647. package/lib/modules/custom-image/specs/ImageSpec.cjs.js.map +0 -1
  648. package/lib/modules/emoji/emoji-list/index.cjs.js +0 -5
  649. package/lib/modules/emoji/emoji-list/people.cjs.js +0 -114
  650. package/lib/modules/emoji/emoji-list/people.cjs.js.map +0 -1
  651. package/lib/modules/emoji/emoji-list.cjs.js +0 -9
  652. package/lib/modules/emoji/emoji-list.cjs.js.map +0 -1
  653. package/lib/modules/emoji/emoji-map.cjs.js +0 -9
  654. package/lib/modules/emoji/emoji-map.cjs.js.map +0 -1
  655. package/lib/modules/emoji/emoji-sprite.cjs.js +0 -5
  656. package/lib/modules/emoji/emoji-sprite.cjs.js.map +0 -1
  657. package/lib/modules/emoji/formats/emoji-blot.cjs.js +0 -41
  658. package/lib/modules/emoji/formats/emoji-blot.cjs.js.map +0 -1
  659. package/lib/modules/emoji/index.cjs.js +0 -8
  660. package/lib/modules/emoji/index.cjs.js.map +0 -1
  661. package/lib/modules/emoji/modules/emoji.cjs.js +0 -248
  662. package/lib/modules/emoji/modules/emoji.cjs.js.map +0 -1
  663. package/lib/modules/emoji/modules/toolbar-emoji.cjs.js +0 -153
  664. package/lib/modules/emoji/modules/toolbar-emoji.cjs.js.map +0 -1
  665. package/lib/modules/emoji/utils.cjs.js +0 -19
  666. package/lib/modules/emoji/utils.cjs.js.map +0 -1
  667. package/lib/modules/mention/Mention.cjs.js.map +0 -1
  668. package/lib/modules/mention/MentionLink.cjs.js.map +0 -1
  669. package/types/config/types/additional-toolbar-item.interface.d.ts +0 -8
  670. package/types/config/types/content-change.interface.d.ts +0 -13
  671. package/types/config/types/content-save.interface.d.ts +0 -6
  672. package/types/config/types/counter-option.interface.d.ts +0 -9
  673. package/types/config/types/editor-toolbar.interface.d.ts +0 -6
  674. package/types/config/types/file-operation.interface.d.ts +0 -12
  675. package/types/config/types/focus-change.interface.d.ts +0 -4
  676. package/types/config/types/fullscreen-module.interface.d.ts +0 -4
  677. package/types/config/types/help-panel-item.interface.d.ts +0 -5
  678. package/types/config/types/help-panel-option.interface.d.ts +0 -7
  679. package/types/config/types/image-module.interface.d.ts +0 -3
  680. package/types/config/types/image-upload.interface.d.ts +0 -7
  681. package/types/config/types/load-on-demand-module.interface.d.ts +0 -5
  682. package/types/config/types/mention-module.interface.d.ts +0 -8
  683. package/types/config/types/paste-change.interface.d.ts +0 -6
  684. package/types/config/types/quick-menu-module.interface.d.ts +0 -3
  685. package/types/config/types/range.interface.d.ts +0 -4
  686. package/types/config/types/registry-options.interface.d.ts +0 -5
  687. package/types/config/types/selection-change.interface.d.ts +0 -8
  688. package/types/config/types/toolbar-item.interface.d.ts +0 -13
  689. package/types/config/types/validate-error.interface.d.ts +0 -13
  690. package/types/modules/custom-image/BlotFormatter.d.ts +0 -29
  691. package/types/modules/custom-image/Options.d.ts +0 -36
  692. package/types/modules/custom-image/actions/Action.d.ts +0 -7
  693. package/types/modules/custom-image/actions/DeleteAction.d.ts +0 -7
  694. package/types/modules/custom-image/image-bar.d.ts +0 -15
  695. package/types/modules/custom-image/specs/BlotSpec.d.ts +0 -13
  696. package/types/modules/custom-image/specs/ImageSpec.d.ts +0 -10
  697. package/types/modules/emoji/emoji-list/index.d.ts +0 -1
  698. package/types/modules/emoji/emoji-list/people.d.ts +0 -1
  699. package/types/modules/emoji/emoji-list.d.ts +0 -2
  700. package/types/modules/emoji/emoji-map.d.ts +0 -2
  701. package/types/modules/emoji/emoji-sprite.d.ts +0 -1
  702. package/types/modules/emoji/formats/emoji-blot.d.ts +0 -13
  703. package/types/modules/emoji/index.d.ts +0 -10
  704. package/types/modules/emoji/modules/emoji.d.ts +0 -38
  705. package/types/modules/emoji/modules/toolbar-emoji.d.ts +0 -8
  706. package/types/modules/emoji/utils.d.ts +0 -1
@@ -0,0 +1,137 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { isBoolean, isObject } from "../../../utils/is.es.js";
5
+ import { COPY, DOWNLOAD, RIGHT_ALIGN, CENTER_ALIGN, LEFT_ALIGN } from "../options.es.js";
6
+ const ALIGN_ATTR = "data-align";
7
+ function setAlignStyle(el, display, float, margin) {
8
+ el.style.setProperty("display", display);
9
+ el.style.setProperty("float", float);
10
+ el.style.setProperty("margin", margin);
11
+ }
12
+ const alignmentHandler = {
13
+ left: (el, toolbarButtons) => {
14
+ setAlignStyle(el, "inline", "left", "0 1em 1em 0");
15
+ },
16
+ center: (el, toolbarButtons) => {
17
+ setAlignStyle(el, "block", null, "auto");
18
+ },
19
+ right: (el, toolbarButtons) => {
20
+ setAlignStyle(el, "inline", "right", "0 0 1em 1em");
21
+ },
22
+ download: (el, toolbarButtons) => {
23
+ const imageName = el.dataset.title || "image";
24
+ const url = el.src || "";
25
+ if (!url) return;
26
+ const a = document.createElement("a");
27
+ a.href = url;
28
+ a.target = "_blank";
29
+ a.download = imageName;
30
+ a.style.display = "none";
31
+ document.body.appendChild(a);
32
+ a.click();
33
+ a.parentNode.removeChild(a);
34
+ },
35
+ copy: async (el, toolbarButtons) => {
36
+ if (!el.src) return;
37
+ const imageUrl = el.src;
38
+ try {
39
+ const response = await fetch(imageUrl);
40
+ if (!response.ok) {
41
+ throw new Error("Copy image failed");
42
+ }
43
+ const blob = await response.blob();
44
+ await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);
45
+ } catch (e) {
46
+ throw new Error("Copy image failed");
47
+ }
48
+ }
49
+ };
50
+ const defaultButtons = {
51
+ [LEFT_ALIGN]: {
52
+ name: LEFT_ALIGN,
53
+ icon: `
54
+ <svg viewbox="0 0 18 18">
55
+ <line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line>
56
+ <line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line>
57
+ <line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line>
58
+ </svg>
59
+ `,
60
+ isActive: (el) => el.getAttribute(ALIGN_ATTR) === "left",
61
+ apply: (el, toolbarButtons) => {
62
+ el.setAttribute(ALIGN_ATTR, "left");
63
+ alignmentHandler.left(el, toolbarButtons);
64
+ }
65
+ },
66
+ [CENTER_ALIGN]: {
67
+ name: CENTER_ALIGN,
68
+ icon: `
69
+ <svg viewbox="0 0 18 18">
70
+ <line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line>
71
+ <line class="ql-stroke" x1="14" x2="4" y1="14" y2="14"></line>
72
+ <line class="ql-stroke" x1="12" x2="6" y1="4" y2="4"></line>
73
+ </svg>
74
+ `,
75
+ isActive: (el) => el.getAttribute(ALIGN_ATTR) === "center",
76
+ apply: (el, toolbarButtons) => {
77
+ el.setAttribute(ALIGN_ATTR, "center");
78
+ alignmentHandler.center(el, toolbarButtons);
79
+ }
80
+ },
81
+ [RIGHT_ALIGN]: {
82
+ name: RIGHT_ALIGN,
83
+ icon: `
84
+ <svg viewbox="0 0 18 18">
85
+ <line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line>
86
+ <line class="ql-stroke" x1="15" x2="5" y1="14" y2="14"></line>
87
+ <line class="ql-stroke" x1="15" x2="9" y1="4" y2="4"></line>
88
+ </svg>
89
+ `,
90
+ isActive: (el) => el.getAttribute(ALIGN_ATTR) === "right",
91
+ apply: (el, toolbarButtons) => {
92
+ el.setAttribute(ALIGN_ATTR, "right");
93
+ alignmentHandler.right(el, toolbarButtons);
94
+ }
95
+ },
96
+ [DOWNLOAD]: {
97
+ name: DOWNLOAD,
98
+ icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path class="ql-fill" d="M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z"/></svg>`,
99
+ apply: (el, toolbarButtons) => {
100
+ alignmentHandler.download(el, toolbarButtons);
101
+ }
102
+ },
103
+ [COPY]: {
104
+ name: COPY,
105
+ icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path class="ql-fill" d="M28 10v18H10V10zm0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2"/><path class="ql-fill" d="M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"/></svg>`,
106
+ apply: (el, toolbarButtons) => {
107
+ alignmentHandler.copy(el, toolbarButtons);
108
+ }
109
+ }
110
+ };
111
+ class ImageToolbarButtons {
112
+ constructor(options) {
113
+ __publicField(this, "buttons");
114
+ this.buttons = Object.entries(options.buttons).reduce((acc, [name, button]) => {
115
+ if (isBoolean(button) && button && defaultButtons[name]) {
116
+ acc[name] = defaultButtons[name];
117
+ } else if (isObject(button)) {
118
+ acc[button.name] = button;
119
+ }
120
+ return acc;
121
+ }, {});
122
+ }
123
+ getItems() {
124
+ return Object.keys(this.buttons).map((k) => this.buttons[k]);
125
+ }
126
+ clear(el) {
127
+ el.removeAttribute(ALIGN_ATTR);
128
+ setAlignStyle(el, null, null, null);
129
+ }
130
+ }
131
+ export {
132
+ ALIGN_ATTR,
133
+ ImageToolbarButtons,
134
+ alignmentHandler,
135
+ setAlignStyle
136
+ };
137
+ //# sourceMappingURL=image-toolbar-buttons.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-toolbar-buttons.es.js","sources":["../../../../../src/modules/custom-image/actions/image-toolbar-buttons.ts"],"sourcesContent":["import type { ToolbarButtonOptions, ToolButtonOption } from '../options'\r\nimport { isBoolean, isObject } from '../../../utils/is'\r\nimport { CENTER_ALIGN, COPY, DOWNLOAD, LEFT_ALIGN, RIGHT_ALIGN } from '../options'\r\n\r\nexport const ALIGN_ATTR = 'data-align'\r\n\r\nexport function setAlignStyle(el: HTMLElement, display: string | null, float: string | null, margin: string | null) {\r\n el.style.setProperty('display', display)\r\n el.style.setProperty('float', float)\r\n el.style.setProperty('margin', margin)\r\n}\r\nexport const alignmentHandler = {\r\n left: (el: HTMLElement, toolbarButtons: ImageToolbarButtons) => {\r\n setAlignStyle(el, 'inline', 'left', '0 1em 1em 0')\r\n },\r\n center: (el: HTMLElement, toolbarButtons: ImageToolbarButtons) => {\r\n setAlignStyle(el, 'block', null, 'auto')\r\n },\r\n right: (el: HTMLElement, toolbarButtons: ImageToolbarButtons) => {\r\n setAlignStyle(el, 'inline', 'right', '0 0 1em 1em')\r\n },\r\n download: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n const imageName = el.dataset.title || 'image'\r\n const url = el.src || ''\r\n if (!url) return\r\n const a = document.createElement('a')\r\n a.href = url\r\n a.target = '_blank'\r\n a.download = imageName\r\n a.style.display = 'none'\r\n document.body.appendChild(a)\r\n a.click()\r\n a.parentNode.removeChild(a)\r\n },\r\n copy: async (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n if (!el.src) return\r\n const imageUrl = el.src\r\n try {\r\n const response = await fetch(imageUrl)\r\n if (!response.ok) {\r\n throw new Error('Copy image failed')\r\n }\r\n const blob = await response.blob()\r\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })])\r\n }\r\n catch (e) {\r\n throw new Error('Copy image failed')\r\n }\r\n },\r\n}\r\nconst defaultButtons: Record<string, ToolButtonOption> = {\r\n [LEFT_ALIGN]: {\r\n name: LEFT_ALIGN,\r\n icon: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"13\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n isActive: el => el.getAttribute(ALIGN_ATTR) === 'left',\r\n apply: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n el.setAttribute(ALIGN_ATTR, 'left')\r\n alignmentHandler.left(el, toolbarButtons)\r\n },\r\n },\r\n [CENTER_ALIGN]: {\r\n name: CENTER_ALIGN,\r\n icon: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"14\" x2=\"4\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"12\" x2=\"6\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n isActive: el => el.getAttribute(ALIGN_ATTR) === 'center',\r\n apply: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n el.setAttribute(ALIGN_ATTR, 'center')\r\n alignmentHandler.center(el, toolbarButtons)\r\n },\r\n },\r\n [RIGHT_ALIGN]: {\r\n name: RIGHT_ALIGN,\r\n icon: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"5\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n isActive: el => el.getAttribute(ALIGN_ATTR) === 'right',\r\n apply: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n el.setAttribute(ALIGN_ATTR, 'right')\r\n alignmentHandler.right(el, toolbarButtons)\r\n },\r\n },\r\n [DOWNLOAD]: {\r\n name: DOWNLOAD,\r\n icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\"><path class=\"ql-fill\" d=\"M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z\"/></svg>`,\r\n apply: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n alignmentHandler.download(el, toolbarButtons)\r\n },\r\n },\r\n [COPY]: {\r\n name: COPY,\r\n icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\"><path class=\"ql-fill\" d=\"M28 10v18H10V10zm0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2\"/><path class=\"ql-fill\" d=\"M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z\"/></svg>`,\r\n apply: (el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => {\r\n alignmentHandler.copy(el, toolbarButtons)\r\n },\r\n },\r\n}\r\nexport class ImageToolbarButtons {\r\n buttons: Record<string, ToolButtonOption>\r\n\r\n constructor(options: ToolbarButtonOptions) {\r\n this.buttons = Object.entries(options.buttons).reduce((acc, [name, button]) => {\r\n if (isBoolean(button) && button && defaultButtons[name]) {\r\n acc[name] = defaultButtons[name]\r\n }\r\n else if (isObject(button)) {\r\n acc[button.name] = button\r\n }\r\n return acc\r\n }, {})\r\n }\r\n\r\n getItems(): ToolButtonOption[] {\r\n return Object.keys(this.buttons).map(k => this.buttons[k])\r\n }\r\n\r\n clear(el: HTMLElement): void {\r\n el.removeAttribute(ALIGN_ATTR)\r\n setAlignStyle(el, null, null, null)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Action } from "./action.es.js";
2
+ import { CustomResizeAction } from "./custom-resize-action.es.js";
3
+ import { DeleteAction } from "./delete-action.es.js";
4
+ import { ALIGN_ATTR, ImageToolbarButtons, alignmentHandler, setAlignStyle } from "./image-toolbar-buttons.es.js";
5
+ import { ImageToolbar } from "./toolbar.es.js";
6
+ import { ImageToolbarAction } from "./toolbar-action.es.js";
7
+ export {
8
+ ALIGN_ATTR,
9
+ Action,
10
+ CustomResizeAction,
11
+ DeleteAction,
12
+ ImageToolbar,
13
+ ImageToolbarAction,
14
+ ImageToolbarButtons,
15
+ alignmentHandler,
16
+ setAlignStyle
17
+ };
18
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,33 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { Action } from "./action.es.js";
5
+ import { ImageToolbarButtons } from "./image-toolbar-buttons.es.js";
6
+ import { ImageToolbar } from "./toolbar.es.js";
7
+ class ImageToolbarAction extends Action {
8
+ constructor(formatter) {
9
+ super(formatter);
10
+ __publicField(this, "toolbar");
11
+ __publicField(this, "buttons");
12
+ this.buttons = new ImageToolbarButtons({
13
+ buttons: formatter.options.toolbar.buttons
14
+ });
15
+ this.toolbar = new ImageToolbar();
16
+ }
17
+ onCreate() {
18
+ const toolbar = this.toolbar.create(this.formatter, this.buttons);
19
+ this.formatter.overlay.appendChild(toolbar);
20
+ }
21
+ onDestroy() {
22
+ const toolbar = this.toolbar.getElement();
23
+ if (!toolbar) {
24
+ return;
25
+ }
26
+ this.formatter.overlay.removeChild(toolbar);
27
+ this.toolbar.destroy();
28
+ }
29
+ }
30
+ export {
31
+ ImageToolbarAction
32
+ };
33
+ //# sourceMappingURL=toolbar-action.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar-action.es.js","sources":["../../../../../src/modules/custom-image/actions/toolbar-action.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport { Action } from './action'\r\nimport { ImageToolbarButtons } from './image-toolbar-buttons'\r\nimport { ImageToolbar } from './toolbar'\r\n\r\nexport class ImageToolbarAction extends Action {\r\n toolbar: ImageToolbar\r\n buttons: ImageToolbarButtons\r\n\r\n constructor(formatter: BlotFormatter) {\r\n super(formatter)\r\n this.buttons = new ImageToolbarButtons({\r\n buttons: formatter.options.toolbar.buttons,\r\n })\r\n this.toolbar = new ImageToolbar()\r\n }\r\n\r\n onCreate() {\r\n const toolbar = this.toolbar.create(this.formatter, this.buttons)\r\n this.formatter.overlay.appendChild(toolbar)\r\n }\r\n\r\n onDestroy() {\r\n const toolbar = this.toolbar.getElement()\r\n if (!toolbar) {\r\n return\r\n }\r\n\r\n this.formatter.overlay.removeChild(toolbar)\r\n this.toolbar.destroy()\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,2BAA2B,OAAO;AAAA,EAI7C,YAAY,WAA0B;AACpC,UAAM,SAAS;AAJjB;AACA;AAIE,SAAK,UAAU,IAAI,oBAAoB;AAAA,MACrC,SAAS,UAAU,QAAQ,QAAQ;AAAA,IAAA,CACpC;AACD,SAAK,UAAU,IAAI,aAAA;AAAA,EACrB;AAAA,EAEA,WAAW;AACT,UAAM,UAAU,KAAK,QAAQ,OAAO,KAAK,WAAW,KAAK,OAAO;AAChE,SAAK,UAAU,QAAQ,YAAY,OAAO;AAAA,EAC5C;AAAA,EAEA,YAAY;AACV,UAAM,UAAU,KAAK,QAAQ,WAAA;AAC7B,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,SAAK,UAAU,QAAQ,YAAY,OAAO;AAC1C,SAAK,QAAQ,QAAA;AAAA,EACf;AACF;"}
@@ -0,0 +1,110 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ class ImageToolbar {
5
+ constructor() {
6
+ __publicField(this, "toolbar");
7
+ __publicField(this, "buttons");
8
+ this.toolbar = null;
9
+ this.buttons = [];
10
+ }
11
+ create(formatter, toolButton) {
12
+ const toolbar = document.createElement("div");
13
+ toolbar.classList.add(formatter.options.toolbar.mainClassName);
14
+ this.addToolbarStyle(formatter, toolbar);
15
+ this.addButtons(formatter, toolbar, toolButton);
16
+ this.toolbar = toolbar;
17
+ return this.toolbar;
18
+ }
19
+ destroy() {
20
+ this.toolbar = null;
21
+ this.buttons = [];
22
+ }
23
+ getElement() {
24
+ return this.toolbar;
25
+ }
26
+ addToolbarStyle(formatter, toolbar) {
27
+ if (formatter.options.toolbar.mainStyle) {
28
+ Object.assign(toolbar.style, formatter.options.toolbar.mainStyle);
29
+ }
30
+ }
31
+ addButtonStyle(button, index, formatter) {
32
+ if (formatter.options.toolbar.buttonStyle) {
33
+ Object.assign(button.style, formatter.options.toolbar.buttonStyle);
34
+ if (index > 0) {
35
+ button.style.borderLeftWidth = "0";
36
+ }
37
+ }
38
+ if (formatter.options.toolbar.svgStyle) {
39
+ Object.assign(button.children[0].style, formatter.options.toolbar.svgStyle);
40
+ }
41
+ }
42
+ addButtons(formatter, toolbar, toolButton) {
43
+ toolButton.getItems().forEach((tool, i) => {
44
+ const button = document.createElement("span");
45
+ button.classList.add(formatter.options.toolbar.buttonClassName);
46
+ button.innerHTML = tool.icon;
47
+ button.addEventListener("click", () => {
48
+ this.onButtonClick(button, formatter, tool, toolButton);
49
+ });
50
+ this.preselectButton(button, tool, formatter, toolButton);
51
+ this.addButtonStyle(button, i, formatter);
52
+ this.buttons.push(button);
53
+ toolbar.appendChild(button);
54
+ });
55
+ }
56
+ preselectButton(button, toolButtonOption, formatter, toolButton) {
57
+ if (!formatter.currentSpec) {
58
+ return;
59
+ }
60
+ const target = formatter.currentSpec.getTargetElement();
61
+ if (!target) {
62
+ return;
63
+ }
64
+ if (toolButtonOption.isActive && toolButtonOption.isActive(target)) {
65
+ this.selectButton(formatter, button);
66
+ }
67
+ }
68
+ onButtonClick(button, formatter, toolButtonOption, toolButton) {
69
+ if (!formatter.currentSpec) {
70
+ return;
71
+ }
72
+ const target = formatter.currentSpec.getTargetElement();
73
+ if (!target || target.tagName.toLowerCase() !== "img") {
74
+ return;
75
+ }
76
+ this.clickButton(button, target, formatter, toolButtonOption, toolButton);
77
+ }
78
+ clickButton(button, target, formatter, toolButtonOption, toolButton) {
79
+ if (!toolButtonOption.isActive) {
80
+ toolButtonOption.apply.call(this, target, toolButton);
81
+ } else {
82
+ this.buttons.forEach((b) => {
83
+ this.deselectButton(formatter, b);
84
+ });
85
+ if (toolButtonOption.isActive(target)) {
86
+ toolButton.clear(target);
87
+ } else {
88
+ this.selectButton(formatter, button);
89
+ toolButtonOption.apply.call(this, target, toolButton);
90
+ }
91
+ }
92
+ formatter.update();
93
+ }
94
+ selectButton(formatter, button) {
95
+ button.classList.add("is-selected");
96
+ if (formatter.options.toolbar.addButtonSelectStyle) {
97
+ button.style.setProperty("filter", "invert(20%)");
98
+ }
99
+ }
100
+ deselectButton(formatter, button) {
101
+ button.classList.remove("is-selected");
102
+ if (formatter.options.toolbar.addButtonSelectStyle) {
103
+ button.style.removeProperty("filter");
104
+ }
105
+ }
106
+ }
107
+ export {
108
+ ImageToolbar
109
+ };
110
+ //# sourceMappingURL=toolbar.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.es.js","sources":["../../../../../src/modules/custom-image/actions/toolbar.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport type { ToolButtonOption } from '../options'\r\nimport type { ImageToolbarButtons } from './image-toolbar-buttons'\r\n\r\nexport class ImageToolbar {\r\n toolbar?: HTMLElement\r\n buttons: HTMLElement[]\r\n\r\n constructor() {\r\n this.toolbar = null\r\n this.buttons = []\r\n }\r\n\r\n create(formatter: BlotFormatter, toolButton: ImageToolbarButtons): HTMLElement {\r\n const toolbar = document.createElement('div')\r\n toolbar.classList.add(formatter.options.toolbar.mainClassName)\r\n this.addToolbarStyle(formatter, toolbar)\r\n this.addButtons(formatter, toolbar, toolButton)\r\n\r\n this.toolbar = toolbar\r\n return this.toolbar\r\n }\r\n\r\n destroy() {\r\n this.toolbar = null\r\n this.buttons = []\r\n }\r\n\r\n getElement() {\r\n return this.toolbar\r\n }\r\n\r\n addToolbarStyle(formatter: BlotFormatter, toolbar: HTMLElement) {\r\n if (formatter.options.toolbar.mainStyle) {\r\n Object.assign(toolbar.style, formatter.options.toolbar.mainStyle)\r\n }\r\n }\r\n\r\n addButtonStyle(button: HTMLElement, index: number, formatter: BlotFormatter) {\r\n if (formatter.options.toolbar.buttonStyle) {\r\n Object.assign(button.style, formatter.options.toolbar.buttonStyle)\r\n if (index > 0) {\r\n button.style.borderLeftWidth = '0'\r\n }\r\n }\r\n\r\n if (formatter.options.toolbar.svgStyle) {\r\n Object.assign((button.children[0] as HTMLElement).style, formatter.options.toolbar.svgStyle)\r\n }\r\n }\r\n\r\n addButtons(formatter: BlotFormatter, toolbar: HTMLElement, toolButton: ImageToolbarButtons) {\r\n toolButton.getItems().forEach((tool, i) => {\r\n const button = document.createElement('span')\r\n button.classList.add(formatter.options.toolbar.buttonClassName)\r\n button.innerHTML = tool.icon\r\n button.addEventListener('click', () => {\r\n this.onButtonClick(button, formatter, tool, toolButton)\r\n })\r\n this.preselectButton(button, tool, formatter, toolButton)\r\n this.addButtonStyle(button, i, formatter)\r\n this.buttons.push(button)\r\n toolbar.appendChild(button)\r\n })\r\n }\r\n\r\n preselectButton(\r\n button: HTMLElement,\r\n toolButtonOption: ToolButtonOption,\r\n formatter: BlotFormatter,\r\n toolButton: ImageToolbarButtons,\r\n ) {\r\n if (!formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = formatter.currentSpec.getTargetElement()\r\n if (!target) {\r\n return\r\n }\r\n\r\n if (toolButtonOption.isActive && toolButtonOption.isActive(target)) {\r\n this.selectButton(formatter, button)\r\n }\r\n }\r\n\r\n onButtonClick(\r\n button: HTMLElement,\r\n formatter: BlotFormatter,\r\n toolButtonOption: ToolButtonOption,\r\n toolButton: ImageToolbarButtons,\r\n ) {\r\n if (!formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = formatter.currentSpec.getTargetElement()\r\n if (!target || target.tagName.toLowerCase() !== 'img') {\r\n return\r\n }\r\n\r\n this.clickButton(button, target as HTMLImageElement, formatter, toolButtonOption, toolButton)\r\n }\r\n\r\n clickButton(\r\n button: HTMLElement,\r\n target: HTMLImageElement,\r\n formatter: BlotFormatter,\r\n toolButtonOption: ToolButtonOption,\r\n toolButton: ImageToolbarButtons,\r\n ) {\r\n if (!toolButtonOption.isActive) {\r\n toolButtonOption.apply.call(this, target, toolButton)\r\n }\r\n else {\r\n this.buttons.forEach((b) => {\r\n this.deselectButton(formatter, b)\r\n })\r\n\r\n if (toolButtonOption.isActive(target)) {\r\n toolButton.clear(target)\r\n }\r\n else {\r\n this.selectButton(formatter, button)\r\n toolButtonOption.apply.call(this, target, toolButton)\r\n }\r\n }\r\n\r\n formatter.update()\r\n }\r\n\r\n selectButton(formatter: BlotFormatter, button: HTMLElement) {\r\n button.classList.add('is-selected')\r\n if (formatter.options.toolbar.addButtonSelectStyle) {\r\n button.style.setProperty('filter', 'invert(20%)')\r\n }\r\n }\r\n\r\n deselectButton(formatter: BlotFormatter, button: HTMLElement) {\r\n button.classList.remove('is-selected')\r\n if (formatter.options.toolbar.addButtonSelectStyle) {\r\n button.style.removeProperty('filter')\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,52 +1,30 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1
4
  import { merge } from "lodash-es";
2
5
  import Quill from "quill";
3
- import CustomImage from "./image.es.js";
4
- import ImageBar from "./image-bar.es.js";
5
- import DefaultOptions from "./Options.es.js";
6
- import { CustomImageSpec } from "./specs/CustomImageSpec.es.js";
6
+ import { CustomImage } from "./image.es.js";
7
+ import DefaultOptions from "./options.es.js";
8
+ import "./specs/index.es.js";
9
+ import { CustomImageSpec } from "./specs/custom-image-spec.es.js";
7
10
  const dontMerge = (_destination, source) => source;
8
11
  class BlotFormatter {
9
12
  constructor(quill, options = {}) {
10
- this.debounceTimer = null;
11
- this.onClick = () => {
13
+ __publicField(this, "options");
14
+ __publicField(this, "currentSpec");
15
+ __publicField(this, "specs");
16
+ __publicField(this, "overlay");
17
+ __publicField(this, "actions");
18
+ __publicField(this, "observer");
19
+ __publicField(this, "onClick", () => {
12
20
  this.hide();
13
- this.hideImageBar();
14
- };
15
- this.onMouseOver = (event) => {
16
- if (this.debounceTimer) {
17
- clearTimeout(this.debounceTimer);
18
- }
19
- this.debounceTimer = window.setTimeout(() => {
20
- if (event.target.tagName === "IMG") {
21
- const target = event.target;
22
- if (target) {
23
- if (this.imageBar) {
24
- this.imageBar.destroy();
25
- }
26
- this.imageBar = new ImageBar(this.quill, target);
27
- }
28
- } else {
29
- this.hideImageBar();
30
- }
31
- }, 150);
32
- };
33
- this.hideImageBar = () => {
34
- if (this.imageBar) {
35
- this.imageBar.destroy();
36
- this.imageBar = null;
37
- }
38
- };
39
- this.hideImageOverlay = (event) => {
40
- var _a;
41
- const target = event.target;
42
- const isBlotFormatter = (_a = target == null ? void 0 : target.classList) == null ? void 0 : _a.contains("blot-formatter__overlay");
43
- if (!isBlotFormatter) {
44
- this.hide();
45
- }
46
- document.body.removeEventListener("click", this.hideImageOverlay);
47
- };
21
+ });
48
22
  this.quill = quill;
49
- this.options = merge(DefaultOptions, options, { arrayMerge: dontMerge });
23
+ this.options = merge({}, DefaultOptions, options, { arrayMerge: dontMerge });
24
+ if (options.allowInvalidUrl !== void 0) {
25
+ this.options.allowInvalidUrl = options.allowInvalidUrl;
26
+ }
27
+ CustomImage.setOptions(this.options.allowInvalidUrl);
50
28
  this.currentSpec = null;
51
29
  this.actions = [];
52
30
  this.overlay = document.createElement("div");
@@ -56,13 +34,14 @@ class BlotFormatter {
56
34
  }
57
35
  document.execCommand("enableObjectResizing", false, "false");
58
36
  this.quill.root.addEventListener("click", this.onClick);
59
- this.quill.root.addEventListener("mouseover", (event) => this.onMouseOver(event));
60
37
  this.specs = this.options.specs.map((SpecClass) => new SpecClass(this));
61
38
  this.specs.forEach((spec) => spec.init());
62
39
  }
63
40
  static register() {
64
- Quill.register("formats/image", CustomImage, true);
65
- Quill.register("modules/image-spec", CustomImageSpec, true);
41
+ Quill.register({
42
+ "formats/image": CustomImage,
43
+ "modules/image-spec": CustomImageSpec
44
+ }, true);
66
45
  }
67
46
  show(spec) {
68
47
  this.currentSpec = spec;
@@ -90,7 +69,6 @@ class BlotFormatter {
90
69
  attributeOldValue: true,
91
70
  subtree: true
92
71
  });
93
- document.body.addEventListener("click", this.hideImageOverlay, true);
94
72
  }
95
73
  hide() {
96
74
  if (!this.currentSpec) {
@@ -130,7 +108,7 @@ class BlotFormatter {
130
108
  if (!overlayTarget) {
131
109
  return;
132
110
  }
133
- const parent = this.quill.root.parentNode;
111
+ const parent = this.quill.root.parentElement;
134
112
  const specRect = overlayTarget.getBoundingClientRect();
135
113
  const parentRect = parent.getBoundingClientRect();
136
114
  Object.assign(this.overlay.style, {
@@ -157,6 +135,6 @@ class BlotFormatter {
157
135
  }
158
136
  }
159
137
  export {
160
- BlotFormatter as default
138
+ BlotFormatter
161
139
  };
162
- //# sourceMappingURL=BlotFormatter.es.js.map
140
+ //# sourceMappingURL=blot-formatter.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blot-formatter.es.js","sources":["../../../../src/modules/custom-image/blot-formatter.ts"],"sourcesContent":["import type FluentEditor from '../../core/fluent-editor'\nimport type { Action } from './actions'\nimport type { BlotFormatterOptions } from './options'\nimport type { BlotSpec } from './specs'\nimport { merge as deepmerge } from 'lodash-es'\nimport Quill from 'quill'\nimport { CustomImage } from './image'\nimport DefaultOptions from './options'\nimport { CustomImageSpec } from './specs'\n\nconst dontMerge = (_destination: Array<any>, source: Array<any>) => source\n\nexport class BlotFormatter {\n options: BlotFormatterOptions\n currentSpec: BlotSpec\n specs: BlotSpec[]\n overlay: HTMLElement\n actions: Action[]\n observer: MutationObserver\n\n static register() {\n Quill.register({\n 'formats/image': CustomImage,\n 'modules/image-spec': CustomImageSpec,\n }, true)\n }\n\n constructor(public quill: FluentEditor, options: Partial<BlotFormatterOptions> = {}) {\n this.options = deepmerge({}, DefaultOptions, options, { arrayMerge: dontMerge })\n if (options.allowInvalidUrl !== undefined) {\n this.options.allowInvalidUrl = options.allowInvalidUrl\n }\n CustomImage.setOptions(this.options.allowInvalidUrl)\n this.currentSpec = null\n this.actions = []\n this.overlay = document.createElement('div')\n this.overlay.classList.add(this.options.overlay.className)\n if (this.options.overlay.style) {\n Object.assign(this.overlay.style, this.options.overlay.style)\n }\n\n // disable native image resizing on firefox\n document.execCommand('enableObjectResizing', false, 'false') // eslint-disable-next-line-line no-undef\n this.quill.root.addEventListener('click', this.onClick)\n this.specs = this.options.specs.map((SpecClass: any) => new SpecClass(this))\n this.specs.forEach(spec => spec.init())\n }\n\n show(spec: BlotSpec) {\n this.currentSpec = spec\n this.currentSpec.setSelection()\n this.setUserSelect('none')\n this.quill.root.parentNode.appendChild(this.overlay)\n this.repositionOverlay()\n this.createActions(spec)\n\n // fix: 图片对齐之后,虚线外框应该跟随移动\n const imageDom = spec.getTargetElement()\n const win: any = window\n const MutationObserver: typeof window.MutationObserver = win.MutationObserver || win.WebKitMutationObserver || win.MozMutationObserver\n const element = imageDom.parentNode\n this.observer = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n const target = mutation.target as HTMLElement\n const image = target.querySelector('img')\n if (image) {\n this.repositionOverlay()\n }\n }\n })\n this.observer.observe(element, {\n attributes: true,\n attributeFilter: ['class'],\n attributeOldValue: true,\n subtree: true,\n })\n }\n\n hide() {\n if (!this.currentSpec) {\n return\n }\n\n const imgDom = this.currentSpec.getTargetElement()\n if (imgDom) {\n imgDom.classList.remove('current-select-img')\n }\n\n this.currentSpec.onHide()\n this.currentSpec = null\n this.quill.root.parentNode.removeChild(this.overlay)\n this.overlay.style.setProperty('display', 'none')\n this.setUserSelect('')\n this.destroyActions()\n }\n\n update() {\n this.repositionOverlay()\n this.actions.forEach(action => action.onUpdate())\n }\n\n createActions(spec: BlotSpec) {\n this.actions = spec.getActions().map((ActionClass: any) => {\n const action: Action = new ActionClass(this)\n action.onCreate()\n return action\n })\n }\n\n destroyActions() {\n this.actions.forEach((action: Action) => action.onDestroy())\n this.actions = []\n }\n\n repositionOverlay() {\n if (!this.currentSpec) {\n return\n }\n\n const overlayTarget = this.currentSpec.getOverlayElement()\n if (!overlayTarget) {\n return\n }\n\n const parent = this.quill.root.parentElement\n const specRect = overlayTarget.getBoundingClientRect()\n const parentRect = parent.getBoundingClientRect()\n\n Object.assign(this.overlay.style, {\n display: 'block',\n left: `${specRect.left - parentRect.left - 1 + parent.scrollLeft}px`,\n top: `${specRect.top - parentRect.top + parent.scrollTop}px`,\n width: `${specRect.width}px`,\n height: `${specRect.height}px`,\n })\n }\n\n setUserSelect(value: string) {\n const props: string[] = [\n 'userSelect',\n 'mozUserSelect',\n 'webkitUserSelect',\n 'msUserSelect',\n ]\n\n props.forEach((prop: string) => {\n // set on contenteditable element and <html>\n this.quill.root.style.setProperty(prop, value)\n if (document.documentElement) {\n document.documentElement.style.setProperty(prop, value)\n }\n })\n }\n\n onClick = () => {\n this.hide()\n }\n}\n"],"names":["deepmerge"],"mappings":"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"}
@@ -1,8 +1,17 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1
4
  import Quill from "quill";
2
5
  import { sanitize, isNullOrUndefined } from "../../config/editor.utils.es.js";
6
+ import { isObject } from "../../utils/is.es.js";
7
+ import "./actions/index.es.js";
8
+ import { alignmentHandler, ALIGN_ATTR } from "./actions/image-toolbar-buttons.es.js";
3
9
  const Embed = Quill.import("blots/embed");
4
10
  const ATTRIBUTES = ["alt", "height", "width", "image-id"];
5
11
  const _CustomImage = class _CustomImage extends Embed {
12
+ static setOptions(allowInvalidUrl) {
13
+ this.allowInvalidUrl = allowInvalidUrl;
14
+ }
6
15
  static create(value) {
7
16
  const node = super.create(value);
8
17
  const url = typeof value === "string" ? value : value.src;
@@ -14,8 +23,19 @@ const _CustomImage = class _CustomImage extends Embed {
14
23
  node.setAttribute("src", imgURL);
15
24
  }
16
25
  node.setAttribute("data-image-id", `img${_CustomImage.ID_SEED++}`);
17
- node.setAttribute("devui-editorx-image", "true");
18
26
  node.style.verticalAlign = "baseline";
27
+ if (isObject(value)) {
28
+ if (value.align && alignmentHandler[value.align]) {
29
+ node.setAttribute(ALIGN_ATTR, value.align);
30
+ alignmentHandler[value.align](node);
31
+ }
32
+ if (value.width) {
33
+ node.setAttribute("width", String(value.width));
34
+ }
35
+ if (value.height) {
36
+ node.setAttribute("height", String(value.height));
37
+ }
38
+ }
19
39
  return node;
20
40
  }
21
41
  static formats(domNode) {
@@ -37,14 +57,25 @@ const _CustomImage = class _CustomImage extends Embed {
37
57
  }
38
58
  }
39
59
  static sanitize(url) {
40
- return sanitize(url, ["http", "https", "blob", "data"]) ? url : "//:0";
60
+ if (sanitize(url, ["http", "https", "blob", "data"]) || this.allowInvalidUrl) {
61
+ return url;
62
+ }
63
+ return "//:0";
41
64
  }
42
65
  static value(domNode) {
43
66
  const formats = {};
44
67
  const imageSrc = domNode.getAttribute("src");
45
68
  formats.src = this.sanitize(imageSrc);
46
- formats.hasExisted = domNode.getAttribute("devui-editorx-image");
47
69
  formats.imageId = domNode.dataset.imageId;
70
+ if (domNode.dataset.align) {
71
+ formats.align = domNode.dataset.align;
72
+ }
73
+ if (domNode.hasAttribute("width")) {
74
+ formats.width = domNode.getAttribute("width");
75
+ }
76
+ if (domNode.hasAttribute("height")) {
77
+ formats.height = domNode.getAttribute("height");
78
+ }
48
79
  return formats;
49
80
  }
50
81
  format(name, value) {
@@ -73,11 +104,12 @@ const _CustomImage = class _CustomImage extends Embed {
73
104
  return wrapper;
74
105
  }
75
106
  };
76
- _CustomImage.ID_SEED = 0;
107
+ __publicField(_CustomImage, "blotName", "image");
108
+ __publicField(_CustomImage, "tagName", "IMG");
109
+ __publicField(_CustomImage, "ID_SEED", 0);
110
+ __publicField(_CustomImage, "allowInvalidUrl", false);
77
111
  let CustomImage = _CustomImage;
78
- CustomImage.blotName = "image";
79
- CustomImage.tagName = "IMG";
80
112
  export {
81
- CustomImage as default
113
+ CustomImage
82
114
  };
83
115
  //# sourceMappingURL=image.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.es.js","sources":["../../../../src/modules/custom-image/image.ts"],"sourcesContent":["import type TypeEmbed from 'quill/blots/embed'\r\nimport Quill from 'quill'\r\nimport { isNullOrUndefined, sanitize } from '../../config/editor.utils'\r\n\r\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\r\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\r\n\r\nexport type ImageValue = string | { src: string }\r\nclass CustomImage extends Embed {\r\n static ID_SEED = 0\r\n static blotName: string\r\n static tagName: string\r\n domNode: any\r\n parent: any\r\n scroll: any\r\n next: any\r\n static create(value: ImageValue) {\r\n const node = super.create(value) as HTMLElement\r\n const url = typeof value === 'string' ? value : value.src\r\n if (url) {\r\n const imgURL = this.sanitize(url)\r\n if (!imgURL?.startsWith('data:image')) {\r\n node.dataset.src = imgURL\r\n }\r\n node.setAttribute('src', imgURL)\r\n }\r\n node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)\r\n node.setAttribute('devui-editorx-image', 'true')\r\n node.style.verticalAlign = 'baseline'\r\n return node\r\n }\r\n\r\n static formats(domNode) {\r\n return ATTRIBUTES.reduce((formats, attribute) => {\r\n if (domNode.hasAttribute(attribute)) {\r\n formats[attribute] = domNode.getAttribute(attribute)\r\n }\r\n return formats\r\n }, {})\r\n }\r\n\r\n static match(url) {\r\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\r\n }\r\n\r\n static register() {\r\n if (/Firefox/i.test(navigator.userAgent)) {\r\n setTimeout(() => {\r\n // Disable image resizing in Firefox\r\n document.execCommand('enableObjectResizing', false, 'false')\r\n }, 1)\r\n }\r\n }\r\n\r\n static sanitize(url) {\r\n return sanitize(url, ['http', 'https', 'blob', 'data']) ? url : '//:0'\r\n }\r\n\r\n static value(domNode) {\r\n const formats: any = {}\r\n const imageSrc = domNode.getAttribute('src')\r\n formats.src = this.sanitize(imageSrc)\r\n formats.hasExisted = domNode.getAttribute('devui-editorx-image')\r\n formats.imageId = domNode.dataset.imageId\r\n return formats\r\n }\r\n\r\n format(name, value) {\r\n if (ATTRIBUTES.includes(name)) {\r\n if (value) {\r\n this.domNode.setAttribute(name, value)\r\n }\r\n else {\r\n this.domNode.removeAttribute(name)\r\n }\r\n }\r\n else {\r\n super.format(name, value)\r\n }\r\n }\r\n\r\n unWrap() {\r\n this.parent.replaceWith(this)\r\n }\r\n\r\n wrap(name, value) {\r\n const wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name\r\n if (!isNullOrUndefined(this.parent)) {\r\n this.parent.insertBefore(wrapper, this.next || undefined)\r\n }\r\n if (typeof wrapper.appendChild !== 'function') {\r\n throw new TypeError(`Cannot wrap ${name}`)\r\n }\r\n wrapper.appendChild(this)\r\n return wrapper\r\n }\r\n}\r\nCustomImage.blotName = 'image'\r\nCustomImage.tagName = 'IMG'\r\n\r\nexport { CustomImage as default }\r\n"],"names":[],"mappings":";;AAIA,MAAM,QAAQ,MAAM,OAAO,aAAa;AACxC,MAAM,aAAa,CAAC,OAAO,UAAU,SAAS,UAAU;AAGxD,MAAM,eAAN,MAAM,qBAAoB,MAAM;AAAA,EAQ9B,OAAO,OAAO,OAAmB;AACzB,UAAA,OAAO,MAAM,OAAO,KAAK;AAC/B,UAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,MAAM;AACtD,QAAI,KAAK;AACD,YAAA,SAAS,KAAK,SAAS,GAAG;AAChC,UAAI,EAAC,iCAAQ,WAAW,gBAAe;AACrC,aAAK,QAAQ,MAAM;AAAA,MAAA;AAEhB,WAAA,aAAa,OAAO,MAAM;AAAA,IAAA;AAEjC,SAAK,aAAa,iBAAiB,MAAM,aAAY,SAAS,EAAE;AAC3D,SAAA,aAAa,uBAAuB,MAAM;AAC/C,SAAK,MAAM,gBAAgB;AACpB,WAAA;AAAA,EAAA;AAAA,EAGT,OAAO,QAAQ,SAAS;AACtB,WAAO,WAAW,OAAO,CAAC,SAAS,cAAc;AAC3C,UAAA,QAAQ,aAAa,SAAS,GAAG;AACnC,gBAAQ,SAAS,IAAI,QAAQ,aAAa,SAAS;AAAA,MAAA;AAE9C,aAAA;AAAA,IACT,GAAG,EAAE;AAAA,EAAA;AAAA,EAGP,OAAO,MAAM,KAAK;AAChB,WAAO,qBAAqB,KAAK,GAAG,KAAK,yBAAyB,KAAK,GAAG;AAAA,EAAA;AAAA,EAG5E,OAAO,WAAW;AAChB,QAAI,WAAW,KAAK,UAAU,SAAS,GAAG;AACxC,iBAAW,MAAM;AAEN,iBAAA,YAAY,wBAAwB,OAAO,OAAO;AAAA,SAC1D,CAAC;AAAA,IAAA;AAAA,EACN;AAAA,EAGF,OAAO,SAAS,KAAK;AACZ,WAAA,SAAS,KAAK,CAAC,QAAQ,SAAS,QAAQ,MAAM,CAAC,IAAI,MAAM;AAAA,EAAA;AAAA,EAGlE,OAAO,MAAM,SAAS;AACpB,UAAM,UAAe,CAAC;AAChB,UAAA,WAAW,QAAQ,aAAa,KAAK;AACnC,YAAA,MAAM,KAAK,SAAS,QAAQ;AAC5B,YAAA,aAAa,QAAQ,aAAa,qBAAqB;AACvD,YAAA,UAAU,QAAQ,QAAQ;AAC3B,WAAA;AAAA,EAAA;AAAA,EAGT,OAAO,MAAM,OAAO;AACd,QAAA,WAAW,SAAS,IAAI,GAAG;AAC7B,UAAI,OAAO;AACJ,aAAA,QAAQ,aAAa,MAAM,KAAK;AAAA,MAAA,OAElC;AACE,aAAA,QAAQ,gBAAgB,IAAI;AAAA,MAAA;AAAA,IACnC,OAEG;AACG,YAAA,OAAO,MAAM,KAAK;AAAA,IAAA;AAAA,EAC1B;AAAA,EAGF,SAAS;AACF,SAAA,OAAO,YAAY,IAAI;AAAA,EAAA;AAAA,EAG9B,KAAK,MAAM,OAAO;AACV,UAAA,UAAU,OAAO,SAAS,WAAW,KAAK,OAAO,OAAO,MAAM,KAAK,IAAI;AAC7E,QAAI,CAAC,kBAAkB,KAAK,MAAM,GAAG;AACnC,WAAK,OAAO,aAAa,SAAS,KAAK,QAAQ,MAAS;AAAA,IAAA;AAEtD,QAAA,OAAO,QAAQ,gBAAgB,YAAY;AAC7C,YAAM,IAAI,UAAU,eAAe,IAAI,EAAE;AAAA,IAAA;AAE3C,YAAQ,YAAY,IAAI;AACjB,WAAA;AAAA,EAAA;AAEX;AAvFE,aAAO,UAAU;AADnB,IAAM,cAAN;AAyFA,YAAY,WAAW;AACvB,YAAY,UAAU;"}
1
+ {"version":3,"file":"image.es.js","sources":["../../../../src/modules/custom-image/image.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\nimport type TypeEmbed from 'quill/blots/embed'\nimport Quill from 'quill'\nimport { isNullOrUndefined, sanitize } from '../../config/editor.utils'\nimport { isObject } from '../../utils/is'\nimport { ALIGN_ATTR, alignmentHandler } from './actions'\n\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\n\nexport type ImageValue = string | {\n src: string\n align?: string\n height?: number\n width?: number\n}\nexport class CustomImage extends Embed {\n static blotName = 'image'\n static tagName = 'IMG'\n static ID_SEED = 0\n static allowInvalidUrl: boolean = false\n declare domNode: HTMLElement\n\n static setOptions(allowInvalidUrl: boolean) {\n this.allowInvalidUrl = allowInvalidUrl\n }\n\n static create(value: ImageValue) {\n const node = super.create(value) as HTMLElement\n const url = typeof value === 'string' ? value : value.src\n if (url) {\n const imgURL = this.sanitize(url)\n if (!imgURL?.startsWith('data:image')) {\n node.dataset.src = imgURL\n }\n node.setAttribute('src', imgURL)\n }\n node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)\n node.style.verticalAlign = 'baseline'\n if (isObject(value)) {\n if (value.align && alignmentHandler[value.align]) {\n node.setAttribute(ALIGN_ATTR, value.align)\n alignmentHandler[value.align](node)\n }\n if (value.width) {\n node.setAttribute('width', String(value.width))\n }\n if (value.height) {\n node.setAttribute('height', String(value.height))\n }\n }\n return node\n }\n\n static formats(domNode: HTMLElement) {\n return ATTRIBUTES.reduce((formats, attribute) => {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute)\n }\n return formats\n }, {})\n }\n\n static match(url: string) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n }\n\n static register() {\n if (/Firefox/i.test(navigator.userAgent)) {\n setTimeout(() => {\n // Disable image resizing in Firefox\n document.execCommand('enableObjectResizing', false, 'false')\n }, 1)\n }\n }\n\n static sanitize(url: string) {\n if (sanitize(url, ['http', 'https', 'blob', 'data']) || this.allowInvalidUrl) {\n return url\n }\n return '//:0'\n }\n\n static value(domNode: HTMLElement) {\n const formats: any = {}\n const imageSrc = domNode.getAttribute('src')\n formats.src = this.sanitize(imageSrc)\n formats.imageId = domNode.dataset.imageId\n if (domNode.dataset.align) {\n formats.align = domNode.dataset.align\n }\n if (domNode.hasAttribute('width')) {\n formats.width = domNode.getAttribute('width')\n }\n if (domNode.hasAttribute('height')) {\n formats.height = domNode.getAttribute('height')\n }\n return formats\n }\n\n format(name: string, value: any) {\n if (ATTRIBUTES.includes(name)) {\n if (value) {\n this.domNode.setAttribute(name, value)\n }\n else {\n this.domNode.removeAttribute(name)\n }\n }\n else {\n super.format(name, value)\n }\n }\n\n unWrap() {\n this.parent.replaceWith(this as TypeEmbed)\n }\n\n wrap(name: string, value?: any): TypeParchment.Parent\n wrap(wrapper: TypeParchment.Parent): TypeParchment.Parent\n wrap(name: string | TypeParchment.Parent, value?: any) {\n const wrapper = (typeof name === 'string' ? this.scroll.create(name, value) : name) as TypeParchment.Parent\n if (!isNullOrUndefined(this.parent)) {\n this.parent.insertBefore(wrapper, this.next || undefined)\n }\n if (typeof wrapper.appendChild !== 'function') {\n throw new TypeError(`Cannot wrap ${name}`)\n }\n wrapper.appendChild(this)\n return wrapper\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import "./actions/index.es.js";
2
+ import { BlotFormatter } from "./blot-formatter.es.js";
3
+ import { CustomImage } from "./image.es.js";
4
+ import "./specs/index.es.js";
5
+ export {
6
+ BlotFormatter,
7
+ CustomImage
8
+ };
9
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}