@maketribe/ms-app 3.2.26 → 3.2.28

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 (207) hide show
  1. package/dist/cjs/components/basic/doc-editor/core/element-block.js +18 -13
  2. package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/core/utils.js +20 -13
  4. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
  5. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  6. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  7. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  8. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
  9. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  10. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +13 -0
  11. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  12. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +11 -0
  13. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  14. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +87 -13
  15. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  16. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
  17. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
  18. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +51 -37
  19. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  20. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +3 -5
  21. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  22. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +32 -54
  23. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  24. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  25. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  26. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +40 -3
  27. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  28. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  29. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  30. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  31. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +8 -7
  32. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  33. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  34. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  35. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  36. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  37. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  38. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
  39. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  40. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  41. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
  42. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  43. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
  44. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  45. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
  46. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  47. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
  48. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  49. package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
  50. package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
  51. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
  52. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  53. package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
  54. package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
  55. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
  56. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  57. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
  58. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  59. package/dist/cjs/modules/cms/cms-settings.js +4 -0
  60. package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
  61. package/dist/cjs/modules/cms/composables/part-extensions.js +6 -6
  62. package/dist/cjs/modules/cms/composables/part-extensions.js.map +1 -1
  63. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +20 -2
  64. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  65. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +0 -1
  66. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  67. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  68. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  69. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +32 -9
  70. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  71. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +47 -43
  72. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  73. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
  74. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  75. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
  76. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  77. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  78. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  79. package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
  80. package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
  81. package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
  82. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
  83. package/dist/esm/components/basic/doc-editor/core/element-block.js +18 -13
  84. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
  85. package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
  86. package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
  87. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  88. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  89. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  90. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
  91. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  92. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +13 -0
  93. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  94. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +11 -0
  95. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  96. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +87 -13
  97. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  98. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
  99. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
  100. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +52 -38
  101. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  102. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +3 -5
  103. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  104. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +33 -55
  105. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  106. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  107. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  108. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +40 -3
  109. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  110. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  111. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  112. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  113. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +11 -10
  114. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  115. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  116. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  117. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  118. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  119. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  120. package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
  121. package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  122. package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  123. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
  124. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  125. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
  126. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  127. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
  128. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  129. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
  130. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  131. package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
  132. package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
  133. package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
  134. package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  135. package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
  136. package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
  137. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
  138. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  139. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
  140. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  141. package/dist/esm/modules/cms/cms-settings.js +4 -0
  142. package/dist/esm/modules/cms/cms-settings.js.map +1 -1
  143. package/dist/esm/modules/cms/composables/part-extensions.js +6 -6
  144. package/dist/esm/modules/cms/composables/part-extensions.js.map +1 -1
  145. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +20 -2
  146. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  147. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +0 -1
  148. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  149. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  150. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  151. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +32 -9
  152. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  153. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +49 -45
  154. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  155. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
  156. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  157. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
  158. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  159. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  160. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  161. package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
  162. package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
  163. package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
  164. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
  165. package/dist/style/components/basic/visual-page-editor/index.css +1 -1
  166. package/dist/style/components/index.css +1 -1
  167. package/dist/style/index.css +1 -1
  168. package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
  169. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +1 -0
  170. package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
  171. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +1 -1
  172. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +16 -2
  173. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +7 -1
  174. package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +25 -12
  175. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
  176. package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
  177. package/dist/types/components/basic/dynamic-form-panel/type.d.ts +1 -0
  178. package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
  179. package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
  180. package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
  181. package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
  182. package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
  183. package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
  184. package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
  185. package/dist/types/modules/cms/cms-settings.d.ts +4 -28
  186. package/dist/types/modules/cms/composables/part-extensions.d.ts +7 -3
  187. package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
  188. package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
  189. package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
  190. package/package.json +9 -8
  191. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
  192. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  193. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  194. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  195. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
  196. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  197. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
  198. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  199. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  200. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  201. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
  202. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  203. package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
  204. package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
  205. package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
  206. /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
  207. /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ const vue = require("vue");
