@opentiny/fluent-editor 4.0.0-alpha.0 → 4.0.0-alpha.2

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 (487) hide show
  1. package/README.md +7 -24
  2. package/es/config/editor.config.es.js +0 -7
  3. package/es/config/editor.config.es.js.map +1 -1
  4. package/es/config/editor.utils.es.js +0 -2
  5. package/es/config/editor.utils.es.js.map +1 -1
  6. package/es/config/i18n/en-us.es.js +0 -13
  7. package/es/config/i18n/en-us.es.js.map +1 -1
  8. package/es/config/i18n/zh-cn.es.js +0 -13
  9. package/es/config/i18n/zh-cn.es.js.map +1 -1
  10. package/es/config/index.es.js +8 -13
  11. package/es/config/index.es.js.map +1 -1
  12. package/es/config/types/index.es.js +0 -20
  13. package/es/config/types/index.es.js.map +1 -1
  14. package/es/core/fluent-editor.es.js +7 -5
  15. package/es/core/fluent-editor.es.js.map +1 -1
  16. package/es/fluent-editor.es.js +36 -22
  17. package/es/fluent-editor.es.js.map +1 -1
  18. package/es/formats/emoji.es.js +14 -0
  19. package/es/formats/emoji.es.js.map +1 -0
  20. package/es/formats/index.es.js +11 -0
  21. package/es/formats/index.es.js.map +1 -0
  22. package/es/formats/soft-break.es.js +12 -5
  23. package/es/formats/soft-break.es.js.map +1 -1
  24. package/es/formats/strike.es.js +8 -5
  25. package/es/formats/strike.es.js.map +1 -1
  26. package/es/formats/video.es.js +14 -10
  27. package/es/formats/video.es.js.map +1 -1
  28. package/es/index.es.js +92 -32
  29. package/es/index.es.js.map +1 -1
  30. package/es/modules/counter.es.js +8 -3
  31. package/es/modules/counter.es.js.map +1 -1
  32. package/es/modules/custom-clipboard.es.js +23 -27
  33. package/es/modules/custom-clipboard.es.js.map +1 -1
  34. package/es/modules/custom-image/actions/action.es.js +19 -0
  35. package/es/modules/custom-image/actions/action.es.js.map +1 -0
  36. package/es/modules/custom-image/actions/{CustomResizeAction.es.js → custom-resize-action.es.js} +24 -11
  37. package/es/modules/custom-image/actions/{CustomResizeAction.es.js.map → custom-resize-action.es.js.map} +1 -1
  38. package/es/modules/custom-image/actions/{DeleteAction.es.js → delete-action.es.js} +8 -5
  39. package/es/modules/custom-image/actions/delete-action.es.js.map +1 -0
  40. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js +137 -0
  41. package/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +1 -0
  42. package/es/modules/custom-image/actions/index.es.js +18 -0
  43. package/es/modules/custom-image/actions/index.es.js.map +1 -0
  44. package/es/modules/custom-image/actions/toolbar-action.es.js +33 -0
  45. package/es/modules/custom-image/actions/toolbar-action.es.js.map +1 -0
  46. package/es/modules/custom-image/actions/toolbar.es.js +110 -0
  47. package/es/modules/custom-image/actions/toolbar.es.js.map +1 -0
  48. package/es/modules/custom-image/{BlotFormatter.es.js → blot-formatter.es.js} +23 -50
  49. package/es/modules/custom-image/blot-formatter.es.js.map +1 -0
  50. package/es/modules/custom-image/image.es.js +34 -21
  51. package/es/modules/custom-image/image.es.js.map +1 -1
  52. package/es/modules/custom-image/index.es.js +9 -0
  53. package/es/modules/custom-image/index.es.js.map +1 -0
  54. package/es/modules/custom-image/options.es.js +85 -0
  55. package/es/modules/custom-image/options.es.js.map +1 -0
  56. package/es/modules/custom-image/specs/blot-spec.es.js +33 -0
  57. package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -0
  58. package/es/modules/custom-image/specs/{CustomImageSpec.es.js → custom-image-spec.es.js} +13 -14
  59. package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -0
  60. package/es/modules/custom-image/specs/image-spec.es.js +32 -0
  61. package/es/modules/custom-image/specs/image-spec.es.js.map +1 -0
  62. package/es/modules/custom-image/specs/index.es.js +9 -0
  63. package/es/modules/custom-image/specs/index.es.js.map +1 -0
  64. package/es/modules/custom-uploader.es.js +63 -194
  65. package/es/modules/custom-uploader.es.js.map +1 -1
  66. package/es/modules/divider.es.js +8 -7
  67. package/es/modules/divider.es.js.map +1 -1
  68. package/es/modules/emoji.es.js +175 -0
  69. package/es/modules/emoji.es.js.map +1 -0
  70. package/es/modules/file/formats/file.es.js +13 -13
  71. package/es/modules/file/formats/file.es.js.map +1 -1
  72. package/es/modules/file/index.es.js +6 -29
  73. package/es/modules/file/index.es.js.map +1 -1
  74. package/es/modules/file/modules/file-bar.es.js +11 -3
  75. package/es/modules/file/modules/file-bar.es.js.map +1 -1
  76. package/es/modules/file/modules/file-module.es.js +35 -0
  77. package/es/modules/file/modules/file-module.es.js.map +1 -0
  78. package/es/modules/i18n.es.js +33 -11
  79. package/es/modules/i18n.es.js.map +1 -1
  80. package/es/modules/index.es.js +26 -0
  81. package/es/modules/index.es.js.map +1 -0
  82. package/es/modules/link/formats/link.es.js +14 -10
  83. package/es/modules/link/formats/link.es.js.map +1 -1
  84. package/es/modules/link/index.es.js +4 -12
  85. package/es/modules/link/index.es.js.map +1 -1
  86. package/es/modules/link/modules/tooltip.es.js +31 -21
  87. package/es/modules/link/modules/tooltip.es.js.map +1 -1
  88. package/es/modules/mathlive/formats.es.js +10 -7
  89. package/es/modules/mathlive/formats.es.js.map +1 -1
  90. package/es/modules/mathlive/index.es.js +6 -30
  91. package/es/modules/mathlive/index.es.js.map +1 -1
  92. package/es/modules/mathlive/module.es.js +40 -0
  93. package/es/modules/mathlive/module.es.js.map +1 -0
  94. package/es/modules/mathlive/tooltip.es.js +9 -5
  95. package/es/modules/mathlive/tooltip.es.js.map +1 -1
  96. package/es/modules/mention/index.es.js +7 -0
  97. package/es/modules/{emoji/emoji-list → mention}/index.es.js.map +1 -1
  98. package/es/modules/mention/{MentionLink.es.js → mention-link.es.js} +14 -6
  99. package/es/modules/mention/mention-link.es.js.map +1 -0
  100. package/es/modules/mention/{Mention.es.js → mention.es.js} +28 -20
  101. package/es/modules/mention/mention.es.js.map +1 -0
  102. package/es/modules/shortcut-key/index.es.js +17 -1
  103. package/es/modules/shortcut-key/index.es.js.map +1 -1
  104. package/es/modules/syntax.es.js +4 -0
  105. package/es/modules/syntax.es.js.map +1 -1
  106. package/es/modules/table-up/index.es.js +9 -2
  107. package/es/modules/table-up/index.es.js.map +1 -1
  108. package/es/modules/toolbar/better-picker.es.js +5 -0
  109. package/es/modules/toolbar/better-picker.es.js.map +1 -1
  110. package/es/modules/toolbar/better-toolbar.es.js +138 -0
  111. package/es/modules/toolbar/better-toolbar.es.js.map +1 -0
  112. package/es/modules/toolbar/index.es.js +5 -135
  113. package/es/modules/toolbar/index.es.js.map +1 -1
  114. package/es/modules/toolbar/toolbar-tip.es.js +6 -1
  115. package/es/modules/toolbar/toolbar-tip.es.js.map +1 -1
  116. package/es/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.es.js +40145 -0
  117. package/es/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.es.js.map +1 -0
  118. package/es/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js +938 -0
  119. package/es/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js.map +1 -0
  120. package/es/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js +624 -0
  121. package/es/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js.map +1 -0
  122. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js +174 -0
  123. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js.map +1 -0
  124. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.es.js +159 -0
  125. package/es/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.es.js.map +1 -0
  126. package/es/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.es.js +2849 -0
  127. package/es/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.es.js.map +1 -0
  128. package/es/themes/snow.es.js +18 -15
  129. package/es/themes/snow.es.js.map +1 -1
  130. package/es/tools/fullscreen.es.js.map +1 -1
  131. package/es/ui/icons.config.es.js +8 -0
  132. package/es/ui/icons.config.es.js.map +1 -1
  133. package/es/ui/icons.es.js.map +1 -1
  134. package/es/utils/is.es.js +4 -0
  135. package/es/utils/is.es.js.map +1 -1
  136. package/lib/config/editor.config.cjs.js +0 -7
  137. package/lib/config/editor.config.cjs.js.map +1 -1
  138. package/lib/config/editor.utils.cjs.js +0 -2
  139. package/lib/config/editor.utils.cjs.js.map +1 -1
  140. package/lib/config/i18n/en-us.cjs.js +0 -13
  141. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  142. package/lib/config/i18n/zh-cn.cjs.js +0 -13
  143. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  144. package/lib/config/index.cjs.js +6 -11
  145. package/lib/config/index.cjs.js.map +1 -1
  146. package/lib/config/types/index.cjs.js +0 -20
  147. package/lib/config/types/index.cjs.js.map +1 -1
  148. package/lib/core/fluent-editor.cjs.js +6 -4
  149. package/lib/core/fluent-editor.cjs.js.map +1 -1
  150. package/lib/fluent-editor.cjs.js +44 -30
  151. package/lib/fluent-editor.cjs.js.map +1 -1
  152. package/lib/formats/emoji.cjs.js +14 -0
  153. package/lib/formats/emoji.cjs.js.map +1 -0
  154. package/lib/formats/index.cjs.js +11 -0
  155. package/lib/formats/index.cjs.js.map +1 -0
  156. package/lib/formats/soft-break.cjs.js +13 -6
  157. package/lib/formats/soft-break.cjs.js.map +1 -1
  158. package/lib/formats/strike.cjs.js +9 -6
  159. package/lib/formats/strike.cjs.js.map +1 -1
  160. package/lib/formats/video.cjs.js +15 -11
  161. package/lib/formats/video.cjs.js.map +1 -1
  162. package/lib/index.cjs.js +112 -34
  163. package/lib/index.cjs.js.map +1 -1
  164. package/lib/modules/counter.cjs.js +8 -3
  165. package/lib/modules/counter.cjs.js.map +1 -1
  166. package/lib/modules/custom-clipboard.cjs.js +23 -27
  167. package/lib/modules/custom-clipboard.cjs.js.map +1 -1
  168. package/lib/modules/custom-image/actions/action.cjs.js +19 -0
  169. package/lib/modules/custom-image/actions/action.cjs.js.map +1 -0
  170. package/lib/modules/custom-image/actions/{CustomResizeAction.cjs.js → custom-resize-action.cjs.js} +26 -13
  171. package/lib/modules/custom-image/actions/{CustomResizeAction.cjs.js.map → custom-resize-action.cjs.js.map} +1 -1
  172. package/lib/modules/custom-image/actions/{DeleteAction.cjs.js → delete-action.cjs.js} +10 -7
  173. package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -0
  174. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js +137 -0
  175. package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +1 -0
  176. package/lib/modules/custom-image/actions/index.cjs.js +18 -0
  177. package/lib/modules/custom-image/actions/index.cjs.js.map +1 -0
  178. package/lib/modules/custom-image/actions/toolbar-action.cjs.js +33 -0
  179. package/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +1 -0
  180. package/lib/modules/custom-image/actions/toolbar.cjs.js +110 -0
  181. package/lib/modules/custom-image/actions/toolbar.cjs.js.map +1 -0
  182. package/lib/modules/custom-image/{BlotFormatter.cjs.js → blot-formatter.cjs.js} +24 -51
  183. package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -0
  184. package/lib/modules/custom-image/image.cjs.js +35 -22
  185. package/lib/modules/custom-image/image.cjs.js.map +1 -1
  186. package/lib/modules/custom-image/index.cjs.js +9 -0
  187. package/lib/modules/custom-image/index.cjs.js.map +1 -0
  188. package/lib/modules/custom-image/options.cjs.js +85 -0
  189. package/lib/modules/custom-image/options.cjs.js.map +1 -0
  190. package/lib/modules/custom-image/specs/blot-spec.cjs.js +33 -0
  191. package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -0
  192. package/lib/modules/custom-image/specs/{CustomImageSpec.cjs.js → custom-image-spec.cjs.js} +14 -15
  193. package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -0
  194. package/lib/modules/custom-image/specs/image-spec.cjs.js +32 -0
  195. package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -0
  196. package/lib/modules/custom-image/specs/index.cjs.js +9 -0
  197. package/lib/modules/custom-image/specs/index.cjs.js.map +1 -0
  198. package/lib/modules/custom-uploader.cjs.js +64 -195
  199. package/lib/modules/custom-uploader.cjs.js.map +1 -1
  200. package/lib/modules/divider.cjs.js +9 -8
  201. package/lib/modules/divider.cjs.js.map +1 -1
  202. package/lib/modules/emoji.cjs.js +175 -0
  203. package/lib/modules/emoji.cjs.js.map +1 -0
  204. package/lib/modules/file/formats/file.cjs.js +14 -14
  205. package/lib/modules/file/formats/file.cjs.js.map +1 -1
  206. package/lib/modules/file/index.cjs.js +5 -28
  207. package/lib/modules/file/index.cjs.js.map +1 -1
  208. package/lib/modules/file/modules/file-bar.cjs.js +12 -4
  209. package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
  210. package/lib/modules/file/modules/file-module.cjs.js +35 -0
  211. package/lib/modules/file/modules/file-module.cjs.js.map +1 -0
  212. package/lib/modules/i18n.cjs.js +32 -10
  213. package/lib/modules/i18n.cjs.js.map +1 -1
  214. package/lib/modules/index.cjs.js +26 -0
  215. package/lib/modules/index.cjs.js.map +1 -0
  216. package/lib/modules/link/formats/link.cjs.js +15 -11
  217. package/lib/modules/link/formats/link.cjs.js.map +1 -1
  218. package/lib/modules/link/index.cjs.js +4 -12
  219. package/lib/modules/link/index.cjs.js.map +1 -1
  220. package/lib/modules/link/modules/tooltip.cjs.js +30 -20
  221. package/lib/modules/link/modules/tooltip.cjs.js.map +1 -1
  222. package/lib/modules/mathlive/formats.cjs.js +11 -8
  223. package/lib/modules/mathlive/formats.cjs.js.map +1 -1
  224. package/lib/modules/mathlive/index.cjs.js +5 -29
  225. package/lib/modules/mathlive/index.cjs.js.map +1 -1
  226. package/lib/modules/mathlive/module.cjs.js +40 -0
  227. package/lib/modules/mathlive/module.cjs.js.map +1 -0
  228. package/lib/modules/mathlive/tooltip.cjs.js +10 -6
  229. package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
  230. package/lib/modules/mention/index.cjs.js +7 -0
  231. package/lib/modules/{emoji/emoji-list → mention}/index.cjs.js.map +1 -1
  232. package/lib/modules/mention/{MentionLink.cjs.js → mention-link.cjs.js} +15 -7
  233. package/lib/modules/mention/mention-link.cjs.js.map +1 -0
  234. package/lib/modules/mention/{Mention.cjs.js → mention.cjs.js} +30 -22
  235. package/lib/modules/mention/mention.cjs.js.map +1 -0
  236. package/lib/modules/shortcut-key/index.cjs.js +16 -0
  237. package/lib/modules/shortcut-key/index.cjs.js.map +1 -1
  238. package/lib/modules/syntax.cjs.js +4 -0
  239. package/lib/modules/syntax.cjs.js.map +1 -1
  240. package/lib/modules/table-up/index.cjs.js +9 -2
  241. package/lib/modules/table-up/index.cjs.js.map +1 -1
  242. package/lib/modules/toolbar/better-picker.cjs.js +5 -0
  243. package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
  244. package/lib/modules/toolbar/better-toolbar.cjs.js +138 -0
  245. package/lib/modules/toolbar/better-toolbar.cjs.js.map +1 -0
  246. package/lib/modules/toolbar/index.cjs.js +6 -136
  247. package/lib/modules/toolbar/index.cjs.js.map +1 -1
  248. package/lib/modules/toolbar/toolbar-tip.cjs.js +6 -1
  249. package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -1
  250. package/lib/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.cjs.js +40145 -0
  251. package/lib/node_modules/.pnpm/@emoji-mart_data@1.2.1/node_modules/@emoji-mart/data/sets/15/native.json.cjs.js.map +1 -0
  252. package/lib/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.js +938 -0
  253. package/lib/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.js.map +1 -0
  254. package/lib/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.js +624 -0
  255. package/lib/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.js.map +1 -0
  256. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.js +159 -0
  257. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.js.map +1 -0
  258. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js +174 -0
  259. package/lib/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js.map +1 -0
  260. package/lib/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.cjs.js +2847 -0
  261. package/lib/node_modules/.pnpm/emoji-mart@5.6.0/node_modules/emoji-mart/dist/module.cjs.js.map +1 -0
  262. package/lib/themes/snow.cjs.js +19 -16
  263. package/lib/themes/snow.cjs.js.map +1 -1
  264. package/lib/tools/fullscreen.cjs.js.map +1 -1
  265. package/lib/ui/icons.cjs.js.map +1 -1
  266. package/lib/ui/icons.config.cjs.js +8 -0
  267. package/lib/ui/icons.config.cjs.js.map +1 -1
  268. package/lib/utils/is.cjs.js +4 -0
  269. package/lib/utils/is.cjs.js.map +1 -1
  270. package/package.json +8 -7
  271. package/style.css +8 -952
  272. package/types/config/editor.config.d.ts +0 -274
  273. package/types/config/editor.utils.d.ts +0 -1
  274. package/types/config/i18n/en-us.d.ts +0 -13
  275. package/types/config/i18n/zh-cn.d.ts +0 -13
  276. package/types/config/index.d.ts +2 -1
  277. package/types/config/types/editor-config.interface.d.ts +0 -26
  278. package/types/config/types/editor-modules.interface.d.ts +22 -11
  279. package/types/config/types/index.d.ts +0 -20
  280. package/types/config/types/type.d.ts +0 -4
  281. package/types/core/fluent-editor.d.ts +3 -2
  282. package/types/formats/emoji.d.ts +9 -0
  283. package/types/formats/index.d.ts +4 -0
  284. package/types/formats/soft-break.d.ts +6 -7
  285. package/types/formats/strike.d.ts +6 -4
  286. package/types/formats/video.d.ts +4 -6
  287. package/types/index.d.ts +5 -3
  288. package/types/modules/counter.d.ts +9 -2
  289. package/types/modules/custom-clipboard.d.ts +4 -7
  290. package/types/modules/custom-image/Options.d.ts +34 -23
  291. package/types/modules/custom-image/actions/Action.d.ts +5 -3
  292. package/types/modules/custom-image/actions/custom-resize-action.d.ts +24 -0
  293. package/types/modules/custom-image/actions/delete-action.d.ts +7 -0
  294. package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +17 -0
  295. package/types/modules/custom-image/actions/index.d.ts +6 -0
  296. package/types/modules/custom-image/actions/toolbar-action.d.ts +12 -0
  297. package/types/modules/custom-image/actions/toolbar.d.ts +20 -0
  298. package/types/modules/custom-image/blot-formatter.d.ts +24 -0
  299. package/types/modules/custom-image/image-bar.d.ts +9 -7
  300. package/types/modules/custom-image/image.d.ts +22 -23
  301. package/types/modules/custom-image/index.d.ts +4 -0
  302. package/types/modules/custom-image/specs/blot-spec.d.ts +13 -0
  303. package/types/modules/custom-image/specs/custom-image-spec.d.ts +18 -0
  304. package/types/modules/custom-image/specs/image-spec.d.ts +9 -0
  305. package/types/modules/custom-image/specs/index.d.ts +3 -0
  306. package/types/modules/custom-uploader.d.ts +38 -28
  307. package/types/modules/divider.d.ts +6 -4
  308. package/types/modules/emoji/formats/emoji-blot.d.ts +9 -7
  309. package/types/modules/emoji/index.d.ts +3 -10
  310. package/types/modules/emoji/modules/emoji.d.ts +6 -6
  311. package/types/modules/emoji/modules/toolbar-emoji.d.ts +7 -6
  312. package/types/modules/emoji.d.ts +35 -0
  313. package/types/modules/file/formats/file.d.ts +14 -10
  314. package/types/modules/file/index.d.ts +3 -11
  315. package/types/modules/file/modules/file-bar.d.ts +1 -1
  316. package/types/modules/file/modules/file-module.d.ts +10 -0
  317. package/types/modules/i18n.d.ts +4 -5
  318. package/types/modules/index.d.ts +15 -0
  319. package/types/modules/link/formats/link.d.ts +5 -5
  320. package/types/modules/link/index.d.ts +2 -6
  321. package/types/modules/link/modules/tooltip.d.ts +5 -10
  322. package/types/modules/mathlive/formats.d.ts +2 -2
  323. package/types/modules/mathlive/index.d.ts +3 -9
  324. package/types/modules/mathlive/module.d.ts +10 -0
  325. package/types/modules/mathlive/tooltip.d.ts +1 -1
  326. package/types/modules/mention/Mention.d.ts +3 -4
  327. package/types/modules/mention/index.d.ts +2 -0
  328. package/types/modules/mention/mention-link.d.ts +17 -0
  329. package/types/modules/shortcut-key/index.d.ts +16 -41
  330. package/types/modules/table-up/index.d.ts +27 -27
  331. package/types/modules/toolbar/better-toolbar.d.ts +8 -0
  332. package/types/modules/toolbar/index.d.ts +2 -8
  333. package/types/tools/fullscreen.d.ts +5 -1
  334. package/types/ui/icons.config.d.ts +1 -0
  335. package/types/utils/is.d.ts +3 -1
  336. package/es/config/types/additional-toolbar-item.interface.es.js +0 -2
  337. package/es/config/types/additional-toolbar-item.interface.es.js.map +0 -1
  338. package/es/config/types/content-change.interface.es.js +0 -2
  339. package/es/config/types/content-change.interface.es.js.map +0 -1
  340. package/es/config/types/content-save.interface.es.js +0 -2
  341. package/es/config/types/content-save.interface.es.js.map +0 -1
  342. package/es/config/types/counter-option.interface.es.js +0 -2
  343. package/es/config/types/counter-option.interface.es.js.map +0 -1
  344. package/es/config/types/editor-toolbar.interface.es.js +0 -2
  345. package/es/config/types/editor-toolbar.interface.es.js.map +0 -1
  346. package/es/config/types/file-operation.interface.es.js +0 -2
  347. package/es/config/types/file-operation.interface.es.js.map +0 -1
  348. package/es/config/types/focus-change.interface.es.js +0 -2
  349. package/es/config/types/focus-change.interface.es.js.map +0 -1
  350. package/es/config/types/fullscreen-module.interface.es.js +0 -2
  351. package/es/config/types/fullscreen-module.interface.es.js.map +0 -1
  352. package/es/config/types/help-panel-item.interface.es.js +0 -2
  353. package/es/config/types/help-panel-item.interface.es.js.map +0 -1
  354. package/es/config/types/help-panel-option.interface.es.js +0 -2
  355. package/es/config/types/help-panel-option.interface.es.js.map +0 -1
  356. package/es/config/types/image-module.interface.es.js +0 -2
  357. package/es/config/types/image-module.interface.es.js.map +0 -1
  358. package/es/config/types/image-upload.interface.es.js +0 -2
  359. package/es/config/types/image-upload.interface.es.js.map +0 -1
  360. package/es/config/types/load-on-demand-module.interface.es.js +0 -2
  361. package/es/config/types/load-on-demand-module.interface.es.js.map +0 -1
  362. package/es/config/types/mention-module.interface.es.js +0 -2
  363. package/es/config/types/mention-module.interface.es.js.map +0 -1
  364. package/es/config/types/paste-change.interface.es.js +0 -2
  365. package/es/config/types/paste-change.interface.es.js.map +0 -1
  366. package/es/config/types/quick-menu-module.interface.es.js +0 -2
  367. package/es/config/types/quick-menu-module.interface.es.js.map +0 -1
  368. package/es/config/types/range.interface.es.js +0 -2
  369. package/es/config/types/range.interface.es.js.map +0 -1
  370. package/es/config/types/registry-options.interface.es.js +0 -2
  371. package/es/config/types/registry-options.interface.es.js.map +0 -1
  372. package/es/config/types/selection-change.interface.es.js +0 -2
  373. package/es/config/types/selection-change.interface.es.js.map +0 -1
  374. package/es/config/types/toolbar-item.interface.es.js +0 -2
  375. package/es/config/types/toolbar-item.interface.es.js.map +0 -1
  376. package/es/config/types/validate-error.interface.es.js +0 -2
  377. package/es/config/types/validate-error.interface.es.js.map +0 -1
  378. package/es/modules/custom-image/BlotFormatter.es.js.map +0 -1
  379. package/es/modules/custom-image/Options.es.js +0 -95
  380. package/es/modules/custom-image/Options.es.js.map +0 -1
  381. package/es/modules/custom-image/actions/Action.es.js +0 -15
  382. package/es/modules/custom-image/actions/Action.es.js.map +0 -1
  383. package/es/modules/custom-image/actions/DeleteAction.es.js.map +0 -1
  384. package/es/modules/custom-image/image-bar.es.js +0 -127
  385. package/es/modules/custom-image/image-bar.es.js.map +0 -1
  386. package/es/modules/custom-image/specs/BlotSpec.es.js +0 -27
  387. package/es/modules/custom-image/specs/BlotSpec.es.js.map +0 -1
  388. package/es/modules/custom-image/specs/CustomImageSpec.es.js.map +0 -1
  389. package/es/modules/custom-image/specs/ImageSpec.es.js +0 -29
  390. package/es/modules/custom-image/specs/ImageSpec.es.js.map +0 -1
  391. package/es/modules/emoji/emoji-list/index.es.js +0 -5
  392. package/es/modules/emoji/emoji-list/people.es.js +0 -114
  393. package/es/modules/emoji/emoji-list/people.es.js.map +0 -1
  394. package/es/modules/emoji/emoji-list.es.js +0 -9
  395. package/es/modules/emoji/emoji-list.es.js.map +0 -1
  396. package/es/modules/emoji/emoji-map.es.js +0 -9
  397. package/es/modules/emoji/emoji-map.es.js.map +0 -1
  398. package/es/modules/emoji/emoji-sprite.es.js +0 -5
  399. package/es/modules/emoji/emoji-sprite.es.js.map +0 -1
  400. package/es/modules/emoji/formats/emoji-blot.es.js +0 -41
  401. package/es/modules/emoji/formats/emoji-blot.es.js.map +0 -1
  402. package/es/modules/emoji/index.es.js +0 -8
  403. package/es/modules/emoji/index.es.js.map +0 -1
  404. package/es/modules/emoji/modules/emoji.es.js +0 -248
  405. package/es/modules/emoji/modules/emoji.es.js.map +0 -1
  406. package/es/modules/emoji/modules/toolbar-emoji.es.js +0 -153
  407. package/es/modules/emoji/modules/toolbar-emoji.es.js.map +0 -1
  408. package/es/modules/emoji/utils.es.js +0 -19
  409. package/es/modules/emoji/utils.es.js.map +0 -1
  410. package/es/modules/mention/Mention.es.js.map +0 -1
  411. package/es/modules/mention/MentionLink.es.js.map +0 -1
  412. package/lib/config/types/additional-toolbar-item.interface.cjs.js +0 -2
  413. package/lib/config/types/additional-toolbar-item.interface.cjs.js.map +0 -1
  414. package/lib/config/types/content-change.interface.cjs.js +0 -2
  415. package/lib/config/types/content-change.interface.cjs.js.map +0 -1
  416. package/lib/config/types/content-save.interface.cjs.js +0 -2
  417. package/lib/config/types/content-save.interface.cjs.js.map +0 -1
  418. package/lib/config/types/counter-option.interface.cjs.js +0 -2
  419. package/lib/config/types/counter-option.interface.cjs.js.map +0 -1
  420. package/lib/config/types/editor-toolbar.interface.cjs.js +0 -2
  421. package/lib/config/types/editor-toolbar.interface.cjs.js.map +0 -1
  422. package/lib/config/types/file-operation.interface.cjs.js +0 -2
  423. package/lib/config/types/file-operation.interface.cjs.js.map +0 -1
  424. package/lib/config/types/focus-change.interface.cjs.js +0 -2
  425. package/lib/config/types/focus-change.interface.cjs.js.map +0 -1
  426. package/lib/config/types/fullscreen-module.interface.cjs.js +0 -2
  427. package/lib/config/types/fullscreen-module.interface.cjs.js.map +0 -1
  428. package/lib/config/types/help-panel-item.interface.cjs.js +0 -2
  429. package/lib/config/types/help-panel-item.interface.cjs.js.map +0 -1
  430. package/lib/config/types/help-panel-option.interface.cjs.js +0 -2
  431. package/lib/config/types/help-panel-option.interface.cjs.js.map +0 -1
  432. package/lib/config/types/image-module.interface.cjs.js +0 -2
  433. package/lib/config/types/image-module.interface.cjs.js.map +0 -1
  434. package/lib/config/types/image-upload.interface.cjs.js +0 -2
  435. package/lib/config/types/image-upload.interface.cjs.js.map +0 -1
  436. package/lib/config/types/load-on-demand-module.interface.cjs.js +0 -2
  437. package/lib/config/types/load-on-demand-module.interface.cjs.js.map +0 -1
  438. package/lib/config/types/mention-module.interface.cjs.js +0 -2
  439. package/lib/config/types/mention-module.interface.cjs.js.map +0 -1
  440. package/lib/config/types/paste-change.interface.cjs.js +0 -2
  441. package/lib/config/types/paste-change.interface.cjs.js.map +0 -1
  442. package/lib/config/types/quick-menu-module.interface.cjs.js +0 -2
  443. package/lib/config/types/quick-menu-module.interface.cjs.js.map +0 -1
  444. package/lib/config/types/range.interface.cjs.js +0 -2
  445. package/lib/config/types/range.interface.cjs.js.map +0 -1
  446. package/lib/config/types/registry-options.interface.cjs.js +0 -2
  447. package/lib/config/types/registry-options.interface.cjs.js.map +0 -1
  448. package/lib/config/types/selection-change.interface.cjs.js +0 -2
  449. package/lib/config/types/selection-change.interface.cjs.js.map +0 -1
  450. package/lib/config/types/toolbar-item.interface.cjs.js +0 -2
  451. package/lib/config/types/toolbar-item.interface.cjs.js.map +0 -1
  452. package/lib/config/types/validate-error.interface.cjs.js +0 -2
  453. package/lib/config/types/validate-error.interface.cjs.js.map +0 -1
  454. package/lib/modules/custom-image/BlotFormatter.cjs.js.map +0 -1
  455. package/lib/modules/custom-image/Options.cjs.js +0 -95
  456. package/lib/modules/custom-image/Options.cjs.js.map +0 -1
  457. package/lib/modules/custom-image/actions/Action.cjs.js +0 -15
  458. package/lib/modules/custom-image/actions/Action.cjs.js.map +0 -1
  459. package/lib/modules/custom-image/actions/DeleteAction.cjs.js.map +0 -1
  460. package/lib/modules/custom-image/image-bar.cjs.js +0 -127
  461. package/lib/modules/custom-image/image-bar.cjs.js.map +0 -1
  462. package/lib/modules/custom-image/specs/BlotSpec.cjs.js +0 -27
  463. package/lib/modules/custom-image/specs/BlotSpec.cjs.js.map +0 -1
  464. package/lib/modules/custom-image/specs/CustomImageSpec.cjs.js.map +0 -1
  465. package/lib/modules/custom-image/specs/ImageSpec.cjs.js +0 -29
  466. package/lib/modules/custom-image/specs/ImageSpec.cjs.js.map +0 -1
  467. package/lib/modules/emoji/emoji-list/index.cjs.js +0 -5
  468. package/lib/modules/emoji/emoji-list/people.cjs.js +0 -114
  469. package/lib/modules/emoji/emoji-list/people.cjs.js.map +0 -1
  470. package/lib/modules/emoji/emoji-list.cjs.js +0 -9
  471. package/lib/modules/emoji/emoji-list.cjs.js.map +0 -1
  472. package/lib/modules/emoji/emoji-map.cjs.js +0 -9
  473. package/lib/modules/emoji/emoji-map.cjs.js.map +0 -1
  474. package/lib/modules/emoji/emoji-sprite.cjs.js +0 -5
  475. package/lib/modules/emoji/emoji-sprite.cjs.js.map +0 -1
  476. package/lib/modules/emoji/formats/emoji-blot.cjs.js +0 -41
  477. package/lib/modules/emoji/formats/emoji-blot.cjs.js.map +0 -1
  478. package/lib/modules/emoji/index.cjs.js +0 -8
  479. package/lib/modules/emoji/index.cjs.js.map +0 -1
  480. package/lib/modules/emoji/modules/emoji.cjs.js +0 -248
  481. package/lib/modules/emoji/modules/emoji.cjs.js.map +0 -1
  482. package/lib/modules/emoji/modules/toolbar-emoji.cjs.js +0 -153
  483. package/lib/modules/emoji/modules/toolbar-emoji.cjs.js.map +0 -1
  484. package/lib/modules/emoji/utils.cjs.js +0 -19
  485. package/lib/modules/emoji/utils.cjs.js.map +0 -1
  486. package/lib/modules/mention/Mention.cjs.js.map +0 -1
  487. package/lib/modules/mention/MentionLink.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"image.cjs.js","sources":["../../../../src/modules/custom-image/image.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { isNullOrUndefined, sanitize } from '../../config/editor.utils'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\nconst Inline = Quill.imports['blots/inline']\r\n\r\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\r\n\r\n// @dynamic\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) {\r\n const node = super.create(value)\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', '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\n// @dynamic\r\nclass CustomImageContainer extends Inline {\r\n static tagName: string\r\n static className: string\r\n static blotName: string\r\n static allowedChildren: typeof CustomImage[]\r\n constructor(scroll, domNode) {\r\n super(scroll, domNode)\r\n domNode.setAttribute('contenteditable', false)\r\n }\r\n}\r\nCustomImageContainer.blotName = 'image-container'\r\nCustomImageContainer.className = 'ql-image-container'\r\nCustomImageContainer.tagName = 'DIV'\r\n\r\nCustomImageContainer.allowedChildren = [CustomImage]\r\nexport { CustomImage as default, CustomImageContainer as ImageContainerBlot }\r\n"],"names":["sanitize","isNullOrUndefined"],"mappings":"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"}
