@maketribe/ms-app 3.2.24 → 3.2.25

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 (343) hide show
  1. package/dist/cjs/components/basic/doc-editor/core/index.js +7 -0
  2. package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/editor.vue.js +7 -0
  4. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  5. package/dist/cjs/components/basic/doc-editor/index.js.map +1 -1
  6. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +0 -3
  7. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  8. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +2 -3
  9. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  10. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +66 -39
  11. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  12. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +2 -2
  13. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +1 -1
  14. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +21 -18
  15. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  16. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +15 -0
  17. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +1 -1
  18. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +2 -2
  19. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  20. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +2 -3
  21. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  22. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +3 -2
  23. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  24. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +10 -1
  25. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
  26. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +49 -34
  27. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  28. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +2 -3
  29. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  30. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  31. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  32. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +7 -10
  33. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  34. package/dist/cjs/components/basic/upload-file/context/UploadContext.js.map +1 -1
  35. package/dist/cjs/components/basic/upload-file/index.js +13 -3
  36. package/dist/cjs/components/basic/upload-file/index.js.map +1 -1
  37. package/dist/cjs/components/basic/upload-file/ui/upload-file/index.js +11 -0
  38. package/dist/cjs/components/basic/upload-file/ui/upload-file/index.js.map +1 -0
  39. package/dist/cjs/components/basic/upload-file/ui/upload-file/upload-file-options.js +38 -0
  40. package/dist/cjs/components/basic/upload-file/ui/upload-file/upload-file-options.js.map +1 -0
  41. package/dist/cjs/components/basic/upload-file/ui/upload-file/upload-file.js +224 -0
  42. package/dist/cjs/components/basic/upload-file/ui/upload-file/upload-file.js.map +1 -0
  43. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +4 -2
  44. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  45. package/dist/cjs/components/basic/upload-file/ui/upload-video/index.js +11 -0
  46. package/dist/cjs/components/basic/upload-file/ui/upload-video/index.js.map +1 -0
  47. package/dist/cjs/components/basic/upload-file/ui/upload-video/upload-video-options.js +38 -0
  48. package/dist/cjs/components/basic/upload-file/ui/upload-video/upload-video-options.js.map +1 -0
  49. package/dist/cjs/components/basic/upload-file/ui/upload-video/upload-video.js +222 -0
  50. package/dist/cjs/components/basic/upload-file/ui/upload-video/upload-video.js.map +1 -0
  51. package/dist/cjs/components/basic/upload-file/upload-file-options.js +2 -1
  52. package/dist/cjs/components/basic/upload-file/upload-file-options.js.map +1 -1
  53. package/dist/cjs/components/basic/upload-file/upload-file.js +1 -0
  54. package/dist/cjs/components/basic/upload-file/upload-file.js.map +1 -1
  55. package/dist/cjs/components/business/resource-list/components/resource-item/index.vue.js +2 -0
  56. package/dist/cjs/components/business/resource-list/components/resource-item/index.vue.js.map +1 -1
  57. package/dist/cjs/components/business/resource-manager/resource-manager.vue.js +2 -0
  58. package/dist/cjs/components/business/resource-manager/resource-manager.vue.js.map +1 -1
  59. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js +2 -0
  60. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  61. package/dist/cjs/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js +2 -0
  62. package/dist/cjs/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js.map +1 -1
  63. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/table-filter.js +2 -0
  64. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  65. package/dist/cjs/core/component/DataFormComponents.js +14 -0
  66. package/dist/cjs/core/component/DataFormComponents.js.map +1 -1
  67. package/dist/cjs/index.js +73 -61
  68. package/dist/cjs/index.js.map +1 -1
  69. package/dist/cjs/installer.js +17 -14
  70. package/dist/cjs/installer.js.map +1 -1
  71. package/dist/cjs/layouts/components/bar/index.js +2 -0
  72. package/dist/cjs/layouts/components/bar/index.js.map +1 -1
  73. package/dist/cjs/layouts/components/header/tools.js +2 -0
  74. package/dist/cjs/layouts/components/header/tools.js.map +1 -1
  75. package/dist/cjs/layouts/components/menu/menu-item.js +2 -0
  76. package/dist/cjs/layouts/components/menu/menu-item.js.map +1 -1
  77. package/dist/cjs/layouts/container/default.js +2 -0
  78. package/dist/cjs/layouts/container/default.js.map +1 -1
  79. package/dist/cjs/message-impl/DialogerImpl.js +2 -0
  80. package/dist/cjs/message-impl/DialogerImpl.js.map +1 -1
  81. package/dist/cjs/modules/cms/components/part-tree/index.vue.js +2 -0
  82. package/dist/cjs/modules/cms/components/part-tree/index.vue.js.map +1 -1
  83. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +11 -7
  84. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  85. package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +3 -1
  86. package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
  87. package/dist/cjs/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js +3 -1
  88. package/dist/cjs/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js.map +1 -1
  89. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +3 -1
  90. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  91. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +2 -0
  92. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  93. package/dist/cjs/modules/cms/pages/cms-contents/components/article-atlas.vue.js +2 -0
  94. package/dist/cjs/modules/cms/pages/cms-contents/components/article-atlas.vue.js.map +1 -1
  95. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js +3 -1
  96. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  97. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +8 -6
  98. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  99. package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js +2 -0
  100. package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
  101. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +2 -0
  102. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  103. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js +2 -0
  104. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  105. package/dist/cjs/modules/ms/components/material-list/material-list-options.js +2 -0
  106. package/dist/cjs/modules/ms/components/material-list/material-list-options.js.map +1 -1
  107. package/dist/cjs/modules/ms/components/material-list/material-list.js +2 -0
  108. package/dist/cjs/modules/ms/components/material-list/material-list.js.map +1 -1
  109. package/dist/cjs/modules/ms/components/material-select/material-select-api.js +2 -0
  110. package/dist/cjs/modules/ms/components/material-select/material-select-api.js.map +1 -1
  111. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberTable.js +2 -0
  112. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  113. package/dist/cjs/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js +2 -0
  114. package/dist/cjs/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js.map +1 -1
  115. package/dist/cjs/modules/ms/image-upload-context/index.js +2 -0
  116. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
  117. package/dist/cjs/modules/ms/index.js +4 -2
  118. package/dist/cjs/modules/ms/index.js.map +1 -1
  119. package/dist/cjs/modules/ms/material-upload-context/MaterialUploadContext.js +17 -3
  120. package/dist/cjs/modules/ms/material-upload-context/MaterialUploadContext.js.map +1 -1
  121. package/dist/cjs/modules/ms/material-upload-context/material-upload-context.js +2 -0
  122. package/dist/cjs/modules/ms/material-upload-context/material-upload-context.js.map +1 -1
  123. package/dist/cjs/modules/ms/pages/icons/index.vue2.js +2 -0
  124. package/dist/cjs/modules/ms/pages/icons/index.vue2.js.map +1 -1
  125. package/dist/cjs/modules/ms/pages/local-log/index.vue2.js +2 -0
  126. package/dist/cjs/modules/ms/pages/local-log/index.vue2.js.map +1 -1
  127. package/dist/cjs/modules/ms/pages/ms-material/index.vue2.js +3 -0
  128. package/dist/cjs/modules/ms/pages/ms-material/index.vue2.js.map +1 -1
  129. package/dist/cjs/modules/ms/pages/ms-menu/index.vue2.js +2 -0
  130. package/dist/cjs/modules/ms/pages/ms-menu/index.vue2.js.map +1 -1
  131. package/dist/cjs/modules/ms/pages/ms-role/components/aside.vue.js +2 -0
  132. package/dist/cjs/modules/ms/pages/ms-role/components/aside.vue.js.map +1 -1
  133. package/dist/cjs/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js +2 -0
  134. package/dist/cjs/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js.map +1 -1
  135. package/dist/cjs/modules/ms/pages/ms-role/index.vue2.js +2 -0
  136. package/dist/cjs/modules/ms/pages/ms-role/index.vue2.js.map +1 -1
  137. package/dist/cjs/page/index/dv/default/edit.vue2.js +2 -0
  138. package/dist/cjs/page/index/dv/default/edit.vue2.js.map +1 -1
  139. package/dist/cjs/page/index/dv/default/single/list/dialog.vue2.js +2 -0
  140. package/dist/cjs/page/index/dv/default/single/list/dialog.vue2.js.map +1 -1
  141. package/dist/cjs/page/index/dv/default/single/list/normal.vue2.js +2 -0
  142. package/dist/cjs/page/index/dv/default/single/list/normal.vue2.js.map +1 -1
  143. package/dist/cjs/page/index/dv/default/single/table-tree/dialog.vue2.js +2 -0
  144. package/dist/cjs/page/index/dv/default/single/table-tree/dialog.vue2.js.map +1 -1
  145. package/dist/cjs/page/index/dv/default/single/table-tree/normal.vue2.js +2 -0
  146. package/dist/cjs/page/index/dv/default/single/table-tree/normal.vue2.js.map +1 -1
  147. package/dist/cjs/page/index/dv/default/single/tree/dialog.vue2.js +2 -0
  148. package/dist/cjs/page/index/dv/default/single/tree/dialog.vue2.js.map +1 -1
  149. package/dist/cjs/page/index/dv/default/table.vue2.js +2 -0
  150. package/dist/cjs/page/index/dv/default/table.vue2.js.map +1 -1
  151. package/dist/cjs/page/login/index.vue2.js +2 -0
  152. package/dist/cjs/page/login/index.vue2.js.map +1 -1
  153. package/dist/cjs/page/signup/index.vue2.js +2 -0
  154. package/dist/cjs/page/signup/index.vue2.js.map +1 -1
  155. package/dist/esm/components/basic/doc-editor/core/index.js +9 -2
  156. package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
  157. package/dist/esm/components/basic/doc-editor/editor.vue.js +8 -1
  158. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  159. package/dist/esm/components/basic/doc-editor/index.js.map +1 -1
  160. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +0 -3
  161. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  162. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +1 -2
  163. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  164. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +66 -39
  165. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  166. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +1 -1
  167. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +1 -1
  168. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +21 -18
  169. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  170. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +15 -0
  171. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +1 -1
  172. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +2 -2
  173. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  174. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +1 -2
  175. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  176. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +3 -2
  177. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  178. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +10 -1
  179. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
  180. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +50 -35
  181. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  182. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +1 -2
  183. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  184. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  185. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  186. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +7 -10
  187. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  188. package/dist/esm/components/basic/upload-file/context/UploadContext.js.map +1 -1
  189. package/dist/esm/components/basic/upload-file/index.js +10 -0
  190. package/dist/esm/components/basic/upload-file/index.js.map +1 -1
  191. package/dist/esm/components/basic/upload-file/ui/upload-file/index.js +11 -0
  192. package/dist/esm/components/basic/upload-file/ui/upload-file/index.js.map +1 -0
  193. package/dist/esm/components/basic/upload-file/ui/upload-file/upload-file-options.js +38 -0
  194. package/dist/esm/components/basic/upload-file/ui/upload-file/upload-file-options.js.map +1 -0
  195. package/dist/esm/components/basic/upload-file/ui/upload-file/upload-file.js +225 -0
  196. package/dist/esm/components/basic/upload-file/ui/upload-file/upload-file.js.map +1 -0
  197. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +4 -2
  198. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  199. package/dist/esm/components/basic/upload-file/ui/upload-video/index.js +11 -0
  200. package/dist/esm/components/basic/upload-file/ui/upload-video/index.js.map +1 -0
  201. package/dist/esm/components/basic/upload-file/ui/upload-video/upload-video-options.js +38 -0
  202. package/dist/esm/components/basic/upload-file/ui/upload-video/upload-video-options.js.map +1 -0
  203. package/dist/esm/components/basic/upload-file/ui/upload-video/upload-video.js +223 -0
  204. package/dist/esm/components/basic/upload-file/ui/upload-video/upload-video.js.map +1 -0
  205. package/dist/esm/components/basic/upload-file/upload-file-options.js +2 -1
  206. package/dist/esm/components/basic/upload-file/upload-file-options.js.map +1 -1
  207. package/dist/esm/components/basic/upload-file/upload-file.js +1 -0
  208. package/dist/esm/components/basic/upload-file/upload-file.js.map +1 -1
  209. package/dist/esm/components/business/resource-list/components/resource-item/index.vue.js +2 -0
  210. package/dist/esm/components/business/resource-list/components/resource-item/index.vue.js.map +1 -1
  211. package/dist/esm/components/business/resource-manager/resource-manager.vue.js +2 -0
  212. package/dist/esm/components/business/resource-manager/resource-manager.vue.js.map +1 -1
  213. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js +2 -0
  214. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  215. package/dist/esm/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js +2 -0
  216. package/dist/esm/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js.map +1 -1
  217. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/table-filter.js +2 -0
  218. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  219. package/dist/esm/core/component/DataFormComponents.js +14 -0
  220. package/dist/esm/core/component/DataFormComponents.js.map +1 -1
  221. package/dist/esm/index.js +14 -2
  222. package/dist/esm/index.js.map +1 -1
  223. package/dist/esm/installer.js +3 -0
  224. package/dist/esm/installer.js.map +1 -1
  225. package/dist/esm/layouts/components/bar/index.js +2 -0
  226. package/dist/esm/layouts/components/bar/index.js.map +1 -1
  227. package/dist/esm/layouts/components/header/tools.js +2 -0
  228. package/dist/esm/layouts/components/header/tools.js.map +1 -1
  229. package/dist/esm/layouts/components/menu/menu-item.js +2 -0
  230. package/dist/esm/layouts/components/menu/menu-item.js.map +1 -1
  231. package/dist/esm/layouts/container/default.js +2 -0
  232. package/dist/esm/layouts/container/default.js.map +1 -1
  233. package/dist/esm/message-impl/DialogerImpl.js +2 -0
  234. package/dist/esm/message-impl/DialogerImpl.js.map +1 -1
  235. package/dist/esm/modules/cms/components/part-tree/index.vue.js +2 -0
  236. package/dist/esm/modules/cms/components/part-tree/index.vue.js.map +1 -1
  237. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +11 -7
  238. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  239. package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +3 -1
  240. package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
  241. package/dist/esm/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js +3 -1
  242. package/dist/esm/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js.map +1 -1
  243. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +3 -1
  244. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  245. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +2 -0
  246. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  247. package/dist/esm/modules/cms/pages/cms-contents/components/article-atlas.vue.js +2 -0
  248. package/dist/esm/modules/cms/pages/cms-contents/components/article-atlas.vue.js.map +1 -1
  249. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js +3 -1
  250. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  251. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +8 -6
  252. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  253. package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js +2 -0
  254. package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
  255. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +2 -0
  256. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  257. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js +2 -0
  258. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  259. package/dist/esm/modules/ms/components/material-list/material-list-options.js +2 -0
  260. package/dist/esm/modules/ms/components/material-list/material-list-options.js.map +1 -1
  261. package/dist/esm/modules/ms/components/material-list/material-list.js +2 -0
  262. package/dist/esm/modules/ms/components/material-list/material-list.js.map +1 -1
  263. package/dist/esm/modules/ms/components/material-select/material-select-api.js +2 -0
  264. package/dist/esm/modules/ms/components/material-select/material-select-api.js.map +1 -1
  265. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberTable.js +2 -0
  266. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  267. package/dist/esm/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js +2 -0
  268. package/dist/esm/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js.map +1 -1
  269. package/dist/esm/modules/ms/image-upload-context/index.js +2 -0
  270. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
  271. package/dist/esm/modules/ms/index.js +4 -2
  272. package/dist/esm/modules/ms/index.js.map +1 -1
  273. package/dist/esm/modules/ms/material-upload-context/MaterialUploadContext.js +17 -3
  274. package/dist/esm/modules/ms/material-upload-context/MaterialUploadContext.js.map +1 -1
  275. package/dist/esm/modules/ms/material-upload-context/material-upload-context.js +2 -0
  276. package/dist/esm/modules/ms/material-upload-context/material-upload-context.js.map +1 -1
  277. package/dist/esm/modules/ms/pages/icons/index.vue2.js +2 -0
  278. package/dist/esm/modules/ms/pages/icons/index.vue2.js.map +1 -1
  279. package/dist/esm/modules/ms/pages/local-log/index.vue2.js +2 -0
  280. package/dist/esm/modules/ms/pages/local-log/index.vue2.js.map +1 -1
  281. package/dist/esm/modules/ms/pages/ms-material/index.vue2.js +3 -0
  282. package/dist/esm/modules/ms/pages/ms-material/index.vue2.js.map +1 -1
  283. package/dist/esm/modules/ms/pages/ms-menu/index.vue2.js +2 -0
  284. package/dist/esm/modules/ms/pages/ms-menu/index.vue2.js.map +1 -1
  285. package/dist/esm/modules/ms/pages/ms-role/components/aside.vue.js +2 -0
  286. package/dist/esm/modules/ms/pages/ms-role/components/aside.vue.js.map +1 -1
  287. package/dist/esm/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js +2 -0
  288. package/dist/esm/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js.map +1 -1
  289. package/dist/esm/modules/ms/pages/ms-role/index.vue2.js +2 -0
  290. package/dist/esm/modules/ms/pages/ms-role/index.vue2.js.map +1 -1
  291. package/dist/esm/page/index/dv/default/edit.vue2.js +2 -0
  292. package/dist/esm/page/index/dv/default/edit.vue2.js.map +1 -1
  293. package/dist/esm/page/index/dv/default/single/list/dialog.vue2.js +2 -0
  294. package/dist/esm/page/index/dv/default/single/list/dialog.vue2.js.map +1 -1
  295. package/dist/esm/page/index/dv/default/single/list/normal.vue2.js +2 -0
  296. package/dist/esm/page/index/dv/default/single/list/normal.vue2.js.map +1 -1
  297. package/dist/esm/page/index/dv/default/single/table-tree/dialog.vue2.js +2 -0
  298. package/dist/esm/page/index/dv/default/single/table-tree/dialog.vue2.js.map +1 -1
  299. package/dist/esm/page/index/dv/default/single/table-tree/normal.vue2.js +2 -0
  300. package/dist/esm/page/index/dv/default/single/table-tree/normal.vue2.js.map +1 -1
  301. package/dist/esm/page/index/dv/default/single/tree/dialog.vue2.js +2 -0
  302. package/dist/esm/page/index/dv/default/single/tree/dialog.vue2.js.map +1 -1
  303. package/dist/esm/page/index/dv/default/table.vue2.js +2 -0
  304. package/dist/esm/page/index/dv/default/table.vue2.js.map +1 -1
  305. package/dist/esm/page/login/index.vue2.js +2 -0
  306. package/dist/esm/page/login/index.vue2.js.map +1 -1
  307. package/dist/esm/page/signup/index.vue2.js +2 -0
  308. package/dist/esm/page/signup/index.vue2.js.map +1 -1
  309. package/dist/style/components/basic/doc-editor/index.css +1 -1
  310. package/dist/style/components/index.css +2 -2
  311. package/dist/style/components/upload-file-ui.css +1 -0
  312. package/dist/style/components/upload-image.css +1 -1
  313. package/dist/style/components/upload-video-ui.css +1 -0
  314. package/dist/style/index.css +3 -3
  315. package/dist/style/src/components/basic/doc-editor/index.scss +5 -3
  316. package/dist/style/src/components/index.scss +2 -0
  317. package/dist/style/src/components/upload-file-ui.scss +89 -0
  318. package/dist/style/src/components/upload-image.scss +3 -2
  319. package/dist/style/src/components/upload-video-ui.scss +139 -0
  320. package/dist/style/src/index.scss +4 -0
  321. package/dist/types/components/basic/doc-editor/core/index.d.ts +15 -0
  322. package/dist/types/components/basic/doc-editor/index.d.ts +2 -2
  323. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +7 -1
  324. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.d.ts +8 -0
  325. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +2 -1
  326. package/dist/types/components/basic/upload-file/context/UploadContext.d.ts +1 -0
  327. package/dist/types/components/basic/upload-file/ui/index.d.ts +2 -0
  328. package/dist/types/components/basic/upload-file/ui/upload-file/index.d.ts +67 -0
  329. package/dist/types/components/basic/upload-file/ui/upload-file/upload-file-options.d.ts +35 -0
  330. package/dist/types/components/basic/upload-file/ui/upload-file/upload-file.d.ts +67 -0
  331. package/dist/types/components/basic/upload-file/ui/upload-video/index.d.ts +67 -0
  332. package/dist/types/components/basic/upload-file/ui/upload-video/upload-video-options.d.ts +35 -0
  333. package/dist/types/components/basic/upload-file/ui/upload-video/upload-video.d.ts +67 -0
  334. package/dist/types/components/basic/upload-file/upload-file-options.d.ts +1 -0
  335. package/dist/types/components/basic/upload-file/upload-file.d.ts +2 -0
  336. package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +4 -1
  337. package/dist/types/modules/ms/components/index.d.ts +1 -0
  338. package/package.json +2 -2
  339. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/defines.js +0 -11
  340. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/defines.js.map +0 -1
  341. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/defines.js +0 -11
  342. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/defines.js.map +0 -1
  343. package/dist/types/components/basic/doc-editor/plugins/ToolbarPlugin/defines.d.ts +0 -15