3
+ require("@maketribe/dm");
4
+ const elementPlus = require("element-plus");
5
+ require("@maketribe/utils");
6
+ require("../../../../core/DataModelDefines.js");
7
+ require("vue-router");
8
+ require("@maketribe/request");
9
+ require("@maketribe/locale");
10
+ require("../../../ms/dataviews/ms-config/MsConfigTable.js");
11
+ require("lodash-es");
12
+ require("../../../../components/basic/svg-icon/index.js");
13
+ require("../../../../components/data-model/data-form/index.js");
14
+ require("../../../../components/data-model/data-table/index.js");
15
+ require("../../../../components/data-model/data-table-pagination/index.js");
16
+ require("../../../../components/abstract/abstract-select/abstract-select.js");
17
+ require("../../../../components/abstract/abstract-select/abstract-select-options.js");
18
+ require("../../../../components/basic/button/button-options.js");
19
+ require("../../../../components/basic/config-provider/index.js");
20
+ require("../../../../components/basic/data-table-select/index.js");
21
+ require("../../../../components/basic/data-select/index.js");
22
+ require("../../../../components/basic/pagination/index.js");
23
+ require("../../../../components/basic/system-provider/index.js");
24
+ const index$1 = require("../../../../components/basic/code-editor/index.js");
25
+ require("../../../../components/basic/json-editor/index.js");
26
+ require("../../../../components/basic/page-container/index.js");
27
+ require("../../../../components/basic/date-picker/index.js");
28
+ require("../../../../components/basic/icon-select/index.js");
29
+ require("../../../../components/basic/upload-file/upload-file.js");
30
+ require("../../../../components/basic/upload-file/context/web-file-upload-context.js");
31
+ require("../../../../components/basic/upload-file/context/web-file-upload-context-options.js");
32
+ require("../../../../components/basic/upload-file/ui/upload-image/index.js");
33
+ require("../../../../components/basic/upload-file/ui/upload-file/index.js");
34
+ require("../../../../components/basic/upload-file/ui/upload-video/index.js");
35
+ require("../../../../components/basic/upload-file/upload-file-options.js");
36
+ require("../../../../components/basic/doc-editor/index.js");
37
+ require("../../../../components/basic/copy-container/index.js");
38
+ require("../../../../components/basic/image-cropper/index.js");
39
+ require("../../../../components/basic/visual-page-editor/index.js");
40
+ require("../../../../components/business/verify-dialog/verify-dialog-option.js");
41
+ require("../../../../components/business/resource-list/index.js");
42
+ require("../../../../components/business/resource-manager/index.js");
43
+ require("../../../ms/dataviews/department/DepartmentForm.js");
44
+ require("../../../ms/dataviews/department/DepartmentTable.js");
45
+ require("../../../ms/dataviews/department/DepartmentTree.js");
46
+ require("../../../ms/dataviews/log/operate-log/OperateLogTable.js");
47
+ require("../../../ms/dataviews/log/login-log/LoginLogTable.js");
48
+ require("../../../ms/dataviews/log/request-log/RequestLogTable.js");
49
+ require("../../../ms/dataviews/log/local-log/LocalLogTree.js");
50
+ require("../../../ms/components/material-list/index.js");
51
+ require("../../../ms/components/markdown-editor/index.js");
52
+ require("../../../ms/components/rich-text-editor/index.js");
53
+ require("@element-plus/icons-vue");
54
+ require("../../../ms/material-upload-context/material-upload-context-options.js");
55
+ require("../../../ms/material-upload-context/material-upload-context.js");
56
+ const index = require("../../../ms/image-upload-context/index.js");
57
+ const langJson = require("@codemirror/lang-json");
58
+ const langHtml = require("@codemirror/lang-html");
59
+ const langCss = require("@codemirror/lang-css");
60
+ const _hoisted_1 = { style: { "width": "500px", "max-height": "700px", "overflow": "auto" } };
61
+ const _hoisted_2 = { style: { "display": "flex", "justify-content": "space-between" } };
62
+ const _hoisted_3 = { class: "dialog-footer" };
63
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
64
+ __name: "DocModuleEditForm",
65
+ props: { modules: { type: Array, default() {
66
+ return [];
67
+ } } },
68
+ setup(__props) {
69
+ const props = __props;
70
+ const dialogVisible = vue.ref(false);
71
+ const dialogTitle = vue.ref("添加模块");
72
+ const curEditModule = vue.ref(null);
73
+ const disabledName = vue.ref(false);
74
+ const addModuleHandle = () => {
75
+ dialogTitle.value = "添加模块";
76
+ curEditModule.value = {
77
+ name: "",
78
+ title: "新增模块",
79
+ cover: "",
80
+ template: "",
81
+ editorCss: "",
82
+ options: ""
83
+ };
84
+ dialogVisible.value = true;
85
+ disabledName.value = false;
86
+ };
87
+ const editModuleHandle = (data) => {
88
+ dialogTitle.value = `编辑模块【${data.name}】`;
89
+ curEditModule.value = Object.assign({}, data, {
90
+ options: JSON.stringify(data.options, null, 4)
91
+ });
92
+ dialogVisible.value = true;
93
+ disabledName.value = true;
94
+ };
95
+ const deleteModuleHandle = (data) => {
96
+ elementPlus.ElMessageBox.confirm(`确认删除模块【${data.name}】?`).then(() => {
97
+ let modules = props.modules;
98
+ for (let i = 0; i < modules.length; i++) {
99
+ if (modules[i].name == data.name) {
100
+ modules.splice(i, 1);
101
+ console.log(modules);
102
+ break;
103
+ }
104
+ }
105
+ dialogVisible.value = false;
106
+ }).catch((e) => {
107
+ console.log(e);
108
+ elementPlus.ElMessage.error({ message: "删除失败!" });
109
+ });
110
+ };
111
+ const saveModuleHandle = () => {
112
+ var _a, _b;
113
+ try {
114
+ if (curEditModule.value) {
115
+ const oldModule = (_a = props.modules) == null ? void 0 : _a.find((item) => curEditModule.value.name == item.name);
116
+ if (oldModule != null) {
117
+ Object.assign(oldModule, curEditModule.value, {
118
+ options: JSON.parse(curEditModule.value.options)
119
+ });
120
+ } else {
121
+ (_b = props.modules) == null ? void 0 : _b.push(Object.assign({}, curEditModule.value, {
122
+ options: JSON.parse(curEditModule.value.options)
123
+ }));
124
+ }
125
+ }
126
+ curEditModule.value = null;
127
+ dialogVisible.value = false;
128
+ } catch (error) {
129
+ console.log(error);
130
+ elementPlus.ElMessage.error({ message: "配置有误,保存失败!" });
131
+ }
132
+ };
133
+ return (_ctx, _cache) => {
134
+ const _component_el_button = vue.resolveComponent("el-button");
135
+ const _component_el_card = vue.resolveComponent("el-card");
136
+ const _component_el_input = vue.resolveComponent("el-input");
137
+ const _component_el_form_item = vue.resolveComponent("el-form-item");
138
+ const _component_MKUploadImage = vue.resolveComponent("MKUploadImage");
139
+ const _component_el_form = vue.resolveComponent("el-form");
140
+ const _component_el_dialog = vue.resolveComponent("el-dialog");
141
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
142
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.modules, (mod) => {
143
+ return vue.openBlock(), vue.createBlock(_component_el_card, {
144
+ style: { "width": "100%", "margin-top": "10px", "box-sizing": "border-box" },
145
+ shadow: "hover"
146
+ }, {
147
+ default: vue.withCtx(() => [
148
+ vue.createElementVNode("div", _hoisted_2, [
149
+ vue.createElementVNode("div", null, vue.toDisplayString(mod.title) + " [" + vue.toDisplayString(mod.name) + "]", 1),
150
+ vue.createElementVNode("div", null, [
151
+ vue.createVNode(_component_el_button, {
152
+ type: "primary",
153
+ text: "",
154
+ onClick: ($event) => editModuleHandle(mod)
155
+ }, {
156
+ default: vue.withCtx(() => [
157
+ vue.createTextVNode("编辑")
158
+ ]),
159
+ _: 2
160
+ }, 1032, ["onClick"]),
161
+ vue.createVNode(_component_el_button, {
162
+ type: "danger",
163
+ text: "",
164
+ onClick: ($event) => deleteModuleHandle(mod)
165
+ }, {
166
+ default: vue.withCtx(() => [
167
+ vue.createTextVNode("删除")
168
+ ]),
169
+ _: 2
170
+ }, 1032, ["onClick"])
171
+ ])
172
+ ])
173
+ ]),
174
+ _: 2
175
+ }, 1024);
176
+ }), 256)),
177
+ vue.createVNode(_component_el_button, {
178
+ type: "primary",
179
+ onClick: addModuleHandle,
180
+ style: { "width": "100%", "margin-top": "10px", "box-sizing": "border-box" }
181
+ }, {
182
+ default: vue.withCtx(() => [
183
+ vue.createTextVNode("添加模块")
184
+ ]),
185
+ _: 1
186
+ }),
187
+ vue.createVNode(_component_el_dialog, {
188
+ modelValue: dialogVisible.value,
189
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => dialogVisible.value = $event),
190
+ title: dialogTitle.value,
191
+ width: 800
192
+ }, {
193
+ footer: vue.withCtx(() => [
194
+ vue.createElementVNode("div", _hoisted_3, [
195
+ vue.createVNode(_component_el_button, {
196
+ onClick: _cache[6] || (_cache[6] = ($event) => dialogVisible.value = false)
197
+ }, {
198
+ default: vue.withCtx(() => [
199
+ vue.createTextVNode("取消")
200
+ ]),
201
+ _: 1
202
+ }),
203
+ vue.createVNode(_component_el_button, {
204
+ type: "primary",
205
+ onClick: saveModuleHandle
206
+ }, {
207
+ default: vue.withCtx(() => [
208
+ vue.createTextVNode(" 保存 ")
209
+ ]),
210
+ _: 1
211
+ })
212
+ ])
213
+ ]),
214
+ default: vue.withCtx(() => [
215
+ curEditModule.value ? (vue.openBlock(), vue.createBlock(_component_el_form, {
216
+ key: 0,
217
+ model: curEditModule.value,
218
+ "label-width": "auto",
219
+ "label-position": "top",
220
+ style: { "max-height": "500px", "overflow": "auto", "padding": "20px" }
221
+ }, {
222
+ default: vue.withCtx(() => [
223
+ vue.createVNode(_component_el_form_item, { label: "模块名称 : " }, {
224
+ default: vue.withCtx(() => [
225
+ vue.createVNode(_component_el_input, {
226
+ modelValue: curEditModule.value.name,
227
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => curEditModule.value.name = $event),
228
+ disabled: disabledName.value,
229
+ clearable: ""
230
+ }, null, 8, ["modelValue", "disabled"])
231
+ ]),
232
+ _: 1
233
+ }),
234
+ vue.createVNode(_component_el_form_item, {
235
+ label: "模块描述 : ",
236
+ style: { "margin-bottom": "20px" }
237
+ }, {
238
+ default: vue.withCtx(() => [
239
+ vue.createVNode(_component_el_input, {
240
+ modelValue: curEditModule.value.title,
241
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => curEditModule.value.title = $event),
242
+ clearable: ""
243
+ }, null, 8, ["modelValue"])
244
+ ]),
245
+ _: 1
246
+ }),
247
+ vue.createVNode(_component_el_form_item, {
248
+ label: "模块封面图 : ",
249
+ style: { "margin-bottom": "20px" }
250
+ }, {
251
+ default: vue.withCtx(() => [
252
+ vue.createVNode(_component_MKUploadImage, {
253
+ modelValue: curEditModule.value.cover,
254
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => curEditModule.value.cover = $event),
255
+ width: "700px",
256
+ height: "300px",
257
+ uploadContext: new (vue.unref(index.ImageUploadContext))("")
258
+ }, null, 8, ["modelValue", "uploadContext"])
259
+ ]),
260
+ _: 1
261
+ }),
262
+ vue.createVNode(_component_el_form_item, {
263
+ label: "模块HTML模版 : ",
264
+ style: { "margin-bottom": "20px" }
265
+ }, {
266
+ default: vue.withCtx(() => [
267
+ vue.createVNode(vue.unref(index$1.MKCodeEditor), {
268
+ modelValue: curEditModule.value.template,
269
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => curEditModule.value.template = $event),
270
+ extensions: [vue.unref(langHtml.html)()],
271
+ style: { "border": "1px solid #ccc" }
272
+ }, null, 8, ["modelValue", "extensions"])
273
+ ]),
274
+ _: 1
275
+ }),
276
+ vue.createVNode(_component_el_form_item, {
277
+ label: "模块配置面板 : ",
278
+ style: { "margin-bottom": "20px" }
279
+ }, {
280
+ default: vue.withCtx(() => [
281
+ vue.createVNode(vue.unref(index$1.MKCodeEditor), {
282
+ modelValue: curEditModule.value.options,
283
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => curEditModule.value.options = $event),
284
+ extensions: [vue.unref(langJson.json)()],
285
+ style: { "border": "1px solid #ccc" }
286
+ }, null, 8, ["modelValue", "extensions"])
287
+ ]),
288
+ _: 1
289
+ }),
290
+ vue.createVNode(_component_el_form_item, { label: "模块编辑样式 : " }, {
291
+ default: vue.withCtx(() => [
292
+ vue.createVNode(vue.unref(index$1.MKCodeEditor), {
293
+ modelValue: curEditModule.value.editorCss,
294
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => curEditModule.value.editorCss = $event),
295
+ extensions: [vue.unref(langCss.css)()],
296
+ style: { "border": "1px solid #ccc" }
297
+ }, null, 8, ["modelValue", "extensions"])
298
+ ]),
299
+ _: 1
300
+ })
301
+ ]),
302
+ _: 1
303
+ }, 8, ["model"])) : vue.createCommentVNode("", true)
304
+ ]),
305
+ _: 1
306
+ }, 8, ["modelValue", "title"])
307
+ ]);
308
+ };
309
+ }
310
+ });
311
+ module.exports = _sfc_main;
312
+ //# sourceMappingURL=DocModuleEditForm.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocModuleEditForm.vue.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/DocModuleEditForm.vue"],"sourcesContent":["<template>\r\n <div style=\" width: 500px;max-height: 700px;overflow: auto;\">\r\n <el-card v-for=\"mod in modules\" style=\"width: 100%;margin-top: 10px;box-sizing: border-box;\" shadow=\"hover\">\r\n <div style=\"display: flex; justify-content: space-between;\">\r\n <div>{{mod.title}} [{{mod.name}}]</div>\r\n <div>\r\n <el-button type=\"primary\" text @click=\"editModuleHandle(mod)\">编辑</el-button>\r\n <el-button type=\"danger\" text @click=\"deleteModuleHandle(mod)\">删除</el-button>\r\n </div>\r\n </div>\r\n </el-card>\r\n <el-button type=\"primary\" @click=\"addModuleHandle\" style=\"width: 100%;margin-top: 10px;box-sizing: border-box;\">添加模块</el-button>\r\n <el-dialog v-model=\"dialogVisible\" :title=\"dialogTitle\" :width=\"800\">\r\n <el-form v-if=\"curEditModule\" :model=\"curEditModule\" label-width=\"auto\" label-position=\"top\" style=\"max-height: 500px;overflow: auto;padding: 20px;\">\r\n <el-form-item label=\"模块名称 : \">\r\n <el-input v-model=\"curEditModule.name\" :disabled=\"disabledName\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"模块描述 : \" style=\"margin-bottom: 20px;\">\r\n <el-input v-model=\"curEditModule.title\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"模块封面图 : \" style=\"margin-bottom: 20px;\">\r\n <MKUploadImage v-model=\"curEditModule.cover\" width=\"700px\" height=\"300px\" :uploadContext=\"new ImageUploadContext('')\">\r\n\r\n </MKUploadImage>\r\n </el-form-item>\r\n <el-form-item label=\"模块HTML模版 : \" style=\"margin-bottom: 20px;\">\r\n <MKCodeEditor v-model=\"curEditModule.template\" :extensions=\"[html()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n <el-form-item label=\"模块配置面板 : \" style=\"margin-bottom: 20px;\">\r\n <MKCodeEditor v-model=\"curEditModule.options\" :extensions=\"[json()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n <el-form-item label=\"模块编辑样式 : \">\r\n <MKCodeEditor v-model=\"curEditModule.editorCss\" :extensions=\"[css()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n </el-form>\r\n <template #footer>\r\n <div class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"saveModuleHandle\"> 保存 </el-button>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n \r\n<script setup lang=\"ts\">\r\nimport { defineProps,watch,ref } from \"vue\"\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { ModuleType } from \"../../../../components/basic/doc-editor/plugins/ModulePlugin/composables\"\r\nimport { MKCodeEditor } from \"../../../../components/basic/code-editor\";\r\nimport { ElMessageBox,ElMessage } from 'element-plus'\r\nimport { json } from \"@codemirror/lang-json\";\r\nimport { html } from \"@codemirror/lang-html\";\r\nimport { css } from \"@codemirror/lang-css\";\r\n\r\nconst props = defineProps({ modules:{ type:Array<ModuleType>,default(){ return [] } } })\r\nconst dialogVisible = ref<boolean>(false)\r\nconst dialogTitle = ref<string>(\"添加模块\")\r\nconst curEditModule = ref<any>(null)\r\nconst disabledName = ref<boolean>(false)\r\n \r\n// 添加模块\r\nconst addModuleHandle = ()=>{\r\n dialogTitle.value = \"添加模块\";\r\n curEditModule.value = {\r\n name:\"\",\r\n title:\"新增模块\",\r\n cover:\"\",\r\n template:\"\",\r\n editorCss:\"\",\r\n options:\"\"\r\n };\r\n dialogVisible.value = true;\r\n disabledName.value = false;\r\n}\r\n\r\n// 编辑模块\r\nconst editModuleHandle = (data:any)=>{\r\n dialogTitle.value = `编辑模块【${data.name}】`;\r\n curEditModule.value = Object.assign({},data,{\r\n options:JSON.stringify(data.options,null,4)\r\n });\r\n dialogVisible.value = true;\r\n disabledName.value = true;\r\n}\r\n\r\n// 删除模块\r\nconst deleteModuleHandle = (data:any)=>{\r\n\r\n ElMessageBox.confirm(`确认删除模块【${data.name}】?`).then(() => {\r\n\r\n let modules = props.modules;\r\n\r\n for(let i = 0;i < modules.length; i++){\r\n if(modules[i].name == data.name){\r\n modules.splice(i,1);\r\n console.log(modules);\r\n break;\r\n }\r\n }\r\n\r\n dialogVisible.value = false;\r\n })\r\n .catch(e => {\r\n // catch error\r\n console.log(e);\r\n ElMessage.error({ message:\"删除失败!\"});\r\n })\r\n}\r\n\r\n// 保存模块\r\nconst saveModuleHandle = ()=>{\r\n \r\n try {\r\n if(curEditModule.value){\r\n\r\n const oldModule = props.modules?.find(item=>curEditModule.value.name == item.name)\r\n\r\n if(oldModule != null){\r\n Object.assign(oldModule,curEditModule.value,{\r\n options:JSON.parse(curEditModule.value.options)\r\n })\r\n }\r\n else{\r\n props.modules?.push(Object.assign({},curEditModule.value,{\r\n options:JSON.parse(curEditModule.value.options)\r\n }))\r\n }\r\n }\r\n\r\n curEditModule.value = null;\r\n dialogVisible.value = false;\r\n } catch (error) {\r\n console.log(error)\r\n ElMessage.error({ message:\"配置有误,保存失败!\"});\r\n }\r\n}\r\n\r\n </script>\r\n "],"names":["ref","ElMessageBox","ElMessage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,UAAM,QAAQ;AACR,UAAA,gBAAgBA,QAAa,KAAK;AAClC,UAAA,cAAcA,QAAY,MAAM;AAChC,UAAA,gBAAgBA,QAAS,IAAI;AAC7B,UAAA,eAAeA,QAAa,KAAK;AAGvC,UAAM,kBAAkB,MAAI;AAC1B,kBAAY,QAAQ;AACpB,oBAAc,QAAQ;AAAA,QACpB,MAAK;AAAA,QACL,OAAM;AAAA,QACN,OAAM;AAAA,QACN,UAAS;AAAA,QACT,WAAU;AAAA,QACV,SAAQ;AAAA,MAAA;AAEV,oBAAc,QAAQ;AACtB,mBAAa,QAAQ;AAAA,IAAA;AAIjB,UAAA,mBAAmB,CAAC,SAAW;AACvB,kBAAA,QAAQ,QAAQ,KAAK,IAAI;AACrC,oBAAc,QAAQ,OAAO,OAAO,CAAA,GAAG,MAAK;AAAA,QACtC,SAAQ,KAAK,UAAU,KAAK,SAAQ,MAAK,CAAC;AAAA,MAAA,CAC3C;AACL,oBAAc,QAAQ;AACtB,mBAAa,QAAQ;AAAA,IAAA;AAIjB,UAAA,qBAAqB,CAAC,SAAW;AAErCC,+BAAa,QAAQ,UAAU,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM;AAEvD,YAAI,UAAU,MAAM;AAEpB,iBAAQ,IAAI,GAAE,IAAI,QAAQ,QAAQ,KAAI;AACpC,cAAG,QAAQ,CAAC,EAAE,QAAQ,KAAK,MAAK;AACtB,oBAAA,OAAO,GAAE,CAAC;AAClB,oBAAQ,IAAI,OAAO;AACnB;AAAA,UACF;AAAA,QACF;AAEA,sBAAc,QAAQ;AAAA,MAAA,CACvB,EACA,MAAM,CAAK,MAAA;AAEV,gBAAQ,IAAI,CAAC;AACbC,oBAAAA,UAAU,MAAM,EAAE,SAAQ,QAAQ,CAAA;AAAA,MAAA,CACnC;AAAA,IAAA;AAIH,UAAM,mBAAmB,MAAI;;AAEvB,UAAA;AACF,YAAG,cAAc,OAAM;AAEf,gBAAA,aAAY,WAAM,YAAN,mBAAe,KAAK,UAAM,cAAc,MAAM,QAAQ,KAAK;AAE7E,cAAG,aAAa,MAAK;AACZ,mBAAA,OAAO,WAAU,cAAc,OAAM;AAAA,cAC1C,SAAQ,KAAK,MAAM,cAAc,MAAM,OAAO;AAAA,YAAA,CAC/C;AAAA,UAAA,OAEC;AACF,wBAAM,YAAN,mBAAe,KAAK,OAAO,OAAO,CAAC,GAAE,cAAc,OAAM;AAAA,cACvD,SAAQ,KAAK,MAAM,cAAc,MAAM,OAAO;AAAA,YAC/C,CAAA;AAAA,UACH;AAAA,QACF;AAEA,sBAAc,QAAQ;AACtB,sBAAc,QAAQ;AAAA,eACf,OAAO;AACd,gBAAQ,IAAI,KAAK;AACjBA,oBAAAA,UAAU,MAAM,EAAE,SAAQ,aAAa,CAAA;AAAA,MACzC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ const DocModuleEditForm_vue_vue_type_script_setup_true_lang = require("./DocModuleEditForm.vue.js");
3
+ module.exports = DocModuleEditForm_vue_vue_type_script_setup_true_lang;
4
+ //# sourceMappingURL=DocModuleEditForm.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocModuleEditForm.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -9,6 +9,7 @@ require("vue-router");
9
9
  require("@maketribe/request");