1
+ {"version":3,"file":"image.cjs.js","sources":["../../../../src/modules/custom-image/image.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\r\nimport type TypeEmbed from 'quill/blots/embed'\r\nimport Quill from 'quill'\r\nimport { isNullOrUndefined, sanitize } from '../../config/editor.utils'\r\nimport { isObject } from '../../utils/is'\r\nimport { ALIGN_ATTR, alignmentHandler } from './actions'\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 | {\r\n src: string\r\n align?: string\r\n height?: number\r\n width?: number\r\n}\r\nexport class CustomImage extends Embed {\r\n static blotName = 'image'\r\n static tagName = 'IMG'\r\n static ID_SEED = 0\r\n declare domNode: HTMLElement\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.style.verticalAlign = 'baseline'\r\n if (isObject(value)) {\r\n if (value.align && alignmentHandler[value.align]) {\r\n node.setAttribute(ALIGN_ATTR, value.align)\r\n alignmentHandler[value.align](node)\r\n }\r\n if (value.width) {\r\n node.setAttribute('width', String(value.width))\r\n }\r\n if (value.height) {\r\n node.setAttribute('height', String(value.height))\r\n }\r\n }\r\n return node\r\n }\r\n\r\n static formats(domNode: HTMLElement) {\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: string) {\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: string) {\r\n return sanitize(url, ['http', 'https', 'blob', 'data']) ? url : '//:0'\r\n }\r\n\r\n static value(domNode: HTMLElement) {\r\n const formats: any = {}\r\n const imageSrc = domNode.getAttribute('src')\r\n formats.src = this.sanitize(imageSrc)\r\n formats.imageId = domNode.dataset.imageId\r\n if (domNode.dataset.align) {\r\n formats.align = domNode.dataset.align\r\n }\r\n if (domNode.hasAttribute('width')) {\r\n formats.width = domNode.getAttribute('width')\r\n }\r\n if (domNode.hasAttribute('height')) {\r\n formats.height = domNode.getAttribute('height')\r\n }\r\n return formats\r\n }\r\n\r\n format(name: string, value: any) {\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 as TypeEmbed)\r\n }\r\n\r\n wrap(name: string, value?: any): TypeParchment.Parent\r\n wrap(wrapper: TypeParchment.Parent): TypeParchment.Parent\r\n wrap(name: string | TypeParchment.Parent, value?: any) {\r\n const wrapper = (typeof name === 'string' ? this.scroll.create(name, value) : name) as TypeParchment.Parent\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\n"],"names":["isObject","alignmentHandler","ALIGN_ATTR","sanitize","isNullOrUndefined"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("./actions/index.cjs.js");
4
+ const blotFormatter = require("./blot-formatter.cjs.js");
5
+ const image = require("./image.cjs.js");
6
+ require("./specs/index.cjs.js");
7
+ exports.BlotFormatter = blotFormatter.BlotFormatter;
8
+ exports.CustomImage = image.CustomImage;
9
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ require("./specs/index.cjs.js");
4
+ const imageSpec = require("./specs/image-spec.cjs.js");
5
+ const LEFT_ALIGN = "align-left";
6
+ const CENTER_ALIGN = "align-center";
7
+ const RIGHT_ALIGN = "align-right";
8
+ const COPY = "copy";
9
+ const DOWNLOAD = "download";
10
+ const DefaultOptions = {
11
+ specs: [
12
+ imageSpec.ImageSpec
13
+ ],
14
+ overlay: {
15
+ className: "blot-formatter__overlay",
16
+ style: {
17
+ position: "absolute",
18
+ boxSizing: "border-box",
19
+ border: "1px dashed #444"
20
+ }
21
+ },
22
+ toolbar: {
23
+ mainClassName: "blot-formatter__toolbar",
24
+ mainStyle: {
25
+ position: "absolute",
26
+ top: "-12px",
27
+ right: "0",
28
+ left: "0",
29
+ height: "0",
30
+ minWidth: "120px",
31
+ font: "12px/1.0 Arial, Helvetica, sans-serif",
32
+ textAlign: "center",
33
+ color: "#333",
34
+ boxSizing: "border-box",
35
+ cursor: "default",
36
+ zIndex: "1"
37
+ },
38
+ buttonClassName: "blot-formatter__toolbar-button",
39
+ addButtonSelectStyle: true,
40
+ buttonStyle: {
41
+ display: "inline-flex",
42
+ alignItems: "center",
43
+ justifyContent: "center",
44
+ width: "24px",
45
+ height: "24px",
46
+ background: "white",
47
+ border: "1px solid #999",
48
+ verticalAlign: "middle",
49
+ cursor: "pointer"
50
+ },
51
+ svgStyle: {
52
+ display: "inline-block",
53
+ width: "16px",
54
+ height: "16px",
55
+ background: "white",
56
+ verticalAlign: "middle"
57
+ },
58
+ buttons: {
59
+ [LEFT_ALIGN]: true,
60
+ [CENTER_ALIGN]: true,
61
+ [RIGHT_ALIGN]: true,
62
+ [COPY]: true,
63
+ [DOWNLOAD]: true
64
+ }
65
+ },
66
+ resize: {
67
+ handleClassName: "blot-formatter__resize-handle",
68
+ handleStyle: {
69
+ position: "absolute",
70
+ height: "12px",
71
+ width: "12px",
72
+ backgroundColor: "white",
73
+ border: "1px solid #777",
74
+ boxSizing: "border-box",
75
+ opacity: "0.80"
76
+ }
77
+ }
78
+ };
79
+ exports.CENTER_ALIGN = CENTER_ALIGN;
80
+ exports.COPY = COPY;
81
+ exports.DOWNLOAD = DOWNLOAD;
82
+ exports.LEFT_ALIGN = LEFT_ALIGN;
83
+ exports.RIGHT_ALIGN = RIGHT_ALIGN;
84
+ exports.default = DefaultOptions;
85
+ //# sourceMappingURL=options.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.cjs.js","sources":["../../../../src/modules/custom-image/options.ts"],"sourcesContent":["import type { ImageToolbar, ImageToolbarButtons } from './actions'\r\nimport type { BlotSpec } from './specs'\r\nimport { ImageSpec } from './specs'\r\n\r\nexport interface OverlayOptions {\r\n // classname applied to the overlay element\r\n className: string\r\n // style applied to overlay element, or null to prevent styles\r\n style: Record<string, string>\r\n}\r\n\r\nexport interface ResizeOptions {\r\n // class name applied to the resize handles\r\n handleClassName: string\r\n // style applied to resize handles, or null to prevent styles\r\n handleStyle: Record<string, string>\r\n}\r\n\r\nexport interface ToolButtonOption {\r\n name: string\r\n icon: string\r\n isActive?: (el: HTMLElement) => boolean\r\n apply: (this: ImageToolbar, el: HTMLImageElement, toolbarButtons: ImageToolbarButtons) => void\r\n}\r\n\r\nexport interface ToolbarButtonOptions {\r\n buttons: Record<string, ToolButtonOption | boolean>\r\n}\r\n\r\nexport interface ToolbarOptions extends ToolbarButtonOptions {\r\n // class name applied to the root toolbar element\r\n mainClassName: string\r\n // style applied to root toolbar element, or null to prevent styles\r\n mainStyle: Record<string, unknown>\r\n // class name applied to each button in the toolbar\r\n buttonClassName: string\r\n /* whether or not to add the selected style to the buttons.\r\n they'll always get the is-selected class */\r\n addButtonSelectStyle: boolean\r\n // style applied to buttons, or null to prevent styles\r\n buttonStyle: Record<string, unknown>\r\n // style applied to the svgs in the buttons\r\n svgStyle: Record<string, unknown>\r\n}\r\n\r\nexport interface BlotFormatterOptionsInput {\r\n specs: typeof BlotSpec[]\r\n overlay: Partial<OverlayOptions>\r\n resize: Partial<ResizeOptions>\r\n toolbar: Partial<ToolbarOptions>\r\n}\r\nexport interface BlotFormatterOptions {\r\n specs: typeof BlotSpec[]\r\n overlay: OverlayOptions\r\n resize: ResizeOptions\r\n toolbar: ToolbarOptions\r\n}\r\n\r\nexport const LEFT_ALIGN = 'align-left'\r\nexport const CENTER_ALIGN = 'align-center'\r\nexport const RIGHT_ALIGN = 'align-right'\r\nexport const COPY = 'copy'\r\nexport const DOWNLOAD = 'download'\r\nconst DefaultOptions: BlotFormatterOptions = {\r\n specs: [\r\n ImageSpec,\r\n ],\r\n overlay: {\r\n className: 'blot-formatter__overlay',\r\n style: {\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n border: '1px dashed #444',\r\n },\r\n },\r\n toolbar: {\r\n mainClassName: 'blot-formatter__toolbar',\r\n mainStyle: {\r\n position: 'absolute',\r\n top: '-12px',\r\n right: '0',\r\n left: '0',\r\n height: '0',\r\n minWidth: '120px',\r\n font: '12px/1.0 Arial, Helvetica, sans-serif',\r\n textAlign: 'center',\r\n color: '#333',\r\n boxSizing: 'border-box',\r\n cursor: 'default',\r\n zIndex: '1',\r\n },\r\n buttonClassName: 'blot-formatter__toolbar-button',\r\n addButtonSelectStyle: true,\r\n buttonStyle: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '24px',\r\n height: '24px',\r\n background: 'white',\r\n border: '1px solid #999',\r\n verticalAlign: 'middle',\r\n cursor: 'pointer',\r\n },\r\n svgStyle: {\r\n display: 'inline-block',\r\n width: '16px',\r\n height: '16px',\r\n background: 'white',\r\n verticalAlign: 'middle',\r\n },\r\n buttons: {\r\n [LEFT_ALIGN]: true,\r\n [CENTER_ALIGN]: true,\r\n [RIGHT_ALIGN]: true,\r\n [COPY]: true,\r\n [DOWNLOAD]: true,\r\n },\r\n },\r\n resize: {\r\n handleClassName: 'blot-formatter__resize-handle',\r\n handleStyle: {\r\n position: 'absolute',\r\n height: '12px',\r\n width: '12px',\r\n backgroundColor: 'white',\r\n border: '1px solid #777',\r\n boxSizing: 'border-box',\r\n opacity: '0.80',\r\n },\r\n },\r\n}\r\n\r\nexport default DefaultOptions\r\n"],"names":["ImageSpec"],"mappings":";;;;AA0DO,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM,OAAO;AACb,MAAM,WAAW;AACxB,MAAM,iBAAuC;AAAA,EAC3C,OAAO;AAAA,IACLA,UAAAA;AAAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AAAA,IACf,WAAW;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,IACA,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,aAAa;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,QAAQ;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,eAAe;AAAA,IACjB;AAAA,IACA,SAAS;AAAA,MACP,CAAC,UAAU,GAAG;AAAA,MACd,CAAC,YAAY,GAAG;AAAA,MAChB,CAAC,WAAW,GAAG;AAAA,MACf,CAAC,IAAI,GAAG;AAAA,MACR,CAAC,QAAQ,GAAG;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;;;;;;;"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ require("../actions/index.cjs.js");
7
+ const toolbarAction = require("../actions/toolbar-action.cjs.js");
8
+ const customResizeAction = require("../actions/custom-resize-action.cjs.js");
9
+ const deleteAction = require("../actions/delete-action.cjs.js");
10
+ class BlotSpec {
11
+ constructor(formatter) {
12
+ __publicField(this, "formatter");
13
+ this.formatter = formatter;
14
+ }
15
+ init() {
16
+ }
17
+ getActions() {
18
+ return [toolbarAction.ImageToolbarAction, customResizeAction.CustomResizeAction, deleteAction.DeleteAction];
19
+ }
20
+ getTargetElement() {
21
+ return null;
22
+ }
23
+ getOverlayElement() {
24
+ return this.getTargetElement();
25
+ }
26
+ setSelection() {
27
+ this.formatter.quill.setSelection(null);
28
+ }
29
+ onHide() {
30
+ }
31
+ }
32
+ exports.BlotSpec = BlotSpec;
33
+ //# sourceMappingURL=blot-spec.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blot-spec.cjs.js","sources":["../../../../../src/modules/custom-image/specs/blot-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport { CustomResizeAction, DeleteAction, ImageToolbarAction } from '../actions'\r\n\r\nexport class BlotSpec {\r\n formatter: BlotFormatter\r\n\r\n constructor(formatter: BlotFormatter) {\r\n this.formatter = formatter\r\n }\r\n\r\n init(): void {}\r\n\r\n getActions() {\r\n return [ImageToolbarAction, CustomResizeAction, DeleteAction]\r\n }\r\n\r\n getTargetElement(): HTMLElement | null {\r\n return null\r\n }\r\n\r\n getOverlayElement() {\r\n return this.getTargetElement()\r\n }\r\n\r\n setSelection(): void {\r\n this.formatter.quill.setSelection(null)\r\n }\r\n\r\n onHide() {}\r\n}\r\n"],"names":["ImageToolbarAction","CustomResizeAction","DeleteAction"],"mappings":";;;;;;;;;AAGO,MAAM,SAAS;AAAA,EAGpB,YAAY,WAA0B;AAFtC;AAGE,SAAK,YAAY;AAAA,EAAA;AAAA,EAGnB,OAAa;AAAA,EAAA;AAAA,EAEb,aAAa;AACJ,WAAA,CAACA,cAAAA,oBAAoBC,mBAAA,oBAAoBC,yBAAY;AAAA,EAAA;AAAA,EAG9D,mBAAuC;AAC9B,WAAA;AAAA,EAAA;AAAA,EAGT,oBAAoB;AAClB,WAAO,KAAK,iBAAiB;AAAA,EAAA;AAAA,EAG/B,eAAqB;AACd,SAAA,UAAU,MAAM,aAAa,IAAI;AAAA,EAAA;AAAA,EAGxC,SAAS;AAAA,EAAA;AACX;;"}
@@ -1,21 +1,25 @@
1
1
  "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
2
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
6
  const editor_utils = require("../../../config/editor.utils.cjs.js");
4
- const CustomResizeAction = require("../actions/CustomResizeAction.cjs.js");
5
- const DeleteAction = require("../actions/DeleteAction.cjs.js");
6
- const ImageSpec = require("./ImageSpec.cjs.js");
7
- class CustomImageSpec extends ImageSpec.default {
7
+ const imageSpec = require("./image-spec.cjs.js");
8
+ class CustomImageSpec extends imageSpec.ImageSpec {
8
9
  constructor(formatter) {
9
10
  super(formatter);
10
- this.imageMouseout = (event) => {
11
+ __publicField(this, "editorElem");
12
+ __publicField(this, "observer");
13
+ __publicField(this, "oldRootScrollTop");
14
+ __publicField(this, "imageMouseout", (event) => {
11
15
  if (event.target.nodeName === "IMG" || event.target.classList.contains("blot-formatter__overlay")) {
12
16
  const imgDom = event.target;
13
17
  if (!editor_utils.isInside(event, imgDom)) {
14
18
  this.removeImagePreviewOverlay();
15
19
  }
16
20
  }
17
- };
18
- this.onClick = (event) => {
21
+ });
22
+ __publicField(this, "onClick", (event) => {
19
23
  var _a;
20
24
  const el = event.target;
21
25
  const isReadonly = this.formatter.quill.options.readOnly;
@@ -35,13 +39,11 @@ class CustomImageSpec extends ImageSpec.default {
35
39
  const len = imgBlot.length();
36
40
  quill.setSelection(index, len);
37
41
  }
38
- };
42
+ });
39
43
  this.formatter = formatter;
40
44
  this.oldRootScrollTop = this.formatter.quill.root.scrollTop;
41
45
  this.editorElem = this.formatter.quill.container;
42
- if (this.formatter.quill.root === this.formatter.quill.scrollingContainer) {
43
- this.formatter.quill.root.addEventListener("scroll", this.handleQuillRootScroll.bind(this));
44
- }
46
+ this.formatter.quill.root.addEventListener("scroll", this.handleQuillRootScroll.bind(this));
45
47
  }
46
48
  handleQuillRootScroll() {
47
49
  if (this.formatter.overlay) {
@@ -53,9 +55,6 @@ class CustomImageSpec extends ImageSpec.default {
53
55
  this.editorElem.addEventListener("mouseout", this.imageMouseout);
54
56
  super.init();
55
57
  }
56
- getActions() {
57
- return [DeleteAction.default, CustomResizeAction.default];
58
- }
59
58
  imageMouseOver(event) {
60
59
  var _a;
61
60
  const target = event.target;
@@ -114,4 +113,4 @@ class CustomImageSpec extends ImageSpec.default {
114
113
  }
115
114
  }
116
115
  exports.CustomImageSpec = CustomImageSpec;
117
- //# sourceMappingURL=CustomImageSpec.cjs.js.map
116
+ //# sourceMappingURL=custom-image-spec.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-image-spec.cjs.js","sources":["../../../../../src/modules/custom-image/specs/custom-image-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\r\nimport { isInside } from '../../../config/editor.utils'\r\nimport { ImageSpec } from './image-spec'\r\n\r\nexport class CustomImageSpec extends ImageSpec {\r\n editorElem: HTMLElement | undefined\r\n observer: any\r\n oldRootScrollTop: number\r\n\r\n constructor(formatter: BlotFormatter) {\r\n super(formatter)\r\n this.formatter = formatter\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.editorElem = this.formatter.quill.container\r\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n }\r\n\r\n handleQuillRootScroll() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\r\n }\r\n }\r\n\r\n init(): void {\r\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\r\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\r\n\r\n super.init()\r\n }\r\n\r\n imageMouseOver(event) {\r\n const target = event.target\r\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\r\n if (target.nodeName === 'IMG' || isBlotFormatter) {\r\n // this.addImagePreviewOverlay(event);\r\n }\r\n }\r\n\r\n imageMouseout = (event) => {\r\n if (event.target.nodeName === 'IMG'\r\n || event.target.classList.contains('blot-formatter__overlay')) {\r\n const imgDom = event.target\r\n if (!isInside(event, imgDom)) {\r\n this.removeImagePreviewOverlay()\r\n }\r\n }\r\n }\r\n\r\n addImagePreviewOverlay(event) {\r\n const target = event.target\r\n const {\r\n left: imgLeft,\r\n width: imgWidth,\r\n } = target.getBoundingClientRect()\r\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\r\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\r\n\r\n const {\r\n left: editorLeft,\r\n top: editorTop,\r\n } = event.currentTarget.getBoundingClientRect()\r\n\r\n const imgRelativeLeft = imgLeft - editorLeft\r\n const imgRelativeTop = imgTop - editorTop\r\n\r\n const maxmizeWidth = 24\r\n const maxmizePadding = 15\r\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\r\n const previewTop = imgRelativeTop + maxmizePadding\r\n\r\n const previewStyle = `\r\n left: ${previewLeft}px;\r\n top: ${previewTop}px;\r\n width: ${maxmizeWidth}px;\r\n `\r\n const imageSrc = target.src || target.getAttribute('data-image')\r\n const imageId = target.getAttribute('data-image-id')\r\n\r\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\r\n if (!previewDom) {\r\n event.currentTarget.insertAdjacentHTML('beforeend', `\r\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\r\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\r\n data-image=\"${imageSrc}\"></i>\r\n </div>\r\n `)\r\n }\r\n }\r\n\r\n removeImagePreviewOverlay() {\r\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\r\n if (previewDom) {\r\n previewDom.parentNode.removeChild(previewDom)\r\n }\r\n }\r\n\r\n onHide() {\r\n this.removeImagePreviewOverlay()\r\n super.onHide()\r\n }\r\n\r\n resetOverlayMarginTop() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = '0px'\r\n }\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n const isReadonly = this.formatter.quill.options.readOnly\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\r\n return\r\n }\r\n\r\n this.img = el as HTMLImageElement\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.resetOverlayMarginTop()\r\n this.formatter.show(this)\r\n\r\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\r\n const imageDom = this.formatter.currentSpec?.getTargetElement()\r\n if (imageDom) {\r\n imageDom.classList.add('current-select-img')\r\n const quill = this.formatter.quill\r\n const imgBlot = quill.scroll.find(this.img)\r\n const index = quill.getIndex(imgBlot)\r\n const len = imgBlot.length()\r\n quill.setSelection(index, len)\r\n }\r\n }\r\n}\r\n"],"names":["ImageSpec","isInside"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ const blotSpec = require("./blot-spec.cjs.js");
7
+ class ImageSpec extends blotSpec.BlotSpec {
8
+ constructor() {
9
+ super(...arguments);
10
+ __publicField(this, "img", null);
11
+ __publicField(this, "onClick", (event) => {
12
+ const el = event.target;
13
+ if (!(el instanceof HTMLElement) || el.tagName !== "IMG") {
14
+ return;
15
+ }
16
+ event.stopPropagation();
17
+ this.img = el;
18
+ this.formatter.show(this);
19
+ });
20
+ }
21
+ init() {
22
+ this.formatter.quill.root.addEventListener("click", this.onClick);
23
+ }
24
+ getTargetElement() {
25
+ return this.img;
26
+ }
27
+ onHide() {
28
+ this.img = null;
29
+ }
30
+ }
31
+ exports.ImageSpec = ImageSpec;
32
+ //# sourceMappingURL=image-spec.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-spec.cjs.js","sources":["../../../../../src/modules/custom-image/specs/image-spec.ts"],"sourcesContent":["import { BlotSpec } from './blot-spec'\r\n\r\nexport class ImageSpec extends BlotSpec {\r\n img: HTMLImageElement | null = null\r\n\r\n init() {\r\n this.formatter.quill.root.addEventListener('click', this.onClick)\r\n }\r\n\r\n getTargetElement() {\r\n return this.img\r\n }\r\n\r\n onHide() {\r\n this.img = null\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\r\n return\r\n }\r\n event.stopPropagation()\r\n\r\n this.img = el as HTMLImageElement\r\n this.formatter.show(this)\r\n }\r\n}\r\n"],"names":["BlotSpec"],"mappings":";;;;;;AAEO,MAAM,kBAAkBA,SAAAA,SAAS;AAAA,EAAjC;AAAA;AACL,+BAA+B;AAc/B,mCAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MAAA;AAEF,YAAM,gBAAgB;AAEtB,WAAK,MAAM;AACN,WAAA,UAAU,KAAK,IAAI;AAAA,IAC1B;AAAA;AAAA,EArBA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAAA;AAAA,EAGlE,mBAAmB;AACjB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,SAAS;AACP,SAAK,MAAM;AAAA,EAAA;AAaf;;"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const blotSpec = require("./blot-spec.cjs.js");
4
+ const customImageSpec = require("./custom-image-spec.cjs.js");
5
+ const imageSpec = require("./image-spec.cjs.js");
6
+ exports.BlotSpec = blotSpec.BlotSpec;
7
+ exports.CustomImageSpec = customImageSpec.CustomImageSpec;
8
+ exports.ImageSpec = imageSpec.ImageSpec;
9
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,209 +1,78 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
6
  const Quill = require("quill");
4
- const editor_config = require("../config/editor.config.cjs.js");
5
- const editor_utils = require("../config/editor.utils.cjs.js");
6
- const Uploader = Quill.imports["modules/uploader"];
7
+ const is = require("../utils/is.cjs.js");
8
+ const Uploader = Quill.import("modules/uploader");
7
9
  const Delta = Quill.import("delta");
8
- class CustomUploader extends Uploader {
9
- constructor() {
10
- super(...arguments);
11
- this.isAllowedFileSize = (maxSize, file) => {
12
- if (editor_utils.isNullOrUndefined(maxSize)) {
13
- return true;
14
- }
15
- return file.size <= maxSize;
16
- };
17
- this.isAllowedFileType = (accept, file) => {
18
- if (accept) {
19
- const baseMimeType = file.type.replace(/\/.*$/, "");
20
- const acceptArr = typeof accept === "string" ? accept.split(",") : accept;
21
- return acceptArr.some((type) => {
22
- const validType = type.trim();
23
- if (validType.startsWith(".")) {
24
- return file.name.toLowerCase().includes(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length);
25
- } else if (/\/\*$/.test(validType)) {
26
- return baseMimeType === validType.replace(/\/.*$/, "");
27
- }
28
- return file.type === validType;
29
- });
30
- }
31
- return true;
32
- };
10
+ class FileUploader extends Uploader {
11
+ constructor(quill, options) {
12
+ super(quill, options);
13
+ this.quill = quill;
14
+ this.options = this.resolveOptions(options);
33
15
  }
34
- upload(range, files, isFile) {
35
- const uploads = [];
36
- const fileFlags = [];
37
- const rejectFlags = {
38
- file: false,
39
- image: false
40
- };
41
- const uploadOption = this.quill.options.uploadOption;
42
- const acceptObj = uploadOption && {
43
- image: uploadOption.imageAccept,
44
- file: uploadOption.fileAccept
45
- } || {};
46
- Array.from(files).forEach((file) => {
47
- var _a, _b;
48
- if (file) {
49
- const fileFlag = typeof isFile === "boolean" ? isFile : !/^image\/[-\w.]+$/.test(file.type);
50
- const fileType = fileFlag ? "file" : "image";
51
- const accept = acceptObj[fileType] || this.options[fileType];
52
- if (this.isAllowedFileType(accept, file) && this.isAllowedFileSize(uploadOption == null ? void 0 : uploadOption.maxSize, file)) {
53
- uploads.push(file);
54
- fileFlags.push(fileFlag);
55
- (_a = uploadOption == null ? void 0 : uploadOption.success) == null ? void 0 : _a.call(uploadOption, file);
56
- } else {
57
- rejectFlags[fileType] = true;
58
- (_b = uploadOption == null ? void 0 : uploadOption.fail) == null ? void 0 : _b.call(uploadOption, file);
59
- }
16
+ resolveOptions(options = {}) {
17
+ return Object.assign({
18
+ mimetypes: ["*"],
19
+ maxSize: Number.POSITIVE_INFINITY,
20
+ handler(range, files) {
21
+ return files.map((file) => URL.createObjectURL(file));
22
+ },
23
+ success() {
24
+ },
25
+ fail() {
60
26
  }
61
- });
62
- this.options.handler.call(this, range, uploads, fileFlags, rejectFlags);
27
+ }, options);
63
28
  }
64
- // 处理上传文件
65
- handleUploadFile(range, files, _hasRejectedFile) {
66
- var _a;
67
- if ((_a = this.quill.options.uploadOption) == null ? void 0 : _a.fileUpload) {
68
- const initialRange = range;
69
- files.forEach((file) => {
70
- var _a2;
71
- const result = {
72
- file,
73
- callback: (res) => {
74
- if (!res) {
75
- return;
76
- }
77
- this.insertFileToEditor(initialRange, file, {
78
- code: 0,
79
- data: {
80
- title: file.name,
81
- size: file.size,
82
- src: res.fileUrl
83
- }
84
- });
85
- initialRange.index += 1;
86
- },
87
- editor: this.quill
88
- };
89
- (_a2 = this.quill.options.uploadOption) == null ? void 0 : _a2.fileUpload(result);
90
- });
91
- } else {
92
- files.forEach((file) => {
93
- const fileUrl = URL.createObjectURL(file);
94
- const initialRange = range;
95
- this.insertFileToEditor(initialRange, file, {
96
- code: 0,
97
- data: {
98
- title: file.name,
99
- size: file.size,
100
- src: file.src ?? fileUrl
101
- }
102
- });
103
- initialRange.index += 1;
104
- });
105
- }
29
+ validateFile(file) {
30
+ return this.options.mimetypes.some((type) => (file.type || "text/plain").match(type.replaceAll("*", ".*"))) && file.size < this.options.maxSize;
106
31
  }
107
- // 将文件插入编辑器
108
- insertFileToEditor(range, file, { code, message, data }) {
109
- if (code === 0) {
110
- const oldContent = new Delta().retain(range.index).delete(range.length);
111
- const videoFlag = this.uploadOption && this.uploadOption.isVideoPlay && /^video\/[-\w.]+$/.test(file.type);
112
- const insertObj = videoFlag ? { video: data } : { file: data };
113
- const currentContent = new Delta([{ insert: insertObj }]);
114
- const newContent = oldContent.concat(currentContent);
115
- this.quill.updateContents(newContent, Quill.sources.USER);
116
- this.quill.setSelection(range.index + 1);
117
- } else {
118
- console.error("error message:", message);
119
- }
32
+ async getFileUrls(files, range) {
33
+ const uploads = files.filter((file) => this.validateFile(file));
34
+ return this.options.handler.call(this, range, uploads);
120
35
  }
121
- // 将图片插入编辑器
122
- insertImageToEditor(range, { code, message, data }) {
123
- if (code === 0) {
124
- const { imageId, imageUrl } = data;
125
- const oldContent = new Delta().retain(range.index).delete(range.length);
126
- const currentContent = new Delta([
127
- {
128
- insert: { image: imageUrl },
129
- attributes: { "image-id": imageId }
130
- }
131
- ]);
132
- const newContent = oldContent.concat(currentContent);
133
- this.quill.updateContents(newContent, Quill.sources.USER);
134
- this.quill.setSelection(range.index + 1);
135
- } else {
136
- console.error("error message:", message);
36
+ async upload(range, files) {
37
+ const uploads = [];
38
+ const fails = [];
39
+ for (const file of Array.from(files)) {
40
+ if (this.validateFile(file)) {
41
+ uploads.push(file);
42
+ } else {
43
+ fails.push(file);
44
+ }
137
45
  }
138
- }
139
- // 处理上传图片
140
- handleUploadImage(range, { file, files }, hasRejectedImage) {
141
- var _a, _b;
142
- if ((_a = this.quill.options.uploadOption) == null ? void 0 : _a.imageUpload) {
143
- const imageEnableMultiUpload = this.quill.uploader.options.enableMultiUpload === true || ((_b = this.quill.uploader.options.enableMultiUpload) == null ? void 0 : _b.image);
144
- files.forEach((file2) => {
145
- var _a2;
146
- const initialRange = range;
147
- const result = {
148
- file: file2,
149
- data: { files: [file2] },
150
- hasRejectedImage,
151
- callback: (res) => {
152
- if (!res) {
153
- return;
154
- }
155
- if (imageEnableMultiUpload && Array.isArray(res)) {
156
- res.forEach((value) => {
157
- this.insertImageToEditor(initialRange, value);
158
- initialRange.index += 1;
159
- });
160
- } else {
161
- this.insertImageToEditor(initialRange, res);
162
- initialRange.index += 1;
163
- }
164
- },
165
- editor: this.quill
166
- };
167
- if (imageEnableMultiUpload) {
168
- result.data = { files };
46
+ const result = await this.options.handler.call(this, range, uploads);
47
+ const updateDelta = result.reduce((delta, url, i) => {
48
+ if (is.isString(url)) {
49
+ const type = uploads[i].type;
50
+ if (type.startsWith("image/")) {
51
+ delta.insert({ image: url });
52
+ } else if (type.startsWith("video/")) {
53
+ delta.insert({ video: { src: url } });
54
+ } else {
55
+ delta.insert({ file: { size: uploads[i].size, title: uploads[i].name, src: url } });
169
56
  }
170
- (_a2 = this.quill.options.uploadOption) == null ? void 0 : _a2.imageUpload(result);
171
- });
172
- } else {
173
- const promises = files.map((fileItem) => {
174
- return new Promise((resolve) => {
175
- const reader = new FileReader();
176
- reader.onload = (e) => {
177
- resolve(e.target.result);
178
- };
179
- reader.readAsDataURL(fileItem);
180
- });
181
- });
182
- Promise.all(promises).then((images) => {
183
- const update = images.reduce((delta, image) => {
184
- return delta.insert({ image });
185
- }, new Delta().retain(range.index).delete(range.length));
186
- this.quill.updateContents(update, Quill.sources.USER);
187
- this.quill.setSelection(range.index + images.length, Quill.sources.SILENT);
188
- });
189
- }
190
- }
191
- }
192
- CustomUploader.DEFAULTS = {
193
- file: editor_config.FILE_UPLOADER_MIME_TYPES,
194
- image: editor_config.IMAGE_UPLOADER_MIME_TYPES,
195
- enableMultiUpload: false,
196
- handler(range, files, fileFlags, rejectFlags) {
197
- const fileArr = [];
198
- const imgArr = [];
199
- files.forEach((file, index) => fileFlags[index] ? fileArr.push(file) : imgArr.push(file));
200
- if (this.quill.options.modules.file && (fileArr.length || rejectFlags.file)) {
201
- this.handleUploadFile(range, fileArr, rejectFlags.file);
57
+ } else {
58
+ delta.insert("\n");
59
+ }
60
+ return delta;
61
+ }, new Delta().retain(range.index).delete(range.length));
62
+ this.quill.updateContents(updateDelta, Quill.sources.USER);
63
+ this.quill.setSelection(range.index + result.length, Quill.sources.SILENT);
64
+ for (const file of fails) {
65
+ this.options.fail.call(this, file, range);
202
66
  }
203
- if (imgArr.length || rejectFlags.image) {
204
- this.handleUploadImage(range, { file: imgArr[0], files: imgArr }, rejectFlags.image);
67
+ for (const [i, res] of result.entries()) {
68
+ if (is.isString(res)) {
69
+ this.options.success.call(this, files[i], { index: range.index + i, length: 0 });
70
+ } else {
71
+ this.options.fail.call(this, files[i], { index: range.index + i, length: 0 });
72
+ }
205
73
  }
206
74
  }
207
- };
208
- exports.default = CustomUploader;
75
+ }
76
+ __publicField(FileUploader, "DEFAULTS", {});
77
+ exports.FileUploader = FileUploader;
209
78
  //# sourceMappingURL=custom-uploader.cjs.js.map