@@ -6,8 +6,15 @@ require("@lexical/utils");
6
6
  require("lexical");
7
7
  require("lexical-vue");
8
8
  const DEVICE_VIEW_MODE = vue.ref("pc");
9
+ const ToolbarExtendPlugins = vue.reactive([]);
10
+ const registerDocEditorToolbarExtend = function(options) {
11
+ ToolbarExtendPlugins.push(options);
12
+ ToolbarExtendPlugins.sort((a, b) => a.sort < b.sort ? 1 : -1);
13
+ };
9
14
  exports.REMOVE_DECORATORMODULE_COMMAND = decoratorModule.REMOVE_DECORATORMODULE_COMMAND;
10
15
  exports.SELECTED_DECORATORMODULE_COMMAND = decoratorModule.SELECTED_DECORATORMODULE_COMMAND;
11
16
  exports.UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND = decoratorModule.UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND;
12
17
  exports.DEVICE_VIEW_MODE = DEVICE_VIEW_MODE;
18
+ exports.ToolbarExtendPlugins = ToolbarExtendPlugins;
19
+ exports.registerDocEditorToolbarExtend = registerDocEditorToolbarExtend;
13
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,watch } from \"vue\"\r\nimport {\r\n useLexicalComposer\r\n} from \"lexical-vue\";\r\nexport * from \"./decorator-module\"\r\nexport * from \"./element-module\"\r\nexport * from \"./utils\"\r\nimport { UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND } from \"./decorator-module\"\r\n\r\nexport type DeviceVieeMode = 'pc' | 'mobile';\r\n\r\nexport const DEVICE_VIEW_MODE = ref<DeviceVieeMode>(\"pc\")\r\n\r\n"],"names":["ref"],"mappings":";;;;;;;AAYa,MAAA,mBAAmBA,QAAoB,IAAI;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\nimport {\r\n useLexicalComposer\r\n} from \"lexical-vue\";\r\nexport * from \"./decorator-module\"\r\nexport * from \"./element-module\"\r\nexport * from \"./utils\"\r\n\r\nexport type DeviceVieeMode = 'pc' | 'mobile';\r\n\r\nexport const DEVICE_VIEW_MODE = ref<DeviceVieeMode>(\"pc\")\r\n\r\n/**\r\n * 工具条扩展\r\n */\r\nexport type ToolbarExtendPlugin = {\r\n icon: string;\r\n text:string,\r\n action:Function,\r\n sort:number\r\n};\r\n\r\n// 插入的插件列表\r\nexport const ToolbarExtendPlugins = reactive<ToolbarExtendPlugin[]>([]);\r\n\r\n/**\r\n * 注册工具条的扩展\r\n * @param options \r\n */\r\nexport const registerDocEditorToolbarExtend = function(options:ToolbarExtendPlugin){\r\n ToolbarExtendPlugins.push(options);\r\n ToolbarExtendPlugins.sort((a,b)=>a.sort<b.sort ? 1:-1);\r\n}\r\n\r\n\r\n"],"names":["ref","reactive"],"mappings":";;;;;;;AAWa,MAAA,mBAAmBA,QAAoB,IAAI;AAa3C,MAAA,uBAAuBC,IAAgC,SAAA,EAAE;AAMzD,MAAA,iCAAiC,SAAS,SAA4B;AACjF,uBAAqB,KAAK,OAAO;AACZ,uBAAA,KAAK,CAAC,GAAE,MAAI,EAAE,OAAK,EAAE,OAAO,IAAE,EAAE;AACvD;;;;;;;"}
@@ -9,6 +9,7 @@ const index_vue_vue_type_script_setup_true_lang$1 = require("./plugins/RichTextP
9
9
  const index_vue_vue_type_script_setup_true_lang$6 = require("./plugins/DecoratorModuleToolbarPlugin/index.vue.js");
10
10
  const index_vue_vue_type_script_setup_true_lang$5 = require("./plugins/ModulePlugin/index.vue.js");
11
11
  const nodes = require("./plugins/nodes.js");
12
+ const composables = require("./plugins/ModulePlugin/composables.js");
12
13
  const index = require("./core/index.js");
13
14
  const DocTheme = require("./themes/DocTheme.js");
14
15
  const docEditor = require("./themes/doc-editor.css.js");
@@ -62,6 +63,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
62
63
  const style = document.createElement("style");
63
64
  style.setAttribute("type", "text/css");
64
65
  style.innerHTML = [docEditor, docTheme, docEditorEdit].join("\r\n");
66
+ style.innerHTML += composables.useModules().filter((item) => item.editorCss).map((item) => item.editorCss).join("\r\n");
65
67
  doc.head.append(style);
66
68
  props.js.split(",").filter((item) => !!item).forEach((path) => {
67
69
  const script = document.createElement("script");
@@ -81,6 +83,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
81
83
  updateStage();
82
84
  return false;
83
85
  }, { immediate: true });
86
+ setTimeout(() => updateStage(), 500);
84
87
  });
