@wangeditor-next/plugin-attachment 2.0.7

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 (433) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -0
  3. package/dist/basic-modules/src/constants/icon-svg.d.ts +47 -0
  4. package/dist/basic-modules/src/index.d.ts +9 -0
  5. package/dist/basic-modules/src/locale/en.d.ts +105 -0
  6. package/dist/basic-modules/src/locale/index.d.ts +5 -0
  7. package/dist/basic-modules/src/locale/zh-CN.d.ts +105 -0
  8. package/dist/basic-modules/src/modules/blockquote/custom-types.d.ts +9 -0
  9. package/dist/basic-modules/src/modules/blockquote/elem-to-html.d.ts +11 -0
  10. package/dist/basic-modules/src/modules/blockquote/index.d.ts +7 -0
  11. package/dist/basic-modules/src/modules/blockquote/menu/BlockquoteMenu.d.ts +20 -0
  12. package/dist/basic-modules/src/modules/blockquote/menu/index.d.ts +9 -0
  13. package/dist/basic-modules/src/modules/blockquote/parse-elem-html.d.ts +14 -0
  14. package/dist/basic-modules/src/modules/blockquote/plugin.d.ts +7 -0
  15. package/dist/basic-modules/src/modules/blockquote/render-elem.d.ts +20 -0
  16. package/dist/basic-modules/src/modules/code-block/custom-types.d.ts +17 -0
  17. package/dist/basic-modules/src/modules/code-block/elem-to-html.d.ts +16 -0
  18. package/dist/basic-modules/src/modules/code-block/index.d.ts +7 -0
  19. package/dist/basic-modules/src/modules/code-block/menu/CodeBlockMenu.d.ts +22 -0
  20. package/dist/basic-modules/src/modules/code-block/menu/index.d.ts +12 -0
  21. package/dist/basic-modules/src/modules/code-block/parse-elem-html.d.ts +19 -0
  22. package/dist/basic-modules/src/modules/code-block/plugin.d.ts +7 -0
  23. package/dist/basic-modules/src/modules/code-block/pre-parse-html.d.ts +15 -0
  24. package/dist/basic-modules/src/modules/code-block/render-elem.d.ts +18 -0
  25. package/dist/basic-modules/src/modules/color/custom-types.d.ts +9 -0
  26. package/dist/basic-modules/src/modules/color/index.d.ts +7 -0
  27. package/dist/basic-modules/src/modules/color/menu/BaseMenu.d.ts +20 -0
  28. package/dist/basic-modules/src/modules/color/menu/BgColorMenu.d.ts +11 -0
  29. package/dist/basic-modules/src/modules/color/menu/ColorMenu.d.ts +11 -0
  30. package/dist/basic-modules/src/modules/color/menu/config.d.ts +6 -0
  31. package/dist/basic-modules/src/modules/color/menu/index.d.ts +20 -0
  32. package/dist/basic-modules/src/modules/color/parse-style-html.d.ts +8 -0
  33. package/dist/basic-modules/src/modules/color/pre-parse-html.d.ts +15 -0
  34. package/dist/basic-modules/src/modules/color/render-style.d.ts +15 -0
  35. package/dist/basic-modules/src/modules/color/style-to-html.d.ts +14 -0
  36. package/dist/basic-modules/src/modules/common/index.d.ts +7 -0
  37. package/dist/basic-modules/src/modules/common/menu/EnterMenu.d.ts +15 -0
  38. package/dist/basic-modules/src/modules/common/menu/index.d.ts +9 -0
  39. package/dist/basic-modules/src/modules/divider/custom-types.d.ts +12 -0
  40. package/dist/basic-modules/src/modules/divider/elem-to-html.d.ts +11 -0
  41. package/dist/basic-modules/src/modules/divider/index.d.ts +7 -0
  42. package/dist/basic-modules/src/modules/divider/menu/InsertDividerMenu.d.ts +15 -0
  43. package/dist/basic-modules/src/modules/divider/menu/index.d.ts +9 -0
  44. package/dist/basic-modules/src/modules/divider/parse-elem-html.d.ts +14 -0
  45. package/dist/basic-modules/src/modules/divider/plugin.d.ts +7 -0
  46. package/dist/basic-modules/src/modules/divider/render-elem.d.ts +13 -0
  47. package/dist/basic-modules/src/modules/emotion/index.d.ts +7 -0
  48. package/dist/basic-modules/src/modules/emotion/menu/EmotionMenu.d.ts +19 -0
  49. package/dist/basic-modules/src/modules/emotion/menu/config.d.ts +5 -0
  50. package/dist/basic-modules/src/modules/emotion/menu/index.d.ts +12 -0
  51. package/dist/basic-modules/src/modules/font-size-family/custom-types.d.ts +9 -0
  52. package/dist/basic-modules/src/modules/font-size-family/index.d.ts +7 -0
  53. package/dist/basic-modules/src/modules/font-size-family/menu/BaseMenu.d.ts +18 -0
  54. package/dist/basic-modules/src/modules/font-size-family/menu/FontFamilyMenu.d.ts +14 -0
  55. package/dist/basic-modules/src/modules/font-size-family/menu/FontSizeMenu.d.ts +13 -0
  56. package/dist/basic-modules/src/modules/font-size-family/menu/config.d.ts +12 -0
  57. package/dist/basic-modules/src/modules/font-size-family/menu/index.d.ts +26 -0
  58. package/dist/basic-modules/src/modules/font-size-family/parse-style-html.d.ts +8 -0
  59. package/dist/basic-modules/src/modules/font-size-family/pre-parse-html.d.ts +15 -0
  60. package/dist/basic-modules/src/modules/font-size-family/render-style.d.ts +15 -0
  61. package/dist/basic-modules/src/modules/font-size-family/style-to-html.d.ts +14 -0
  62. package/dist/basic-modules/src/modules/format-painter/helper.d.ts +3 -0
  63. package/dist/basic-modules/src/modules/format-painter/index.d.ts +7 -0
  64. package/dist/basic-modules/src/modules/format-painter/menu/FormatPainter.d.ts +37 -0
  65. package/dist/basic-modules/src/modules/format-painter/menu/index.d.ts +9 -0
  66. package/dist/basic-modules/src/modules/format-painter/plugin.d.ts +7 -0
  67. package/dist/basic-modules/src/modules/full-screen/index.d.ts +7 -0
  68. package/dist/basic-modules/src/modules/full-screen/menu/FullScreen.d.ts +18 -0
  69. package/dist/basic-modules/src/modules/full-screen/menu/index.d.ts +9 -0
  70. package/dist/basic-modules/src/modules/header/custom-types.d.ts +29 -0
  71. package/dist/basic-modules/src/modules/header/elem-to-html.d.ts +29 -0
  72. package/dist/basic-modules/src/modules/header/helper.d.ts +14 -0
  73. package/dist/basic-modules/src/modules/header/index.d.ts +7 -0
  74. package/dist/basic-modules/src/modules/header/menu/Header1ButtonMenu.d.ts +10 -0
  75. package/dist/basic-modules/src/modules/header/menu/Header2ButtonMenu.d.ts +10 -0
  76. package/dist/basic-modules/src/modules/header/menu/Header3ButtonMenu.d.ts +10 -0
  77. package/dist/basic-modules/src/modules/header/menu/Header4ButtonMenu.d.ts +10 -0
  78. package/dist/basic-modules/src/modules/header/menu/Header5ButtonMenu.d.ts +10 -0
  79. package/dist/basic-modules/src/modules/header/menu/Header6ButtonMenu.d.ts +10 -0
  80. package/dist/basic-modules/src/modules/header/menu/HeaderButtonMenuBase.d.ts +19 -0
  81. package/dist/basic-modules/src/modules/header/menu/HeaderSelectMenu.d.ts +26 -0
  82. package/dist/basic-modules/src/modules/header/menu/index.d.ts +39 -0
  83. package/dist/basic-modules/src/modules/header/parse-elem-html.d.ts +32 -0
  84. package/dist/basic-modules/src/modules/header/plugin.d.ts +7 -0
  85. package/dist/basic-modules/src/modules/header/render-elem.d.ts +32 -0
  86. package/dist/basic-modules/src/modules/image/custom-types.d.ts +22 -0
  87. package/dist/basic-modules/src/modules/image/elem-to-html.d.ts +12 -0
  88. package/dist/basic-modules/src/modules/image/helper.d.ts +13 -0
  89. package/dist/basic-modules/src/modules/image/index.d.ts +7 -0
  90. package/dist/basic-modules/src/modules/image/menu/DeleteImage.d.ts +15 -0
  91. package/dist/basic-modules/src/modules/image/menu/EditImage.d.ts +28 -0
  92. package/dist/basic-modules/src/modules/image/menu/EditImageSizeMenu.d.ts +25 -0
  93. package/dist/basic-modules/src/modules/image/menu/InsertImage.d.ts +27 -0
  94. package/dist/basic-modules/src/modules/image/menu/PreviewImage.d.ts +14 -0
  95. package/dist/basic-modules/src/modules/image/menu/ViewImageLink.d.ts +15 -0
  96. package/dist/basic-modules/src/modules/image/menu/Width100.d.ts +10 -0
  97. package/dist/basic-modules/src/modules/image/menu/Width30.d.ts +10 -0
  98. package/dist/basic-modules/src/modules/image/menu/Width50.d.ts +10 -0
  99. package/dist/basic-modules/src/modules/image/menu/WidthBase.d.ts +16 -0
  100. package/dist/basic-modules/src/modules/image/menu/config.d.ts +30 -0
  101. package/dist/basic-modules/src/modules/image/menu/index.d.ts +61 -0
  102. package/dist/basic-modules/src/modules/image/parse-elem-html.d.ts +14 -0
  103. package/dist/basic-modules/src/modules/image/plugin.d.ts +7 -0
  104. package/dist/basic-modules/src/modules/image/render-elem.d.ts +13 -0
  105. package/dist/basic-modules/src/modules/indent/custom-types.d.ts +10 -0
  106. package/dist/basic-modules/src/modules/indent/index.d.ts +7 -0
  107. package/dist/basic-modules/src/modules/indent/is-indent-target.d.ts +4 -0
  108. package/dist/basic-modules/src/modules/indent/menu/BaseMenu.d.ts +25 -0
  109. package/dist/basic-modules/src/modules/indent/menu/DecreaseIndentMenu.d.ts +13 -0
  110. package/dist/basic-modules/src/modules/indent/menu/IncreaseIndentMenu.d.ts +15 -0
  111. package/dist/basic-modules/src/modules/indent/menu/index.d.ts +14 -0
  112. package/dist/basic-modules/src/modules/indent/parse-style-html.d.ts +8 -0
  113. package/dist/basic-modules/src/modules/indent/pre-parse-html.d.ts +15 -0
  114. package/dist/basic-modules/src/modules/indent/render-style.d.ts +15 -0
  115. package/dist/basic-modules/src/modules/indent/style-to-html.d.ts +7 -0
  116. package/dist/basic-modules/src/modules/justify/custom-types.d.ts +10 -0
  117. package/dist/basic-modules/src/modules/justify/index.d.ts +7 -0
  118. package/dist/basic-modules/src/modules/justify/menu/BaseMenu.d.ts +15 -0
  119. package/dist/basic-modules/src/modules/justify/menu/JustifyCenterMenu.d.ts +12 -0
  120. package/dist/basic-modules/src/modules/justify/menu/JustifyJustifyMenu.d.ts +12 -0
  121. package/dist/basic-modules/src/modules/justify/menu/JustifyLeftMenu.d.ts +12 -0
  122. package/dist/basic-modules/src/modules/justify/menu/JustifyRightMenu.d.ts +12 -0
  123. package/dist/basic-modules/src/modules/justify/menu/index.d.ts +24 -0
  124. package/dist/basic-modules/src/modules/justify/parse-style-html.d.ts +8 -0
  125. package/dist/basic-modules/src/modules/justify/render-style.d.ts +15 -0
  126. package/dist/basic-modules/src/modules/justify/style-to-html.d.ts +7 -0
  127. package/dist/basic-modules/src/modules/line-height/custom-types.d.ts +10 -0
  128. package/dist/basic-modules/src/modules/line-height/index.d.ts +7 -0
  129. package/dist/basic-modules/src/modules/line-height/menu/LineHeightMenu.d.ts +26 -0
  130. package/dist/basic-modules/src/modules/line-height/menu/config.d.ts +5 -0
  131. package/dist/basic-modules/src/modules/line-height/menu/index.d.ts +12 -0
  132. package/dist/basic-modules/src/modules/line-height/parse-style-html.d.ts +8 -0
  133. package/dist/basic-modules/src/modules/line-height/render-style.d.ts +15 -0
  134. package/dist/basic-modules/src/modules/line-height/style-to-html.d.ts +7 -0
  135. package/dist/basic-modules/src/modules/link/custom-types.d.ts +11 -0
  136. package/dist/basic-modules/src/modules/link/elem-to-html.d.ts +11 -0
  137. package/dist/basic-modules/src/modules/link/helper.d.ts +20 -0
  138. package/dist/basic-modules/src/modules/link/index.d.ts +7 -0
  139. package/dist/basic-modules/src/modules/link/menu/EditLink.d.ts +29 -0
  140. package/dist/basic-modules/src/modules/link/menu/InsertLink.d.ts +25 -0
  141. package/dist/basic-modules/src/modules/link/menu/UnLink.d.ts +15 -0
  142. package/dist/basic-modules/src/modules/link/menu/ViewLink.d.ts +16 -0
  143. package/dist/basic-modules/src/modules/link/menu/config.d.ts +18 -0
  144. package/dist/basic-modules/src/modules/link/menu/index.d.ts +33 -0
  145. package/dist/basic-modules/src/modules/link/parse-elem-html.d.ts +14 -0
  146. package/dist/basic-modules/src/modules/link/plugin.d.ts +7 -0
  147. package/dist/basic-modules/src/modules/link/render-elem.d.ts +20 -0
  148. package/dist/basic-modules/src/modules/link/url.d.ts +10 -0
  149. package/dist/basic-modules/src/modules/paragraph/custom-types.d.ts +9 -0
  150. package/dist/basic-modules/src/modules/paragraph/elem-to-html.d.ts +11 -0
  151. package/dist/basic-modules/src/modules/paragraph/index.d.ts +7 -0
  152. package/dist/basic-modules/src/modules/paragraph/parse-elem-html.d.ts +14 -0
  153. package/dist/basic-modules/src/modules/paragraph/plugin.d.ts +7 -0
  154. package/dist/basic-modules/src/modules/paragraph/render-elem.d.ts +20 -0
  155. package/dist/basic-modules/src/modules/text-style/custom-types.d.ts +14 -0
  156. package/dist/basic-modules/src/modules/text-style/helper.d.ts +8 -0
  157. package/dist/basic-modules/src/modules/text-style/index.d.ts +7 -0
  158. package/dist/basic-modules/src/modules/text-style/menu/BaseMenu.d.ts +27 -0
  159. package/dist/basic-modules/src/modules/text-style/menu/BoldMenu.d.ts +12 -0
  160. package/dist/basic-modules/src/modules/text-style/menu/ClearStyleMenu.d.ts +20 -0
  161. package/dist/basic-modules/src/modules/text-style/menu/CodeMenu.d.ts +12 -0
  162. package/dist/basic-modules/src/modules/text-style/menu/ItalicMenu.d.ts +12 -0
  163. package/dist/basic-modules/src/modules/text-style/menu/SubMenu.d.ts +13 -0
  164. package/dist/basic-modules/src/modules/text-style/menu/SupMenu.d.ts +13 -0
  165. package/dist/basic-modules/src/modules/text-style/menu/ThroughMenu.d.ts +12 -0
  166. package/dist/basic-modules/src/modules/text-style/menu/UnderlineMenu.d.ts +12 -0
  167. package/dist/basic-modules/src/modules/text-style/menu/index.d.ts +44 -0
  168. package/dist/basic-modules/src/modules/text-style/parse-style-html.d.ts +8 -0
  169. package/dist/basic-modules/src/modules/text-style/render-style.d.ts +13 -0
  170. package/dist/basic-modules/src/modules/text-style/style-to-html.d.ts +12 -0
  171. package/dist/basic-modules/src/modules/todo/custom-types.d.ts +10 -0
  172. package/dist/basic-modules/src/modules/todo/elem-to-html.d.ts +11 -0
  173. package/dist/basic-modules/src/modules/todo/index.d.ts +7 -0
  174. package/dist/basic-modules/src/modules/todo/menu/Todo.d.ts +15 -0
  175. package/dist/basic-modules/src/modules/todo/menu/index.d.ts +9 -0
  176. package/dist/basic-modules/src/modules/todo/parse-elem-html.d.ts +14 -0
  177. package/dist/basic-modules/src/modules/todo/plugin.d.ts +7 -0
  178. package/dist/basic-modules/src/modules/todo/pre-parse-html.d.ts +15 -0
  179. package/dist/basic-modules/src/modules/todo/render-elem.d.ts +20 -0
  180. package/dist/basic-modules/src/modules/undo-redo/index.d.ts +7 -0
  181. package/dist/basic-modules/src/modules/undo-redo/menu/RedoMenu.d.ts +15 -0
  182. package/dist/basic-modules/src/modules/undo-redo/menu/UndoMenu.d.ts +15 -0
  183. package/dist/basic-modules/src/modules/undo-redo/menu/index.d.ts +14 -0
  184. package/dist/basic-modules/src/utils/dom.d.ts +36 -0
  185. package/dist/basic-modules/src/utils/style-class.d.ts +14 -0
  186. package/dist/basic-modules/src/utils/util.d.ts +11 -0
  187. package/dist/basic-modules/src/utils/vdom.d.ts +25 -0
  188. package/dist/code-highlight/src/constants/svg.d.ts +10 -0
  189. package/dist/code-highlight/src/custom-types.d.ts +17 -0
  190. package/dist/code-highlight/src/decorate/index.d.ts +7 -0
  191. package/dist/code-highlight/src/index.d.ts +9 -0
  192. package/dist/code-highlight/src/locale/en.d.ts +10 -0
  193. package/dist/code-highlight/src/locale/index.d.ts +5 -0
  194. package/dist/code-highlight/src/locale/zh-CN.d.ts +10 -0
  195. package/dist/code-highlight/src/module/elem-to-html.d.ts +11 -0
  196. package/dist/code-highlight/src/module/index.d.ts +7 -0
  197. package/dist/code-highlight/src/module/menu/SelectLangMenu.d.ts +24 -0
  198. package/dist/code-highlight/src/module/menu/config.d.ts +8 -0
  199. package/dist/code-highlight/src/module/menu/index.d.ts +15 -0
  200. package/dist/code-highlight/src/module/parse-style-html.d.ts +8 -0
  201. package/dist/code-highlight/src/module/render-style.d.ts +13 -0
  202. package/dist/code-highlight/src/utils/dom.d.ts +15 -0
  203. package/dist/code-highlight/src/utils/vdom.d.ts +11 -0
  204. package/dist/code-highlight/src/vendor/prism.d.ts +37 -0
  205. package/dist/core/src/config/index.d.ts +13 -0
  206. package/dist/core/src/config/interface.d.ts +287 -0
  207. package/dist/core/src/config/register.d.ts +12 -0
  208. package/dist/core/src/config/style-mode.d.ts +8 -0
  209. package/dist/core/src/constants/index.d.ts +1 -0
  210. package/dist/core/src/constants/svg.d.ts +12 -0
  211. package/dist/core/src/create/bind-node-relation.d.ts +15 -0
  212. package/dist/core/src/create/create-editor.d.ts +10 -0
  213. package/dist/core/src/create/create-toolbar.d.ts +14 -0
  214. package/dist/core/src/create/helper.d.ts +37 -0
  215. package/dist/core/src/create/index.d.ts +7 -0
  216. package/dist/core/src/editor/dom-editor.d.ts +153 -0
  217. package/dist/core/src/editor/interface.d.ts +75 -0
  218. package/dist/core/src/editor/plugins/with-config.d.ts +7 -0
  219. package/dist/core/src/editor/plugins/with-content.d.ts +7 -0
  220. package/dist/core/src/editor/plugins/with-dom.d.ts +10 -0
  221. package/dist/core/src/editor/plugins/with-emitter.d.ts +7 -0
  222. package/dist/core/src/editor/plugins/with-event-data.d.ts +7 -0
  223. package/dist/core/src/editor/plugins/with-history.d.ts +7 -0
  224. package/dist/core/src/editor/plugins/with-max-length.d.ts +7 -0
  225. package/dist/core/src/editor/plugins/with-selection.d.ts +7 -0
  226. package/dist/core/src/i18n/index.d.ts +32 -0
  227. package/dist/core/src/index.d.ts +43 -0
  228. package/dist/core/src/menus/bar/HoverBar.d.ts +48 -0
  229. package/dist/core/src/menus/bar/Toolbar.d.ts +38 -0
  230. package/dist/core/src/menus/bar-item/BaseButton.d.ts +26 -0
  231. package/dist/core/src/menus/bar-item/DropPanelButton.d.ts +14 -0
  232. package/dist/core/src/menus/bar-item/GroupButton.d.ts +17 -0
  233. package/dist/core/src/menus/bar-item/ModalButton.d.ts +25 -0
  234. package/dist/core/src/menus/bar-item/Select.d.ts +22 -0
  235. package/dist/core/src/menus/bar-item/SimpleButton.d.ts +11 -0
  236. package/dist/core/src/menus/bar-item/index.d.ts +24 -0
  237. package/dist/core/src/menus/bar-item/tooltip.d.ts +6 -0
  238. package/dist/core/src/menus/helpers/helpers.d.ts +18 -0
  239. package/dist/core/src/menus/helpers/position.d.ts +36 -0
  240. package/dist/core/src/menus/index.d.ts +9 -0
  241. package/dist/core/src/menus/interface.d.ts +65 -0
  242. package/dist/core/src/menus/panel-and-modal/BaseClass.d.ts +26 -0
  243. package/dist/core/src/menus/panel-and-modal/DropPanel.d.ts +12 -0
  244. package/dist/core/src/menus/panel-and-modal/Modal.d.ts +44 -0
  245. package/dist/core/src/menus/panel-and-modal/SelectList.d.ts +20 -0
  246. package/dist/core/src/menus/register.d.ts +15 -0
  247. package/dist/core/src/parse-html/helper.d.ts +10 -0
  248. package/dist/core/src/parse-html/index.d.ts +35 -0
  249. package/dist/core/src/parse-html/parse-common-elem-html.d.ts +15 -0
  250. package/dist/core/src/parse-html/parse-elem-html.d.ts +15 -0
  251. package/dist/core/src/parse-html/parse-text-elem-html.d.ts +16 -0
  252. package/dist/core/src/render/element/getRenderElem.d.ts +11 -0
  253. package/dist/core/src/render/element/renderElement.d.ts +9 -0
  254. package/dist/core/src/render/element/renderStyle.d.ts +15 -0
  255. package/dist/core/src/render/helper.d.ts +7 -0
  256. package/dist/core/src/render/index.d.ts +27 -0
  257. package/dist/core/src/render/node2Vnode.d.ts +15 -0
  258. package/dist/core/src/render/text/genVnode.d.ts +9 -0
  259. package/dist/core/src/render/text/renderStyle.d.ts +15 -0
  260. package/dist/core/src/render/text/renderText.d.ts +9 -0
  261. package/dist/core/src/text-area/TextArea.d.ts +52 -0
  262. package/dist/core/src/text-area/event-handlers/beforeInput.d.ts +8 -0
  263. package/dist/core/src/text-area/event-handlers/blur.d.ts +8 -0
  264. package/dist/core/src/text-area/event-handlers/click.d.ts +8 -0
  265. package/dist/core/src/text-area/event-handlers/composition.d.ts +27 -0
  266. package/dist/core/src/text-area/event-handlers/copy.d.ts +8 -0
  267. package/dist/core/src/text-area/event-handlers/cut.d.ts +8 -0
  268. package/dist/core/src/text-area/event-handlers/drag.d.ts +9 -0
  269. package/dist/core/src/text-area/event-handlers/drop.d.ts +8 -0
  270. package/dist/core/src/text-area/event-handlers/focus.d.ts +8 -0
  271. package/dist/core/src/text-area/event-handlers/index.d.ts +35 -0
  272. package/dist/core/src/text-area/event-handlers/keydown.d.ts +8 -0
  273. package/dist/core/src/text-area/event-handlers/keypress.d.ts +8 -0
  274. package/dist/core/src/text-area/event-handlers/paste.d.ts +8 -0
  275. package/dist/core/src/text-area/helpers.d.ts +30 -0
  276. package/dist/core/src/text-area/place-holder.d.ts +18 -0
  277. package/dist/core/src/text-area/syncSelection.d.ts +19 -0
  278. package/dist/core/src/text-area/update-view.d.ts +13 -0
  279. package/dist/core/src/to-html/elem2html.d.ts +9 -0
  280. package/dist/core/src/to-html/index.d.ts +32 -0
  281. package/dist/core/src/to-html/node2html.d.ts +12 -0
  282. package/dist/core/src/to-html/text2html.d.ts +9 -0
  283. package/dist/core/src/upload/createUploader.d.ts +14 -0
  284. package/dist/core/src/upload/createUppyUploader.d.ts +7 -0
  285. package/dist/core/src/upload/index.d.ts +9 -0
  286. package/dist/core/src/upload/interface.d.ts +72 -0
  287. package/dist/core/src/upload.d.ts +5 -0
  288. package/dist/core/src/utils/dom.d.ts +103 -0
  289. package/dist/core/src/utils/hotkeys.d.ts +35 -0
  290. package/dist/core/src/utils/key.d.ts +11 -0
  291. package/dist/core/src/utils/line.d.ts +14 -0
  292. package/dist/core/src/utils/sanitize-html.d.ts +5 -0
  293. package/dist/core/src/utils/ua.d.ts +14 -0
  294. package/dist/core/src/utils/util.d.ts +28 -0
  295. package/dist/core/src/utils/vdom.d.ts +34 -0
  296. package/dist/core/src/utils/weak-maps.d.ts +60 -0
  297. package/dist/editor/src/Boot.d.ts +31 -0
  298. package/dist/editor/src/constants/svg.d.ts +14 -0
  299. package/dist/editor/src/create.d.ts +29 -0
  300. package/dist/editor/src/index.d.ts +20 -0
  301. package/dist/editor/src/init-default-config/config/hoverbar.d.ts +47 -0
  302. package/dist/editor/src/init-default-config/config/index.d.ts +67 -0
  303. package/dist/editor/src/init-default-config/config/toolbar.d.ts +16 -0
  304. package/dist/editor/src/init-default-config/index.d.ts +5 -0
  305. package/dist/editor/src/locale/en.d.ts +14 -0
  306. package/dist/editor/src/locale/index.d.ts +5 -0
  307. package/dist/editor/src/locale/zh-CN.d.ts +14 -0
  308. package/dist/editor/src/register-builtin-modules/index.d.ts +5 -0
  309. package/dist/editor/src/register-builtin-modules/register.d.ts +7 -0
  310. package/dist/editor/src/utils/browser-polyfill.d.ts +6 -0
  311. package/dist/editor/src/utils/dom.d.ts +6 -0
  312. package/dist/editor/src/utils/node-polyfill.d.ts +4 -0
  313. package/dist/index.js +2 -0
  314. package/dist/index.js.map +1 -0
  315. package/dist/index.mjs +2 -0
  316. package/dist/index.mjs.map +1 -0
  317. package/dist/list-module/src/constants/svg.d.ts +11 -0
  318. package/dist/list-module/src/index.d.ts +8 -0
  319. package/dist/list-module/src/locale/en.d.ts +12 -0
  320. package/dist/list-module/src/locale/index.d.ts +5 -0
  321. package/dist/list-module/src/locale/zh-CN.d.ts +12 -0
  322. package/dist/list-module/src/module/custom-types.d.ts +14 -0
  323. package/dist/list-module/src/module/elem-to-html.d.ts +16 -0
  324. package/dist/list-module/src/module/helpers.d.ts +16 -0
  325. package/dist/list-module/src/module/index.d.ts +7 -0
  326. package/dist/list-module/src/module/menu/BaseMenu.d.ts +20 -0
  327. package/dist/list-module/src/module/menu/BulletedListMenu.d.ts +11 -0
  328. package/dist/list-module/src/module/menu/LowerAlphaListMenu.d.ts +13 -0
  329. package/dist/list-module/src/module/menu/NumberedListMenu.d.ts +11 -0
  330. package/dist/list-module/src/module/menu/index.d.ts +19 -0
  331. package/dist/list-module/src/module/parse-elem-html.d.ts +19 -0
  332. package/dist/list-module/src/module/plugin.d.ts +7 -0
  333. package/dist/list-module/src/module/render-elem.d.ts +13 -0
  334. package/dist/list-module/src/module/style-class.d.ts +6 -0
  335. package/dist/list-module/src/utils/dom.d.ts +19 -0
  336. package/dist/list-module/src/utils/maps.d.ts +6 -0
  337. package/dist/list-module/src/utils/util.d.ts +6 -0
  338. package/dist/plugin-attachment/src/constants/icon-svg.d.ts +6 -0
  339. package/dist/plugin-attachment/src/index.d.ts +8 -0
  340. package/dist/plugin-attachment/src/module/custom-types.d.ts +14 -0
  341. package/dist/plugin-attachment/src/module/elem-to-html.d.ts +11 -0
  342. package/dist/plugin-attachment/src/module/index.d.ts +8 -0
  343. package/dist/plugin-attachment/src/module/local.d.ts +5 -0
  344. package/dist/plugin-attachment/src/module/menu/DownloadAttachment.d.ts +17 -0
  345. package/dist/plugin-attachment/src/module/menu/UploadAttachment.d.ts +16 -0
  346. package/dist/plugin-attachment/src/module/menu/config.d.ts +15 -0
  347. package/dist/plugin-attachment/src/module/menu/helper.d.ts +17 -0
  348. package/dist/plugin-attachment/src/module/menu/index.d.ts +15 -0
  349. package/dist/plugin-attachment/src/module/parse-elem-html.d.ts +12 -0
  350. package/dist/plugin-attachment/src/module/plugin.d.ts +7 -0
  351. package/dist/plugin-attachment/src/module/render-elem.d.ts +12 -0
  352. package/dist/plugin-attachment/src/utils/dom.d.ts +15 -0
  353. package/dist/table-module/src/constants/svg.d.ts +26 -0
  354. package/dist/table-module/src/index.d.ts +8 -0
  355. package/dist/table-module/src/locale/en.d.ts +43 -0
  356. package/dist/table-module/src/locale/index.d.ts +5 -0
  357. package/dist/table-module/src/locale/zh-CN.d.ts +43 -0
  358. package/dist/table-module/src/module/column-resize.d.ts +20 -0
  359. package/dist/table-module/src/module/custom-types.d.ts +46 -0
  360. package/dist/table-module/src/module/elem-to-html.d.ts +22 -0
  361. package/dist/table-module/src/module/helpers.d.ts +22 -0
  362. package/dist/table-module/src/module/index.d.ts +7 -0
  363. package/dist/table-module/src/module/menu/CellProperty.d.ts +12 -0
  364. package/dist/table-module/src/module/menu/DeleteCol.d.ts +15 -0
  365. package/dist/table-module/src/module/menu/DeleteRow.d.ts +15 -0
  366. package/dist/table-module/src/module/menu/DeleteTable.d.ts +15 -0
  367. package/dist/table-module/src/module/menu/FullWidth.d.ts +15 -0
  368. package/dist/table-module/src/module/menu/InsertCol.d.ts +15 -0
  369. package/dist/table-module/src/module/menu/InsertRow.d.ts +15 -0
  370. package/dist/table-module/src/module/menu/InsertTable.d.ts +24 -0
  371. package/dist/table-module/src/module/menu/MergeCell.d.ts +24 -0
  372. package/dist/table-module/src/module/menu/SplitCell.d.ts +24 -0
  373. package/dist/table-module/src/module/menu/TableHeader.d.ts +15 -0
  374. package/dist/table-module/src/module/menu/TableProperty.d.ts +35 -0
  375. package/dist/table-module/src/module/menu/index.d.ts +77 -0
  376. package/dist/table-module/src/module/parse-elem-html.d.ts +24 -0
  377. package/dist/table-module/src/module/parse-style-html.d.ts +8 -0
  378. package/dist/table-module/src/module/plugin.d.ts +7 -0
  379. package/dist/table-module/src/module/pre-parse-html.d.ts +15 -0
  380. package/dist/table-module/src/module/render-elem/index.d.ts +19 -0
  381. package/dist/table-module/src/module/render-elem/render-cell.d.ts +9 -0
  382. package/dist/table-module/src/module/render-elem/render-row.d.ts +9 -0
  383. package/dist/table-module/src/module/render-elem/render-table.d.ts +9 -0
  384. package/dist/table-module/src/module/render-style.d.ts +9 -0
  385. package/dist/table-module/src/module/row-resize.d.ts +15 -0
  386. package/dist/table-module/src/module/style-to-html.d.ts +6 -0
  387. package/dist/table-module/src/module/table-cursor.d.ts +20 -0
  388. package/dist/table-module/src/module/weak-maps.d.ts +5 -0
  389. package/dist/table-module/src/module/with-selection.d.ts +2 -0
  390. package/dist/table-module/src/utils/dom.d.ts +31 -0
  391. package/dist/table-module/src/utils/has-common.d.ts +7 -0
  392. package/dist/table-module/src/utils/index.d.ts +5 -0
  393. package/dist/table-module/src/utils/is-of-type.d.ts +6 -0
  394. package/dist/table-module/src/utils/matrices.d.ts +9 -0
  395. package/dist/table-module/src/utils/options.d.ts +25 -0
  396. package/dist/table-module/src/utils/point.d.ts +7 -0
  397. package/dist/table-module/src/utils/types.d.ts +19 -0
  398. package/dist/table-module/src/utils/vdom.d.ts +11 -0
  399. package/dist/upload-image-module/src/constants/svg.d.ts +10 -0
  400. package/dist/upload-image-module/src/index.d.ts +8 -0
  401. package/dist/upload-image-module/src/locale/en.d.ts +11 -0
  402. package/dist/upload-image-module/src/locale/index.d.ts +5 -0
  403. package/dist/upload-image-module/src/locale/zh-CN.d.ts +11 -0
  404. package/dist/upload-image-module/src/module/index.d.ts +7 -0
  405. package/dist/upload-image-module/src/module/menu/UploadImageMenu.d.ts +16 -0
  406. package/dist/upload-image-module/src/module/menu/config.d.ts +6 -0
  407. package/dist/upload-image-module/src/module/menu/index.d.ts +10 -0
  408. package/dist/upload-image-module/src/module/plugin.d.ts +7 -0
  409. package/dist/upload-image-module/src/module/upload-images.d.ts +11 -0
  410. package/dist/upload-image-module/src/utils/dom.d.ts +7 -0
  411. package/dist/video-module/src/constants/svg.d.ts +12 -0
  412. package/dist/video-module/src/index.d.ts +8 -0
  413. package/dist/video-module/src/locale/en.d.ts +21 -0
  414. package/dist/video-module/src/locale/index.d.ts +5 -0
  415. package/dist/video-module/src/locale/zh-CN.d.ts +21 -0
  416. package/dist/video-module/src/module/custom-types.d.ts +23 -0
  417. package/dist/video-module/src/module/elem-to-html.d.ts +12 -0
  418. package/dist/video-module/src/module/helper/insert-video.d.ts +12 -0
  419. package/dist/video-module/src/module/helper/upload-videos.d.ts +6 -0
  420. package/dist/video-module/src/module/index.d.ts +7 -0
  421. package/dist/video-module/src/module/menu/EditVideoSizeMenu.d.ts +25 -0
  422. package/dist/video-module/src/module/menu/EditVideoSrcMenu.d.ts +26 -0
  423. package/dist/video-module/src/module/menu/InsertVideoMenu.d.ts +25 -0
  424. package/dist/video-module/src/module/menu/UploadVideoMenu.d.ts +16 -0
  425. package/dist/video-module/src/module/menu/config.d.ts +25 -0
  426. package/dist/video-module/src/module/menu/index.d.ts +30 -0
  427. package/dist/video-module/src/module/parse-elem-html.d.ts +14 -0
  428. package/dist/video-module/src/module/plugin.d.ts +7 -0
  429. package/dist/video-module/src/module/pre-parse-html.d.ts +15 -0
  430. package/dist/video-module/src/module/render-elem.d.ts +13 -0
  431. package/dist/video-module/src/utils/dom.d.ts +29 -0
  432. package/dist/video-module/src/utils/util.d.ts +12 -0
  433. package/package.json +51 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @description 对象关联关系(部分参考 slate-react weak-maps.ts)