10
10
  require("@maketribe/locale");
11
11
  const MsConfigTable = require("../../../ms/dataviews/ms-config/MsConfigTable.js");
12
+ const DocModuleEditForm_vue_vue_type_script_setup_true_lang = require("./DocModuleEditForm.vue.js");
12
13
  const _hoisted_1 = {
13
14
  class: "mk-cms-appsettings__warp",
14
15
  style: { "height": "100%", "display": "flex", "flex-direction": "column" }
@@ -142,6 +143,23 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
142
143
  })
143
144
  ]),
144
145
  _: 1
146
+ }, 8, ["model"]),
147
+ vue.createVNode(_component_el_form, {
148
+ model: vue.unref(CmsSettings),
149
+ "label-width": "auto",
150
+ "label-position": "top"
151
+ }, {
152
+ default: vue.withCtx(() => [
153
+ vue.createVNode(_component_el_form_item, { label: "文档模块 : " }, {
154
+ default: vue.withCtx(() => [
155
+ vue.createVNode(DocModuleEditForm_vue_vue_type_script_setup_true_lang, {
156
+ modules: vue.unref(CmsSettings).docModules
157
+ }, null, 8, ["modules"])
158
+ ]),
159
+ _: 1
160
+ })
161
+ ]),
162
+ _: 1
145
163
  }, 8, ["model"])