85
88
  return (_ctx, _cache) => {
86
89
  return vue.openBlock(), vue.createBlock(vue.unref(lexicalVue.LexicalComposer), { "initial-config": config }, {
@@ -122,6 +125,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
122
125
  vue.renderSlot(_ctx.$slots, "after-extentions")
123
126
  ])
124
127
  ], 2),
128
+ vue.createVNode(vue.unref(lexicalVue.LexicalAutoFocusPlugin)),
129
+ vue.createVNode(vue.unref(lexicalVue.LexicalCheckListPlugin)),
130
+ vue.createVNode(vue.unref(lexicalVue.LexicalHashtagPlugin)),
131
+ vue.createVNode(vue.unref(lexicalVue.LexicalListPlugin)),
125
132
  vue.createVNode(vue.unref(lexicalVue.LexicalHistoryPlugin))
126
133
  ]),
127
134
  _: 3
@@ -1 +1 @@
1
- {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <ImageTextPlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n </Teleport>\r\n <DecoratorModuleToolbarPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport { LexicalComposer, LexicalHistoryPlugin } from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ImageTextPlugin,\r\n DecoratorModuleToolbarPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\r\n setTimeout(() => {\r\n if(iframeBody.value?.scrollHeight > iframeBody.value?.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n style.innerHTML = [DocEditorCss,DocThemeCss,DocEditorEditCss].join(\"\\r\\n\");\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n props.css.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const link = document.createElement(\"link\");\r\n link.href = path;\r\n link.setAttribute(\"rel\",\"stylesheet\")\r\n link.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(link);\r\n })\r\n\r\n // 设备显示模式改变\r\n watch(DEVICE_VIEW_MODE,(payload: string) => {\r\n doc.body.style.fontSize = payload == \"pc\" ? \"14px\" : \"18px\";\r\n updateStage();\r\n return false\r\n },{ immediate :true})\r\n});\r\n\r\n</script>\r\n"],"names":["DocNodes","ref","computed","onMounted","DocEditorCss","DocThemeCss","DocEditorEditCss","watch","DEVICE_VIEW_MODE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,UAAM,OAAO;AAGb,UAAM,QAAQ;AASd,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,QACL,GAAGA;AAAAA,MACL;AAAA,MACA,QAAQ,OAAa;AAInB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IAAA;AAII,UAAA,mBAAmBC,QAAI,IAAW;AACxC,UAAM,aAAaC,IAAS,SAAA;;AAAI,gDAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC,aAAvC,mBAAiD;AAAA,KAAI;AAGrF,UAAM,cAAc,MAAI;AACtB,iBAAW,MAAM;;AACf,cAAG,gBAAW,UAAX,mBAAkB,kBAAe,gBAAW,UAAX,mBAAkB,eAAa;AACjE,2BAAiB,MAAM,MAAM,WAAU,gBAAW,UAAX,mBAAkB,gBAAe,KAAI;AAAA,QAC9E;AAAA,SACC,EAAE;AAAA,IAAA;AAED,UAAA,sBAAsB,CAAC,YAAc;AACzC,WAAK,UAAS,OAAO;AACT;IAAA;AAGdC,QAAAA,UAAU,MAAI;;AAEN,YAAA,OAAM,4BAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC;AAG7C,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AACpC,YAAM,YAAY,CAACC,WAAaC,UAAYC,aAAgB,EAAE,KAAK,MAAM;AACrE,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;AACK,YAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,cAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,OAAO;AACP,aAAA,aAAa,OAAM,YAAY;AAC/B,aAAA,aAAa,eAAc,MAAM;AAClC,YAAA,KAAK,OAAO,IAAI;AAAA,MAAA,CACrB;AAGKC,gBAAAC,MAAAA,kBAAiB,CAAC,YAAoB;AAC1C,YAAI,KAAK,MAAM,WAAW,WAAW,OAAO,SAAS;AACzC;AACL,eAAA;AAAA,MAAA,GACP,EAAE,WAAW,KAAA,CAAK;AAAA,IAAA,CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <ImageTextPlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n </Teleport>\r\n <DecoratorModuleToolbarPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <LexicalAutoFocusPlugin />\r\n <LexicalCheckListPlugin />\r\n <LexicalHashtagPlugin />\r\n <LexicalListPlugin />\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport {\r\n LexicalComposer,\r\n LexicalAutoFocusPlugin,\r\n LexicalCheckListPlugin,\r\n LexicalHashtagPlugin,\r\n LexicalHistoryPlugin,\r\n LexicalListPlugin,\r\n} from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ImageTextPlugin,\r\n DecoratorModuleToolbarPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport { useModules } from \"./plugins/ModulePlugin/composables\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\r\n setTimeout(() => {\r\n if(iframeBody.value?.scrollHeight > iframeBody.value?.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n\r\n // 默认样式\r\n style.innerHTML = [DocEditorCss,DocThemeCss,DocEditorEditCss].join(\"\\r\\n\");\r\n\r\n //模块渲染样式\r\n style.innerHTML += useModules().filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\r\n\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n props.css.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const link = document.createElement(\"link\");\r\n link.href = path;\r\n link.setAttribute(\"rel\",\"stylesheet\")\r\n link.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(link);\r\n })\r\n\r\n // 设备显示模式改变\r\n watch(DEVICE_VIEW_MODE,(payload: string) => {\r\n doc.body.style.fontSize = payload == \"pc\" ? \"14px\" : \"18px\";\r\n updateStage();\r\n return false\r\n },{ immediate :true})\r\n\r\n // 初始化计算舞台\r\n setTimeout(()=> updateStage(),500)\r\n});\r\n\r\n</script>\r\n"],"names":["DocNodes","ref","computed","onMounted","DocEditorCss","DocThemeCss","DocEditorEditCss","useModules","watch","DEVICE_VIEW_MODE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,UAAM,OAAO;AAGb,UAAM,QAAQ;AASd,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,QACL,GAAGA;AAAAA,MACL;AAAA,MACA,QAAQ,OAAa;AAInB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IAAA;AAII,UAAA,mBAAmBC,QAAI,IAAW;AACxC,UAAM,aAAaC,IAAS,SAAA;;AAAI,gDAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC,aAAvC,mBAAiD;AAAA,KAAI;AAGrF,UAAM,cAAc,MAAI;AACtB,iBAAW,MAAM;;AACf,cAAG,gBAAW,UAAX,mBAAkB,kBAAe,gBAAW,UAAX,mBAAkB,eAAa;AACjE,2BAAiB,MAAM,MAAM,WAAU,gBAAW,UAAX,mBAAkB,gBAAe,KAAI;AAAA,QAC9E;AAAA,SACC,EAAE;AAAA,IAAA;AAED,UAAA,sBAAsB,CAAC,YAAc;AACzC,WAAK,UAAS,OAAO;AACT;IAAA;AAGdC,QAAAA,UAAU,MAAI;;AAEN,YAAA,OAAM,4BAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC;AAG7C,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AAGpC,YAAM,YAAY,CAACC,WAAaC,UAAYC,aAAgB,EAAE,KAAK,MAAM;AAGzE,YAAM,aAAaC,YAAA,WAAA,EAAa,OAAO,UAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAE9F,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;AACK,YAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,cAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,OAAO;AACP,aAAA,aAAa,OAAM,YAAY;AAC/B,aAAA,aAAa,eAAc,MAAM;AAClC,YAAA,KAAK,OAAO,IAAI;AAAA,MAAA,CACrB;AAGKC,gBAAAC,MAAAA,kBAAiB,CAAC,YAAoB;AAC1C,YAAI,KAAK,MAAM,WAAW,WAAW,OAAO,SAAS;AACzC;AACL,eAAA;AAAA,MAAA,GACP,EAAE,WAAW,KAAA,CAAK;AAGT,iBAAA,MAAK,eAAc,GAAG;AAAA,IAAA,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/basic/doc-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport Editor from \"./editor.vue\";\r\nimport { registerModule } from \"./plugins/ModulePlugin/composables\";\r\n\r\nexport const MKDocEditor = withInstall(Editor);\r\n\r\nexport { registerModule }\r\n\r\nexport default MKDocEditor;\r\n\r\n"],"names":["withInstall","Editor"],"mappings":";;;;AAIa,MAAA,cAAcA,kBAAYC,0CAAM;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/basic/doc-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport Editor from \"./editor.vue\";\r\nimport { registerDocModule } from \"./plugins/ModulePlugin/composables\";\r\n\r\nexport const MKDocEditor = withInstall(Editor);\r\n\r\nexport { registerDocModule }\r\n\r\nexport default MKDocEditor;\r\n\r\n"],"names":["withInstall","Editor"],"mappings":";;;;AAIa,MAAA,cAAcA,kBAAYC,0CAAM;;;"}
@@ -63,9 +63,6 @@ class ImageNode extends lexical.TextNode {
63
63
  if (this.__attrs.height) {
64
64
  style.push("height:" + this.__attrs.height);
65
65
  }
66
- if (this.__attrs.float) {
67
- style.push("float:" + this.__attrs.float);
68
- }
69
66
  if (this.__attrs.maxWidth) {
70
67
  style.push("max-width:" + this.__attrs.maxWidth);
71
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ImageNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.ts"],"sourcesContent":["\r\nimport type {\r\n DOMConversionMap,\r\n DOMExportOutput,\r\n EditorConfig,\r\n LexicalNode,\r\n NodeKey,\r\n Spread,\r\n SerializedElementNode,\r\n SerializedTextNode\r\n} from 'lexical'\r\nimport { ElementNode,TextNode } from 'lexical'\r\n\r\n\r\n// 默认图片\r\nconst ImageDefaultSrc = \"data:image/png;base64,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\";\r\n\r\n\r\n/**\r\n * 图片属性类型\r\n */\r\nexport type ImageAttrType = {\r\n src:string,\r\n alt?:string,\r\n width?:string,\r\n height?:string,\r\n float?:string,\r\n maxWidth?:string,\r\n maxHeight?:string,\r\n margin?:string\r\n};\r\n\r\n/**\r\n * 图片节点序列化\r\n */\r\nexport type SerializedImageNode = Spread<\r\n {\r\n attrs: ImageAttrType\r\n },\r\n SerializedTextNode\r\n>\r\n\r\n/**\r\n * 定义图片节点\r\n */\r\nexport class ImageNode extends TextNode {\r\n __attrs: ImageAttrType\r\n\r\n static getType(): string {\r\n return 'Image'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new ImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && !el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n\r\n return { \r\n \r\n node:$createImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:\"\"\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(\"\",key)\r\n this.__attrs = attrs\r\n }\r\n\r\n exportJSON(): SerializedImageNode {\r\n\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n version: 1,\r\n attrs: this.__attrs,\r\n }\r\n }\r\n\r\n getStyles():string[]{\r\n\r\n const style : string[] = [];\r\n\r\n if(this.__attrs.width){\r\n style.push(\"width:\"+this.__attrs.width)\r\n }\r\n if(this.__attrs.height){\r\n style.push(\"height:\"+this.__attrs.height)\r\n }\r\n if(this.__attrs.float){\r\n style.push(\"float:\"+this.__attrs.float)\r\n }\r\n if(this.__attrs.maxWidth){\r\n style.push(\"max-width:\"+this.__attrs.maxWidth)\r\n }\r\n if(this.__attrs.maxHeight){\r\n style.push(\"max-height:\"+this.__attrs.maxHeight)\r\n }\r\n if(this.__attrs.float){\r\n style.push(\"float:\"+this.__attrs.float)\r\n }\r\n if(this.__attrs.margin){\r\n style.push(\"margin:\"+this.__attrs.margin)\r\n }\r\n\r\n return style\r\n }\r\n\r\n exportDOM(): DOMExportOutput {\r\n\r\n \r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n\r\n \r\n return { element }\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:any){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 创建DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src || ImageDefaultSrc) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n element.setAttribute(\"node-key\",this.__key)\r\n element.setAttribute(\"class\",config.theme.image ?? \"\")\r\n\r\n\r\n return element\r\n }\r\n\r\n updateDOM(\r\n prevNode: ImageNode,\r\n dom: HTMLElement,\r\n config: EditorConfig,\r\n ): boolean {\r\n // console.log(prevNode,dom,dom.firstChild,config);\r\n const inner = dom.firstChild\r\n if (inner === null){ return true }\r\n super.updateDOM(prevNode, inner as HTMLElement, config)\r\n return false\r\n }\r\n\r\n getTextContent(\r\n _includeInert?: boolean | undefined,\r\n _includeDirectionless?: false | undefined,\r\n ): string { return \"\"; }\r\n\r\n /**\r\n * 内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return true;\r\n }\r\n}\r\n/**\r\n * 定义内联图片节点\r\n */\r\nexport class InlineImageNode extends ImageNode{\r\n \r\n static getType(): string {\r\n return 'InlineImage'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new InlineImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n \r\n // 内联图\r\n return { \r\n node:new InlineImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:domNode.style.float\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 非内联元素\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 创建图片节点\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createImageNode(attrs: ImageAttrType): ImageNode {\r\n return new ImageNode(attrs)\r\n}\r\n\r\n/**\r\n * 判断是否是图片节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageNode(\r\n node: ImageNode | LexicalNode | null | undefined,\r\n): node is ImageNode {\r\n return node instanceof ImageNode\r\n}\r\n"],"names":["TextNode"],"mappings":"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"}
1
+ {"version":3,"file":"ImageNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.ts"],"sourcesContent":["\r\nimport type {\r\n DOMConversionMap,\r\n DOMExportOutput,\r\n EditorConfig,\r\n LexicalNode,\r\n NodeKey,\r\n Spread,\r\n SerializedElementNode,\r\n SerializedTextNode\r\n} from 'lexical'\r\nimport { ElementNode,TextNode } from 'lexical'\r\n\r\n\r\n// 默认图片\r\nconst ImageDefaultSrc = \"data:image/png;base64,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\";\r\n\r\n\r\n/**\r\n * 图片属性类型\r\n */\r\nexport type ImageAttrType = {\r\n src:string,\r\n alt?:string,\r\n width?:string,\r\n height?:string,\r\n float?:string,\r\n maxWidth?:string,\r\n maxHeight?:string,\r\n margin?:string\r\n};\r\n\r\n/**\r\n * 图片节点序列化\r\n */\r\nexport type SerializedImageNode = Spread<\r\n {\r\n attrs: ImageAttrType\r\n },\r\n SerializedTextNode\r\n>\r\n\r\n/**\r\n * 定义图片节点\r\n */\r\nexport class ImageNode extends TextNode {\r\n __attrs: ImageAttrType\r\n\r\n static getType(): string {\r\n return 'Image'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new ImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && !el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n\r\n return { \r\n \r\n node:$createImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:\"\"\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(\"\",key)\r\n this.__attrs = attrs\r\n }\r\n\r\n exportJSON(): SerializedImageNode {\r\n\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n version: 1,\r\n attrs: this.__attrs,\r\n }\r\n }\r\n\r\n getStyles():string[]{\r\n\r\n const style : string[] = [];\r\n\r\n if(this.__attrs.width){\r\n style.push(\"width:\"+this.__attrs.width)\r\n }\r\n if(this.__attrs.height){\r\n style.push(\"height:\"+this.__attrs.height)\r\n }\r\n if(this.__attrs.maxWidth){\r\n style.push(\"max-width:\"+this.__attrs.maxWidth)\r\n }\r\n if(this.__attrs.maxHeight){\r\n style.push(\"max-height:\"+this.__attrs.maxHeight)\r\n }\r\n if(this.__attrs.float){\r\n style.push(\"float:\"+this.__attrs.float)\r\n }\r\n if(this.__attrs.margin){\r\n style.push(\"margin:\"+this.__attrs.margin)\r\n }\r\n\r\n return style\r\n }\r\n\r\n exportDOM(): DOMExportOutput {\r\n\r\n \r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n\r\n \r\n return { element }\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:any){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 创建DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src || ImageDefaultSrc) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n element.setAttribute(\"node-key\",this.__key)\r\n element.setAttribute(\"class\",config.theme.image ?? \"\")\r\n\r\n\r\n return element\r\n }\r\n\r\n updateDOM(\r\n prevNode: ImageNode,\r\n dom: HTMLElement,\r\n config: EditorConfig,\r\n ): boolean {\r\n // console.log(prevNode,dom,dom.firstChild,config);\r\n const inner = dom.firstChild\r\n if (inner === null){ return true }\r\n super.updateDOM(prevNode, inner as HTMLElement, config)\r\n return false\r\n }\r\n\r\n getTextContent(\r\n _includeInert?: boolean | undefined,\r\n _includeDirectionless?: false | undefined,\r\n ): string { return \"\"; }\r\n\r\n /**\r\n * 内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return true;\r\n }\r\n}\r\n/**\r\n * 定义内联图片节点\r\n */\r\nexport class InlineImageNode extends ImageNode{\r\n \r\n static getType(): string {\r\n return 'InlineImage'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new InlineImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n \r\n // 内联图\r\n return { \r\n node:new InlineImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:domNode.style.float\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 非内联元素\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n\r\n\r\n}\r\n\r\n/**\r\n * 创建图片节点\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createImageNode(attrs: ImageAttrType): ImageNode {\r\n return new ImageNode(attrs)\r\n}\r\n\r\n/**\r\n * 判断是否是图片节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageNode(\r\n node: ImageNode | LexicalNode | null | undefined,\r\n): node is ImageNode {\r\n return node instanceof ImageNode\r\n}\r\n"],"names":["TextNode"],"mappings":"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"}
@@ -7,9 +7,8 @@ const lexicalVue = require("lexical-vue");
7
7
  const commands = require("./commands.js");
8
8
  const ImageNode = require("./ImageNode.js");
9
9
  const ImageTextNode = require("../ImageTextPlugin/ImageTextNode.js");
10
- const defines = require("../ToolbarPlugin/defines.js");
10
+ const index = require("../../core/index.js");
11
11
  const utils$1 = require("./utils.js");
12
- require("../../core/index.js");
13
12
  const elementPlus = require("element-plus");
14
13
  const elementModule = require("../../core/element-module.js");
15
14
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
@@ -22,7 +21,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
22
21
  "image/gif",
23
22
  "image/webp"
24
23
  ];
25
- defines.registerDocEditorToolbarExtend({
24
+ index.registerDocEditorToolbarExtend({
26
25
  icon: "Picture",
27
26
  text: "图片",
28
27
  action: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister,mediaFileReader,isMimeType } from '@lexical/utils'\r\nimport { \r\n COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,CLICK_COMMAND,$isParagraphNode,\r\n $getSelection,$createParagraphNode,$isNodeSelection, $getNodeByKey\r\n} from 'lexical'\r\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, } from 'vue'\r\nimport { INSERT_IMAGE_COMMAND,$createImageNode,ImageNode,type ImageAttrType } from './index'\r\nimport { $isImageTextNode } from '../ImageTextPlugin'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../ToolbarPlugin/defines\"\r\nimport { showImageEditDialog,imageUpload } from \"./utils\"\r\nimport { useElementModule } from '../../core'\r\nimport { ElLoading } from 'element-plus'\r\n\r\n// 图片类型\r\nconst ACCEPTABLE_IMAGE_TYPES = [\r\n 'image/',\r\n 'image/heic',\r\n 'image/heif',\r\n 'image/gif',\r\n 'image/webp',\r\n]\r\n \r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"Picture\",\r\n text:\"图片\",\r\n action:async ()=>{\r\n // 显示图片编辑面板\r\n showImageEditDialog({\r\n src:\"\", alt:\"\", width:\"\", height:\"\", maxWidth:\"100%\", maxHeight:\"\", margin:\"\"\r\n }).then(async (data:any)=>{\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0]\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND,data)\r\n });\r\n },\r\n sort:11\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 上传处理函数\r\nconst uploadhandle = async (pathList:Array<string>)=>{\r\n\r\n if(pathList.length){\r\n\r\n const loadingInstance = ElLoading.service({ fullscreen: true,text:\"图片上传中...\" })\r\n\r\n const reesult = await Promise.all(pathList.map(path=>{\r\n return imageUpload(path)\r\n }))\r\n\r\n loadingInstance.close();\r\n\r\n return reesult;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\nconst { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n return el.tagName.toLowerCase() == \"img\" ? el : null\r\n},(selection)=>{\r\n \r\n const node = $getNodeByKey(curSelectKey.value) as ImageNode;\r\n\r\n if(node != null){\r\n \r\n const parent = node.getParent();\r\n const isImageText = $isImageTextNode(parent)\r\n\r\n // 工具条\r\n const toolbarList = [];\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居左\" : \"左对齐\",icon:`doc-align-left`,action(){\r\n editor.update(()=>{\r\n if(isImageText){\r\n node.setAttrs({float:\"left\"})\r\n }\r\n else{\r\n parent.setFormat(\"left\")\r\n }\r\n\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent)){\r\n toolbarList.push({ title: \"居中对齐\",icon:`doc-align-center`,action(){\r\n editor.update(()=>{ \r\n parent.setFormat(\"center\") \r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居右\" : \"右对齐\",icon:`doc-align-right`,action(){\r\n editor.update(()=>{\r\n\r\n if(isImageText){\r\n node.setAttrs({float:\"right\"})\r\n }\r\n else{\r\n parent.setFormat(\"right\")\r\n }\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n // 编辑\r\n toolbarList.push({ \r\n title:\"编辑\",icon:\"Edit\",action:async ()=>{\r\n\r\n // 显示图片编辑面板\r\n const data:any = await showImageEditDialog(node.__attrs);\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0];\r\n editor.update(()=>{\r\n node.setAttrs(data)\r\n updateActiveViewState(null);\r\n })\r\n }\r\n });\r\n\r\n return toolbarList;\r\n }\r\n\r\n return null;\r\n})\r\n\r\n\r\n// 编辑器挂载\r\nuseMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 插入图片\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGE_COMMAND,(payload) => {\r\n const p = $createParagraphNode()\r\n p.append($createImageNode(payload))\r\n $insertNodeToNearestRoot(p)\r\n return true\r\n },COMMAND_PRIORITY_EDITOR),\r\n\r\n // 剪切板图片\r\n editor.registerCommand(DRAG_DROP_PASTE,(files) => {\r\n\r\n (async () => {\r\n\r\n const filesResult = await mediaFileReader(files, [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x))\r\n \r\n const result = await uploadhandle(filesResult.filter(f=>isMimeType(f.file, ACCEPTABLE_IMAGE_TYPES)).map(f=>f.result))\r\n\r\n result.forEach(path=>{\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\r\n src:path, alt:\"\", maxWidth:\":100%\"\r\n } as ImageAttrType)\r\n })\r\n\r\n })()\r\n\r\n return true\r\n },COMMAND_PRIORITY_LOW)\r\n )\r\n})\r\n\r\n// 当前插件挂载\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageNode])){\r\n throw new Error('ImagePlugin: 图片节点未注册!')\r\n }\r\n\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-doc-active-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n </div>\r\n</template>\r\n"],"names":["registerDocEditorToolbarExtend","showImageEditDialog","INSERT_IMAGE_COMMAND","useLexicalComposer","ElLoading","imageUpload","useElementModule","$getNodeByKey","$isImageTextNode","$isParagraphNode","useMounted","mergeRegister","$createParagraphNode","$createImageNode","$insertNodeToNearestRoot","COMMAND_PRIORITY_EDITOR","DRAG_DROP_PASTE","mediaFileReader","isMimeType","COMMAND_PRIORITY_LOW","onMounted","ImageNode"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister,mediaFileReader,isMimeType } from '@lexical/utils'\r\nimport { \r\n COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,CLICK_COMMAND,$isParagraphNode,\r\n $getSelection,$createParagraphNode,$isNodeSelection, $getNodeByKey\r\n} from 'lexical'\r\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, } from 'vue'\r\nimport { INSERT_IMAGE_COMMAND,$createImageNode,ImageNode,type ImageAttrType } from './index'\r\nimport { $isImageTextNode } from '../ImageTextPlugin'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { showImageEditDialog,imageUpload } from \"./utils\"\r\nimport { useElementModule } from '../../core'\r\nimport { ElLoading } from 'element-plus'\r\n\r\n// 图片类型\r\nconst ACCEPTABLE_IMAGE_TYPES = [\r\n 'image/',\r\n 'image/heic',\r\n 'image/heif',\r\n 'image/gif',\r\n 'image/webp',\r\n]\r\n \r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"Picture\",\r\n text:\"图片\",\r\n action:async ()=>{\r\n // 显示图片编辑面板\r\n showImageEditDialog({\r\n src:\"\", alt:\"\", width:\"\", height:\"\", maxWidth:\"100%\", maxHeight:\"\", margin:\"\"\r\n }).then(async (data:any)=>{\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0]\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND,data)\r\n });\r\n },\r\n sort:11\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 上传处理函数\r\nconst uploadhandle = async (pathList:Array<string>)=>{\r\n\r\n if(pathList.length){\r\n\r\n const loadingInstance = ElLoading.service({ fullscreen: true,text:\"图片上传中...\" })\r\n\r\n const reesult = await Promise.all(pathList.map(path=>{\r\n return imageUpload(path)\r\n }))\r\n\r\n loadingInstance.close();\r\n\r\n return reesult;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\nconst { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n return el.tagName.toLowerCase() == \"img\" ? el : null\r\n},(selection)=>{\r\n \r\n const node = $getNodeByKey(curSelectKey.value) as ImageNode;\r\n\r\n if(node != null){\r\n \r\n const parent = node.getParent();\r\n const isImageText = $isImageTextNode(parent)\r\n\r\n // 工具条\r\n const toolbarList = [];\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居左\" : \"左对齐\",icon:`doc-align-left`,action(){\r\n editor.update(()=>{\r\n if(isImageText){\r\n node.setAttrs({float:\"left\"})\r\n }\r\n else{\r\n parent.setFormat(\"left\")\r\n }\r\n\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent)){\r\n toolbarList.push({ title: \"居中对齐\",icon:`doc-align-center`,action(){\r\n editor.update(()=>{ \r\n parent.setFormat(\"center\") \r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居右\" : \"右对齐\",icon:`doc-align-right`,action(){\r\n editor.update(()=>{\r\n\r\n if(isImageText){\r\n node.setAttrs({float:\"right\"})\r\n }\r\n else{\r\n parent.setFormat(\"right\")\r\n }\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n // 编辑\r\n toolbarList.push({ \r\n title:\"编辑\",icon:\"Edit\",action:async ()=>{\r\n\r\n // 显示图片编辑面板\r\n const data:any = await showImageEditDialog(node.__attrs);\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0];\r\n editor.update(()=>{\r\n node.setAttrs(data)\r\n updateActiveViewState(null);\r\n })\r\n }\r\n });\r\n\r\n return toolbarList;\r\n }\r\n\r\n return null;\r\n})\r\n\r\n\r\n// 编辑器挂载\r\nuseMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 插入图片\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGE_COMMAND,(payload) => {\r\n const p = $createParagraphNode()\r\n p.append($createImageNode(payload))\r\n $insertNodeToNearestRoot(p)\r\n return true\r\n },COMMAND_PRIORITY_EDITOR),\r\n\r\n // 剪切板图片\r\n editor.registerCommand(DRAG_DROP_PASTE,(files) => {\r\n\r\n (async () => {\r\n\r\n const filesResult = await mediaFileReader(files, [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x))\r\n \r\n const result = await uploadhandle(filesResult.filter(f=>isMimeType(f.file, ACCEPTABLE_IMAGE_TYPES)).map(f=>f.result))\r\n\r\n result.forEach(path=>{\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\r\n src:path, alt:\"\", maxWidth:\":100%\"\r\n } as ImageAttrType)\r\n })\r\n\r\n })()\r\n\r\n return true\r\n },COMMAND_PRIORITY_LOW)\r\n )\r\n})\r\n\r\n// 当前插件挂载\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageNode])){\r\n throw new Error('ImagePlugin: 图片节点未注册!')\r\n }\r\n\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-doc-active-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n </div>\r\n</template>\r\n"],"names":["registerDocEditorToolbarExtend","showImageEditDialog","INSERT_IMAGE_COMMAND","useLexicalComposer","ElLoading","imageUpload","useElementModule","$getNodeByKey","$isImageTextNode","$isParagraphNode","useMounted","mergeRegister","$createParagraphNode","$createImageNode","$insertNodeToNearestRoot","COMMAND_PRIORITY_EDITOR","DRAG_DROP_PASTE","mediaFileReader","isMimeType","COMMAND_PRIORITY_LOW","onMounted","ImageNode"],"mappings":";;;;;;;;;;;;;;;;AAiBA,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAI6BA,yCAAA;AAAA,MAC7B,MAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAO,YAAU;AAEKC,oCAAA;AAAA,UAClB,KAAI;AAAA,UAAI,KAAI;AAAA,UAAI,OAAM;AAAA,UAAI,QAAO;AAAA,UAAI,UAAS;AAAA,UAAQ,WAAU;AAAA,UAAI,QAAO;AAAA,QAAA,CAC5E,EAAE,KAAK,OAAO,SAAW;AACxB,gBAAM,SAAS,MAAM,aAAa,CAAC,KAAK,GAAG,CAAC;AACvC,eAAA,MAAM,OAAO,CAAC;AACZ,iBAAA,gBAAgBC,+BAAqB,IAAI;AAAA,QAAA,CACjD;AAAA,MACH;AAAA,MACA,MAAK;AAAA,IAAA,CACiB;AAExB,UAAM,SAASC,WAAAA;AAGT,UAAA,eAAe,OAAO,aAAyB;AAEnD,UAAG,SAAS,QAAO;AAEX,cAAA,kBAAkBC,sBAAU,QAAQ,EAAE,YAAY,MAAK,MAAK,YAAY;AAE9E,cAAM,UAAU,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAM,SAAA;AACnD,iBAAOC,QAAAA,YAAY,IAAI;AAAA,QACxB,CAAA,CAAC;AAEF,wBAAgB,MAAM;AAEf,eAAA;AAAA,MACT;AAEA,aAAO;IAAC;AAIV,UAAM,EAAE,YAAa,cAAc,cAAa,0BAA0BC,cAAAA,iBAAiB,CAAI,OAAA;AAC7F,aAAO,GAAG,QAAQ,YAAY,KAAK,QAAQ,KAAK;AAAA,IAClD,GAAE,CAAC,cAAY;AAEP,YAAA,OAAOC,QAAAA,cAAc,aAAa,KAAK;AAE7C,UAAG,QAAQ,MAAK;AAER,cAAA,SAAS,KAAK;AACd,cAAA,cAAcC,+BAAiB,MAAM;AAG3C,cAAM,cAAe,CAAA;AAElB,YAAAC,QAAA,iBAAiB,MAAM,KAAK,aAAY;AACzC,sBAAY,KAAK;AAAA,YAAE,OAAO,cAAc,OAAO;AAAA,YAAM,MAAK;AAAA,YAAiB,SAAQ;AAC/E,qBAAO,OAAO,MAAI;AAChB,oBAAG,aAAY;AACb,uBAAK,SAAS,EAAC,OAAM,OAAO,CAAA;AAAA,gBAAA,OAE1B;AACF,yBAAO,UAAU,MAAM;AAAA,gBACzB;AAEA,sCAAsB,IAAI;AAAA,cAAA,CAC3B;AAAA,YACH;AAAA,UAAA,CACD;AAAA,QACH;AAEG,YAAAA,QAAAA,iBAAiB,MAAM,GAAE;AAC1B,sBAAY,KAAK;AAAA,YAAE,OAAO;AAAA,YAAO,MAAK;AAAA,YAAmB,SAAQ;AAC7D,qBAAO,OAAO,MAAI;AAChB,uBAAO,UAAU,QAAQ;AACzB,sCAAsB,IAAI;AAAA,cAAA,CAC3B;AAAA,YACH;AAAA,UAAA,CACD;AAAA,QACH;AAEG,YAAAA,QAAA,iBAAiB,MAAM,KAAK,aAAY;AACzC,sBAAY,KAAK;AAAA,YAAE,OAAO,cAAc,OAAO;AAAA,YAAM,MAAK;AAAA,YAAkB,SAAQ;AAChF,qBAAO,OAAO,MAAI;AAEhB,oBAAG,aAAY;AACb,uBAAK,SAAS,EAAC,OAAM,QAAQ,CAAA;AAAA,gBAAA,OAE3B;AACF,yBAAO,UAAU,OAAO;AAAA,gBAC1B;AACA,sCAAsB,IAAI;AAAA,cAAA,CAC3B;AAAA,YACH;AAAA,UAAA,CACD;AAAA,QACH;AAGA,oBAAY,KAAK;AAAA,UACf,OAAM;AAAA,UAAK,MAAK;AAAA,UAAO,QAAO,YAAU;AAGtC,kBAAM,OAAW,MAAMR,QAAAA,oBAAoB,KAAK,OAAO;AACvD,kBAAM,SAAS,MAAM,aAAa,CAAC,KAAK,GAAG,CAAC;AACvC,iBAAA,MAAM,OAAO,CAAC;AACnB,mBAAO,OAAO,MAAI;AAChB,mBAAK,SAAS,IAAI;AAClB,oCAAsB,IAAI;AAAA,YAAA,CAC3B;AAAA,UACH;AAAA,QAAA,CACD;AAEM,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAIDS,eAAAA,WAAW,MAAI;AAEN,aAAAC,MAAA;AAAA;AAAA,QAEL,OAAO,gBAA+BT,+BAAqB,CAAC,YAAY;AACtE,gBAAM,IAAIU,QAAAA;AACR,YAAA,OAAOC,2BAAiB,OAAO,CAAC;AAClCC,gBAAA,yBAAyB,CAAC;AACnB,iBAAA;AAAA,WACPC,+BAAuB;AAAA;AAAA,QAGzB,OAAO,gBAAgBC,0BAAgB,CAAC,UAAU;AAEhD,WAAC,YAAY;AAEL,kBAAA,cAAc,MAAMC,sBAAgB,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE3F,kBAAM,SAAS,MAAM,aAAa,YAAY,OAAO,OAAGC,iBAAW,EAAE,MAAM,sBAAsB,CAAC,EAAE,IAAI,CAAG,MAAA,EAAE,MAAM,CAAC;AAEpH,mBAAO,QAAQ,CAAM,SAAA;AACjB,qBAAO,gBAAgBhB,+BAAsB;AAAA,gBAC3C,KAAI;AAAA,gBAAM,KAAI;AAAA,gBAAK,UAAS;AAAA,cAAA,CACZ;AAAA,YAAA,CACrB;AAAA,UAAA;AAII,iBAAA;AAAA,WACPiB,4BAAoB;AAAA,MAAA;AAAA,IACxB,CACD;AAGDC,QAAAA,UAAU,MAAM;AAEd,UAAI,CAAC,OAAO,SAAS,CAACC,UAAAA,SAAS,CAAC,GAAE;AAC1B,cAAA,IAAI,MAAM,uBAAuB;AAAA,MACzC;AAAA,IAAA,CAED;;;;;;;;;;;"}