3
+ * @author wangfupeng
4
+ */
5
+ import { Emitter } from 'event-emitter';
6
+ import { Ancestor, Editor, Node, Path, Range } from 'slate';
7
+ import { VNode } from 'snabbdom';
8
+ import { IEditorConfig } from '../config/interface';
9
+ import { IDomEditor } from '../editor/interface';
10
+ import HoverBar from '../menus/bar/HoverBar';
11
+ import Toolbar from '../menus/bar/Toolbar';
12
+ import { IBarItem } from '../menus/bar-item/index';
13
+ import PanelAndModal from '../menus/panel-and-modal/BaseClass';
14
+ import TextArea from '../text-area/TextArea';
15
+ import { PatchFn } from '../utils/vdom';
16
+ import { Key } from './key';
17
+ export declare const EDITOR_TO_TEXTAREA: WeakMap<IDomEditor, TextArea>;
18
+ export declare const TEXTAREA_TO_EDITOR: WeakMap<TextArea, IDomEditor>;
19
+ export declare const TOOLBAR_TO_EDITOR: WeakMap<Toolbar, IDomEditor>;
20
+ export declare const EDITOR_TO_TOOLBAR: WeakMap<IDomEditor, Toolbar>;
21
+ export declare const HOVER_BAR_TO_EDITOR: WeakMap<HoverBar, IDomEditor>;
22
+ export declare const EDITOR_TO_HOVER_BAR: WeakMap<IDomEditor, HoverBar>;
23
+ export declare const BAR_ITEM_TO_EDITOR: WeakMap<IBarItem, IDomEditor>;
24
+ export declare const EDITOR_TO_PANEL_AND_MODAL: WeakMap<IDomEditor, Set<PanelAndModal>>;
25
+ export declare const PANEL_OR_MODAL_TO_EDITOR: WeakMap<PanelAndModal, IDomEditor>;
26
+ export declare const EDITOR_TO_CONFIG: WeakMap<IDomEditor, IEditorConfig>;
27
+ export declare const IS_FIRST_PATCH: WeakMap<TextArea, boolean>;
28
+ export declare const TEXTAREA_TO_PATCH_FN: WeakMap<TextArea, PatchFn>;
29
+ export declare const TEXTAREA_TO_VNODE: WeakMap<TextArea, VNode>;
30
+ export declare const NODE_TO_VNODE: WeakMap<Node, [number, VNode]>;
31
+ export declare const NODE_TO_HTML: WeakMap<Node, String>;
32
+ /**
33
+ * Two weak maps that allow us rebuild a path given a node. They are populated
34
+ * at render time such that after a render occurs we can always backtrack.
35
+ */
36
+ export declare const NODE_TO_INDEX: WeakMap<Node, number>;
37
+ export declare const NODE_TO_PARENT: WeakMap<Node, Ancestor>;
38
+ /**
39
+ * Weak maps that allow us to go between Slate nodes and DOM nodes. These
40
+ * are used to resolve DOM event-related logic into Slate actions.
41
+ */
42
+ export declare const EDITOR_TO_ELEMENT: WeakMap<Editor, HTMLElement>;
43
+ export declare const EDITOR_TO_PLACEHOLDER: WeakMap<Editor, string>;
44
+ export declare const ELEMENT_TO_NODE: WeakMap<HTMLElement, Node>;
45
+ export declare const KEY_TO_ELEMENT: WeakMap<Key, HTMLElement>;
46
+ export declare const NODE_TO_ELEMENT: WeakMap<Node, HTMLElement>;
47
+ export declare const NODE_TO_KEY: WeakMap<Node, Key>;
48
+ export declare const EDITOR_TO_WINDOW: WeakMap<Editor, Window>;
49
+ /**
50
+ * Weak maps for storing editor-related state.
51
+ */
52
+ export declare const IS_FOCUSED: WeakMap<Editor, boolean>;
53
+ export declare const IS_DRAGGING: WeakMap<Editor, boolean>;
54
+ export declare const IS_CLICKING: WeakMap<Editor, boolean>;
55
+ export declare const CHANGING_NODE_PATH: WeakMap<Editor, Path>;
56
+ export declare const EDITOR_TO_SELECTION: WeakMap<Editor, Range>;
57
+ export declare const EDITOR_TO_EMITTER: WeakMap<Editor, Emitter>;
58
+ export declare const EDITOR_TO_CAN_PASTE: WeakMap<Editor, boolean>;
59
+ export declare const EDITOR_TO_PENDING_COMPOSITION_END: WeakMap<Editor, boolean>;
60
+ export declare const EDITOR_TO_PENDING_SELECTION: WeakMap<Editor, Range | null>;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @description Editor View class
3
+ * @author wangfupeng
4
+ */
5
+ import type { IEditorConfig, IElemToHtmlConf, IModuleConf, IParseElemHtmlConf, IPreParseHtmlConf, IRegisterMenuConf, IRenderElemConf, IToolbarConfig, ParseStyleHtmlFnType, RenderStyleFnType, styleToHtmlFnType } from '@wangeditor-next/core';
6
+ import { IDomEditor } from '@wangeditor-next/core';
7
+ import type { ISingleMenuConfig } from 'packages/core/src/config/interface';
8
+ type PluginType = <T extends IDomEditor>(editor: T) => T;
9
+ declare class Boot {
10
+ constructor();
11
+ static editorConfig: Partial<IEditorConfig>;
12
+ static setEditorConfig(newConfig?: Partial<IEditorConfig>): void;
13
+ static simpleEditorConfig: Partial<IEditorConfig>;
14
+ static setSimpleEditorConfig(newConfig?: Partial<IEditorConfig>): void;
15
+ static toolbarConfig: Partial<IToolbarConfig>;
16
+ static setToolbarConfig(newConfig?: Partial<IToolbarConfig>): void;
17
+ static simpleToolbarConfig: Partial<IToolbarConfig>;
18
+ static setSimpleToolbarConfig(newConfig?: Partial<IToolbarConfig>): void;
19
+ static plugins: PluginType[];
20
+ static registerPlugin(plugin: PluginType): void;
21
+ static registerMenu(menuConf: IRegisterMenuConf, customConfig?: ISingleMenuConfig): void;
22
+ static registerRenderElem(renderElemConf: IRenderElemConf): void;
23
+ static registerRenderStyle(fn: RenderStyleFnType): void;
24
+ static registerElemToHtml(elemToHtmlConf: IElemToHtmlConf): void;
25
+ static registerStyleToHtml(fn: styleToHtmlFnType): void;
26
+ static registerPreParseHtml(preParseHtmlConf: IPreParseHtmlConf): void;
27
+ static registerParseElemHtml(parseElemHtmlConf: IParseElemHtmlConf): void;
28
+ static registerParseStyleHtml(fn: ParseStyleHtmlFnType): void;
29
+ static registerModule(module: Partial<IModuleConf>): void;
30
+ }
31
+ export default Boot;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @description svg tag
3
+ * @author wangfupeng
4
+ */
5
+ /**
6
+ * 【注意】svg 字符串的长度 ,否则会导致代码体积过大
7
+ * 尽量选择 https://www.iconfont.cn/collections/detail?spm=a313x.7781069.0.da5a778a4&cid=20293
8
+ * 找不到再从 iconfont.com 搜索
9
+ */
10
+ export declare const INDENT_RIGHT_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M0 64h1024v128H0z m384 192h640v128H384z m0 192h640v128H384z m0 192h640v128H384zM0 832h1024v128H0z m0-128V320l256 192z\"></path></svg>";
11
+ export declare const JUSTIFY_LEFT_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M768 793.6v102.4H51.2v-102.4h716.8z m204.8-230.4v102.4H51.2v-102.4h921.6z m-204.8-230.4v102.4H51.2v-102.4h716.8zM972.8 102.4v102.4H51.2V102.4h921.6z\"></path></svg>";
12
+ export declare const IMAGE_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M959.877 128l0.123 0.123v767.775l-0.123 0.122H64.102l-0.122-0.122V128.123l0.122-0.123h895.775zM960 64H64C28.795 64 0 92.795 0 128v768c0 35.205 28.795 64 64 64h896c35.205 0 64-28.795 64-64V128c0-35.205-28.795-64-64-64zM832 288.01c0 53.023-42.988 96.01-96.01 96.01s-96.01-42.987-96.01-96.01S682.967 192 735.99 192 832 234.988 832 288.01zM896 832H128V704l224.01-384 256 320h64l224.01-192z\"></path></svg>";
13
+ export declare const MORE_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M204.8 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M505.6 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M806.4 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path></svg>";
14
+ export declare const VIDEO_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M981.184 160.096C837.568 139.456 678.848 128 512 128S186.432 139.456 42.816 160.096C15.296 267.808 0 386.848 0 512s15.264 244.16 42.816 351.904C186.464 884.544 345.152 896 512 896s325.568-11.456 469.184-32.096C1008.704 756.192 1024 637.152 1024 512s-15.264-244.16-42.816-351.904zM384 704V320l320 192-320 192z\"></path></svg>";
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @description create
3
+ * @author wangfupeng
4
+ */
5
+ import type { IEditorConfig, IToolbarConfig } from '@wangeditor-next/core';
6
+ import { IDomEditor, Toolbar } from '@wangeditor-next/core';
7
+ import { Descendant } from 'slate';
8
+ import type { DOMElement } from './utils/dom';
9
+ export interface ICreateEditorOption {
10
+ selector: string | DOMElement;
11
+ config: Partial<IEditorConfig>;
12
+ content?: Descendant[];
13
+ html?: string;
14
+ mode: string;
15
+ }
16
+ export interface ICreateToolbarOption {
17
+ editor: IDomEditor | null;
18
+ selector: string | DOMElement;
19
+ config?: Partial<IToolbarConfig>;
20
+ mode?: string;
21
+ }
22
+ /**
23
+ * 创建 editor 实例
24
+ */
25
+ export declare function createEditor(option?: Partial<ICreateEditorOption>): IDomEditor;
26
+ /**
27
+ * 创建 toolbar 实例
28
+ */
29
+ export declare function createToolbar(option: ICreateToolbarOption): Toolbar;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description editor entry
3
+ * @author wangfupeng
4
+ */
5
+ import './assets/index.less';
6
+ import './utils/browser-polyfill';
7
+ import './utils/node-polyfill';
8
+ import './locale/index';
9
+ import './register-builtin-modules/index';
10
+ import './init-default-config';
11
+ import Boot from './Boot';
12
+ export { Boot };
13
+ export type { ClassStylePolicy, IButtonMenu, IClassStyleUnsupportedPayload, IDomEditor, IDropPanelMenu, IEditorConfig, IModalMenu, IModuleConf, IOption, ISelectMenu, IToolbarConfig, IUploadConfig, StyleClassTokenType, TextStyleMode, } from '@wangeditor-next/core';
14
+ export { DomEditor, genModalButtonElems, genModalInputElems, genModalTextareaElems, getClassStylePolicy, getTextStyleMode, i18nAddResources, i18nChangeLanguage, i18nGetResources, reportUnsupportedClassStyle, t, Toolbar, } from '@wangeditor-next/core';
15
+ export { createUploader } from '@wangeditor-next/core/upload';
16
+ export type { Descendant as SlateDescendant, Location as SlateLocation, } from 'slate';
17
+ export { Editor as SlateEditor, Element as SlateElement, Node as SlateNode, Path as SlatePath, Point as SlatePoint, Range as SlateRange, Text as SlateText, Transforms as SlateTransforms, } from 'slate';
18
+ export { createEditor, createToolbar } from './create';
19
+ declare const _default: {};
20
+ export default _default;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @description hoverbar 配置
3
+ * @author wangfupeng
4
+ */
5
+ export declare function genDefaultHoverbarKeys(): {
6
+ text: {
7
+ menuKeys: string[];
8
+ };
9
+ link: {
10
+ menuKeys: string[];
11
+ };
12
+ image: {
13
+ menuKeys: string[];
14
+ };
15
+ pre: {
16
+ menuKeys: string[];
17
+ };
18
+ table: {
19
+ menuKeys: string[];
20
+ };
21
+ divider: {
22
+ menuKeys: string[];
23
+ };
24
+ video: {
25
+ menuKeys: string[];
26
+ };
27
+ };
28
+ export declare function genSimpleHoverbarKeys(): {
29
+ link: {
30
+ menuKeys: string[];
31
+ };
32
+ image: {
33
+ menuKeys: string[];
34
+ };
35
+ pre: {
36
+ menuKeys: string[];
37
+ };
38
+ table: {
39
+ menuKeys: string[];
40
+ };
41
+ divider: {
42
+ menuKeys: string[];
43
+ };
44
+ video: {
45
+ menuKeys: string[];
46
+ };
47
+ };
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @description 获取编辑器默认配置
3
+ * @author wangfupeng
4
+ */
5
+ export declare function getDefaultEditorConfig(): {
6
+ hoverbarKeys: {
7
+ text: {
8
+ menuKeys: string[];
9
+ };
10
+ link: {
11
+ menuKeys: string[];
12
+ };
13
+ image: {
14
+ menuKeys: string[];
15
+ };
16
+ pre: {
17
+ menuKeys: string[];
18
+ };
19
+ table: {
20
+ menuKeys: string[];
21
+ };
22
+ divider: {
23
+ menuKeys: string[];
24
+ };
25
+ video: {
26
+ menuKeys: string[];
27
+ };
28
+ };
29
+ };
30
+ export declare function getSimpleEditorConfig(): {
31
+ hoverbarKeys: {
32
+ link: {
33
+ menuKeys: string[];
34
+ };
35
+ image: {
36
+ menuKeys: string[];
37
+ };
38
+ pre: {
39
+ menuKeys: string[];
40
+ };
41
+ table: {
42
+ menuKeys: string[];
43
+ };
44
+ divider: {
45
+ menuKeys: string[];
46
+ };
47
+ video: {
48
+ menuKeys: string[];
49
+ };
50
+ };
51
+ };
52
+ export declare function getDefaultToolbarConfig(): {
53
+ toolbarKeys: (string | {
54
+ key: string;
55
+ title: string;
56
+ iconSvg: string;
57
+ menuKeys: string[];
58
+ })[];
59
+ };
60
+ export declare function getSimpleToolbarConfig(): {
61
+ toolbarKeys: (string | {
62
+ key: string;
63
+ title: string;
64
+ iconSvg: string;
65
+ menuKeys: string[];
66
+ })[];
67
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @description toolbar 配置
3
+ * @author wangfupeng
4
+ */
5
+ export declare function genDefaultToolbarKeys(): (string | {
6
+ key: string;
7
+ title: string;
8
+ iconSvg: string;
9
+ menuKeys: string[];
10
+ })[];
11
+ export declare function genSimpleToolbarKeys(): (string | {
12
+ key: string;
13
+ title: string;
14
+ iconSvg: string;
15
+ menuKeys: string[];
16
+ })[];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description set default config
3
+ * @author wangfupeng
4
+ */
5
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @description i18n en
3
+ * @author wangfupeng
4
+ */
5
+ declare const _default: {
6
+ editor: {
7
+ more: string;
8
+ justify: string;
9
+ indent: string;
10
+ image: string;
11
+ video: string;
12
+ };
13
+ };
14
+ export default _default;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description i18n entry
3
+ * @author wangfupeng
4
+ */
5
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @description i18n zh-CN
3
+ * @author wangfupeng
4
+ */
5
+ declare const _default: {
6
+ editor: {
7
+ more: string;
8
+ justify: string;
9
+ indent: string;
10
+ image: string;
11
+ video: string;
12
+ };
13
+ };
14
+ export default _default;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description register builtin modules
3
+ * @author wangfupeng
4
+ */
5
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description 注册 module
3
+ * @author wangfupeng
4
+ */
5
+ import type { IModuleConf } from '@wangeditor-next/core';
6
+ declare function registerModule(module: Partial<IModuleConf>): void;
7
+ export default registerModule;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @description browser polyfill
3
+ * @author wangfupeng
4
+ */
5
+ declare function globalThisPolyfill(): void;
6
+ declare function AggregateErrorPolyfill(): void;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @description dom utils
3
+ * @author wangfupeng
4
+ */
5
+ import DOMElement = globalThis.Element;
6
+ export { DOMElement };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description node polyfill
3
+ * @author wangfupeng
4
+ */
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@wangeditor-next/editor"),require("dom7"),require("snabbdom")):"function"==typeof define&&define.amd?define(["exports","@wangeditor-next/editor","dom7","snabbdom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WangEditorAttachmentPlugin={},e.editor,e.$,e.snabbdom)}(this,function(e,t,n,r){"use strict";t.i18nAddResources("en",{attachment:{upload:"Upload Attachment",download:"Download Attachment"}}),t.i18nAddResources("zh-CN",{attachment:{upload:"上传附件",download:"下载附件"}});var o={type:"attachment",elemToHtml:function(e,t){var n=e,r=n.link,o=void 0===r?"":r,i=n.fileName,a=void 0===i?"":i;return'<a data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline href="'.concat(o,'" download="').concat(a,'">').concat(a,"</a>")}};function i(){return{server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}}}var a=function(){function e(){this.title=t.t("attachment.download"),this.iconSvg='<svg viewBox="0 0 1024 1024"><path d="M736 448l-256 256-256-256h160V64h192v384z m-256 256H0v256h960v-256H480z m416 128h-128v-64h128v64z"></path></svg>',this.tag="button",this.alwaysEnable=!0}return e.prototype.getValue=function(e){var t=this.getSelectedElem(e);return null==t?"":t.link},e.prototype.isActive=function(e){return!1},e.prototype.exec=function(e,t){t&&"string"==typeof t&&window.open(t,"_blank")},e.prototype.isDisabled=function(e){var n=e.selection;return null==n||(!!t.SlateRange.isExpanded(n)||null==this.getSelectedElem(e))},e.prototype.getSelectedElem=function(e){var n=t.DomEditor.getSelectedNodeByType(e,"attachment");return null==n?null:n},e}();n.hide&&(n.fn.hide=n.hide),n.append&&(n.fn.append=n.append),n.click&&(n.fn.click=n.click),n.on&&(n.fn.on=n.on);var c=function(){return c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},c.apply(this,arguments)};function u(e,t,n,r){return new(n||(n=Promise))(function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function c(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,c)}u((r=r.apply(e,t||[])).next())})}function l(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=c(0),a.throw=c(1),a.return=c(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}function s(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=s(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,o){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,o,(t=e[n](t)).done,t.value)})}}}function f(e){var t={server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}},n=e.getMenuConfig("uploadAttachment");return c(c({},t),n||{})}function p(e,t,n){if(t&&n){e.restoreSelection();var r={type:"attachment",fileName:t,link:n,children:[{text:""}]};e.insertNode(r),e.move(1);var o=f(e).onInsertedAttachment;o&&o(r)}}"function"==typeof SuppressedError&&SuppressedError;var m=new WeakMap;function h(e){var n=m.get(e);if(null!=n)return n;var r=f(e),o=r.customInsert,i=r.onError,a=r.onFailed,u=r.onProgress,l=r.onSuccess;return n=t.createUploader(c(c({},r),{onProgress:function(t){e.showProgressBar(t),u&&u(t)},onSuccess:function(t,n){if(o)return o(n,t,function(t,n){return p(e,t,n)}),void l(t,n);var r=n||{},i=r.errno,c=void 0===i?1:i,u=r.data;if(0===c){var s=(void 0===u?{}:u).url,d=void 0===s?"":s;p(e,(null==t?void 0:t.name)||"",d),l(t,n)}else a(t,n)},onError:function(e,t,n){i(e,t,n)}}),e),m.set(e,n),n}function y(e,t){return u(this,void 0,void 0,function(){var n,r;return l(this,function(o){switch(o.label){case 0:return n=h(e),r=t.map(function(e){return{name:e.name,type:e.type,size:e.size,data:e}}),n.addFiles(r),[4,n.upload()];case 1:return o.sent(),[2]}})})}var v=function(){function e(){this.title=t.t("attachment.upload"),this.iconSvg='<svg viewBox="0 0 1024 1024"><path d="M665.821116 327.053068l-64.958782-64.926783-324.79391 324.729911c-53.822991 53.790991-53.822991 141.053355 0 194.844347s141.053355 53.790991 194.876346 0l389.752692-389.688693a229.531696 229.531696 0 0 0 0-324.729912 229.627694 229.627694 0 0 0-324.761911 0L126.727224 476.458266l-0.863984 0.831985c-125.085655 125.085655-125.085655 327.833853 0 452.887508 125.053655 125.053655 327.865853 125.053655 452.983507 0l0.831984-0.863984 0.031999 0.032 279.322763-279.290764-64.990781-64.926782-279.322763 279.258764-0.831984 0.831984a228.731711 228.731711 0 0 1-323.065943 0 228.603714 228.603714 0 0 1 0-322.969944l0.895983-0.831985-0.031999-0.063998L600.958332 132.208721c53.694993-53.726993 141.149353-53.726993 194.876346 0s53.694993 141.149353 0 194.844347L406.081986 716.741761c-17.919664 17.919664-47.039118 17.919664-64.958782 0a45.983138 45.983138 0 0 1 0-64.926783L665.917114 327.053068z"></path></svg>',this.tag="button"}return e.prototype.getValue=function(e){return""},e.prototype.isActive=function(e){return!1},e.prototype.exec=function(e,t){var r=this.getMenuConfig(e),o=r.allowedFileTypes,i=void 0===o?[]:o,a=r.customBrowseAndUpload;if(a)a(function(t,n){return p(e,t,n)});else{var c="";i.length>0&&(c='accept="'.concat(i.join(", "),'"'));var s=n("body"),m=n('<input type="file" '.concat(c," multiple/>"));m.hide(),s.append(m),m.click(),m.on("change",function(){var t=m[0].files;!function(e,t){u(this,void 0,void 0,function(){var n,r,o,i,a,c,u,s,m,h,v,g;return l(this,function(l){switch(l.label){case 0:if(null==t)return[2];n=Array.prototype.slice.call(t),r=f(e).customUpload,o=[],l.label=1;case 1:l.trys.push([1,8,9,14]),i=!0,a=d(n),l.label=2;case 2:return[4,a.next()];case 3:return c=l.sent(),(m=c.done)?[3,7]:(g=c.value,i=!1,u=g,r?[4,r(u,function(t,n){return p(e,t,n)},e)]:[3,5]);case 4:return l.sent(),[3,6];case 5:o.push(u),l.label=6;case 6:return i=!0,[3,2];case 7:return[3,14];case 8:return s=l.sent(),h={error:s},[3,14];case 9:return l.trys.push([9,,12,13]),i||m||!(v=a.return)?[3,11]:[4,v.call(a)];case 10:l.sent(),l.label=11;case 11:return[3,13];case 12:if(h)throw h.error;return[7];case 13:return[7];case 14:return o.length>0?[4,y(e,o)]:[3,16];case 15:l.sent(),l.label=16;case 16:return[2]}})})}(e,t)})}},e.prototype.isDisabled=function(e){var n=e.selection;if(null==n)return!0;if(t.SlateRange.isExpanded(n))return!0;var r=t.DomEditor.getSelectedElems(e);return!!r.some(function(t){return e.isVoid(t)})||!!r.some(function(e){return"pre"===t.DomEditor.getNodeType(e)})},e.prototype.getMenuConfig=function(e){return e.getMenuConfig("uploadAttachment")},e}();var g={editorPlugin:function(e){var n=e.isInline,r=e.isVoid,o=e;return o.isInline=function(e){return"attachment"===t.DomEditor.getNodeType(e)||n(e)},o.isVoid=function(e){return"attachment"===t.DomEditor.getNodeType(e)||r(e)},o},renderElems:[{type:"attachment",renderElem:function(e,n,o){var i=o.isDisabled(),a=t.DomEditor.isNodeSelected(o,e),c=e,u=c.fileName,l=void 0===u?"":u,s=c.link,d=void 0===s?"":s;return r.h("span",{props:{contentEditable:!1},style:{display:"inline-block",marginLeft:"3px",marginRight:"3px",border:a&&!i?"2px solid var(--w-e-textarea-selected-border-color)":"2px solid transparent",borderRadius:"3px",padding:"0 3px",backgroundColor:"var(--w-e-textarea-slight-bg-color)",cursor:i?"pointer":"inherit"},on:{click:function(){i&&d&&window.open(d,"_blank")}}},[r.h("span",{style:{marginRight:"0.2em",opacity:"0.7"}},"file"),l])}}],elemsToHtml:[o],parseElemsHtml:[{selector:'a[data-w-e-type="attachment"]',parseElemHtml:function(e,t,n){return{type:"attachment",link:e.getAttribute("href")||"",fileName:e.getAttribute("download")||"",children:[{text:""}]}}}],menus:[{key:"uploadAttachment",factory:function(){return new v},config:{server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}}},{key:"downloadAttachment",factory:function(){return new a}}]};e.default=g,e.genUploadAttachmentMenuConfig=i,Object.defineProperty(e,"__esModule",{value:!0})});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/module/local.ts","../src/module/elem-to-html.ts","../src/module/menu/config.ts","../src/constants/icon-svg.ts","../src/module/menu/DownloadAttachment.ts","../src/utils/dom.ts","../src/module/menu/helper.ts","../src/module/menu/UploadAttachment.ts","../src/module/render-elem.ts","../src/module/index.ts","../src/module/plugin.ts","../src/module/parse-elem-html.ts","../src/module/menu/index.ts"],"sourcesContent":["/**\n * @description 多语言\n * @author wangfupeng\n */\n\nimport { i18nAddResources } from '@wangeditor-next/editor'\n\ni18nAddResources('en', {\n attachment: {\n upload: 'Upload Attachment',\n download: 'Download Attachment',\n },\n})\n\ni18nAddResources('zh-CN', {\n attachment: {\n upload: '上传附件',\n download: '下载附件',\n },\n})\n","/**\n * @description elem to html\n * @author wangfupeng\n */\n\nimport { SlateElement } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from './custom-types'\n\n// 生成 html 的函数\nfunction attachmentToHtml(elem: SlateElement, _childrenHtml: string): string {\n const { link = '', fileName = '' } = elem as AttachmentElement\n\n return `<a data-w-e-type=\"attachment\" data-w-e-is-void data-w-e-is-inline href=\"${link}\" download=\"${fileName}\">${fileName}</a>`\n}\n\n// 配置\nconst conf = {\n type: 'attachment', // 节点 type ,重要!!!\n elemToHtml: attachmentToHtml,\n}\n\nexport default conf\n","/**\n * @description menu config\n * @author wangfupeng\n */\n\nimport { IDomEditor, IUploadConfig } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from '../custom-types'\n\ntype InsertFn = (fileName: string, link: string) => void\n\n// 在通用 uploadConfig 上,扩展 attachment 相关配置\nexport type IUploadConfigForAttachment = Omit<\n IUploadConfig,\n 'customInsert' | 'customUpload' | 'customBrowseAndUpload'\n> & {\n // 用户自定义插入附件\n customInsert?: (res: any, file: any, insertFn: InsertFn) => void\n // 用户自定义上传附件\n customUpload?: (file: File, insertFn: InsertFn, editor: IDomEditor) => void | Promise<void>\n // 自定义选择附件,如图床\n customBrowseAndUpload?: (insertFn: InsertFn) => void\n // 插入之后的回调\n onInsertedAttachment?: (elem: AttachmentElement) => void\n}\n\nexport function genUploadAttachmentMenuConfig(): IUploadConfigForAttachment {\n return {\n server: '',\n fieldName: 'wangeditor-uploaded-attachment',\n maxFileSize: 10 * 1024 * 1024,\n maxNumberOfFiles: 5,\n allowedFileTypes: ['*'],\n meta: {},\n metaWithUrl: false,\n withCredentials: false,\n timeout: 30 * 1000,\n\n onBeforeUpload: (files: any) => files,\n onProgress: (_progress: number) => {\n /* on progress */\n },\n onSuccess: (_file: any, _res: any) => {\n /* on success */\n },\n onFailed: (_file: any, _res: any) => {\n /* on failed */\n },\n onError: (_file: any, _err: any, _res: any) => {\n /* on error */\n /* on timeout */\n },\n\n onInsertedAttachment(_elem: AttachmentElement) {\n // 插入文件之后的 callback\n },\n }\n}\n","/**\n * @description icon svg\n * @author wangfupeng\n */\n\n// 附件\nexport const ATTACHMENT_SVG = '<svg viewBox=\"0 0 1024 1024\"><path d=\"M665.821116 327.053068l-64.958782-64.926783-324.79391 324.729911c-53.822991 53.790991-53.822991 141.053355 0 194.844347s141.053355 53.790991 194.876346 0l389.752692-389.688693a229.531696 229.531696 0 0 0 0-324.729912 229.627694 229.627694 0 0 0-324.761911 0L126.727224 476.458266l-0.863984 0.831985c-125.085655 125.085655-125.085655 327.833853 0 452.887508 125.053655 125.053655 327.865853 125.053655 452.983507 0l0.831984-0.863984 0.031999 0.032 279.322763-279.290764-64.990781-64.926782-279.322763 279.258764-0.831984 0.831984a228.731711 228.731711 0 0 1-323.065943 0 228.603714 228.603714 0 0 1 0-322.969944l0.895983-0.831985-0.031999-0.063998L600.958332 132.208721c53.694993-53.726993 141.149353-53.726993 194.876346 0s53.694993 141.149353 0 194.844347L406.081986 716.741761c-17.919664 17.919664-47.039118 17.919664-64.958782 0a45.983138 45.983138 0 0 1 0-64.926783L665.917114 327.053068z\"></path></svg>'\n\n// 下载\nexport const DOWNLOAD_SVG = '<svg viewBox=\"0 0 1024 1024\"><path d=\"M736 448l-256 256-256-256h160V64h192v384z m-256 256H0v256h960v-256H480z m416 128h-128v-64h128v64z\"></path></svg>'\n","/**\n * @description download attachment menu\n * @author wangfupeng\n */\n\nimport {\n DomEditor,\n IButtonMenu,\n IDomEditor,\n SlateRange,\n t,\n} from '@wangeditor-next/editor'\n\nimport { DOWNLOAD_SVG } from '../../constants/icon-svg'\nimport { AttachmentElement } from '../custom-types'\n\nclass DownloadAttachmentMenu implements IButtonMenu {\n readonly title = t('attachment.download')\n\n readonly iconSvg = DOWNLOAD_SVG\n\n readonly tag = 'button'\n\n readonly alwaysEnable = true\n\n getValue(editor: IDomEditor): string | boolean {\n const attachmentElem = this.getSelectedElem(editor)\n\n if (attachmentElem == null) { return '' }\n return attachmentElem.link\n }\n\n isActive(_editor: IDomEditor): boolean {\n // 任何时候,都不用激活 menu\n return false\n }\n\n exec(_editor: IDomEditor, value: string | boolean) {\n if (!value) { return }\n if (typeof value !== 'string') { return }\n window.open(value, '_blank')\n }\n\n isDisabled(editor: IDomEditor): boolean {\n const { selection } = editor\n\n if (selection == null) { return true }\n if (SlateRange.isExpanded(selection)) { return true }\n\n // 未匹配到 attachment node 则禁用\n const attachmentElem = this.getSelectedElem(editor)\n\n if (attachmentElem == null) { return true }\n\n return false\n }\n\n private getSelectedElem(editor: IDomEditor): AttachmentElement | null {\n const node = DomEditor.getSelectedNodeByType(editor, 'attachment')\n\n if (node == null) { return null }\n return node as AttachmentElement\n }\n}\n\nexport default DownloadAttachmentMenu\n","/**\n * @description DOM 操作\n * @author wangfupeng\n */\n\nimport $, {\n append, click, hide, on,\n} from 'dom7'\n\nif (hide) { $.fn.hide = hide }\nif (append) { $.fn.append = append }\nif (click) { $.fn.click = click }\nif (on) { $.fn.on = on }\n\nexport { Dom7Array } from 'dom7'\nexport default $\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\n\nexport {\n DOMComment,\n DOMElement,\n DOMNode,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n DOMText,\n}\n","/**\n * @description helper fns\n * @author wangfupeng\n */\n\nimport { createUploader, IDomEditor } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from '../custom-types'\nimport {\n genUploadAttachmentMenuConfig,\n IUploadConfigForAttachment,\n} from './config'\n\nfunction getUploadAttachmentMenuConfig(editor: IDomEditor): IUploadConfigForAttachment {\n const defaultConfig = genUploadAttachmentMenuConfig()\n const menuConfig = editor.getMenuConfig('uploadAttachment') as Partial<IUploadConfigForAttachment>\n\n return {\n ...defaultConfig,\n ...(menuConfig || {}),\n }\n}\n\n/**\n * 插入 attachment 节点\n * @param fileName fileName\n * @param link link\n */\nexport function insertAttachment(editor: IDomEditor, fileName: string, link: string) {\n if (!fileName || !link) { return }\n\n // 还原选区\n editor.restoreSelection()\n\n // 插入节点\n const attachmentElem: AttachmentElement = {\n type: 'attachment',\n fileName,\n link,\n children: [{ text: '' }],\n }\n\n editor.insertNode(attachmentElem)\n editor.move(1)\n\n // 回调\n const { onInsertedAttachment } = getUploadAttachmentMenuConfig(editor)\n\n if (onInsertedAttachment) { onInsertedAttachment(attachmentElem) }\n}\n\n// 存储 editor uploader 的关系 - 缓存 uploader ,不重复创建\nconst EDITOR_TO_UPLOADER_MAP = new WeakMap<IDomEditor, any>()\n\n/**\n * 获取 uploader 实例(并通过 editor 缓存)\n * @param editor editor\n */\nfunction getUploader(editor: IDomEditor) {\n let uploader = EDITOR_TO_UPLOADER_MAP.get(editor)\n\n if (uploader != null) { return uploader }\n\n const menuConfig = getUploadAttachmentMenuConfig(editor)\n const {\n customInsert,\n onError,\n onFailed,\n onProgress,\n onSuccess,\n } = menuConfig\n\n // 上传完成之后\n const successHandler = (file: any, res: any) => {\n // 预期 res 格式:\n // 成功:{ errno: 0, data: { url } }\n // 失败:{ errno: !0, message: '失败信息' }\n if (customInsert) {\n customInsert(res, file, (fileName: string, link: string) => insertAttachment(editor, fileName, link))\n onSuccess(file, res)\n return\n }\n\n const { errno = 1, data = {} } = res || {}\n\n if (errno !== 0) {\n onFailed(file, res)\n return\n }\n\n const { url = '' } = data as { url?: string }\n\n insertAttachment(editor, file?.name || '', url)\n onSuccess(file, res)\n }\n\n // progress 显示进度条\n const progressHandler = (progress: number) => {\n editor.showProgressBar(progress)\n\n if (onProgress) { onProgress(progress) }\n }\n\n // onError 提示错误\n const errorHandler = (file: any, err: any, res: any) => {\n onError(file, err, res)\n }\n\n uploader = createUploader(\n {\n ...menuConfig,\n onProgress: progressHandler,\n onSuccess: successHandler,\n onError: errorHandler,\n } as any,\n editor,\n )\n\n EDITOR_TO_UPLOADER_MAP.set(editor, uploader)\n\n return uploader\n}\n\n/**\n * 上传文件\n * @param editor editor\n * @param files files\n */\nasync function uploadFile(editor: IDomEditor, files: File[]) {\n const uploader = getUploader(editor)\n const uploadList = files.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n data: file,\n }))\n\n uploader.addFiles(uploadList)\n await uploader.upload()\n}\n\n/**\n * 上传附件文件\n * @param editor editor\n * @param files files\n */\nexport async function uploadAttachments(\n editor: IDomEditor,\n files: FileList | File[] | null,\n) {\n if (files == null) { return }\n const fileList = Array.prototype.slice.call(files) as File[]\n\n // 获取菜单配置\n const { customUpload } = getUploadAttachmentMenuConfig(editor)\n const uploadFileList: File[] = []\n\n // 按顺序上传\n for await (const file of fileList) {\n if (customUpload) {\n // 自定义上传\n await customUpload(\n file,\n (fileName: string, link: string) => insertAttachment(editor, fileName, link),\n editor,\n )\n } else {\n // 默认上传\n uploadFileList.push(file)\n }\n }\n\n if (uploadFileList.length > 0) {\n await uploadFile(editor, uploadFileList)\n }\n}\n","/**\n * @description upload attachment menu\n * @author wangfupeng\n */\n\nimport {\n DomEditor,\n IButtonMenu,\n IDomEditor,\n SlateRange,\n t,\n} from '@wangeditor-next/editor'\n\nimport { ATTACHMENT_SVG } from '../../constants/icon-svg'\nimport $ from '../../utils/dom'\nimport { IUploadConfigForAttachment } from './config'\nimport { insertAttachment, uploadAttachments } from './helper'\n\nclass UploadAttachmentMenu implements IButtonMenu {\n readonly title = t('attachment.upload')\n\n readonly iconSvg = ATTACHMENT_SVG\n\n readonly tag = 'button'\n\n getValue(_editor: IDomEditor): string | boolean {\n // 无需获取 val\n return ''\n }\n\n isActive(_editor: IDomEditor): boolean {\n // 任何时候,都不用激活 menu\n return false\n }\n\n exec(editor: IDomEditor, _value: string | boolean) {\n const {\n allowedFileTypes = [],\n customBrowseAndUpload,\n } = this.getMenuConfig(editor)\n\n // 自定义选择文件、并上传,如图床\n if (customBrowseAndUpload) {\n customBrowseAndUpload((fileName: string, link: string) => insertAttachment(editor, fileName, link))\n return\n }\n\n // 设置选择文件的类型\n let acceptAttr = ''\n\n if (allowedFileTypes.length > 0) {\n acceptAttr = `accept=\"${allowedFileTypes.join(', ')}\"`\n }\n\n // 添加 file input(每次重新创建 input)\n const $body = $('body')\n const $inputFile = $(`<input type=\"file\" ${acceptAttr} multiple/>`)\n\n $inputFile.hide()\n $body.append($inputFile)\n $inputFile.click()\n // 选中文件\n $inputFile.on('change', () => {\n const files = ($inputFile[0] as HTMLInputElement).files\n\n uploadAttachments(editor, files)\n })\n }\n\n isDisabled(editor: IDomEditor): boolean {\n const { selection } = editor\n\n if (selection == null) { return true }\n if (SlateRange.isExpanded(selection)) { return true }\n\n const selectedElems = DomEditor.getSelectedElems(editor)\n const hasVoidElem = selectedElems.some(elem => editor.isVoid(elem))\n\n if (hasVoidElem) { return true }\n\n const hasPreElem = selectedElems.some(elem => DomEditor.getNodeType(elem) === 'pre')\n\n if (hasPreElem) { return true }\n\n return false\n }\n\n private getMenuConfig(editor: IDomEditor): IUploadConfigForAttachment {\n return editor.getMenuConfig('uploadAttachment') as IUploadConfigForAttachment\n }\n}\n\nexport default UploadAttachmentMenu\n","/**\n * @description render elem\n * @author wangfupeng\n */\n\nimport { DomEditor, IDomEditor, SlateElement } from '@wangeditor-next/editor'\nimport { h, VNode } from 'snabbdom'\n\nimport { AttachmentElement } from './custom-types'\n\nfunction renderAttachment(elem: SlateElement, _children: VNode[] | null, editor: IDomEditor): VNode {\n const isDisabled = editor.isDisabled()\n const selected = DomEditor.isNodeSelected(editor, elem)\n const { fileName = '', link = '' } = elem as AttachmentElement\n\n const vnode = h(\n 'span',\n {\n props: {\n contentEditable: false,\n },\n style: {\n display: 'inline-block',\n marginLeft: '3px',\n marginRight: '3px',\n border: selected && !isDisabled\n ? '2px solid var(--w-e-textarea-selected-border-color)'\n : '2px solid transparent',\n borderRadius: '3px',\n padding: '0 3px',\n backgroundColor: 'var(--w-e-textarea-slight-bg-color)',\n cursor: isDisabled ? 'pointer' : 'inherit',\n },\n on: {\n // disable 时,点击下载附件\n click() {\n if (!isDisabled) { return }\n if (link) {\n window.open(link, '_blank')\n }\n },\n },\n },\n [\n h('span', {\n style: {\n marginRight: '0.2em',\n opacity: '0.7',\n },\n }, 'file'),\n fileName,\n ],\n )\n\n return vnode\n}\n\nconst conf = {\n type: 'attachment',\n renderElem: renderAttachment,\n}\n\nexport default conf\n","/**\n * @description attachment module entry\n * @author wangfupeng\n */\n\nimport './local'\n\nimport { IModuleConf } from '@wangeditor-next/editor'\n\nimport elemToHtmlConf from './elem-to-html'\nimport {\n downloadAttachmentMenuConf,\n uploadAttachmentMenuConf,\n} from './menu/index'\nimport parseHtmlConf from './parse-elem-html'\nimport withAttachment from './plugin'\nimport renderElemConf from './render-elem'\n\nconst module: Partial<IModuleConf> = {\n editorPlugin: withAttachment,\n renderElems: [renderElemConf],\n elemsToHtml: [elemToHtmlConf],\n parseElemsHtml: [parseHtmlConf],\n menus: [uploadAttachmentMenuConf, downloadAttachmentMenuConf],\n}\n\nexport default module\n","/**\n * @description attachment plugin\n * @author wangfupeng\n */\n\nimport { DomEditor, IDomEditor } from '@wangeditor-next/editor'\n\nfunction withAttachment<T extends IDomEditor>(editor: T) {\n const { isInline, isVoid } = editor\n const newEditor = editor\n\n // 重写 isInline\n newEditor.isInline = elem => {\n const type = DomEditor.getNodeType(elem)\n\n if (type === 'attachment') {\n return true\n }\n\n return isInline(elem)\n }\n\n // 重写 isVoid\n newEditor.isVoid = elem => {\n const type = DomEditor.getNodeType(elem)\n\n if (type === 'attachment') {\n return true\n }\n\n return isVoid(elem)\n }\n\n return newEditor\n}\n\nexport default withAttachment\n","/**\n * @description parse elem html\n * @author wangfupeng\n */\n\nimport { IDomEditor, SlateDescendant, SlateElement } from '@wangeditor-next/editor'\n\nimport { DOMElement } from '../utils/dom'\nimport { AttachmentElement } from './custom-types'\n\nfunction parseHtml(\n elem: DOMElement,\n _children: SlateDescendant[],\n _editor: IDomEditor,\n): SlateElement {\n const link = elem.getAttribute('href') || ''\n const fileName = elem.getAttribute('download') || ''\n\n return {\n type: 'attachment',\n link,\n fileName,\n children: [{ text: '' }], // void node 必须有一个空白 text\n } as AttachmentElement\n}\n\nconst parseHtmlConf = {\n selector: 'a[data-w-e-type=\"attachment\"]',\n parseElemHtml: parseHtml,\n}\n\nexport default parseHtmlConf\n","/**\n * @description menu entry\n * @author wangfupeng\n */\n\nimport { genUploadAttachmentMenuConfig } from './config'\nimport DownloadAttachmentMenu from './DownloadAttachment'\nimport UploadAttachmentMenu from './UploadAttachment'\n\nexport const uploadAttachmentMenuConf = {\n key: 'uploadAttachment',\n factory() {\n return new UploadAttachmentMenu()\n },\n\n // 默认菜单配置,将存储在 editorConfig.MENU_CONF[key] 中\n // 创建编辑器时,可通过 editorConfig.MENU_CONF[key] = {...} 来修改\n config: genUploadAttachmentMenuConfig(),\n}\n\nexport const downloadAttachmentMenuConf = {\n key: 'downloadAttachment',\n factory() {\n return new DownloadAttachmentMenu()\n },\n}\n"],"names":["i18nAddResources","attachment","upload","download","conf","type","elemToHtml","elem","_childrenHtml","_a","_b","link","_c","fileName","concat","genUploadAttachmentMenuConfig","server","fieldName","maxFileSize","maxNumberOfFiles","allowedFileTypes","meta","metaWithUrl","withCredentials","timeout","onBeforeUpload","files","onProgress","_progress","onSuccess","_file","_res","onFailed","onError","_err","onInsertedAttachment","_elem","DownloadAttachmentMenu","this","title","t","iconSvg","tag","alwaysEnable","prototype","getValue","editor","attachmentElem","getSelectedElem","isActive","_editor","exec","value","window","open","isDisabled","selection","SlateRange","isExpanded","node","DomEditor","getSelectedNodeByType","hide","$","fn","append","click","on","getUploadAttachmentMenuConfig","defaultConfig","menuConfig","getMenuConfig","__assign","insertAttachment","restoreSelection","children","text","insertNode","move","EDITOR_TO_UPLOADER_MAP","WeakMap","getUploader","uploader","get","customInsert","createUploader","progress","showProgressBar","file","res","errno","data","_d","url","name","err","set","uploadFile","uploadList","map","size","addFiles","sent","UploadAttachmentMenu","_value","customBrowseAndUpload","acceptAttr","length","join","$body","$inputFile","fileList","Array","slice","call","customUpload","uploadFileList","fileList_1","__asyncValues","fileList_1_1","_e","push","uploadAttachments","selectedElems","getSelectedElems","some","isVoid","getNodeType","module","editorPlugin","isInline","newEditor","renderElems","renderElem","_children","selected","isNodeSelected","h","props","contentEditable","style","display","marginLeft","marginRight","border","borderRadius","padding","backgroundColor","cursor","opacity","elemsToHtml","elemToHtmlConf","parseElemsHtml","selector","parseElemHtml","getAttribute","menus","key","factory","config"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import{i18nAddResources as e,t,SlateRange as n,DomEditor as r,createUploader as o}from"@wangeditor-next/editor";import a,{hide as i,append as c,click as u,on as l}from"dom7";import{h as s}from"snabbdom";e("en",{attachment:{upload:"Upload Attachment",download:"Download Attachment"}}),e("zh-CN",{attachment:{upload:"上传附件",download:"下载附件"}});var f={type:"attachment",elemToHtml:function(e,t){var n=e,r=n.link,o=void 0===r?"":r,a=n.fileName,i=void 0===a?"":a;return'<a data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline href="'.concat(o,'" download="').concat(i,'">').concat(i,"</a>")}};function d(){return{server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}}}var p=function(){function e(){this.title=t("attachment.download"),this.iconSvg='<svg viewBox="0 0 1024 1024"><path d="M736 448l-256 256-256-256h160V64h192v384z m-256 256H0v256h960v-256H480z m416 128h-128v-64h128v64z"></path></svg>',this.tag="button",this.alwaysEnable=!0}return e.prototype.getValue=function(e){var t=this.getSelectedElem(e);return null==t?"":t.link},e.prototype.isActive=function(e){return!1},e.prototype.exec=function(e,t){t&&"string"==typeof t&&window.open(t,"_blank")},e.prototype.isDisabled=function(e){var t=e.selection;return null==t||(!!n.isExpanded(t)||null==this.getSelectedElem(e))},e.prototype.getSelectedElem=function(e){var t=r.getSelectedNodeByType(e,"attachment");return null==t?null:t},e}();i&&(a.fn.hide=i),c&&(a.fn.append=c),u&&(a.fn.click=u),l&&(a.fn.on=l);var m=function(){return m=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},m.apply(this,arguments)};function h(e,t,n,r){return new(n||(n=Promise))(function(o,a){function i(e){try{u(r.next(e))}catch(e){a(e)}}function c(e){try{u(r.throw(e))}catch(e){a(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,c)}u((r=r.apply(e,t||[])).next())})}function v(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=c(0),i.throw=c(1),i.return=c(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}function y(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=y(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,o){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,o,(t=e[n](t)).done,t.value)})}}}function b(e){var t={server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}},n=e.getMenuConfig("uploadAttachment");return m(m({},t),n||{})}function w(e,t,n){if(t&&n){e.restoreSelection();var r={type:"attachment",fileName:t,link:n,children:[{text:""}]};e.insertNode(r),e.move(1);var o=b(e).onInsertedAttachment;o&&o(r)}}"function"==typeof SuppressedError&&SuppressedError;var x=new WeakMap;function S(e,t){return h(this,void 0,void 0,function(){var n,r;return v(this,function(a){switch(a.label){case 0:return n=function(e){var t=x.get(e);if(null!=t)return t;var n=b(e),r=n.customInsert,a=n.onError,i=n.onFailed,c=n.onProgress,u=n.onSuccess;return t=o(m(m({},n),{onProgress:function(t){e.showProgressBar(t),c&&c(t)},onSuccess:function(t,n){if(r)return r(n,t,function(t,n){return w(e,t,n)}),void u(t,n);var o=n||{},a=o.errno,c=void 0===a?1:a,l=o.data;if(0===c){var s=(void 0===l?{}:l).url,f=void 0===s?"":s;w(e,(null==t?void 0:t.name)||"",f),u(t,n)}else i(t,n)},onError:function(e,t,n){a(e,t,n)}}),e),x.set(e,t),t}(e),r=t.map(function(e){return{name:e.name,type:e.type,size:e.size,data:e}}),n.addFiles(r),[4,n.upload()];case 1:return a.sent(),[2]}})})}var E=function(){function e(){this.title=t("attachment.upload"),this.iconSvg='<svg viewBox="0 0 1024 1024"><path d="M665.821116 327.053068l-64.958782-64.926783-324.79391 324.729911c-53.822991 53.790991-53.822991 141.053355 0 194.844347s141.053355 53.790991 194.876346 0l389.752692-389.688693a229.531696 229.531696 0 0 0 0-324.729912 229.627694 229.627694 0 0 0-324.761911 0L126.727224 476.458266l-0.863984 0.831985c-125.085655 125.085655-125.085655 327.833853 0 452.887508 125.053655 125.053655 327.865853 125.053655 452.983507 0l0.831984-0.863984 0.031999 0.032 279.322763-279.290764-64.990781-64.926782-279.322763 279.258764-0.831984 0.831984a228.731711 228.731711 0 0 1-323.065943 0 228.603714 228.603714 0 0 1 0-322.969944l0.895983-0.831985-0.031999-0.063998L600.958332 132.208721c53.694993-53.726993 141.149353-53.726993 194.876346 0s53.694993 141.149353 0 194.844347L406.081986 716.741761c-17.919664 17.919664-47.039118 17.919664-64.958782 0a45.983138 45.983138 0 0 1 0-64.926783L665.917114 327.053068z"></path></svg>',this.tag="button"}return e.prototype.getValue=function(e){return""},e.prototype.isActive=function(e){return!1},e.prototype.exec=function(e,t){var n=this.getMenuConfig(e),r=n.allowedFileTypes,o=void 0===r?[]:r,i=n.customBrowseAndUpload;if(i)i(function(t,n){return w(e,t,n)});else{var c="";o.length>0&&(c='accept="'.concat(o.join(", "),'"'));var u=a("body"),l=a('<input type="file" '.concat(c," multiple/>"));l.hide(),u.append(l),l.click(),l.on("change",function(){var t=l[0].files;!function(e,t){h(this,void 0,void 0,function(){var n,r,o,a,i,c,u,l,s,f,d,p;return v(this,function(m){switch(m.label){case 0:if(null==t)return[2];n=Array.prototype.slice.call(t),r=b(e).customUpload,o=[],m.label=1;case 1:m.trys.push([1,8,9,14]),a=!0,i=g(n),m.label=2;case 2:return[4,i.next()];case 3:return c=m.sent(),(s=c.done)?[3,7]:(p=c.value,a=!1,u=p,r?[4,r(u,function(t,n){return w(e,t,n)},e)]:[3,5]);case 4:return m.sent(),[3,6];case 5:o.push(u),m.label=6;case 6:return a=!0,[3,2];case 7:return[3,14];case 8:return l=m.sent(),f={error:l},[3,14];case 9:return m.trys.push([9,,12,13]),a||s||!(d=i.return)?[3,11]:[4,d.call(i)];case 10:m.sent(),m.label=11;case 11:return[3,13];case 12:if(f)throw f.error;return[7];case 13:return[7];case 14:return o.length>0?[4,S(e,o)]:[3,16];case 15:m.sent(),m.label=16;case 16:return[2]}})})}(e,t)})}},e.prototype.isDisabled=function(e){var t=e.selection;if(null==t)return!0;if(n.isExpanded(t))return!0;var o=r.getSelectedElems(e);return!!o.some(function(t){return e.isVoid(t)})||!!o.some(function(e){return"pre"===r.getNodeType(e)})},e.prototype.getMenuConfig=function(e){return e.getMenuConfig("uploadAttachment")},e}();var k={editorPlugin:function(e){var t=e.isInline,n=e.isVoid,o=e;return o.isInline=function(e){return"attachment"===r.getNodeType(e)||t(e)},o.isVoid=function(e){return"attachment"===r.getNodeType(e)||n(e)},o},renderElems:[{type:"attachment",renderElem:function(e,t,n){var o=n.isDisabled(),a=r.isNodeSelected(n,e),i=e,c=i.fileName,u=void 0===c?"":c,l=i.link,f=void 0===l?"":l;return s("span",{props:{contentEditable:!1},style:{display:"inline-block",marginLeft:"3px",marginRight:"3px",border:a&&!o?"2px solid var(--w-e-textarea-selected-border-color)":"2px solid transparent",borderRadius:"3px",padding:"0 3px",backgroundColor:"var(--w-e-textarea-slight-bg-color)",cursor:o?"pointer":"inherit"},on:{click:function(){o&&f&&window.open(f,"_blank")}}},[s("span",{style:{marginRight:"0.2em",opacity:"0.7"}},"file"),u])}}],elemsToHtml:[f],parseElemsHtml:[{selector:'a[data-w-e-type="attachment"]',parseElemHtml:function(e,t,n){return{type:"attachment",link:e.getAttribute("href")||"",fileName:e.getAttribute("download")||"",children:[{text:""}]}}}],menus:[{key:"uploadAttachment",factory:function(){return new E},config:{server:"",fieldName:"wangeditor-uploaded-attachment",maxFileSize:10485760,maxNumberOfFiles:5,allowedFileTypes:["*"],meta:{},metaWithUrl:!1,withCredentials:!1,timeout:3e4,onBeforeUpload:function(e){return e},onProgress:function(e){},onSuccess:function(e,t){},onFailed:function(e,t){},onError:function(e,t,n){},onInsertedAttachment:function(e){}}},{key:"downloadAttachment",factory:function(){return new p}}]};export{k as default,d as genUploadAttachmentMenuConfig};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/module/local.ts","../src/module/elem-to-html.ts","../src/module/menu/config.ts","../src/constants/icon-svg.ts","../src/module/menu/DownloadAttachment.ts","../src/utils/dom.ts","../src/module/menu/helper.ts","../src/module/menu/UploadAttachment.ts","../src/module/render-elem.ts","../src/module/index.ts","../src/module/plugin.ts","../src/module/parse-elem-html.ts","../src/module/menu/index.ts"],"sourcesContent":["/**\n * @description 多语言\n * @author wangfupeng\n */\n\nimport { i18nAddResources } from '@wangeditor-next/editor'\n\ni18nAddResources('en', {\n attachment: {\n upload: 'Upload Attachment',\n download: 'Download Attachment',\n },\n})\n\ni18nAddResources('zh-CN', {\n attachment: {\n upload: '上传附件',\n download: '下载附件',\n },\n})\n","/**\n * @description elem to html\n * @author wangfupeng\n */\n\nimport { SlateElement } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from './custom-types'\n\n// 生成 html 的函数\nfunction attachmentToHtml(elem: SlateElement, _childrenHtml: string): string {\n const { link = '', fileName = '' } = elem as AttachmentElement\n\n return `<a data-w-e-type=\"attachment\" data-w-e-is-void data-w-e-is-inline href=\"${link}\" download=\"${fileName}\">${fileName}</a>`\n}\n\n// 配置\nconst conf = {\n type: 'attachment', // 节点 type ,重要!!!\n elemToHtml: attachmentToHtml,\n}\n\nexport default conf\n","/**\n * @description menu config\n * @author wangfupeng\n */\n\nimport { IDomEditor, IUploadConfig } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from '../custom-types'\n\ntype InsertFn = (fileName: string, link: string) => void\n\n// 在通用 uploadConfig 上,扩展 attachment 相关配置\nexport type IUploadConfigForAttachment = Omit<\n IUploadConfig,\n 'customInsert' | 'customUpload' | 'customBrowseAndUpload'\n> & {\n // 用户自定义插入附件\n customInsert?: (res: any, file: any, insertFn: InsertFn) => void\n // 用户自定义上传附件\n customUpload?: (file: File, insertFn: InsertFn, editor: IDomEditor) => void | Promise<void>\n // 自定义选择附件,如图床\n customBrowseAndUpload?: (insertFn: InsertFn) => void\n // 插入之后的回调\n onInsertedAttachment?: (elem: AttachmentElement) => void\n}\n\nexport function genUploadAttachmentMenuConfig(): IUploadConfigForAttachment {\n return {\n server: '',\n fieldName: 'wangeditor-uploaded-attachment',\n maxFileSize: 10 * 1024 * 1024,\n maxNumberOfFiles: 5,\n allowedFileTypes: ['*'],\n meta: {},\n metaWithUrl: false,\n withCredentials: false,\n timeout: 30 * 1000,\n\n onBeforeUpload: (files: any) => files,\n onProgress: (_progress: number) => {\n /* on progress */\n },\n onSuccess: (_file: any, _res: any) => {\n /* on success */\n },\n onFailed: (_file: any, _res: any) => {\n /* on failed */\n },\n onError: (_file: any, _err: any, _res: any) => {\n /* on error */\n /* on timeout */\n },\n\n onInsertedAttachment(_elem: AttachmentElement) {\n // 插入文件之后的 callback\n },\n }\n}\n","/**\n * @description icon svg\n * @author wangfupeng\n */\n\n// 附件\nexport const ATTACHMENT_SVG = '<svg viewBox=\"0 0 1024 1024\"><path d=\"M665.821116 327.053068l-64.958782-64.926783-324.79391 324.729911c-53.822991 53.790991-53.822991 141.053355 0 194.844347s141.053355 53.790991 194.876346 0l389.752692-389.688693a229.531696 229.531696 0 0 0 0-324.729912 229.627694 229.627694 0 0 0-324.761911 0L126.727224 476.458266l-0.863984 0.831985c-125.085655 125.085655-125.085655 327.833853 0 452.887508 125.053655 125.053655 327.865853 125.053655 452.983507 0l0.831984-0.863984 0.031999 0.032 279.322763-279.290764-64.990781-64.926782-279.322763 279.258764-0.831984 0.831984a228.731711 228.731711 0 0 1-323.065943 0 228.603714 228.603714 0 0 1 0-322.969944l0.895983-0.831985-0.031999-0.063998L600.958332 132.208721c53.694993-53.726993 141.149353-53.726993 194.876346 0s53.694993 141.149353 0 194.844347L406.081986 716.741761c-17.919664 17.919664-47.039118 17.919664-64.958782 0a45.983138 45.983138 0 0 1 0-64.926783L665.917114 327.053068z\"></path></svg>'\n\n// 下载\nexport const DOWNLOAD_SVG = '<svg viewBox=\"0 0 1024 1024\"><path d=\"M736 448l-256 256-256-256h160V64h192v384z m-256 256H0v256h960v-256H480z m416 128h-128v-64h128v64z\"></path></svg>'\n","/**\n * @description download attachment menu\n * @author wangfupeng\n */\n\nimport {\n DomEditor,\n IButtonMenu,\n IDomEditor,\n SlateRange,\n t,\n} from '@wangeditor-next/editor'\n\nimport { DOWNLOAD_SVG } from '../../constants/icon-svg'\nimport { AttachmentElement } from '../custom-types'\n\nclass DownloadAttachmentMenu implements IButtonMenu {\n readonly title = t('attachment.download')\n\n readonly iconSvg = DOWNLOAD_SVG\n\n readonly tag = 'button'\n\n readonly alwaysEnable = true\n\n getValue(editor: IDomEditor): string | boolean {\n const attachmentElem = this.getSelectedElem(editor)\n\n if (attachmentElem == null) { return '' }\n return attachmentElem.link\n }\n\n isActive(_editor: IDomEditor): boolean {\n // 任何时候,都不用激活 menu\n return false\n }\n\n exec(_editor: IDomEditor, value: string | boolean) {\n if (!value) { return }\n if (typeof value !== 'string') { return }\n window.open(value, '_blank')\n }\n\n isDisabled(editor: IDomEditor): boolean {\n const { selection } = editor\n\n if (selection == null) { return true }\n if (SlateRange.isExpanded(selection)) { return true }\n\n // 未匹配到 attachment node 则禁用\n const attachmentElem = this.getSelectedElem(editor)\n\n if (attachmentElem == null) { return true }\n\n return false\n }\n\n private getSelectedElem(editor: IDomEditor): AttachmentElement | null {\n const node = DomEditor.getSelectedNodeByType(editor, 'attachment')\n\n if (node == null) { return null }\n return node as AttachmentElement\n }\n}\n\nexport default DownloadAttachmentMenu\n","/**\n * @description DOM 操作\n * @author wangfupeng\n */\n\nimport $, {\n append, click, hide, on,\n} from 'dom7'\n\nif (hide) { $.fn.hide = hide }\nif (append) { $.fn.append = append }\nif (click) { $.fn.click = click }\nif (on) { $.fn.on = on }\n\nexport { Dom7Array } from 'dom7'\nexport default $\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\n\nexport {\n DOMComment,\n DOMElement,\n DOMNode,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n DOMText,\n}\n","/**\n * @description helper fns\n * @author wangfupeng\n */\n\nimport { createUploader, IDomEditor } from '@wangeditor-next/editor'\n\nimport { AttachmentElement } from '../custom-types'\nimport {\n genUploadAttachmentMenuConfig,\n IUploadConfigForAttachment,\n} from './config'\n\nfunction getUploadAttachmentMenuConfig(editor: IDomEditor): IUploadConfigForAttachment {\n const defaultConfig = genUploadAttachmentMenuConfig()\n const menuConfig = editor.getMenuConfig('uploadAttachment') as Partial<IUploadConfigForAttachment>\n\n return {\n ...defaultConfig,\n ...(menuConfig || {}),\n }\n}\n\n/**\n * 插入 attachment 节点\n * @param fileName fileName\n * @param link link\n */\nexport function insertAttachment(editor: IDomEditor, fileName: string, link: string) {\n if (!fileName || !link) { return }\n\n // 还原选区\n editor.restoreSelection()\n\n // 插入节点\n const attachmentElem: AttachmentElement = {\n type: 'attachment',\n fileName,\n link,\n children: [{ text: '' }],\n }\n\n editor.insertNode(attachmentElem)\n editor.move(1)\n\n // 回调\n const { onInsertedAttachment } = getUploadAttachmentMenuConfig(editor)\n\n if (onInsertedAttachment) { onInsertedAttachment(attachmentElem) }\n}\n\n// 存储 editor uploader 的关系 - 缓存 uploader ,不重复创建\nconst EDITOR_TO_UPLOADER_MAP = new WeakMap<IDomEditor, any>()\n\n/**\n * 获取 uploader 实例(并通过 editor 缓存)\n * @param editor editor\n */\nfunction getUploader(editor: IDomEditor) {\n let uploader = EDITOR_TO_UPLOADER_MAP.get(editor)\n\n if (uploader != null) { return uploader }\n\n const menuConfig = getUploadAttachmentMenuConfig(editor)\n const {\n customInsert,\n onError,\n onFailed,\n onProgress,\n onSuccess,\n } = menuConfig\n\n // 上传完成之后\n const successHandler = (file: any, res: any) => {\n // 预期 res 格式:\n // 成功:{ errno: 0, data: { url } }\n // 失败:{ errno: !0, message: '失败信息' }\n if (customInsert) {\n customInsert(res, file, (fileName: string, link: string) => insertAttachment(editor, fileName, link))\n onSuccess(file, res)\n return\n }\n\n const { errno = 1, data = {} } = res || {}\n\n if (errno !== 0) {\n onFailed(file, res)\n return\n }\n\n const { url = '' } = data as { url?: string }\n\n insertAttachment(editor, file?.name || '', url)\n onSuccess(file, res)\n }\n\n // progress 显示进度条\n const progressHandler = (progress: number) => {\n editor.showProgressBar(progress)\n\n if (onProgress) { onProgress(progress) }\n }\n\n // onError 提示错误\n const errorHandler = (file: any, err: any, res: any) => {\n onError(file, err, res)\n }\n\n uploader = createUploader(\n {\n ...menuConfig,\n onProgress: progressHandler,\n onSuccess: successHandler,\n onError: errorHandler,\n } as any,\n editor,\n )\n\n EDITOR_TO_UPLOADER_MAP.set(editor, uploader)\n\n return uploader\n}\n\n/**\n * 上传文件\n * @param editor editor\n * @param files files\n */\nasync function uploadFile(editor: IDomEditor, files: File[]) {\n const uploader = getUploader(editor)\n const uploadList = files.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n data: file,\n }))\n\n uploader.addFiles(uploadList)\n await uploader.upload()\n}\n\n/**\n * 上传附件文件\n * @param editor editor\n * @param files files\n */\nexport async function uploadAttachments(\n editor: IDomEditor,\n files: FileList | File[] | null,\n) {\n if (files == null) { return }\n const fileList = Array.prototype.slice.call(files) as File[]\n\n // 获取菜单配置\n const { customUpload } = getUploadAttachmentMenuConfig(editor)\n const uploadFileList: File[] = []\n\n // 按顺序上传\n for await (const file of fileList) {\n if (customUpload) {\n // 自定义上传\n await customUpload(\n file,\n (fileName: string, link: string) => insertAttachment(editor, fileName, link),\n editor,\n )\n } else {\n // 默认上传\n uploadFileList.push(file)\n }\n }\n\n if (uploadFileList.length > 0) {\n await uploadFile(editor, uploadFileList)\n }\n}\n","/**\n * @description upload attachment menu\n * @author wangfupeng\n */\n\nimport {\n DomEditor,\n IButtonMenu,\n IDomEditor,\n SlateRange,\n t,\n} from '@wangeditor-next/editor'\n\nimport { ATTACHMENT_SVG } from '../../constants/icon-svg'\nimport $ from '../../utils/dom'\nimport { IUploadConfigForAttachment } from './config'\nimport { insertAttachment, uploadAttachments } from './helper'\n\nclass UploadAttachmentMenu implements IButtonMenu {\n readonly title = t('attachment.upload')\n\n readonly iconSvg = ATTACHMENT_SVG\n\n readonly tag = 'button'\n\n getValue(_editor: IDomEditor): string | boolean {\n // 无需获取 val\n return ''\n }\n\n isActive(_editor: IDomEditor): boolean {\n // 任何时候,都不用激活 menu\n return false\n }\n\n exec(editor: IDomEditor, _value: string | boolean) {\n const {\n allowedFileTypes = [],\n customBrowseAndUpload,\n } = this.getMenuConfig(editor)\n\n // 自定义选择文件、并上传,如图床\n if (customBrowseAndUpload) {\n customBrowseAndUpload((fileName: string, link: string) => insertAttachment(editor, fileName, link))\n return\n }\n\n // 设置选择文件的类型\n let acceptAttr = ''\n\n if (allowedFileTypes.length > 0) {\n acceptAttr = `accept=\"${allowedFileTypes.join(', ')}\"`\n }\n\n // 添加 file input(每次重新创建 input)\n const $body = $('body')\n const $inputFile = $(`<input type=\"file\" ${acceptAttr} multiple/>`)\n\n $inputFile.hide()\n $body.append($inputFile)\n $inputFile.click()\n // 选中文件\n $inputFile.on('change', () => {\n const files = ($inputFile[0] as HTMLInputElement).files\n\n uploadAttachments(editor, files)\n })\n }\n\n isDisabled(editor: IDomEditor): boolean {\n const { selection } = editor\n\n if (selection == null) { return true }\n if (SlateRange.isExpanded(selection)) { return true }\n\n const selectedElems = DomEditor.getSelectedElems(editor)\n const hasVoidElem = selectedElems.some(elem => editor.isVoid(elem))\n\n if (hasVoidElem) { return true }\n\n const hasPreElem = selectedElems.some(elem => DomEditor.getNodeType(elem) === 'pre')\n\n if (hasPreElem) { return true }\n\n return false\n }\n\n private getMenuConfig(editor: IDomEditor): IUploadConfigForAttachment {\n return editor.getMenuConfig('uploadAttachment') as IUploadConfigForAttachment\n }\n}\n\nexport default UploadAttachmentMenu\n","/**\n * @description render elem\n * @author wangfupeng\n */\n\nimport { DomEditor, IDomEditor, SlateElement } from '@wangeditor-next/editor'\nimport { h, VNode } from 'snabbdom'\n\nimport { AttachmentElement } from './custom-types'\n\nfunction renderAttachment(elem: SlateElement, _children: VNode[] | null, editor: IDomEditor): VNode {\n const isDisabled = editor.isDisabled()\n const selected = DomEditor.isNodeSelected(editor, elem)\n const { fileName = '', link = '' } = elem as AttachmentElement\n\n const vnode = h(\n 'span',\n {\n props: {\n contentEditable: false,\n },\n style: {\n display: 'inline-block',\n marginLeft: '3px',\n marginRight: '3px',\n border: selected && !isDisabled\n ? '2px solid var(--w-e-textarea-selected-border-color)'\n : '2px solid transparent',\n borderRadius: '3px',\n padding: '0 3px',\n backgroundColor: 'var(--w-e-textarea-slight-bg-color)',\n cursor: isDisabled ? 'pointer' : 'inherit',\n },\n on: {\n // disable 时,点击下载附件\n click() {\n if (!isDisabled) { return }\n if (link) {\n window.open(link, '_blank')\n }\n },\n },\n },\n [\n h('span', {\n style: {\n marginRight: '0.2em',\n opacity: '0.7',\n },\n }, 'file'),\n fileName,\n ],\n )\n\n return vnode\n}\n\nconst conf = {\n type: 'attachment',\n renderElem: renderAttachment,\n}\n\nexport default conf\n","/**\n * @description attachment module entry\n * @author wangfupeng\n */\n\nimport './local'\n\nimport { IModuleConf } from '@wangeditor-next/editor'\n\nimport elemToHtmlConf from './elem-to-html'\nimport {\n downloadAttachmentMenuConf,\n uploadAttachmentMenuConf,\n} from './menu/index'\nimport parseHtmlConf from './parse-elem-html'\nimport withAttachment from './plugin'\nimport renderElemConf from './render-elem'\n\nconst module: Partial<IModuleConf> = {\n editorPlugin: withAttachment,\n renderElems: [renderElemConf],\n elemsToHtml: [elemToHtmlConf],\n parseElemsHtml: [parseHtmlConf],\n menus: [uploadAttachmentMenuConf, downloadAttachmentMenuConf],\n}\n\nexport default module\n","/**\n * @description attachment plugin\n * @author wangfupeng\n */\n\nimport { DomEditor, IDomEditor } from '@wangeditor-next/editor'\n\nfunction withAttachment<T extends IDomEditor>(editor: T) {\n const { isInline, isVoid } = editor\n const newEditor = editor\n\n // 重写 isInline\n newEditor.isInline = elem => {\n const type = DomEditor.getNodeType(elem)\n\n if (type === 'attachment') {\n return true\n }\n\n return isInline(elem)\n }\n\n // 重写 isVoid\n newEditor.isVoid = elem => {\n const type = DomEditor.getNodeType(elem)\n\n if (type === 'attachment') {\n return true\n }\n\n return isVoid(elem)\n }\n\n return newEditor\n}\n\nexport default withAttachment\n","/**\n * @description parse elem html\n * @author wangfupeng\n */\n\nimport { IDomEditor, SlateDescendant, SlateElement } from '@wangeditor-next/editor'\n\nimport { DOMElement } from '../utils/dom'\nimport { AttachmentElement } from './custom-types'\n\nfunction parseHtml(\n elem: DOMElement,\n _children: SlateDescendant[],\n _editor: IDomEditor,\n): SlateElement {\n const link = elem.getAttribute('href') || ''\n const fileName = elem.getAttribute('download') || ''\n\n return {\n type: 'attachment',\n link,\n fileName,\n children: [{ text: '' }], // void node 必须有一个空白 text\n } as AttachmentElement\n}\n\nconst parseHtmlConf = {\n selector: 'a[data-w-e-type=\"attachment\"]',\n parseElemHtml: parseHtml,\n}\n\nexport default parseHtmlConf\n","/**\n * @description menu entry\n * @author wangfupeng\n */\n\nimport { genUploadAttachmentMenuConfig } from './config'\nimport DownloadAttachmentMenu from './DownloadAttachment'\nimport UploadAttachmentMenu from './UploadAttachment'\n\nexport const uploadAttachmentMenuConf = {\n key: 'uploadAttachment',\n factory() {\n return new UploadAttachmentMenu()\n },\n\n // 默认菜单配置,将存储在 editorConfig.MENU_CONF[key] 中\n // 创建编辑器时,可通过 editorConfig.MENU_CONF[key] = {...} 来修改\n config: genUploadAttachmentMenuConfig(),\n}\n\nexport const downloadAttachmentMenuConf = {\n key: 'downloadAttachment',\n factory() {\n return new DownloadAttachmentMenu()\n },\n}\n"],"names":["i18nAddResources","attachment","upload","download","conf","type","elemToHtml","elem","_childrenHtml","_a","_b","link","_c","fileName","concat","genUploadAttachmentMenuConfig","server","fieldName","maxFileSize","maxNumberOfFiles","allowedFileTypes","meta","metaWithUrl","withCredentials","timeout","onBeforeUpload","files","onProgress","_progress","onSuccess","_file","_res","onFailed","onError","_err","onInsertedAttachment","_elem","DownloadAttachmentMenu","this","title","t","iconSvg","tag","alwaysEnable","prototype","getValue","editor","attachmentElem","getSelectedElem","isActive","_editor","exec","value","window","open","isDisabled","selection","SlateRange","isExpanded","node","DomEditor","getSelectedNodeByType","hide","$","fn","append","click","on","getUploadAttachmentMenuConfig","defaultConfig","menuConfig","getMenuConfig","__assign","insertAttachment","restoreSelection","children","text","insertNode","move","EDITOR_TO_UPLOADER_MAP","WeakMap","uploadFile","uploader","get","customInsert","createUploader","progress","showProgressBar","file","res","errno","data","_d","url","name","err","set","getUploader","uploadList","map","size","addFiles","sent","UploadAttachmentMenu","_value","customBrowseAndUpload","acceptAttr","length","join","$body","$inputFile","fileList","Array","slice","call","customUpload","uploadFileList","fileList_1","__asyncValues","fileList_1_1","_e","push","uploadAttachments","selectedElems","getSelectedElems","some","isVoid","getNodeType","module","editorPlugin","isInline","newEditor","renderElems","renderElem","_children","selected","isNodeSelected","h","props","contentEditable","style","display","marginLeft","marginRight","border","borderRadius","padding","backgroundColor","cursor","opacity","elemsToHtml","elemToHtmlConf","parseElemsHtml","selector","parseElemHtml","getAttribute","menus","key","factory","config"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description icon svg
3
+ * @author wangfupeng
4
+ */
5
+ /**
6
+ * 【注意】svg 字符串的长度 ,否则会导致代码体积过大
7
+ * 尽量选择 https://www.iconfont.cn/collections/detail?spm=a313x.7781069.0.da5a778a4&cid=20293
8
+ * 找不到再从 iconfont.com 搜索
9
+ */
10
+ export declare const BULLETED_LIST_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M384 64h640v128H384V64z m0 384h640v128H384v-128z m0 384h640v128H384v-128zM0 128a128 128 0 1 1 256 0 128 128 0 0 1-256 0z m0 384a128 128 0 1 1 256 0 128 128 0 0 1-256 0z m0 384a128 128 0 1 1 256 0 128 128 0 0 1-256 0z\"></path></svg>";
11
+ export declare const NUMBERED_LIST_SVG = "<svg viewBox=\"0 0 1024 1024\"><path d=\"M384 832h640v128H384z m0-384h640v128H384z m0-384h640v128H384zM192 0v256H128V64H64V0zM128 526.016v50.016h128v64H64v-146.016l128-60V384H64v-64h192v146.016zM256 704v320H64v-64h128v-64H64v-64h128v-64H64v-64z\"></path></svg>";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @description list module
3
+ * @author wangfupeng
4
+ */
5
+ import './assets/index.less';
6
+ import './locale/index';
7
+ import wangEditorListModule from './module/index';
8
+ export default wangEditorListModule;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @description i18n en
3
+ * @author wangfupeng
4
+ */
5
+ declare const _default: {
6
+ listModule: {
7
+ unOrderedList: string;
8
+ orderedList: string;
9
+ lowerAlphaList: string;
10
+ };
11
+ };
12
+ export default _default;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description i18n entry
3
+ * @author wangfupeng
4
+ */
5
+ export {};