146
164
  ]),
147
165
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\r\n 保存\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettings } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettings>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":["useCmsSettings","ref","MsConfigTable","CmsSettingsKEY","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmIM,UAAA,cAAcA,2BAAe,IAAI;AAGjC,UAAA,gBAAgBC,QAAI,SAAS;AAE7B,UAAA,UAAUA,QAAI,KAAK;AACnB,UAAA,UAAUA,QAAI,KAAK;AAGzB,UAAM,aAAa,YAAU;AAE3B,UAAG,QAAQ,OAAM;AACf,gBAAQ,QAAQ;AAChB,cAAMC,cAAAA,cAAc,eAAeC,YAAA,gBAAe,KAAK,UAAU,WAAW,CAAC;AAC7E,gBAAQ,QAAQ;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAIFC,QAAAA,UAAU,YAAU;AAGlB,YAAM,OAAQ,MAAMF,cAAAA,cAAc,eAA4BC,YAAc,cAAA;AAC5E,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAC1C,iBAAW,MAAM;AACf,gBAAQ,QAAQ;AAAA,SACf,GAAG;AAENE,UAAA,MAAM,aAAY,MAAI;AACpB,gBAAQ,QAAQ;AAAA,MAAA,GAChB,EAAE,MAAK,KAAA,CAAM;AAAA,IAAA,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\r\n 保存\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"文档模块 : \">\r\n <DocModuleEditForm :modules=\"CmsSettings.docModules\"></DocModuleEditForm>\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettingsType } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\nimport DocModuleEditForm from \"./DocModuleEditForm.vue\"\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":["useCmsSettings","ref","MsConfigTable","CmsSettingsKEY","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyIM,UAAA,cAAcA,2BAAe,IAAI;AAGjC,UAAA,gBAAgBC,QAAI,SAAS;AAE7B,UAAA,UAAUA,QAAI,KAAK;AACnB,UAAA,UAAUA,QAAI,KAAK;AAGzB,UAAM,aAAa,YAAU;AAE3B,UAAG,QAAQ,OAAM;AACf,gBAAQ,QAAQ;AAChB,cAAMC,cAAAA,cAAc,eAAeC,YAAA,gBAAe,KAAK,UAAU,WAAW,CAAC;AAC7E,gBAAQ,QAAQ;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAIFC,QAAAA,UAAU,YAAU;AAGlB,YAAM,OAAQ,MAAMF,cAAAA,cAAc,eAAgCC,YAAc,cAAA;AAChF,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAC1C,iBAAW,MAAM;AACf,gBAAQ,QAAQ;AAAA,SACf,GAAG;AAENE,UAAA,MAAM,aAAY,MAAI;AACpB,gBAAQ,QAAQ;AAAA,MAAA,GAChB,EAAE,MAAK,KAAA,CAAM;AAAA,IAAA,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,7 +5,7 @@ const elementPlus = require("element-plus");
5
5
  const imageSelectPanel = require("./image-select-panel.js");
6
6
  require("../../../../components/basic/image-cropper/index.js");
7
7
  const imageCropperApi = require("../../../../components/basic/image-cropper/image-cropper-api.js");
8
- async function ImageSelect(cutWidth, cutHeight) {
8
+ async function ImageSelect(cutWidth, cutHeight, isCut) {
9
9
  return new Promise((resolve) => {
10
10
  const path = vue.ref("");
11
11
  const handleCancelClick = () => {
@@ -15,7 +15,7 @@ async function ImageSelect(cutWidth, cutHeight) {
15
15
  path: ""
16
16
  });
17
17
  };
18
- const handleConfirmClick = async () => {
18
+ const handleCutClick = async () => {
19
19
  if (path.value) {
20
20
  var result = await imageCropperApi.ImageCropper({
21
21
  src: path.value,
@@ -44,6 +44,13 @@ async function ImageSelect(cutWidth, cutHeight) {
44
44
  });
45
45
  }
46
46
  };
47
+ const handleConfirmClick = async () => {
48
+ dialogInstance.destroy();
49
+ resolve({
50
+ success: true,
51
+ path: path.value
52
+ });
53
+ };
47
54
  const dialogInstance = dm.Dialoger.customRender({
48
55
  title: "图片选择",
49
56
  class: "mk-material-select",
@@ -62,6 +69,11 @@ async function ImageSelect(cutWidth, cutHeight) {
62
69
  "onClick": handleCancelClick
63
70
  }, {
64
71
  default: () => [vue.createTextVNode("取消")]
72
+ }), vue.createVNode(elementPlus.ElButton, {
73
+ "type": "primary",
74
+ "onClick": handleCutClick
75
+ }, {
76
+ default: () => [vue.createTextVNode("裁切")]
65
77
  }), vue.createVNode(elementPlus.ElButton, {
66
78
  "type": "primary",
67
79
  "onClick": handleConfirmClick
@@ -1 +1 @@
1
- {"version":3,"file":"image-select-api.js","sources":["../../../../../../src/modules/ms/components/image-select/image-select-api.tsx"],"sourcesContent":["import { Fragment, ref,h } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { ElButton } from \"element-plus\";\r\nimport ImageSelectPanel from \"./image-select-panel\";\r\nimport { ImageCropper } from \"../../../../components/basic/image-cropper\"\r\n\r\nexport type MKImageSelectResult = { success: boolean; path: string; };\r\n\r\nexport default async function ImageSelect(cutWidth?:number,cutHeight?:number): Promise<MKImageSelectResult> {\r\n return new Promise((resolve) => {\r\n \r\n const path = ref<any>(\"\");\r\n\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n\r\n resolve({ success: false, path: \"\" });\r\n };\r\n\r\n const handleConfirmClick = async () => {\r\n\r\n\r\n if(path.value){\r\n\r\n var result = await ImageCropper({ \r\n src: path.value ,\r\n ratioOptions: cutWidth && cutHeight ?[\r\n { value: `${cutWidth}*${cutHeight}`, label: `${cutWidth}px*${cutHeight}px`, width: cutWidth, height: cutHeight }\r\n ]:[],\r\n maxWidth:cutWidth || 0,\r\n maxHeight:cutHeight || 0\r\n });\r\n\r\n if(result.data){\r\n path.value = result.data;\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\r\n else{\r\n // 取消裁切\r\n \r\n }\r\n }\r\n else{\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\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 <ImageSelectPanel v-model={path.value} />\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["ImageSelect","cutWidth","cutHeight","Promise","resolve","path","ref","handleCancelClick","dialogInstance","destroy","success","handleConfirmClick","value","result","ImageCropper","src","ratioOptions","label","width","height","maxWidth","maxHeight","data","Dialoger","customRender","title","class","onClose","body","_createVNode","ImageSelectPanel","$event","footer","_Fragment","ElButton","default","_createTextVNode"],"mappings":";;;;;;;AAQe,eAAeA,YAAYC,UAAiBC,WAAiD;AAC1G,SAAO,IAAIC,QAASC,aAAY;AAE9B,UAAMC,OAAOC,QAAS,EAAE;AAExB,UAAMC,oBAAoBA,MAAM;AAC9BC,qBAAeC,QAAO;AAEtBL,cAAQ;AAAA,QAAEM,SAAS;AAAA,QAAQL,MAAM;AAAA,MAAG,CAAC;AAAA;AAGvC,UAAMM,qBAAqB,YAAY;AAGrC,UAAGN,KAAKO,OAAM;AAEZ,YAAIC,SAAS,MAAMC,6BAAa;AAAA,UAC9BC,KAAKV,KAAKO;AAAAA,UACVI,cAAcf,YAAYC,YAAW,CACnC;AAAA,YAAEU,OAAO,GAAGX,QAAQ,IAAIC,SAAS;AAAA,YAAIe,OAAO,GAAGhB,QAAQ,MAAMC,SAAS;AAAA,YAAMgB,OAAOjB;AAAAA,YAAUkB,QAAQjB;AAAAA,UAAW,CAAA,IAChH,CAAE;AAAA,UACJkB,UAASnB,YAAY;AAAA,UACrBoB,WAAUnB,aAAa;AAAA,QACzB,CAAC;AAED,YAAGW,OAAOS,MAAK;AACbjB,eAAKO,QAAQC,OAAOS;AACpBd,yBAAeC,QAAO;AACtBL,kBAAQ;AAAA,YAAEM,SAAS;AAAA,YAAOL,MAAMA,KAAKO;AAAAA,UAAM,CAAC;AAAA,QAG5C;AAAA,MAGJ,OACI;AACFJ,uBAAeC,QAAO;AACtBL,gBAAQ;AAAA,UAAEM,SAAS;AAAA,UAAOL,MAAMA,KAAKO;AAAAA,QAAM,CAAC;AAAA,MAC9C;AAAA;AAGF,UAAMJ,iBAAiBe,GAAQ,SAACC,aAAa;AAAA,MAC3CC,OAAO;AAAA,MACPC,OAAO;AAAA,MACPR,OAAO;AAAA,MACPS,SAASA,MAAM;AACbnB,uBAAeC,QAAO;AAAA,MACvB;AAAA,MACDmB,MAAMA,MAAM;AACV,eAAAC,IAAAA,YAAAC,kBAAA;AAAA,UAAA,cAAkCzB,KAAKO;AAAAA,UAAK,uBAAAmB,YAAV1B,KAAKO,QAAKmB;AAAAA,QAAA,GAAA,IAAA;AAAA,MAC7C;AAAA,MACDC,QAAQA,MAAM;AACZ,eAAAH,IAAA,YAAAI,IAAA,UAAAJ,MAAAA,CAAAA,IAAAA,YAAAK,YAAAA,UAAA;AAAA,UAAA,WAEuB3B;AAAAA,QAAiB,GAAA;AAAA,UAAA4B,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAP,GAAAA,IAAA,YAAAK,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WACFvB;AAAAA,QAAkB,GAAA;AAAA,UAAAwB,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,QAAA,CAAA,CAAA,CAAA;AAAA,MAK1D;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;;"}
1
+ {"version":3,"file":"image-select-api.js","sources":["../../../../../../src/modules/ms/components/image-select/image-select-api.tsx"],"sourcesContent":["import { Fragment, ref, h } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { ElButton } from \"element-plus\";\r\nimport ImageSelectPanel from \"./image-select-panel\";\r\nimport { ImageCropper } from \"../../../../components/basic/image-cropper\"\r\n\r\nexport type MKImageSelectResult = { success: boolean; path: string; };\r\n\r\nexport default async function ImageSelect(cutWidth?: number, cutHeight?: number, isCut?: boolean): Promise<MKImageSelectResult> {\r\n return new Promise((resolve) => {\r\n\r\n const path = ref<any>(\"\");\r\n\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n\r\n resolve({ success: false, path: \"\" });\r\n };\r\n\r\n //裁剪\r\n const handleCutClick = async () => {\r\n\r\n\r\n if (path.value) {\r\n\r\n var result = await ImageCropper({\r\n src: path.value,\r\n ratioOptions: cutWidth && cutHeight ? [\r\n { value: `${cutWidth}*${cutHeight}`, label: `${cutWidth}px*${cutHeight}px`, width: cutWidth, height: cutHeight }\r\n ] : [],\r\n maxWidth: cutWidth || 0,\r\n maxHeight: cutHeight || 0\r\n });\r\n\r\n if (result.data) {\r\n path.value = result.data;\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\r\n else {\r\n // 取消裁切\r\n\r\n }\r\n }\r\n else {\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\r\n };\r\n\r\n //原图输出\r\n const handleConfirmClick = async () => {\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n };\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 <ImageSelectPanel v-model={path.value} />\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleCutClick}>\r\n 裁切\r\n </ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["ImageSelect","cutWidth","cutHeight","isCut","Promise","resolve","path","ref","handleCancelClick","dialogInstance","destroy","success","handleCutClick","value","result","ImageCropper","src","ratioOptions","label","width","height","maxWidth","maxHeight","data","handleConfirmClick","Dialoger","customRender","title","class","onClose","body","_createVNode","ImageSelectPanel","$event","footer","_Fragment","ElButton","default","_createTextVNode"],"mappings":";;;;;;;AAQe,eAAeA,YAAYC,UAAmBC,WAAoBC,OAA+C;AAC9H,SAAO,IAAIC,QAASC,aAAY;AAE9B,UAAMC,OAAOC,QAAS,EAAE;AAExB,UAAMC,oBAAoBA,MAAM;AAC9BC,qBAAeC,QAAO;AAEtBL,cAAQ;AAAA,QAAEM,SAAS;AAAA,QAAOL,MAAM;AAAA,MAAG,CAAC;AAAA;AAItC,UAAMM,iBAAiB,YAAY;AAGjC,UAAIN,KAAKO,OAAO;AAEd,YAAIC,SAAS,MAAMC,6BAAa;AAAA,UAC9BC,KAAKV,KAAKO;AAAAA,UACVI,cAAchB,YAAYC,YAAY,CACpC;AAAA,YAAEW,OAAO,GAAGZ,QAAQ,IAAIC,SAAS;AAAA,YAAIgB,OAAO,GAAGjB,QAAQ,MAAMC,SAAS;AAAA,YAAMiB,OAAOlB;AAAAA,YAAUmB,QAAQlB;AAAAA,UAAW,CAAA,IAC9G,CAAE;AAAA,UACNmB,UAAUpB,YAAY;AAAA,UACtBqB,WAAWpB,aAAa;AAAA,QAC1B,CAAC;AAED,YAAIY,OAAOS,MAAM;AACfjB,eAAKO,QAAQC,OAAOS;AACpBd,yBAAeC,QAAO;AACtBL,kBAAQ;AAAA,YAAEM,SAAS;AAAA,YAAML,MAAMA,KAAKO;AAAAA,UAAM,CAAC;AAAA,QAG3C;AAAA,MAGJ,OACK;AACHJ,uBAAeC,QAAO;AACtBL,gBAAQ;AAAA,UAAEM,SAAS;AAAA,UAAML,MAAMA,KAAKO;AAAAA,QAAM,CAAC;AAAA,MAC7C;AAAA;AAIF,UAAMW,qBAAqB,YAAY;AACrCf,qBAAeC,QAAO;AACtBL,cAAQ;AAAA,QAAEM,SAAS;AAAA,QAAML,MAAMA,KAAKO;AAAAA,MAAM,CAAC;AAAA;AAI7C,UAAMJ,iBAAiBgB,GAAQ,SAACC,aAAa;AAAA,MAC3CC,OAAO;AAAA,MACPC,OAAO;AAAA,MACPT,OAAO;AAAA,MACPU,SAASA,MAAM;AACbpB,uBAAeC,QAAO;AAAA,MACvB;AAAA,MACDoB,MAAMA,MAAM;AACV,eAAAC,IAAAA,YAAAC,kBAAA;AAAA,UAAA,cAAkC1B,KAAKO;AAAAA,UAAK,uBAAAoB,YAAV3B,KAAKO,QAAKoB;AAAAA,QAAA,GAAA,IAAA;AAAA,MAC7C;AAAA,MACDC,QAAQA,MAAM;AACZ,eAAAH,IAAA,YAAAI,IAAA,UAAAJ,MAAAA,CAAAA,IAAAA,YAAAK,YAAAA,UAAA;AAAA,UAAA,WAEuB5B;AAAAA,QAAiB,GAAA;AAAA,UAAA6B,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAP,GAAAA,IAAA,YAAAK,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WACFxB;AAAAA,QAAc,GAAA;AAAA,UAAAyB,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAP,GAAAA,IAAA,YAAAK,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WAGdZ;AAAAA,QAAkB,GAAA;AAAA,UAAAa,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,QAAA,CAAA,CAAA,CAAA;AAAA,MAK1D;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;;"}
@@ -24,7 +24,7 @@ class ImageUploadContext extends UploadContext.UploadContext {
24
24
  __publicField(this, "cutSise");
25
25
  this.cutSise = cutSise;
26
26
  }
27
- async selectFile() {
27
+ async selectFile(isCut) {
28
28
  let cutWidth = 0;
29
29
  let cutHeight = 0;
30
30
  if (this.cutSise) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/modules/ms/image-upload-context/index.ts"],"sourcesContent":["import { MKImageSelect } from \"../components/image-select\";\r\nimport { UploadContext, UploadResult } from \"../../../components/basic/upload-file\";\r\nimport { base64ToBlob,md5 } from \"@maketribe/utils\";\r\nimport { WebFileUpload } from \"@maketribe/request\";\r\n\r\n\r\n/**\r\n * 图片上传上下文\r\n */\r\nexport class ImageUploadContext extends UploadContext {\r\n cutSise?:string;\r\n\r\n /**\r\n * \r\n * @param cutSise 裁切尺寸 \r\n */\r\n\tconstructor(cutSise?:string) {\r\n\t\tsuper();\r\n this.cutSise = cutSise;\r\n\t}\r\n\r\n\tasync selectFile(): Promise<UploadResult> {\r\n\r\n let cutWidth = 0;\r\n let cutHeight = 0;\r\n\r\n if(this.cutSise){\r\n let cutInfo = this.cutSise.split(\"*\");\r\n cutWidth = parseInt(cutInfo[0]) || 0;\r\n cutHeight = parseInt(cutInfo[1]) || cutWidth;\r\n }\r\n\r\n\r\n\t\tconst result = await MKImageSelect(cutWidth,cutHeight);\r\n\r\n let path:any = result.path;\r\n\r\n // base 64 则上传\r\n if(path && path.indexOf(\"data:image/\") == 0){\r\n\r\n const webFileUpload = new WebFileUpload();\r\n // 开始上传\r\n const blob = base64ToBlob(path); \r\n\r\n // 上传\r\n const uploadResult = await webFileUpload.upload(\r\n new File([blob], `${md5(Math.random().toString())}.${blob.type.toString().replace(\"image/\",\"\") || \"png\"}`, { type: blob.type })\r\n );\r\n\r\n if (uploadResult.data.code !== 200) {\r\n \r\n return {\r\n success: false, path: \"\", msg: uploadResult.data.msg,\r\n };\r\n }\r\n else{\r\n path = uploadResult.data.data.path;\r\n }\r\n }\r\n\r\n\t\treturn { success: true, path: path, msg: \"\", };\r\n\t}\r\n}\r\n"],"names":["UploadContext","MKImageSelect","WebFileUpload","base64ToBlob","md5"],"mappings":";;;;;;;;;;;;;;;;AASO,MAAM,2BAA2BA,cAAAA,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrD,YAAY,SAAiB;AACtB;AAPN;AAQE,SAAK,UAAU;AAAA,EAClB;AAAA,EAEA,MAAM,aAAoC;AAEvC,QAAI,WAAW;AACf,QAAI,YAAY;AAEhB,QAAG,KAAK,SAAQ;AACd,UAAI,UAAU,KAAK,QAAQ,MAAM,GAAG;AACpC,iBAAW,SAAS,QAAQ,CAAC,CAAC,KAAK;AACnC,kBAAY,SAAS,QAAQ,CAAC,CAAC,KAAK;AAAA,IACtC;AAGF,UAAM,SAAS,MAAMC,MAAAA,cAAc,UAAS,SAAS;AAEnD,QAAI,OAAW,OAAO;AAGtB,QAAG,QAAQ,KAAK,QAAQ,aAAa,KAAK,GAAE;AAEpC,YAAA,gBAAgB,IAAIC,QAAAA;AAEpB,YAAA,OAAOC,mBAAa,IAAI;AAGxB,YAAA,eAAe,MAAM,cAAc;AAAA,QACvC,IAAI,KAAK,CAAC,IAAI,GAAG,GAAGC,MAAAA,IAAI,KAAK,OAAO,EAAE,SAAU,CAAA,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,QAAQ,UAAS,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,KAAA,CAAM;AAAA,MAAA;AAG5H,UAAA,aAAa,KAAK,SAAS,KAAK;AAE3B,eAAA;AAAA,UACL,SAAS;AAAA,UAAO,MAAM;AAAA,UAAK,KAAM,aAAa,KAAK;AAAA,QAAA;AAAA,MACrD,OAEE;AACK,eAAA,aAAa,KAAK,KAAK;AAAA,MAChC;AAAA,IACF;AAEF,WAAO,EAAE,SAAS,MAAM,MAAY,KAAK,GAAI;AAAA,EAC9C;AACD;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/modules/ms/image-upload-context/index.ts"],"sourcesContent":["import { MKImageSelect } from \"../components/image-select\";\r\nimport { UploadContext, UploadResult } from \"../../../components/basic/upload-file\";\r\nimport { base64ToBlob, md5 } from \"@maketribe/utils\";\r\nimport { WebFileUpload } from \"@maketribe/request\";\r\n\r\n\r\n/**\r\n * 图片上传上下文\r\n */\r\nexport class ImageUploadContext extends UploadContext {\r\n cutSise?: string;\r\n\r\n /**\r\n * \r\n * @param cutSise 裁切尺寸 \r\n */\r\n constructor(cutSise?: string) {\r\n super();\r\n this.cutSise = cutSise;\r\n }\r\n\r\n async selectFile(isCut?: boolean): Promise<UploadResult> {\r\n\r\n let cutWidth = 0;\r\n let cutHeight = 0;\r\n\r\n if (this.cutSise) {\r\n let cutInfo = this.cutSise.split(\"*\");\r\n cutWidth = parseInt(cutInfo[0]) || 0;\r\n cutHeight = parseInt(cutInfo[1]) || cutWidth;\r\n }\r\n\r\n \r\n const result = await MKImageSelect(cutWidth, cutHeight, isCut);\r\n\r\n let path: any = result.path;\r\n\r\n // base 64 则上传\r\n if (path && path.indexOf(\"data:image/\") == 0) {\r\n\r\n const webFileUpload = new WebFileUpload();\r\n // 开始上传\r\n const blob = base64ToBlob(path);\r\n\r\n // 上传\r\n const uploadResult = await webFileUpload.upload(\r\n new File([blob], `${md5(Math.random().toString())}.${blob.type.toString().replace(\"image/\", \"\") || \"png\"}`, { type: blob.type })\r\n );\r\n\r\n if (uploadResult.data.code !== 200) {\r\n\r\n return {\r\n success: false, path: \"\", msg: uploadResult.data.msg,\r\n };\r\n }\r\n else {\r\n path = uploadResult.data.data.path;\r\n }\r\n }\r\n\r\n return { success: true, path: path, msg: \"\", };\r\n }\r\n}\r\n"],"names":["UploadContext","MKImageSelect","WebFileUpload","base64ToBlob","md5"],"mappings":";;;;;;;;;;;;;;;;AASO,MAAM,2BAA2BA,cAAAA,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpD,YAAY,SAAkB;AACtB;AAPR;AAQE,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,WAAW,OAAwC;AAEvD,QAAI,WAAW;AACf,QAAI,YAAY;AAEhB,QAAI,KAAK,SAAS;AAChB,UAAI,UAAU,KAAK,QAAQ,MAAM,GAAG;AACpC,iBAAW,SAAS,QAAQ,CAAC,CAAC,KAAK;AACnC,kBAAY,SAAS,QAAQ,CAAC,CAAC,KAAK;AAAA,IACtC;AAGA,UAAM,SAAS,MAAMC,MAAAA,cAAc,UAAU,SAAgB;AAE7D,QAAI,OAAY,OAAO;AAGvB,QAAI,QAAQ,KAAK,QAAQ,aAAa,KAAK,GAAG;AAEtC,YAAA,gBAAgB,IAAIC,QAAAA;AAEpB,YAAA,OAAOC,mBAAa,IAAI;AAGxB,YAAA,eAAe,MAAM,cAAc;AAAA,QACvC,IAAI,KAAK,CAAC,IAAI,GAAG,GAAGC,MAAAA,IAAI,KAAK,OAAO,EAAE,SAAU,CAAA,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,QAAQ,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,KAAA,CAAM;AAAA,MAAA;AAG7H,UAAA,aAAa,KAAK,SAAS,KAAK;AAE3B,eAAA;AAAA,UACL,SAAS;AAAA,UAAO,MAAM;AAAA,UAAI,KAAK,aAAa,KAAK;AAAA,QAAA;AAAA,MACnD,OAEG;AACI,eAAA,aAAa,KAAK,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,EAAE,SAAS,MAAM,MAAY,KAAK,GAAI;AAAA,EAC/C;AACF;;"}
@@ -37,6 +37,17 @@ const useElementBlockSelection = (func, toolsbars) => {
37
37
  editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);
38
38
  }
39
39
  };
40
+ const setSelection = async (nodeKey, el) => {
41
+ if (isSelected.value) {
42
+ isSelected.value = false;
43
+ await clearSelection(editor);
44
+ }
45
+ await new Promise((reslove) => setTimeout(reslove, 10));
46
+ await setSelected(editor, true, nodeKey);
47
+ curSelectEl.value = el == null ? editor.getElementByKey(nodeKey) : el;
48
+ curSelectKey.value = nodeKey;
49
+ isSelected.value = isNodeSelected(editor, nodeKey);
50
+ };
40
51
  watch(isSelected, (state) => {
41
52
  if (state) {
42
53
  updateActiveViewState(state ? curSelectEl.value : null);
@@ -49,11 +60,7 @@ const useElementBlockSelection = (func, toolsbars) => {
49
60
  // 更新选中状态
50
61
  editor.registerUpdateListener(() => {
51
62
  isSelected.value = isNodeSelected(editor, curSelectKey.value);
52
- setTimeout(() => {
53
- if (isNodeSelected(editor, curSelectKey.value)) {
54
- updateActiveBox(curSelectEl.value);
55
- }
56
- }, 10);
63
+ setTimeout(() => updateActiveBox(curSelectEl.value), 10);
57
64
  }),
58
65
  // 点击选中
59
66
  editor.registerCommand(CLICK_COMMAND, (event) => {
@@ -62,21 +69,19 @@ const useElementBlockSelection = (func, toolsbars) => {
62
69
  if (nodeKey != null) {
63
70
  event.preventDefault();
64
71
  if (!event.shiftKey) {
65
- clearSelection(editor);
72
+ clearSelection(editor).then(() => {
73
+ setSelection(nodeKey, el);
74
+ });
75
+ } else {
76
+ setSelection(nodeKey, el);
66
77
  }
67
- setTimeout(() => {
68
- setSelected(editor, true, nodeKey);
69
- curSelectEl.value = el;
70
- curSelectKey.value = nodeKey;
71
- isSelected.value = isNodeSelected(editor, nodeKey);
72
- }, 10);
73
78
  return true;
74
79
  }
75
80
  return false;
76
81
  }, COMMAND_PRIORITY_LOW)
77
82
  );
78
83
  });
79
- return { isSelected, curSelectKey, curSelectPos };
84
+ return { isSelected, setSelection, curSelectKey, curSelectPos };
80
85
  };
81
86
  export {
82
87
  REMOVE_ELEMENTBLOCK_COMMAND,
@@ -1 +1 @@
1
- {"version":3,"file":"element-block.js","sources":["../../../../../../src/components/basic/doc-editor/core/element-block.ts"],"sourcesContent":["\r\n\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_LOW,CLICK_COMMAND, LexicalCommand, createCommand, BaseSelection } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { ref,watch } from 'vue'\r\n\r\nimport { \r\n isNodeSelected,setSelected,clearSelection,\r\n} from './utils'\r\n\r\n/**\r\n * toolsbar的函数\r\n */\r\nexport type SelectElementBlockToolsbarFunction = (selection:BaseSelection|null)=>Array<any>|null;\r\n\r\n/**\r\n * 元素抗选中类型\r\n */\r\nexport type SelectElementBlocktEventType = {\r\n element:HTMLElement,\r\n toolsbars:Array<any>|SelectElementBlockToolsbarFunction\r\n}\r\n\r\n/**\r\n * 选中元素快\r\n */\r\nexport const SELECTED_ELEMENTBLOCK_COMMAND: LexicalCommand<SelectElementBlocktEventType|null> = createCommand('SELECTED_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 移除元素快\r\n */\r\nexport const REMOVE_ELEMENTBLOCK_COMMAND: LexicalCommand<undefined|null> = createCommand('REMOVE_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 更新模块工具条位置信息\r\n */\r\nexport const UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND: LexicalCommand<undefined|null> = createCommand('UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND')\r\n\r\n\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type SelectExistFunc = (el:HTMLElement)=>HTMLElement|null\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type ElementSelectionHandle = (el:HTMLElement)=>undefined\r\n\r\n/**\r\n * 使用元素模块激活\r\n */\r\nexport const useElementBlockActive = (func:SelectExistFunc,selectionHandle:ElementSelectionHandle, unSelectionHandle:ElementSelectionHandle)=>{\r\n\r\n const editor = useLexicalComposer()\r\n\r\n let curSelectEl:HTMLElement|null = null\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 点击选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n const el = func(event.target as HTMLElement);\r\n const nodeKey = el?.getAttribute(\"node-key\");\r\n\r\n // 不为null的话则视为点击选中\r\n if(nodeKey){\r\n \r\n event.preventDefault();\r\n\r\n selectionHandle(el as HTMLElement)\r\n\r\n if(curSelectEl && curSelectEl != el){\r\n unSelectionHandle(curSelectEl);\r\n }\r\n curSelectEl = el;\r\n console.log(\"选中\")\r\n return true;\r\n }\r\n else{\r\n curSelectEl && unSelectionHandle(curSelectEl);\r\n curSelectEl = null;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n}\r\n\r\n/**\r\n * 使用元素块选中\r\n */\r\nexport const useElementBlockSelection = (func:SelectExistFunc,toolsbars:Array<any>|SelectElementBlockToolsbarFunction)=>{\r\n\r\n const editor = useLexicalComposer()\r\n const isSelected = ref(false)\r\n const curSelectKey = ref<any>(null)\r\n const curSelectEl = ref<any>(null)\r\n const curSelectPos = ref<any>(null)\r\n // 更新选中框\r\n const updateActiveBox = (el:HTMLElement|null):undefined=>{\r\n if(el){\r\n const selectRect = el.getBoundingClientRect();\r\n curSelectPos.value = {\r\n top:`${selectRect.y}px`,left:`${selectRect.x}px`,\r\n width:`${selectRect.width}px`,height:`${selectRect.height}px`\r\n };\r\n }\r\n }\r\n // 更新选中\r\n const updateActiveViewState = (el:HTMLElement|null):undefined=>{\r\n \r\n if(el){\r\n\r\n updateActiveBox(el);\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,{ \r\n element:curSelectEl.value,\r\n toolsbars:toolsbars\r\n });\r\n }\r\n else{\r\n curSelectEl.value = null;\r\n curSelectKey.value = null;\r\n curSelectPos.value = null;\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,null);\r\n }\r\n }\r\n\r\n // 是否选中\r\n watch(isSelected,(state)=>{\r\n if(state){\r\n updateActiveViewState(state ? curSelectEl.value : null)\r\n }\r\n else{\r\n updateActiveViewState(null)\r\n }\r\n })\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 更新选中状态\r\n editor.registerUpdateListener(() => {\r\n isSelected.value = isNodeSelected(editor, curSelectKey.value);\r\n setTimeout(() => {\r\n if(isNodeSelected(editor, curSelectKey.value)){\r\n updateActiveBox(curSelectEl.value)\r\n }\r\n }, 10);\r\n }),\r\n // 点击选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n const el = func(event.target as HTMLElement);\r\n const nodeKey = el?.getAttribute(\"node-key\");\r\n\r\n // 不为null的话则视为点击选中\r\n if(nodeKey != null){\r\n \r\n event.preventDefault();\r\n \r\n if (!event.shiftKey) { clearSelection(editor); }\r\n\r\n // 选中新的\r\n setTimeout(()=>{\r\n setSelected(editor,true,nodeKey);\r\n curSelectEl.value = el;\r\n curSelectKey.value = nodeKey;\r\n isSelected.value = isNodeSelected(editor, nodeKey);\r\n },10)\r\n \r\n return true;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n\r\n return { isSelected, curSelectKey,curSelectPos };\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;AA2Ba,MAAA,gCAAmF,cAAc,+BAA+B;AAKhI,MAAA,8BAA8D,cAAc,6BAA6B;AAKzG,MAAA,0CAA0E,cAAc,yCAAyC;AA8DjI,MAAA,2BAA2B,CAAC,MAAqB,cAA0D;AAEtH,QAAM,SAAS;AACT,QAAA,aAAa,IAAI,KAAK;AACtB,QAAA,eAAe,IAAS,IAAI;AAC5B,QAAA,cAAc,IAAS,IAAI;AAC3B,QAAA,eAAe,IAAS,IAAI;AAE5B,QAAA,kBAAmB,CAAC,OAAgC;AACxD,QAAG,IAAG;AACE,YAAA,aAAa,GAAG;AACtB,mBAAa,QAAQ;AAAA,QACnB,KAAI,GAAG,WAAW,CAAC;AAAA,QAAK,MAAK,GAAG,WAAW,CAAC;AAAA,QAC5C,OAAM,GAAG,WAAW,KAAK;AAAA,QAAK,QAAO,GAAG,WAAW,MAAM;AAAA,MAAA;AAAA,IAE7D;AAAA,EAAA;AAGI,QAAA,wBAAwB,CAAC,OAAgC;AAE7D,QAAG,IAAG;AAEJ,sBAAgB,EAAE;AAClB,aAAO,gBAAgB,+BAA8B;AAAA,QACnD,SAAQ,YAAY;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,IAAA,OAEC;AACF,kBAAY,QAAQ;AACpB,mBAAa,QAAQ;AACrB,mBAAa,QAAQ;AACd,aAAA,gBAAgB,+BAA8B,IAAI;AAAA,IAC3D;AAAA,EAAA;AAII,QAAA,YAAW,CAAC,UAAQ;AACxB,QAAG,OAAM;AACe,4BAAA,QAAQ,YAAY,QAAQ,IAAI;AAAA,IAAA,OAEpD;AACF,4BAAsB,IAAI;AAAA,IAC5B;AAAA,EAAA,CACD;AAGD,aAAW,MAAI;AAEN,WAAA;AAAA;AAAA,MAEL,OAAO,uBAAuB,MAAM;AAClC,mBAAW,QAAQ,eAAe,QAAQ,aAAa,KAAK;AAC5D,mBAAW,MAAM;AACf,cAAG,eAAe,QAAQ,aAAa,KAAK,GAAE;AAC5C,4BAAgB,YAAY,KAAK;AAAA,UACnC;AAAA,WACC,EAAE;AAAA,MAAA,CACN;AAAA;AAAA,MAED,OAAO,gBAA4B,eAAc,CAAC,UAAU;AAEpD,cAAA,KAAK,KAAK,MAAM,MAAqB;AACrC,cAAA,UAAU,yBAAI,aAAa;AAGjC,YAAG,WAAW,MAAK;AAEjB,gBAAM,eAAe;AAEjB,cAAA,CAAC,MAAM,UAAU;AAAE,2BAAe,MAAM;AAAA,UAAI;AAGhD,qBAAW,MAAI;AACD,wBAAA,QAAO,MAAK,OAAO;AAC/B,wBAAY,QAAQ;AACpB,yBAAa,QAAQ;AACV,uBAAA,QAAQ,eAAe,QAAQ,OAAO;AAAA,aACjD,EAAE;AAEG,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,SACN,oBAAoB;AAAA,IAAA;AAAA,EACzB,CACD;AAGM,SAAA,EAAE,YAAY,cAAa;AAEpC;"}
1
+ {"version":3,"file":"element-block.js","sources":["../../../../../../src/components/basic/doc-editor/core/element-block.ts"],"sourcesContent":["\r\n\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_LOW,CLICK_COMMAND, LexicalCommand, createCommand, BaseSelection } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { ref,watch } from 'vue'\r\n\r\nimport { \r\n isNodeSelected,setSelected,clearSelection,\r\n} from './utils'\r\n\r\n/**\r\n * toolsbar的函数\r\n */\r\nexport type SelectElementBlockToolsbarFunction = (selection:BaseSelection|null)=>Array<any>|null;\r\n\r\n/**\r\n * 元素抗选中类型\r\n */\r\nexport type SelectElementBlocktEventType = {\r\n element:HTMLElement,\r\n toolsbars:Array<any>|SelectElementBlockToolsbarFunction\r\n}\r\n\r\n/**\r\n * 选中元素快\r\n */\r\nexport const SELECTED_ELEMENTBLOCK_COMMAND: LexicalCommand<SelectElementBlocktEventType|null> = createCommand('SELECTED_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 移除元素快\r\n */\r\nexport const REMOVE_ELEMENTBLOCK_COMMAND: LexicalCommand<undefined|null> = createCommand('REMOVE_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 更新模块工具条位置信息\r\n */\r\nexport const UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND: LexicalCommand<undefined|null> = createCommand('UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND')\r\n\r\n\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type SelectExistFunc = (el:HTMLElement)=>HTMLElement|null\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type ElementSelectionHandle = (el:HTMLElement)=>undefined\r\n\r\n/**\r\n * 使用元素模块激活\r\n */\r\nexport const useElementBlockActive = (func:SelectExistFunc,selectionHandle:ElementSelectionHandle, unSelectionHandle:ElementSelectionHandle)=>{\r\n\r\n const editor = useLexicalComposer()\r\n\r\n let curSelectEl:HTMLElement|null = null\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 点击选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n const el = func(event.target as HTMLElement);\r\n const nodeKey = el?.getAttribute(\"node-key\");\r\n\r\n // 不为null的话则视为点击选中\r\n if(nodeKey){\r\n \r\n event.preventDefault();\r\n\r\n selectionHandle(el as HTMLElement)\r\n\r\n if(curSelectEl && curSelectEl != el){\r\n unSelectionHandle(curSelectEl);\r\n }\r\n curSelectEl = el;\r\n return true;\r\n }\r\n else{\r\n curSelectEl && unSelectionHandle(curSelectEl);\r\n curSelectEl = null;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n}\r\n\r\n/**\r\n * 使用元素块选中\r\n */\r\nexport const useElementBlockSelection = (func:SelectExistFunc,toolsbars:Array<any>|SelectElementBlockToolsbarFunction)=>{\r\n\r\n const editor = useLexicalComposer()\r\n const isSelected = ref(false)\r\n const curSelectKey = ref<any>(null)\r\n const curSelectEl = ref<any>(null)\r\n const curSelectPos = ref<any>(null)\r\n // 更新选中框\r\n const updateActiveBox = (el:HTMLElement|null):undefined=>{\r\n if(el){\r\n const selectRect = el.getBoundingClientRect();\r\n curSelectPos.value = {\r\n top:`${selectRect.y}px`,left:`${selectRect.x}px`,\r\n width:`${selectRect.width}px`,height:`${selectRect.height}px`\r\n };\r\n }\r\n }\r\n // 更新选中\r\n const updateActiveViewState = (el:HTMLElement|null):undefined=>{\r\n \r\n if(el){\r\n\r\n updateActiveBox(el);\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,{ \r\n element:curSelectEl.value,\r\n toolsbars:toolsbars\r\n });\r\n }\r\n else{\r\n curSelectEl.value = null;\r\n curSelectKey.value = null;\r\n curSelectPos.value = null;\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,null);\r\n }\r\n }\r\n\r\n // 设置选中\r\n const setSelection = async (nodeKey:string,el:HTMLElement|null|undefined)=>{\r\n\r\n // 没来得及取消的则先取消\r\n if(isSelected.value){ \r\n isSelected.value = false;\r\n await clearSelection(editor);\r\n }\r\n // 稍微停顿下\r\n await new Promise(reslove=>setTimeout(reslove, 10));\r\n await setSelected(editor,true,nodeKey);\r\n curSelectEl.value = el == null ? editor.getElementByKey(nodeKey) : el;\r\n curSelectKey.value = nodeKey;\r\n isSelected.value = isNodeSelected(editor, nodeKey);\r\n }\r\n // 是否选中\r\n watch(isSelected,(state)=>{\r\n if(state){\r\n updateActiveViewState(state ? curSelectEl.value : null)\r\n }\r\n else{\r\n updateActiveViewState(null)\r\n }\r\n })\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 更新选中状态\r\n editor.registerUpdateListener(() => {\r\n \r\n isSelected.value = isNodeSelected(editor, curSelectKey.value);\r\n setTimeout(()=>updateActiveBox(curSelectEl.value),10)\r\n \r\n }),\r\n // 点击选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n const el = func(event.target as HTMLElement);\r\n const nodeKey = el?.getAttribute(\"node-key\");\r\n\r\n // 不为null的话则视为点击选中\r\n if(nodeKey != null){\r\n \r\n event.preventDefault();\r\n \r\n if (!event.shiftKey) { \r\n // 先取消\r\n clearSelection(editor).then(()=>{\r\n // 设置选中\r\n setSelection(nodeKey,el)\r\n })\r\n }\r\n else{\r\n // 设置选中\r\n setSelection(nodeKey,el)\r\n }\r\n\r\n return true;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n\r\n return { isSelected,setSelection, curSelectKey,curSelectPos };\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;AA2Ba,MAAA,gCAAmF,cAAc,+BAA+B;AAKhI,MAAA,8BAA8D,cAAc,6BAA6B;AAKzG,MAAA,0CAA0E,cAAc,yCAAyC;AA6DjI,MAAA,2BAA2B,CAAC,MAAqB,cAA0D;AAEtH,QAAM,SAAS;AACT,QAAA,aAAa,IAAI,KAAK;AACtB,QAAA,eAAe,IAAS,IAAI;AAC5B,QAAA,cAAc,IAAS,IAAI;AAC3B,QAAA,eAAe,IAAS,IAAI;AAE5B,QAAA,kBAAmB,CAAC,OAAgC;AACxD,QAAG,IAAG;AACE,YAAA,aAAa,GAAG;AACtB,mBAAa,QAAQ;AAAA,QACnB,KAAI,GAAG,WAAW,CAAC;AAAA,QAAK,MAAK,GAAG,WAAW,CAAC;AAAA,QAC5C,OAAM,GAAG,WAAW,KAAK;AAAA,QAAK,QAAO,GAAG,WAAW,MAAM;AAAA,MAAA;AAAA,IAE7D;AAAA,EAAA;AAGI,QAAA,wBAAwB,CAAC,OAAgC;AAE7D,QAAG,IAAG;AAEJ,sBAAgB,EAAE;AAClB,aAAO,gBAAgB,+BAA8B;AAAA,QACnD,SAAQ,YAAY;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,IAAA,OAEC;AACF,kBAAY,QAAQ;AACpB,mBAAa,QAAQ;AACrB,mBAAa,QAAQ;AACd,aAAA,gBAAgB,+BAA8B,IAAI;AAAA,IAC3D;AAAA,EAAA;AAII,QAAA,eAAe,OAAO,SAAe,OAAgC;AAGzE,QAAG,WAAW,OAAM;AAClB,iBAAW,QAAQ;AACnB,YAAO,eAAe,MAAM;AAAA,IAC9B;AAEA,UAAM,IAAI,QAAQ,CAAA,YAAS,WAAW,SAAS,EAAE,CAAC;AAC5C,UAAA,YAAY,QAAO,MAAK,OAAO;AACrC,gBAAY,QAAQ,MAAM,OAAO,OAAO,gBAAgB,OAAO,IAAI;AACnE,iBAAa,QAAQ;AACV,eAAA,QAAQ,eAAe,QAAQ,OAAO;AAAA,EAAA;AAG7C,QAAA,YAAW,CAAC,UAAQ;AACxB,QAAG,OAAM;AACe,4BAAA,QAAQ,YAAY,QAAQ,IAAI;AAAA,IAAA,OAEpD;AACF,4BAAsB,IAAI;AAAA,IAC5B;AAAA,EAAA,CACD;AAGD,aAAW,MAAI;AAEN,WAAA;AAAA;AAAA,MAEL,OAAO,uBAAuB,MAAM;AAElC,mBAAW,QAAQ,eAAe,QAAQ,aAAa,KAAK;AAC5D,mBAAW,MAAI,gBAAgB,YAAY,KAAK,GAAE,EAAE;AAAA,MAAA,CAErD;AAAA;AAAA,MAED,OAAO,gBAA4B,eAAc,CAAC,UAAU;AAEpD,cAAA,KAAK,KAAK,MAAM,MAAqB;AACrC,cAAA,UAAU,yBAAI,aAAa;AAGjC,YAAG,WAAW,MAAK;AAEjB,gBAAM,eAAe;AAEjB,cAAA,CAAC,MAAM,UAAU;AAEJ,2BAAA,MAAM,EAAE,KAAK,MAAI;AAE9B,2BAAa,SAAQ,EAAE;AAAA,YAAA,CACxB;AAAA,UAAA,OAEC;AAEF,yBAAa,SAAQ,EAAE;AAAA,UACzB;AAEO,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,SACN,oBAAoB;AAAA,IAAA;AAAA,EACzB,CACD;AAGD,SAAO,EAAE,YAAW,cAAc,cAAa,aAAa;AAE9D;"}