@@ -44,42 +44,69 @@ const ImageEditPanelComponent = /* @__PURE__ */ vue.defineComponent({
44
44
  }) {
45
45
  const attrs = vue.reactive(props.attrs);
46
46
  const materialTable = vue.reactive(new MsMaterialTable.MsMaterialTable());
47
- const margin = vue.computed({
48
- set(v) {
49
- attrs.margin = `${v.t} ${v.r} ${v.b} ${v.l}`;
50
- },
51
- get() {
52
- var vals = attrs.margin.split(/[\s]+/g);
53
- if (vals.length == 1) {
54
- return {
55
- t: vals[0],
56
- r: vals[0],
57
- b: vals[0],
58
- l: vals[0]
59
- };
60
- } else if (vals.length == 2) {
61
- return {
62
- t: vals[0],
63
- r: vals[1],
64
- b: vals[0],
65
- l: vals[1]
66
- };
67
- } else if (vals.length == 3) {
68
- return {
69
- t: vals[0],
70
- r: vals[1],
71
- b: vals[2],
72
- l: vals[1]
73
- };
74
- } else if (vals.length <= 0) {
75
- vals = ["", "", "", ""];
76
- }
47
+ const margin = vue.computed(() => {
48
+ var vals = attrs.margin.split(/[\s]+/g);
49
+ if (vals.length == 1) {
50
+ return {
51
+ t: vals[0],
52
+ r: vals[0],
53
+ b: vals[0],
54
+ l: vals[0]
55
+ };
56
+ } else if (vals.length == 2) {
57
+ return {
58
+ t: vals[0],
59
+ r: vals[1],
60
+ b: vals[0],
61
+ l: vals[1]
62
+ };
63
+ } else if (vals.length == 3) {
77
64
  return {
78
65
  t: vals[0],
79
66
  r: vals[1],
80
67
  b: vals[2],
81
- l: vals[3]
68
+ l: vals[1]
82
69
  };
70
+ } else if (vals.length <= 0) {
71
+ vals = ["", "", "", ""];
72
+ }
73
+ return {
74
+ t: vals[0],
75
+ r: vals[1],
76
+ b: vals[2],
77
+ l: vals[3]
78
+ };
79
+ });
80
+ const marginT = vue.computed({
81
+ set(v) {
82
+ attrs.margin = `${v} ${margin.value.r} ${margin.value.b} ${margin.value.l}`;
83
+ },
84
+ get() {
85
+ return margin.value.t;
86
+ }
87
+ });
88
+ const marginR = vue.computed({
89
+ set(v) {
90
+ attrs.margin = `${margin.value.t} ${v} ${margin.value.b} ${margin.value.l}`;
91
+ },
92
+ get() {
93
+ return margin.value.r;
94
+ }
95
+ });
96
+ const marginB = vue.computed({
97
+ set(v) {
98
+ attrs.margin = `${margin.value.t} ${margin.value.r} ${v} ${margin.value.l}`;
99
+ },
100
+ get() {
101
+ return margin.value.b;
102
+ }
103
+ });
104
+ const marginL = vue.computed({
105
+ set(v) {
106
+ attrs.margin = `${margin.value.t} ${margin.value.r} ${margin.value.b} ${v}`;
107
+ },
108
+ get() {
109
+ return margin.value.l;
83
110
  }
84
111
  });
85
112
  materialTable.selectionChangeEvent.on(() => {
@@ -232,20 +259,20 @@ const ImageEditPanelComponent = /* @__PURE__ */ vue.defineComponent({
232
259
  default: () => [vue.createVNode("div", {
233
260
  "style": "display: flex;flex-wrap: nowrap;gap: 10px;justify-content: space-around;"
234
261
  }, [vue.createVNode("div", null, [vue.createTextVNode("上:"), vue.createVNode(elementPlus.ElInput, {
235
- "modelValue": margin.value.t,
236
- "onUpdate:modelValue": ($event) => margin.value.t = $event,
262
+ "modelValue": marginT.value,
263
+ "onUpdate:modelValue": ($event) => marginT.value = $event,
237
264
  "placeholder": ""
238
265
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("右:"), vue.createVNode(elementPlus.ElInput, {
239
- "modelValue": margin.value.r,
240
- "onUpdate:modelValue": ($event) => margin.value.r = $event,
266
+ "modelValue": marginR.value,
267
+ "onUpdate:modelValue": ($event) => marginR.value = $event,
241
268
  "placeholder": ""
242
269
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("下:"), vue.createVNode(elementPlus.ElInput, {
243
- "modelValue": margin.value.b,
244
- "onUpdate:modelValue": ($event) => margin.value.b = $event,
270
+ "modelValue": marginB.value,
271
+ "onUpdate:modelValue": ($event) => marginB.value = $event,
245
272
  "placeholder": ""
246
273
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("左:"), vue.createVNode(elementPlus.ElInput, {
247
- "modelValue": margin.value.l,
248
- "onUpdate:modelValue": ($event) => margin.value.l = $event,
274
+ "modelValue": marginL.value,
275
+ "onUpdate:modelValue": ($event) => marginL.value = $event,
249
276
  "placeholder": ""
250
277
  }, null)])])]
251
278
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/utils.tsx"],"sourcesContent":["\r\nimport { Fragment,h,onMounted, onUnmounted,ref,reactive,defineComponent, computed } from 'vue'\r\nimport { Dialoger } from '@maketribe/dm'\r\nimport { \r\n ElButton,ElTabs,ElTabPane,ElInput,ElImage,ElIcon,\r\n ElForm,ElFormItem,ElRow,ElCol\r\n} from \"element-plus\";\r\nimport { Crop,Share,UploadFilled,Picture } from \"@element-plus/icons-vue\";\r\nimport { MsMaterialTable } from \"../../../../../modules/ms/dataviews/ms-material\";\r\nimport { MKMaterialList } from \"../../../../../modules/ms/components/material-list\";\r\nimport { fileSelect } from \"@maketribe/utils\"\r\nimport { ImageCropper } from \"../../../image-cropper\"\r\nimport { WebFileUpload } from \"@maketribe/request\";\r\nimport { base64ToBlob,md5 } from \"@maketribe/utils\";\r\nimport { Messager } from \"@maketribe/dm\";\r\n\r\n// 选择状态\r\nconst selectState = ref(\"select\");\r\n\r\n/**\r\n * 图片加载\r\n * @param src \r\n * @returns \r\n */\r\nexport const imageLoad = (src:string)=>{\r\n // 加载文案\r\n return new Promise((resolve,reject)=>{\r\n // 加载一下\r\n const image = new Image();\r\n const loadComplete = ()=>{\r\n resolve(image.src);\r\n }\r\n image.onload = ()=>loadComplete()\r\n image.onerror = reject\r\n image.src = src;\r\n if(image.complete){\r\n loadComplete();\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 图片上传\r\n * @param src \r\n */\r\nexport const imageUpload = (src:string)=>{\r\n\r\n // 上传\r\n const webFileUpload = new WebFileUpload();\r\n return new Promise((resolve,reject)=>{\r\n\r\n if(src && src.indexOf(\"data:image/\") == 0){\r\n\r\n // 开始上传\r\n const blob = base64ToBlob(src); \r\n \r\n // 上传\r\n webFileUpload.upload(\r\n new File([blob], `${md5(Math.random().toString())}.${blob.type.toString().replace(\"image/\",\"\") || \"png\"}`, { type: blob.type })\r\n ).then(result=>{\r\n \r\n if (result.data.code !== 200) {\r\n Messager.error({ message: result.data.msg });\r\n reject(new Error(result.data.msg ));\r\n }\r\n else{\r\n resolve(result.data.data.path);\r\n }\r\n \r\n });\r\n }\r\n else{\r\n resolve(src);\r\n }\r\n })\r\n\r\n \r\n}\r\n\r\n\r\n/**\r\n * 图片编辑面板\r\n */\r\nconst ImageEditPanelComponent = defineComponent({\r\n name: 'ImageEditPanelComponent',\r\n props: ['attrs'],\r\n setup(props,{ expose }){\r\n\r\n const attrs = reactive(props.attrs)\r\n const materialTable = reactive(new MsMaterialTable()) as MsMaterialTable;\r\n const margin = computed<any>({\r\n set(v){\r\n attrs.margin = `${v.t} ${v.r} ${v.b} ${v.l}`\r\n },\r\n get(){\r\n var vals = attrs.margin.split(/[\\s]+/g);\r\n if(vals.length == 1){\r\n return {t:vals[0],r:vals[0],b:vals[0],l:vals[0]}\r\n }\r\n else if(vals.length == 2){\r\n return {t:vals[0],r:vals[1],b:vals[0],l:vals[1]}\r\n }\r\n else if(vals.length == 3){\r\n return {t:vals[0],r:vals[1],b:vals[2],l:vals[1]}\r\n }\r\n else if(vals.length <= 0){\r\n vals = [\"\",\"\",\"\",\"\"];\r\n }\r\n return {t:vals[0],r:vals[1],b:vals[2],l:vals[3]}\r\n }\r\n })\r\n\r\n // 选择素材\r\n materialTable.selectionChangeEvent.on(()=>{\r\n let id = materialTable.getSelection()[0];\r\n if(id){\r\n attrs.src = materialTable.getList().find(item=>item.id == id)?.path;\r\n }\r\n else{\r\n attrs.src = \"\";\r\n }\r\n })\r\n\r\n //\r\n const selectImage = async ()=>{\r\n\r\n const file = await fileSelect({ accept:\"image/*\"});\r\n \r\n if (file) {\r\n\r\n const fileRender = new FileReader();\r\n fileRender.onload = async (data:any)=>{\r\n attrs.src = data.target.result;\r\n \r\n }\r\n fileRender.readAsDataURL(file)\r\n }\r\n }\r\n\r\n // 导出可用的方法\r\n expose({ \r\n getResult:()=>{ return {...attrs} } ,\r\n setSrc:(src:string)=>{ attrs.src = src }\r\n });\r\n\r\n return ()=>{\r\n\r\n // 图片预览\r\n const ImageView = <ElImage style=\"background: #dedede;width: 100%; height: 480px;margin-top:10px\" src={attrs.src} fit=\"contain\" v-slots={{\r\n error:()=>{\r\n return <div style=\"\r\n font-size: 50px;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n \">\r\n <ElIcon><Picture /></ElIcon>\r\n </div>\r\n }\r\n }}>\r\n </ElImage>\r\n \r\n // 面板内容\r\n let panel = <ElTabs style=\"min-height: 520px\">\r\n <ElTabPane label=\"本地选择\">\r\n <ElButton icon={UploadFilled} type=\"primary\" style=\"width: 100%\" onClick={selectImage}>\r\n 选择本地文件\r\n </ElButton>\r\n {ImageView}\r\n </ElTabPane>\r\n <ElTabPane label=\"素材库选择\">\r\n <MKMaterialList class=\"mk-material-select__list\" selectable allowMaterialTypeValues={[1]} materialTable={materialTable} />\r\n </ElTabPane>\r\n <ElTabPane label=\"网络图片\">\r\n <ElInput v-model={attrs.src} prefix-icon={Share} style=\"width: 100%\" placeholder=\"请输入链接地址\">\r\n </ElInput>\r\n {ImageView}\r\n </ElTabPane>\r\n </ElTabs>\r\n\r\n if(selectState.value == \"attrs\"){\r\n panel = <ElRow gutter={20}>\r\n <ElCol span={14}>\r\n {ImageView}\r\n </ElCol>\r\n <ElCol span={10}>\r\n <ElForm label-position=\"top\" model={attrs}>\r\n <ElFormItem label=\"图片描述\">\r\n <ElInput v-model={attrs.alt} type=\"textarea\" {...{ rows:3 }} style=\"width: 100%\" placeholder=\"请输入\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示宽度\">\r\n <ElInput v-model={attrs.width} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示高度\">\r\n <ElInput v-model={attrs.height} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片最大显示宽度\">\r\n <ElInput v-model={attrs.maxWidth} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片最大显示高度\">\r\n <ElInput v-model={attrs.maxHeight} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示外边距\">\r\n <div style=\"display: flex;flex-wrap: nowrap;gap: 10px;justify-content: space-around;\">\r\n <div>\r\n 上:\r\n <ElInput v-model={margin.value.t} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n <div>\r\n 右:\r\n <ElInput v-model={margin.value.r} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n \r\n <div>\r\n 下:\r\n <ElInput v-model={margin.value.b} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n \r\n <div>\r\n 左:\r\n <ElInput v-model={margin.value.l} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n </div>\r\n </ElFormItem>\r\n </ElForm>\r\n </ElCol>\r\n </ElRow>\r\n }\r\n\r\n return panel;\r\n }\r\n }\r\n})\r\n\r\n/**\r\n * \r\n * @param attrs 显示图片编辑面板\r\n * @returns \r\n */\r\nexport const showImageEditDialog = async (attrs:any) => {\r\n return new Promise((resolve,reject) => {\r\n\r\n // 初始化\r\n selectState.value = attrs.src ? \"attrs\":\"select\";\r\n\r\n const imageEditPanelRef = ref<any>(null);\r\n const editResult = computed<any>(()=>imageEditPanelRef.value?.getResult())\r\n\r\n // 去裁切\r\n const toCropImageHandle = async ()=>{\r\n \r\n if(editResult.value.src){\r\n var result = await ImageCropper({ src: editResult.value.src});\r\n if(result.data){\r\n imageEditPanelRef.value?.setSrc(result.data);\r\n }\r\n }\r\n \r\n }\r\n\r\n // 取消编辑\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n };\r\n\r\n // 确认编辑\r\n const handleConfirmClick = () => {\r\n dialogInstance.destroy();\r\n resolve({...editResult.value});\r\n };\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"素材选择\",\r\n class: \"mk-material-select\",\r\n width: \"70%\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return h(ImageEditPanelComponent,{attrs,ref:r=>imageEditPanelRef.value = r});\r\n },\r\n footer: () => {\r\n\r\n // 下一步按钮\r\n let nextBtns = [\r\n <ElButton type=\"primary\" onClick={()=>selectState.value = 'attrs'}>\r\n 下一步\r\n </ElButton>\r\n ]\r\n\r\n if(selectState.value == \"attrs\"){\r\n nextBtns = [\r\n <ElButton type=\"primary\" onClick={()=>selectState.value='select'}>\r\n 重新选图\r\n </ElButton>,\r\n <ElButton type=\"primary\" onClick={toCropImageHandle}>\r\n 裁切图\r\n </ElButton>,\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n ];\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n {...nextBtns}\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","selectState","ref","imageUpload","src","webFileUpload","WebFileUpload","Promise","resolve","reject","indexOf","blob","base64ToBlob","upload","File","md5","Math","random","type","replace","then","result","data","code","Messager","error","message","msg","Error","path","ImageEditPanelComponent","defineComponent","name","props","setup","expose","attrs","reactive","materialTable","MsMaterialTable","margin","computed","set","v","t","r","b","l","get","vals","split","length","selectionChangeEvent","on","id","getSelection","getList","find","item","selectImage","file","fileSelect","accept","fileRender","FileReader","onload","target","readAsDataURL","getResult","setSrc","ImageView","_createVNode","ElImage","ElIcon","default","Picture","panel","ElTabs","ElTabPane","ElButton","UploadFilled","_createTextVNode","MKMaterialList","ElInput","$event","Share","value","ElRow","ElCol","ElForm","ElFormItem","_mergeProps","alt","rows","width","height","maxWidth","maxHeight","showImageEditDialog","imageEditPanelRef","editResult","toCropImageHandle","ImageCropper","handleCancelClick","dialogInstance","destroy","handleConfirmClick","Dialoger","customRender","title","class","onClose","body","h","footer","nextBtns","onClick","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/utils.tsx"],"sourcesContent":["\r\nimport { Fragment,h,unref, onUnmounted,ref,reactive,defineComponent, computed } from 'vue'\r\nimport { Dialoger } from '@maketribe/dm'\r\nimport { \r\n ElButton,ElTabs,ElTabPane,ElInput,ElImage,ElIcon,\r\n ElForm,ElFormItem,ElRow,ElCol\r\n} from \"element-plus\";\r\nimport { Crop,Share,UploadFilled,Picture } from \"@element-plus/icons-vue\";\r\nimport { MsMaterialTable } from \"../../../../../modules/ms/dataviews/ms-material\";\r\nimport { MKMaterialList } from \"../../../../../modules/ms/components/material-list\";\r\nimport { fileSelect } from \"@maketribe/utils\"\r\nimport { ImageCropper } from \"../../../image-cropper\"\r\nimport { WebFileUpload } from \"@maketribe/request\";\r\nimport { base64ToBlob,md5 } from \"@maketribe/utils\";\r\nimport { Messager } from \"@maketribe/dm\";\r\n\r\n// 选择状态\r\nconst selectState = ref(\"select\");\r\n\r\n/**\r\n * 图片加载\r\n * @param src \r\n * @returns \r\n */\r\nexport const imageLoad = (src:string)=>{\r\n // 加载文案\r\n return new Promise((resolve,reject)=>{\r\n // 加载一下\r\n const image = new Image();\r\n const loadComplete = ()=>{\r\n resolve(image.src);\r\n }\r\n image.onload = ()=>loadComplete()\r\n image.onerror = reject\r\n image.src = src;\r\n if(image.complete){\r\n loadComplete();\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 图片上传\r\n * @param src \r\n */\r\nexport const imageUpload = (src:string)=>{\r\n\r\n // 上传\r\n const webFileUpload = new WebFileUpload();\r\n return new Promise((resolve,reject)=>{\r\n\r\n if(src && src.indexOf(\"data:image/\") == 0){\r\n\r\n // 开始上传\r\n const blob = base64ToBlob(src); \r\n \r\n // 上传\r\n webFileUpload.upload(\r\n new File([blob], `${md5(Math.random().toString())}.${blob.type.toString().replace(\"image/\",\"\") || \"png\"}`, { type: blob.type })\r\n ).then(result=>{\r\n \r\n if (result.data.code !== 200) {\r\n Messager.error({ message: result.data.msg });\r\n reject(new Error(result.data.msg ));\r\n }\r\n else{\r\n resolve(result.data.data.path);\r\n }\r\n \r\n });\r\n }\r\n else{\r\n resolve(src);\r\n }\r\n })\r\n\r\n \r\n}\r\n\r\n\r\n/**\r\n * 图片编辑面板\r\n */\r\nconst ImageEditPanelComponent = defineComponent({\r\n name: 'ImageEditPanelComponent',\r\n props: ['attrs'],\r\n setup(props,{ expose }){\r\n\r\n const attrs = reactive(props.attrs)\r\n const materialTable = reactive(new MsMaterialTable()) as MsMaterialTable;\r\n const margin = computed<any>(()=>{\r\n var vals = attrs.margin.split(/[\\s]+/g);\r\n \r\n if(vals.length == 1){\r\n return {t:vals[0],r:vals[0],b:vals[0],l:vals[0]}\r\n }\r\n else if(vals.length == 2){\r\n return {t:vals[0],r:vals[1],b:vals[0],l:vals[1]}\r\n }\r\n else if(vals.length == 3){\r\n return {t:vals[0],r:vals[1],b:vals[2],l:vals[1]}\r\n }\r\n else if(vals.length <= 0){\r\n vals = [\"\",\"\",\"\",\"\"];\r\n }\r\n return {t:vals[0],r:vals[1],b:vals[2],l:vals[3]}\r\n })\r\n const marginT = computed<any>({\r\n set(v){\r\n attrs.margin = `${v} ${margin.value.r} ${margin.value.b} ${margin.value.l}`\r\n },\r\n get(){\r\n return margin.value.t\r\n }\r\n })\r\n const marginR = computed<any>({\r\n set(v){\r\n attrs.margin = `${margin.value.t} ${v} ${margin.value.b} ${margin.value.l}`\r\n },\r\n get(){\r\n return margin.value.r\r\n }\r\n })\r\n const marginB = computed<any>({\r\n set(v){\r\n attrs.margin = `${margin.value.t} ${margin.value.r} ${v} ${margin.value.l}`\r\n },\r\n get(){\r\n return margin.value.b\r\n }\r\n })\r\n const marginL = computed<any>({\r\n set(v){\r\n attrs.margin = `${margin.value.t} ${margin.value.r} ${margin.value.b} ${v}`\r\n },\r\n get(){\r\n return margin.value.l\r\n }\r\n })\r\n\r\n // 选择素材\r\n materialTable.selectionChangeEvent.on(()=>{\r\n let id = materialTable.getSelection()[0];\r\n if(id){\r\n attrs.src = materialTable.getList().find(item=>item.id == id)?.path;\r\n }\r\n else{\r\n attrs.src = \"\";\r\n }\r\n })\r\n\r\n //\r\n const selectImage = async ()=>{\r\n\r\n const file = await fileSelect({ accept:\"image/*\"});\r\n \r\n if (file) {\r\n\r\n const fileRender = new FileReader();\r\n fileRender.onload = async (data:any)=>{\r\n attrs.src = data.target.result;\r\n \r\n }\r\n fileRender.readAsDataURL(file)\r\n }\r\n }\r\n\r\n // 导出可用的方法\r\n expose({ \r\n getResult:()=>{ return {...attrs} } ,\r\n setSrc:(src:string)=>{ attrs.src = src }\r\n });\r\n\r\n return ()=>{\r\n\r\n // 图片预览\r\n const ImageView = <ElImage style=\"background: #dedede;width: 100%; height: 480px;margin-top:10px\" src={attrs.src} fit=\"contain\" v-slots={{\r\n error:()=>{\r\n return <div style=\"\r\n font-size: 50px;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n \">\r\n <ElIcon><Picture /></ElIcon>\r\n </div>\r\n }\r\n }}>\r\n </ElImage>\r\n \r\n // 面板内容\r\n let panel = <ElTabs style=\"min-height: 520px\">\r\n <ElTabPane label=\"本地选择\">\r\n <ElButton icon={UploadFilled} type=\"primary\" style=\"width: 100%\" onClick={selectImage}>\r\n 选择本地文件\r\n </ElButton>\r\n {ImageView}\r\n </ElTabPane>\r\n <ElTabPane label=\"素材库选择\">\r\n <MKMaterialList class=\"mk-material-select__list\" selectable allowMaterialTypeValues={[1]} materialTable={materialTable} />\r\n </ElTabPane>\r\n <ElTabPane label=\"网络图片\">\r\n <ElInput v-model={attrs.src} prefix-icon={Share} style=\"width: 100%\" placeholder=\"请输入链接地址\">\r\n </ElInput>\r\n {ImageView}\r\n </ElTabPane>\r\n </ElTabs>\r\n\r\n if(selectState.value == \"attrs\"){\r\n panel = <ElRow gutter={20}>\r\n <ElCol span={14}>\r\n {ImageView}\r\n </ElCol>\r\n <ElCol span={10}>\r\n <ElForm label-position=\"top\" model={attrs}>\r\n <ElFormItem label=\"图片描述\">\r\n <ElInput v-model={attrs.alt} type=\"textarea\" {...{ rows:3 }} style=\"width: 100%\" placeholder=\"请输入\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示宽度\">\r\n <ElInput v-model={attrs.width} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示高度\">\r\n <ElInput v-model={attrs.height} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片最大显示宽度\">\r\n <ElInput v-model={attrs.maxWidth} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片最大显示高度\">\r\n <ElInput v-model={attrs.maxHeight} style=\"width: 100%\" placeholder=\"请输入宽度(可支持%)\">\r\n </ElInput>\r\n </ElFormItem>\r\n <ElFormItem label=\"图片显示外边距\">\r\n <div style=\"display: flex;flex-wrap: nowrap;gap: 10px;justify-content: space-around;\">\r\n <div>\r\n 上:\r\n <ElInput v-model={marginT.value} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n <div>\r\n 右:\r\n <ElInput v-model={marginR.value} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n \r\n <div>\r\n 下:\r\n <ElInput v-model={marginB.value} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n \r\n <div>\r\n 左:\r\n <ElInput v-model={marginL.value} placeholder=\"\">\r\n </ElInput>\r\n </div>\r\n </div>\r\n </ElFormItem>\r\n </ElForm>\r\n </ElCol>\r\n </ElRow>\r\n }\r\n\r\n return panel;\r\n }\r\n }\r\n})\r\n\r\n/**\r\n * \r\n * @param attrs 显示图片编辑面板\r\n * @returns \r\n */\r\nexport const showImageEditDialog = async (attrs:any) => {\r\n return new Promise((resolve,reject) => {\r\n\r\n // 初始化\r\n selectState.value = attrs.src ? \"attrs\":\"select\";\r\n\r\n const imageEditPanelRef = ref<any>(null);\r\n const editResult = computed<any>(()=>imageEditPanelRef.value?.getResult())\r\n\r\n // 去裁切\r\n const toCropImageHandle = async ()=>{\r\n \r\n if(editResult.value.src){\r\n var result = await ImageCropper({ src: editResult.value.src});\r\n if(result.data){\r\n imageEditPanelRef.value?.setSrc(result.data);\r\n }\r\n }\r\n \r\n }\r\n\r\n // 取消编辑\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n };\r\n\r\n // 确认编辑\r\n const handleConfirmClick = () => {\r\n dialogInstance.destroy();\r\n resolve({...editResult.value});\r\n };\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"素材选择\",\r\n class: \"mk-material-select\",\r\n width: \"70%\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return h(ImageEditPanelComponent,{attrs,ref:r=>imageEditPanelRef.value = r});\r\n },\r\n footer: () => {\r\n\r\n // 下一步按钮\r\n let nextBtns = [\r\n <ElButton type=\"primary\" onClick={()=>selectState.value = 'attrs'}>\r\n 下一步\r\n </ElButton>\r\n ]\r\n\r\n if(selectState.value == \"attrs\"){\r\n nextBtns = [\r\n <ElButton type=\"primary\" onClick={()=>selectState.value='select'}>\r\n 重新选图\r\n </ElButton>,\r\n <ElButton type=\"primary\" onClick={toCropImageHandle}>\r\n 裁切图\r\n </ElButton>,\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n ];\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n {...nextBtns}\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","selectState","ref","imageUpload","src","webFileUpload","WebFileUpload","Promise","resolve","reject","indexOf","blob","base64ToBlob","upload","File","md5","Math","random","type","replace","then","result","data","code","Messager","error","message","msg","Error","path","ImageEditPanelComponent","defineComponent","name","props","setup","expose","attrs","reactive","materialTable","MsMaterialTable","margin","computed","vals","split","length","t","r","b","l","marginT","set","v","value","get","marginR","marginB","marginL","selectionChangeEvent","on","id","getSelection","getList","find","item","selectImage","file","fileSelect","accept","fileRender","FileReader","onload","target","readAsDataURL","getResult","setSrc","ImageView","_createVNode","ElImage","ElIcon","default","Picture","panel","ElTabs","ElTabPane","ElButton","UploadFilled","_createTextVNode","MKMaterialList","ElInput","$event","Share","ElRow","ElCol","ElForm","ElFormItem","_mergeProps","alt","rows","width","height","maxWidth","maxHeight","showImageEditDialog","imageEditPanelRef","editResult","toCropImageHandle","ImageCropper","handleCancelClick","dialogInstance","destroy","handleConfirmClick","Dialoger","customRender","title","class","onClose","body","h","footer","nextBtns","onClick","_Fragment"],"mappings":"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"}
@@ -3,12 +3,12 @@ const vue = require("vue");
3
3
  const utils = require("@lexical/utils");
4
4
  const lexical = require("lexical");
5
5
  const lexicalVue = require("lexical-vue");
6
- const defines = require("../ToolbarPlugin/defines.js");
6
+ const index = require("../../core/index.js");
7
7
  const ImageTextNode = require("./ImageTextNode.js");
8
8
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
9
9
  __name: "index",
10
10
  setup(__props) {
11
- defines.registerDocEditorToolbarExtend({
11
+ index.registerDocEditorToolbarExtend({
12
12
  icon: "richtext-outline",
13
13
  text: "图文",
14
14
  action: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,$getSelection,CLICK_COMMAND } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, onUnmounted } from 'vue'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../ToolbarPlugin/defines\"\r\nimport { useElementModule } from '../../core'\r\nimport { ImageAttrType } from '../ImagePlugin'\r\nimport { INSERT_IMAGETEXT_COMMAND,ImageTextNode,$createImageTextNode } from './index'\r\n\r\n\r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"richtext-outline\",\r\n text:\"图文\",\r\n action:async ()=>{ \r\n editor.dispatchCommand(INSERT_IMAGETEXT_COMMAND,{\r\n src:\"\",\r\n float:\"left\",\r\n width:\"200px\",\r\n margin:\"0 10px 10px 0\"\r\n })\r\n },\r\n sort:10\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\n// const { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n \r\n// var imageTextEl:any = el\r\n\r\n// while (imageTextEl != null && !imageTextEl.classList.contains(\"mk-doc-block-image-text\")) {\r\n// imageTextEl = imageTextEl.parentElement;\r\n// }\r\n\r\n// return imageTextEl\r\n\r\n// },[\r\n// {\r\n// title:\"编辑\",icon:\"Edit\",action:()=>{\r\n// // 编辑的节点\r\n// editor.getEditorState().read(async () => {\r\n \r\n \r\n// })\r\n// } \r\n// }\r\n// ])\r\n\r\n\r\nuseMounted(()=>{\r\n return mergeRegister(\r\n // 插入图文\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGETEXT_COMMAND,(payload) => {\r\n $insertNodeToNearestRoot($createImageTextNode(payload))\r\n return true\r\n },COMMAND_PRIORITY_EDITOR)\r\n )\r\n})\r\n\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageTextNode])){\r\n throw new Error('ImageTextPlugin: 图文节点未注册!')\r\n }\r\n})\r\n</script>\r\n\r\n\r\n<template>\r\n <!-- <div class=\"mk-doc-active-mark mk-doc-active-box-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n \r\n </div> -->\r\n</template>\r\n\r\n"],"names":["registerDocEditorToolbarExtend","INSERT_IMAGETEXT_COMMAND","useLexicalComposer","useMounted","mergeRegister","$insertNodeToNearestRoot","$createImageTextNode","COMMAND_PRIORITY_EDITOR","onMounted","ImageTextNode"],"mappings":";;;;;;;;;;AAY+BA,2CAAA;AAAA,MAC7B,MAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAO,YAAU;AACf,eAAO,gBAAgBC,wCAAyB;AAAA,UAC9C,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,OAAM;AAAA,UACN,QAAO;AAAA,QAAA,CACR;AAAA,MACH;AAAA,MACA,MAAK;AAAA,IAAA,CACiB;AAExB,UAAM,SAASC,WAAAA;AA0BfC,eAAAA,WAAW,MAAI;AACN,aAAAC,MAAA;AAAA;AAAA,QAEL,OAAO,gBAA+BH,wCAAyB,CAAC,YAAY;AACjDI,yCAAAC,cAAAA,qBAAqB,OAAO,CAAC;AAC/C,iBAAA;AAAA,WACPC,+BAAuB;AAAA,MAAA;AAAA,IAC3B,CACD;AAEDC,QAAAA,UAAU,MAAM;AAEd,UAAI,CAAC,OAAO,SAAS,CAACC,cAAAA,aAAa,CAAC,GAAE;AAC9B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AAAA,IAAA,CACD;;;;;;;"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,$getSelection,CLICK_COMMAND } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, onUnmounted } from 'vue'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { useElementModule } from '../../core'\r\nimport { ImageAttrType } from '../ImagePlugin'\r\nimport { INSERT_IMAGETEXT_COMMAND,ImageTextNode,$createImageTextNode } from './index'\r\n\r\n\r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"richtext-outline\",\r\n text:\"图文\",\r\n action:async ()=>{ \r\n editor.dispatchCommand(INSERT_IMAGETEXT_COMMAND,{\r\n src:\"\",\r\n float:\"left\",\r\n width:\"200px\",\r\n margin:\"0 10px 10px 0\"\r\n })\r\n },\r\n sort:10\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\n// const { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n \r\n// var imageTextEl:any = el\r\n\r\n// while (imageTextEl != null && !imageTextEl.classList.contains(\"mk-doc-block-image-text\")) {\r\n// imageTextEl = imageTextEl.parentElement;\r\n// }\r\n\r\n// return imageTextEl\r\n\r\n// },[\r\n// {\r\n// title:\"编辑\",icon:\"Edit\",action:()=>{\r\n// // 编辑的节点\r\n// editor.getEditorState().read(async () => {\r\n \r\n \r\n// })\r\n// } \r\n// }\r\n// ])\r\n\r\n\r\nuseMounted(()=>{\r\n return mergeRegister(\r\n // 插入图文\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGETEXT_COMMAND,(payload) => {\r\n $insertNodeToNearestRoot($createImageTextNode(payload))\r\n return true\r\n },COMMAND_PRIORITY_EDITOR)\r\n )\r\n})\r\n\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageTextNode])){\r\n throw new Error('ImageTextPlugin: 图文节点未注册!')\r\n }\r\n})\r\n</script>\r\n\r\n\r\n<template>\r\n <!-- <div class=\"mk-doc-active-mark mk-doc-active-box-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n \r\n </div> -->\r\n</template>\r\n\r\n"],"names":["registerDocEditorToolbarExtend","INSERT_IMAGETEXT_COMMAND","useLexicalComposer","useMounted","mergeRegister","$insertNodeToNearestRoot","$createImageTextNode","COMMAND_PRIORITY_EDITOR","onMounted","ImageTextNode"],"mappings":";;;;;;;;;;AAY+BA,yCAAA;AAAA,MAC7B,MAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAO,YAAU;AACf,eAAO,gBAAgBC,wCAAyB;AAAA,UAC9C,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,OAAM;AAAA,UACN,QAAO;AAAA,QAAA,CACR;AAAA,MACH;AAAA,MACA,MAAK;AAAA,IAAA,CACiB;AAExB,UAAM,SAASC,WAAAA;AA0BfC,eAAAA,WAAW,MAAI;AACN,aAAAC,MAAA;AAAA;AAAA,QAEL,OAAO,gBAA+BH,wCAAyB,CAAC,YAAY;AACjDI,yCAAAC,cAAAA,qBAAqB,OAAO,CAAC;AAC/C,iBAAA;AAAA,WACPC,+BAAuB;AAAA,MAAA;AAAA,IAC3B,CACD;AAEDC,QAAAA,UAAU,MAAM;AAEd,UAAI,CAAC,OAAO,SAAS,CAACC,cAAAA,aAAa,CAAC,GAAE;AAC9B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AAAA,IAAA,CACD;;;;;;;"}
@@ -67,24 +67,8 @@ class ModuleBlockNode extends BaseBlockNode.BaseBlockNode {
67
67
  }
68
68
  static importDOM() {
69
69
  return {
70
- div: (domNode) => {
71
- const name = domNode.getAttribute(AttrMarkName);
72
- const isModule = BaseBlockNode.BaseBlockNode.hasBlockByType(domNode, ModuleBlockNode.getType());
73
- const moduleContent = domNode.innerHTML;
74
- if (isModule && name) {
75
- domNode.innerHTML = "";
76
- }
77
- return isModule && name ? {
78
- conversion: () => {
79
- const { module: module2 } = composables.useModule(name);
80
- const { data } = utils.createModuleMetaData(moduleContent, module2.options);
81
- return {
82
- node: $createModuleBlockNode(name, data)
83
- };
84
- },
85
- priority: 4
86
- } : null;
87
- }
70
+ div: $covertModuleBlockDOM,
71
+ section: $covertModuleBlockDOM
88
72
  };
89
73
  }
90
74
  /**
@@ -155,6 +139,25 @@ function $createModuleBlockNode(name, data) {
155
139
  function $isModuleBlockNode(node) {
156
140
  return node instanceof ModuleBlockNode;
157
141
  }
142
+ const $covertModuleBlockDOM = (domNode) => {
143
+ const name = domNode.getAttribute(AttrMarkName);
144
+ const isModule = BaseBlockNode.BaseBlockNode.hasBlockByType(domNode, ModuleBlockNode.getType());
145
+ const moduleContent = domNode.innerHTML;
146
+ if (isModule && name) {
147
+ domNode.innerHTML = "";
148
+ }
149
+ return isModule && name ? {
150
+ conversion: () => {
151
+ const { module: module2 } = composables.useModule(name);
152
+ const { data } = utils.createModuleMetaData(moduleContent, module2.options);
153
+ return {
154
+ node: $createModuleBlockNode(name, data)
155
+ };
156
+ },
157
+ priority: 4
158
+ } : null;
159
+ };
160
+ exports.$covertModuleBlockDOM = $covertModuleBlockDOM;
158
161
  exports.$createModuleBlockNode = $createModuleBlockNode;
159
162
  exports.$isModuleBlockNode = $isModuleBlockNode;
160
163
  exports.ModuleBlockNode = ModuleBlockNode;