@maketribe/ms-app 3.2.41 → 3.2.42

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 (31) hide show
  1. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +3 -3
  2. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +1 -27
  4. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  5. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js +23 -5
  6. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  7. package/dist/cjs/components/data-model/data-table/views/table/table.js +4 -16
  8. package/dist/cjs/components/data-model/data-table/views/table/table.js.map +1 -1
  9. package/dist/cjs/message-impl/DialogerImpl.js +1 -1
  10. package/dist/cjs/message-impl/DialogerImpl.js.map +1 -1
  11. package/dist/cjs/modules/ms/components/material-list/material-item.vue.js +34 -1
  12. package/dist/cjs/modules/ms/components/material-list/material-item.vue.js.map +1 -1
  13. package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
  14. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js +9 -0
  15. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  16. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +3 -3
  17. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  18. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +2 -28
  19. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  20. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js +24 -6
  21. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  22. package/dist/esm/components/data-model/data-table/views/table/table.js +4 -16
  23. package/dist/esm/components/data-model/data-table/views/table/table.js.map +1 -1
  24. package/dist/esm/message-impl/DialogerImpl.js +1 -1
  25. package/dist/esm/message-impl/DialogerImpl.js.map +1 -1
  26. package/dist/esm/modules/ms/components/material-list/material-item.vue.js +34 -1
  27. package/dist/esm/modules/ms/components/material-list/material-item.vue.js.map +1 -1
  28. package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
  29. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js +9 -0
  30. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  31. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"MsConfigTable.js","sources":["../../../../../../src/modules/ms/dataviews/ms-config/MsConfigTable.ts"],"sourcesContent":["import { Where } from \"@maketribe/request\";\r\nimport {\r\n DataTable,\r\n DataTableOptions,\r\n TableColumn,\r\n TableActionColumn,\r\n TableHeaderItem,\r\n RefreshButton,\r\n AddButton,\r\n FilterColumn,\r\n} from \"@maketribe/dm\";\r\nimport { MsConfig } from \"./MsConfigForm\";\r\nimport { R, ResponseConfig } from \"@maketribe/request\";\r\nimport { MSAppClient } from \"../../../../core\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class MsConfigTable extends DataTable<MsConfig> {\r\n static [DATA_MODEL_NAME]: string = \"mk-sys-config\";\r\n\r\n private static _instance: MsConfigTable | null = null;\r\n\r\n static get instance(): MsConfigTable {\r\n if (!MsConfigTable._instance) {\r\n MsConfigTable._instance = new MsConfigTable();\r\n MsConfigTable._instance.init().then(() => {\r\n MsConfigTable._instance!.dataFilter.setReady();\r\n });\r\n }\r\n\r\n return MsConfigTable._instance;\r\n }\r\n\r\n constructor(options: DataTableOptions = {}) {\r\n super({\r\n name: MsConfigTable[DATA_MODEL_NAME],\r\n moduleName: MODULE_NAME,\r\n ...options,\r\n });\r\n }\r\n\r\n protected async initialize() {\r\n await super.initialize();\r\n\r\n this.header.rightArea = [\r\n new RefreshButton(),\r\n new AddButton(),\r\n new TableHeaderItem({\r\n componentInfo: \"MKBatchOpt\",\r\n predicate: () =>\r\n MSAppClient.instance?.userSession?.userInfo?.isSuper ?? false,\r\n }),\r\n ];\r\n\r\n this.dataFilter.setColumns([\r\n new FilterColumn({ name: \"key\", label: \"配置键\", search: true }),\r\n ]);\r\n\r\n this.setColumns([\r\n new TableColumn({ name: \"key\", label: \"配置键\" }),\r\n new TableColumn({ name: \"memo\", label: \"备注\" }),\r\n new TableActionColumn(),\r\n ]);\r\n }\r\n\r\n formatItem(item: MsConfig): MsConfig {\r\n let value = item.value;\r\n\r\n try {\r\n value = JSON.parse(value);\r\n } catch (e) {}\r\n\r\n return { ...item, value };\r\n }\r\n\r\n static async loadConfig<T = any>(\r\n key: string\r\n ): Promise<ResponseConfig<R<MsConfig<T>>>> {\r\n const where = new Where();\r\n\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n const response = await dataViewRequest.allList({\r\n data: { condition: where },\r\n });\r\n\r\n return {\r\n ...response,\r\n data: {\r\n ...response.data,\r\n data: response.data.data?.[0] ?? null,\r\n },\r\n };\r\n }\r\n\r\n static async getConfigValue<T = any>(key: string): Promise<T | null> {\r\n const where = new Where();\r\n\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n const response = await dataViewRequest.query({\r\n data: { condition: where, pc: 1, pn: 1 },\r\n });\r\n\r\n if (response.data.code !== 200) {\r\n throw new Error(response.data.msg);\r\n }\r\n\r\n try {\r\n return JSON.parse(response.data.data[0]?.value);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n static async setConfigValue(key: string, value: any) {\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n\r\n const where = new Where();\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const listResponse = await dataViewRequest.query({\r\n data: { condition: where, pc: 1, pn: 1 },\r\n });\r\n\r\n if (listResponse.data.code !== 200) {\r\n throw new Error(listResponse.data.msg);\r\n }\r\n\r\n const response =\r\n listResponse.data.data.length === 0\r\n ? await dataViewRequest.add({ key, value })\r\n : await dataViewRequest.update({\r\n ...listResponse.data.data[0],\r\n value,\r\n });\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\n(window as any).MsConfigTable = MsConfigTable;\r\n"],"names":["DataTable","DATA_MODEL_NAME","MODULE_NAME","RefreshButton","AddButton","TableHeaderItem","MSAppClient","FilterColumn","TableColumn","TableActionColumn","Where","_a"],"mappings":"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"}
1
+ {"version":3,"file":"MsConfigTable.js","sources":["../../../../../../src/modules/ms/dataviews/ms-config/MsConfigTable.ts"],"sourcesContent":["import { Where } from \"@maketribe/request\";\r\nimport {\r\n DataTable,\r\n DataTableOptions,\r\n TableColumn,\r\n TableActionColumn,\r\n TableHeaderItem,\r\n RefreshButton,\r\n AddButton,\r\n FilterColumn,\r\n} from \"@maketribe/dm\";\r\nimport { MsConfig } from \"./MsConfigForm\";\r\nimport { R, ResponseConfig } from \"@maketribe/request\";\r\nimport { MSAppClient } from \"../../../../core\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class MsConfigTable extends DataTable<MsConfig> {\r\n static [DATA_MODEL_NAME]: string = \"mk-sys-config\";\r\n\r\n private static _instance: MsConfigTable | null = null;\r\n\r\n static get instance(): MsConfigTable {\r\n if (!MsConfigTable._instance) {\r\n MsConfigTable._instance = new MsConfigTable();\r\n MsConfigTable._instance.init().then(() => {\r\n MsConfigTable._instance!.dataFilter.setReady();\r\n });\r\n }\r\n\r\n return MsConfigTable._instance;\r\n }\r\n\r\n constructor(options: DataTableOptions = {}) {\r\n super({\r\n name: MsConfigTable[DATA_MODEL_NAME],\r\n moduleName: MODULE_NAME,\r\n sortFieldName: \"sortNo\",\r\n ...options,\r\n });\r\n }\r\n\r\n protected async initialize() {\r\n await super.initialize();\r\n\r\n this.header.rightArea = [\r\n new RefreshButton(),\r\n new AddButton(),\r\n new TableHeaderItem({\r\n componentInfo: \"MKBatchOpt\",\r\n predicate: () =>\r\n MSAppClient.instance?.userSession?.userInfo?.isSuper ?? false,\r\n }),\r\n ];\r\n\r\n this.dataFilter.setColumns([\r\n new FilterColumn({ name: \"key\", label: \"配置键\", search: true }),\r\n ]);\r\n\r\n this.setColumns([\r\n new TableColumn({ name: \"key\", label: \"配置键\" }),\r\n new TableColumn({ name: \"memo\", label: \"备注\" }),\r\n new TableColumn({\r\n name: \"sortNo\",\r\n label: \"排序\",\r\n componentInfo: \"MKColumnSort\",\r\n componentProps: {\r\n // drag: true\r\n }\r\n }),\r\n new TableActionColumn(),\r\n ]);\r\n }\r\n\r\n formatItem(item: MsConfig): MsConfig {\r\n let value = item.value;\r\n\r\n try {\r\n value = JSON.parse(value);\r\n } catch (e) {}\r\n\r\n return { ...item, value };\r\n }\r\n\r\n static async loadConfig<T = any>(\r\n key: string\r\n ): Promise<ResponseConfig<R<MsConfig<T>>>> {\r\n const where = new Where();\r\n\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n const response = await dataViewRequest.allList({\r\n data: { condition: where },\r\n });\r\n\r\n return {\r\n ...response,\r\n data: {\r\n ...response.data,\r\n data: response.data.data?.[0] ?? null,\r\n },\r\n };\r\n }\r\n\r\n static async getConfigValue<T = any>(key: string): Promise<T | null> {\r\n const where = new Where();\r\n\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n const response = await dataViewRequest.query({\r\n data: { condition: where, pc: 1, pn: 1 },\r\n });\r\n\r\n if (response.data.code !== 200) {\r\n throw new Error(response.data.msg);\r\n }\r\n\r\n try {\r\n return JSON.parse(response.data.data[0]?.value);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n static async setConfigValue(key: string, value: any) {\r\n const dataViewRequest = MsConfigTable.instance.dataViewRequest;\r\n\r\n const where = new Where();\r\n where.addCondition(\"key\", \"=\", key);\r\n\r\n const listResponse = await dataViewRequest.query({\r\n data: { condition: where, pc: 1, pn: 1 },\r\n });\r\n\r\n if (listResponse.data.code !== 200) {\r\n throw new Error(listResponse.data.msg);\r\n }\r\n\r\n const response =\r\n listResponse.data.data.length === 0\r\n ? await dataViewRequest.add({ key, value })\r\n : await dataViewRequest.update({\r\n ...listResponse.data.data[0],\r\n value,\r\n });\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\n(window as any).MsConfigTable = MsConfigTable;\r\n"],"names":["DataTable","DATA_MODEL_NAME","MODULE_NAME","RefreshButton","AddButton","TableHeaderItem","MSAppClient","FilterColumn","TableColumn","TableActionColumn","Where","_a"],"mappings":"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"}
@@ -244,12 +244,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
244
244
  createVNode(_component_el_color_picker, {
245
245
  modelValue: bgColor.value,
246
246
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => bgColor.value = $event),
247
- disabled: disabled.value
247
+ disabled: disabled.value,
248
+ onChange: setBgColor
248
249
  }, null, 8, ["modelValue", "disabled"]),
249
250
  createVNode(_component_MKSvgIcon, {
250
251
  class: "view",
251
- iconClass: "doc-background-color",
252
- onChange: setBgColor
252
+ iconClass: "doc-background-color"
253
253
  })
254
254
  ]),
255
255
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { showLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\nconst isSubscript = ref(false)\r\nconst isSuperscript = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await showLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n isSubscript.value = selection.hasFormat('subscript')\r\n isSuperscript.value = selection.hasFormat('superscript')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nconst setFontColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n}\r\n\r\n// bg颜色\r\nconst setBgColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n}\r\n\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n })\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" @change=\"setFontColor\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" @change=\"setBgColor\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSubscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\">\r\n <MKSvgIcon iconClass=\"doc-sub\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSuperscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\">\r\n <MKSvgIcon iconClass=\"doc-sup\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["parent"],"mappings":"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"}
1
+ {"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { showLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\nconst isSubscript = ref(false)\r\nconst isSuperscript = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await showLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n isSubscript.value = selection.hasFormat('subscript')\r\n isSuperscript.value = selection.hasFormat('superscript')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nconst setFontColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n}\r\n\r\n// bg颜色\r\nconst setBgColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n}\r\n\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n })\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" @change=\"setFontColor\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" @change=\"setBgColor\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSubscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\">\r\n <MKSvgIcon iconClass=\"doc-sub\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSuperscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\">\r\n <MKSvgIcon iconClass=\"doc-sup\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["parent"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, onMounted, onUnmounted, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, unref, normalizeClass, Fragment, renderList, createBlock, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, ref, onMounted, onUnmounted, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, unref, Fragment, renderList, createBlock, createTextVNode, toDisplayString } from "vue";
2
2
  import { CAN_UNDO_COMMAND, CAN_REDO_COMMAND, $getSelection, $isNodeSelection, $isRangeSelection, UNDO_COMMAND, REDO_COMMAND } from "lexical";
3
3
  import { mergeRegister, $findMatchingParent } from "@lexical/utils";
4
4
  import "@lexical/text";
@@ -10,10 +10,10 @@ import "@lexical/list";
10
10
  import "@lexical/dragon";
11
11
  import "@lexical/plain-text";
12
12
  import "@lexical/rich-text";
13
- import { ToolbarExtendPlugins, DEVICE_VIEW_MODE } from "../../core/index.js";
14
13
  import _sfc_main$3 from "./PreviewToolbar.vue.js";
15
14
  import _sfc_main$2 from "./FontStyleTool.vue.js";
16
15
  import _sfc_main$1 from "./ContentStyleTool.vue.js";
16
+ import { ToolbarExtendPlugins } from "../../core/index.js";
17
17
  import { $isTextGridNode } from "../GridPlugin/TextGridNode.js";
18
18
  import "../GridPlugin/LayoutGridNode.js";
19
19
  import { $isImageTextGridNode } from "../GridPlugin/ImageTextGridNode.js";
@@ -126,32 +126,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
126
126
  createVNode(_component_el_divider, { direction: "vertical" }),
127
127
  createVNode(_sfc_main$2),
128
128
  createVNode(_component_el_divider, { direction: "vertical" }),
129
- createVNode(_component_el_button_group, null, {
130
- default: withCtx(() => [
131
- createVNode(_component_el_button, {
132
- text: "",
133
- class: normalizeClass(`${unref(DEVICE_VIEW_MODE) == "pc" ? "active" : ""}`),
134
- onClick: _cache[2] || (_cache[2] = ($event) => DEVICE_VIEW_MODE.value = "pc")
135
- }, {
136
- default: withCtx(() => [
137
- createVNode(_component_MKSvgIcon, { iconClass: "Platform" })
138
- ]),
139
- _: 1
140
- }, 8, ["class"]),
141
- createVNode(_component_el_button, {
142
- text: "",
143
- class: normalizeClass(`${unref(DEVICE_VIEW_MODE) == "mobile" ? "active" : ""}`),
144
- onClick: _cache[3] || (_cache[3] = ($event) => DEVICE_VIEW_MODE.value = "mobile")
145
- }, {
146
- default: withCtx(() => [
147
- createVNode(_component_MKSvgIcon, { iconClass: "Iphone" })
148
- ]),
149
- _: 1
150
- }, 8, ["class"])
151
- ]),
152
- _: 1
153
- }),
154
- createVNode(_component_el_divider, { direction: "vertical" }),
155
129
  createVNode(_component_el_dropdown, { disabled: toolbarDisabled.value }, {
156
130
  dropdown: withCtx(() => [
157
131
  createVNode(_component_el_dropdown_menu, null, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n$getSelection,\r\n$isNodeSelection,\r\n $isRangeSelection,\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport PreviewToolbar from \"./PreviewToolbar.vue\"\r\nimport FontStyleToolbar from \"./FontStyleTool.vue\"\r\nimport ContentStyleToolbar from \"./ContentStyleTool.vue\"\r\nimport { ToolbarExtendPlugins } from \"../../core\"\r\nimport { $isTextGridNode,$isImageTextGridNode,$isModuleGridNode } from \"../GridPlugin\"\r\nimport { $isModuleBlockNode } from \"../ModulePlugin\"\r\n// 参数\r\ndefineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n\r\nconst LowPriority: CommandListenerPriority = 1\r\n\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst toolbarDisabled = ref(false)\r\nconst editor = useLexicalComposer()\r\n\r\nconst canUndo = ref(false)\r\nconst canRedo = ref(false)\r\n\r\nonMounted(() => {\r\n \r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerCommand(\r\n CAN_UNDO_COMMAND,\r\n (payload: boolean) => {\r\n canUndo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerCommand(\r\n CAN_REDO_COMMAND,\r\n (payload: boolean) => {\r\n canRedo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if(node){\r\n if ($isModuleBlockNode(node) || $isTextGridNode(node) || $isImageTextGridNode(node) || $isModuleGridNode(node) ) {\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isTextGridNode(parent)\r\n });\r\n\r\n // 文本节点内 也不允许插入奇怪的东西\r\n if(element != null && $isTextGridNode(element.getParent())){\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n })\r\n })\r\n )\r\n\r\n onUnmounted(() => {\r\n ToolbarExtendPlugins.length = 0;\r\n unregisterMergeListener()\r\n })\r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-doc-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :disabled=\"!canUndo\" @click=\"editor.dispatchCommand(UNDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshLeft\" /> \r\n </el-button>\r\n <el-button text :disabled=\"!canRedo\" @click=\"editor.dispatchCommand(REDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshRight\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 内容 -->\r\n <ContentStyleToolbar />\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 文字样式 -->\r\n <FontStyleToolbar /> \r\n <el-divider direction=\"vertical\" />\r\n \r\n <el-button-group>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='pc' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='mobile' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown :disabled=\"toolbarDisabled\">\r\n <el-button text :disabled=\"toolbarDisabled\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 5px;\" /> 插入\r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"item in ToolbarExtendPlugins\" :key=\"item\" @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" /> \r\n {{item.text}}\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <PreviewToolbar :js=\"js\" :css=\"css\" />\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,cAAuC;;;;;;;;AAEvC,UAAA,aAAa,IAA2B,IAAI;AAC5C,UAAA,kBAAkB,IAAI,KAAK;AACjC,UAAM,SAAS;AAET,UAAA,UAAU,IAAI,KAAK;AACnB,UAAA,UAAU,IAAI,KAAK;AAEzB,cAAU,MAAM;AAEd,YAAM,0BAA0B;AAAA,QAC9B,OAAO;AAAA,UACL;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACjD,sBAAY,KAAK,MAAM;AAErB,kBAAM,YAAY;AACZ,kBAAA,OAAO,iBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AAEtE,gBAAG,MAAK;AACF,kBAAA,mBAAmB,IAAI,KAAK,gBAAgB,IAAI,KAAK,qBAAqB,IAAI,KAAK,kBAAkB,IAAI,GAAI;AAC/G,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,WAEO,kBAAkB,SAAS,GAAG;AAE/B,oBAAA,aAAa,UAAU,OAAO,QAAQ;AAExC,kBAAA,UAAU,WAAW,aAAa,SAClC,aACA,oBAAoB,YAAY,CAAC,MAAM;AACjC,sBAAA,SAAS,EAAE;AACV,uBAAA,WAAW,QAAQ,gBAAgB,MAAM;AAAA,cAAA,CACjD;AAGH,kBAAG,WAAW,QAAQ,gBAAgB,QAAQ,UAAW,CAAA,GAAE;AACzD,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,OAEE;AACF,8BAAgB,QAAQ;AAAA,YAC1B;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AAAA,MAAA;AAGH,kBAAY,MAAM;AAChB,6BAAqB,SAAS;AACN;MAAA,CACzB;AAAA,IAAA,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n$getSelection,\r\n$isNodeSelection,\r\n $isRangeSelection,\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport PreviewToolbar from \"./PreviewToolbar.vue\"\r\nimport FontStyleToolbar from \"./FontStyleTool.vue\"\r\nimport ContentStyleToolbar from \"./ContentStyleTool.vue\"\r\nimport { ToolbarExtendPlugins } from \"../../core\"\r\nimport { $isTextGridNode,$isImageTextGridNode,$isModuleGridNode } from \"../GridPlugin\"\r\nimport { $isModuleBlockNode } from \"../ModulePlugin\"\r\n// 参数\r\ndefineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n\r\nconst LowPriority: CommandListenerPriority = 1\r\n\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst toolbarDisabled = ref(false)\r\nconst editor = useLexicalComposer()\r\n\r\nconst canUndo = ref(false)\r\nconst canRedo = ref(false)\r\n\r\nonMounted(() => {\r\n \r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerCommand(\r\n CAN_UNDO_COMMAND,\r\n (payload: boolean) => {\r\n canUndo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerCommand(\r\n CAN_REDO_COMMAND,\r\n (payload: boolean) => {\r\n canRedo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if(node){\r\n if ($isModuleBlockNode(node) || $isTextGridNode(node) || $isImageTextGridNode(node) || $isModuleGridNode(node) ) {\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isTextGridNode(parent)\r\n });\r\n\r\n // 文本节点内 也不允许插入奇怪的东西\r\n if(element != null && $isTextGridNode(element.getParent())){\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n })\r\n })\r\n )\r\n\r\n onUnmounted(() => {\r\n ToolbarExtendPlugins.length = 0;\r\n unregisterMergeListener()\r\n })\r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-doc-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :disabled=\"!canUndo\" @click=\"editor.dispatchCommand(UNDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshLeft\" /> \r\n </el-button>\r\n <el-button text :disabled=\"!canRedo\" @click=\"editor.dispatchCommand(REDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshRight\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 内容 -->\r\n <ContentStyleToolbar />\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 文字样式 -->\r\n <FontStyleToolbar /> \r\n <!-- <el-divider direction=\"vertical\" />\r\n \r\n <el-button-group>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='pc' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='mobile' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group> -->\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown :disabled=\"toolbarDisabled\">\r\n <el-button text :disabled=\"toolbarDisabled\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 5px;\" /> 插入\r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"item in ToolbarExtendPlugins\" :key=\"item\" @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" /> \r\n {{item.text}}\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <PreviewToolbar :js=\"js\" :css=\"css\" />\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,cAAuC;;;;;;;;AAEvC,UAAA,aAAa,IAA2B,IAAI;AAC5C,UAAA,kBAAkB,IAAI,KAAK;AACjC,UAAM,SAAS;AAET,UAAA,UAAU,IAAI,KAAK;AACnB,UAAA,UAAU,IAAI,KAAK;AAEzB,cAAU,MAAM;AAEd,YAAM,0BAA0B;AAAA,QAC9B,OAAO;AAAA,UACL;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACjD,sBAAY,KAAK,MAAM;AAErB,kBAAM,YAAY;AACZ,kBAAA,OAAO,iBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AAEtE,gBAAG,MAAK;AACF,kBAAA,mBAAmB,IAAI,KAAK,gBAAgB,IAAI,KAAK,qBAAqB,IAAI,KAAK,kBAAkB,IAAI,GAAI;AAC/G,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,WAEO,kBAAkB,SAAS,GAAG;AAE/B,oBAAA,aAAa,UAAU,OAAO,QAAQ;AAExC,kBAAA,UAAU,WAAW,aAAa,SAClC,aACA,oBAAoB,YAAY,CAAC,MAAM;AACjC,sBAAA,SAAS,EAAE;AACV,uBAAA,WAAW,QAAQ,gBAAgB,MAAM;AAAA,cAAA,CACjD;AAGH,kBAAG,WAAW,QAAQ,gBAAgB,QAAQ,UAAW,CAAA,GAAE;AACzD,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,OAEE;AACF,8BAAgB,QAAQ;AAAA,YAC1B;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AAAA,MAAA;AAGH,kBAAY,MAAM;AAChB,6BAAqB,SAAS;AACN;MAAA,CACzB;AAAA,IAAA,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, createVNode } from "vue";
1
+ import { defineComponent, inject, createVNode } from "vue";
2
2
  import { columnSortProps } from "./column-sort-options.js";
3
3
  import { ElTooltip } from "element-plus";
4
4
  import { MKSvgIcon } from "../../../../basic/svg-icon/index.js";
@@ -26,17 +26,31 @@ import "../../../../basic/doc-editor/index.js";
26
26
  import "../../../../basic/copy-container/index.js";
27
27
  import "../../../../basic/image-cropper/index.js";
28
28
  import "../../../../basic/visual-page-editor/index.js";
29
+ import { DATA_TABLE_CONTEXT_KEY } from "../../token.js";
29
30
  const ColumnSort = /* @__PURE__ */ defineComponent({
30
31
  name: "MKColumnSort",
31
32
  props: columnSortProps,
32
33
  setup(props) {
34
+ const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY);
35
+ const handleMoveUp = () => {
36
+ dataTableContext.dataTable.moveUp(props.row);
37
+ };
38
+ const handleMoveDown = () => {
39
+ dataTableContext.dataTable.moveDown(props.row);
40
+ };
41
+ const handleToTop = () => {
42
+ dataTableContext.dataTable.toTop(props.row);
43
+ };
44
+ const handleToBottom = () => {
45
+ dataTableContext.dataTable.toBottom(props.row);
46
+ };
33
47
  return () => {
34
48
  let children = null;
35
49
  if (props.drag) {
36
50
  children = createVNode("span", {
37
51
  "class": "mk-column-sort__drag"
38
52
  }, [createVNode(MKSvgIcon, {
39
- "iconClass": "sort"
53
+ "iconClass": "Rank"
40
54
  }, null)]);
41
55
  } else {
42
56
  children = createVNode("span", {
@@ -46,28 +60,32 @@ const ColumnSort = /* @__PURE__ */ defineComponent({
46
60
  "placement": "top"
47
61
  }, {
48
62
  default: () => [createVNode(MKSvgIcon, {
49
- "iconClass": "top"
63
+ "iconClass": "Top",
64
+ "onClick": handleToTop
50
65
  }, null)]
51
66
  }), createVNode(ElTooltip, {
52
67
  "content": "上移",
53
68
  "placement": "top"
54
69
  }, {
55
70
  default: () => [createVNode(MKSvgIcon, {
56
- "iconClass": "up"
71
+ "iconClass": "ArrowUpBold",
72
+ "onClick": handleMoveUp
57
73
  }, null)]
58
74
  }), createVNode(ElTooltip, {
59
75
  "content": "下移",
60
76
  "placement": "top"
61
77
  }, {
62
78
  default: () => [createVNode(MKSvgIcon, {
63
- "iconClass": "down"
79
+ "iconClass": "ArrowDownBold",
80
+ "onClick": handleMoveDown
64
81
  }, null)]
65
82
  }), createVNode(ElTooltip, {
66
83
  "content": "置底",
67
84
  "placement": "top"
68
85
  }, {
69
86
  default: () => [createVNode(MKSvgIcon, {
70
- "iconClass": "bottom"
87
+ "iconClass": "Bottom",
88
+ "onClick": handleToBottom
71
89
  }, null)]
72
90
  })]);
73
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"column-sort.js","sources":["../../../../../../../src/components/data-model/data-table/components/column-sort/column-sort.tsx"],"sourcesContent":["import { defineComponent } from \"vue\";\r\nimport { columnSortProps } from \"./column-sort-options\";\r\nimport { MKSvgIcon } from \"../../../../basic\";\r\nimport { ElTooltip } from \"element-plus\";\r\n\r\nexport default defineComponent({\r\n name: \"MKColumnSort\",\r\n props: columnSortProps,\r\n setup(props) {\r\n return () => {\r\n let children = null;\r\n\r\n if (props.drag) {\r\n children = (\r\n <span class=\"mk-column-sort__drag\">\r\n <MKSvgIcon iconClass=\"sort\" />\r\n </span>\r\n );\r\n } else {\r\n children = (\r\n <span class=\"mk-column-sort__switch\">\r\n <ElTooltip content=\"置顶\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"top\" />\r\n </ElTooltip>\r\n <ElTooltip content=\"上移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"up\" />\r\n </ElTooltip>\r\n <ElTooltip content=\"下移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"down\" />\r\n </ElTooltip>\r\n <ElTooltip content=\"置底\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"bottom\" />\r\n </ElTooltip>\r\n </span>\r\n );\r\n }\r\n\r\n return <span class=\"mk-column-sort\">{children}</span>;\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","columnSortProps","setup","children","drag","_createVNode","MKSvgIcon","ElTooltip","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAeA,6CAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAOC;AAAAA,EACPC,MAAMF,OAAO;AACX,WAAO,MAAM;AACX,UAAIG,WAAW;AAEf,UAAIH,MAAMI,MAAM;AACdD,mBAAQE,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,YAAAC,WAAA;AAAA,UAAA,aAAA;AAAA,WAIP,IAAA,CAAA,CAAA;AAAA,MACH,OAAO;AACLH,mBAAQE,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,UAAA,GAAA,IAAA,CAAA;AAAA,SAAAD,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,UAAA,GAAA,IAAA,CAAA;AAAA,SAAAD,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,UAAA,GAAA,IAAA,CAAA;AAAA,SAAAD,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,UAAA,GAAA,IAAA,CAAA;AAAA,QAeP,CAAA,CAAA,CAAA;AAAA,MACH;AAEA,aAAAD,YAAA,QAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAqCF,QAAQ,CAAA;AAAA;EAEjD;AACF,CAAC;"}
1
+ {"version":3,"file":"column-sort.js","sources":["../../../../../../../src/components/data-model/data-table/components/column-sort/column-sort.tsx"],"sourcesContent":["import { defineComponent, inject } from \"vue\";\r\nimport { columnSortProps } from \"./column-sort-options\";\r\nimport { MKSvgIcon } from \"../../../../basic\";\r\nimport { ElTooltip } from \"element-plus\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\n\r\nexport default defineComponent({\r\n name: \"MKColumnSort\",\r\n props: columnSortProps,\r\n setup(props) {\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY)!;\r\n\r\n const handleMoveUp = () => {\r\n dataTableContext.dataTable.moveUp(props.row);\r\n };\r\n\r\n const handleMoveDown = () => {\r\n dataTableContext.dataTable.moveDown(props.row);\r\n };\r\n\r\n const handleToTop = () => {\r\n dataTableContext.dataTable.toTop(props.row);\r\n };\r\n\r\n const handleToBottom = () => {\r\n dataTableContext.dataTable.toBottom(props.row);\r\n };\r\n\r\n return () => {\r\n let children = null;\r\n\r\n if (props.drag) {\r\n children = (\r\n <span class=\"mk-column-sort__drag\">\r\n <MKSvgIcon iconClass=\"Rank\" />\r\n </span>\r\n );\r\n } else {\r\n children = (\r\n <span class=\"mk-column-sort__switch\">\r\n <ElTooltip content=\"置顶\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"Top\" onClick={handleToTop} />\r\n </ElTooltip>\r\n <ElTooltip content=\"上移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"ArrowUpBold\" onClick={handleMoveUp} />\r\n </ElTooltip>\r\n <ElTooltip content=\"下移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"ArrowDownBold\" onClick={handleMoveDown} />\r\n </ElTooltip>\r\n <ElTooltip content=\"置底\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"Bottom\" onClick={handleToBottom} />\r\n </ElTooltip>\r\n </span>\r\n );\r\n }\r\n\r\n return <span class=\"mk-column-sort\">{children}</span>;\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","columnSortProps","setup","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","handleMoveUp","dataTable","moveUp","row","handleMoveDown","moveDown","handleToTop","toTop","handleToBottom","toBottom","children","drag","_createVNode","MKSvgIcon","ElTooltip","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAeA,6CAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAOC;AAAAA,EACPC,MAAMF,OAAO;AACX,UAAMG,mBAAmBC,OAAOC,sBAAsB;AAEtD,UAAMC,eAAeA,MAAM;AACzBH,uBAAiBI,UAAUC,OAAOR,MAAMS,GAAG;AAAA;AAG7C,UAAMC,iBAAiBA,MAAM;AAC3BP,uBAAiBI,UAAUI,SAASX,MAAMS,GAAG;AAAA;AAG/C,UAAMG,cAAcA,MAAM;AACxBT,uBAAiBI,UAAUM,MAAMb,MAAMS,GAAG;AAAA;AAG5C,UAAMK,iBAAiBA,MAAM;AAC3BX,uBAAiBI,UAAUQ,SAASf,MAAMS,GAAG;AAAA;AAG/C,WAAO,MAAM;AACX,UAAIO,WAAW;AAEf,UAAIhB,MAAMiB,MAAM;AACdD,mBAAQE,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,YAAAC,WAAA;AAAA,UAAA,aAAA;AAAA,WAIP,IAAA,CAAA,CAAA;AAAA,MACH,OAAO;AACLH,mBAAQE,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGkCP;AAAAA,UAAW,GAAA,IAAA,CAAA;AAAA,SAAAM,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGHb;AAAAA,UAAY,GAAA,IAAA,CAAA;AAAA,SAAAY,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGVT;AAAAA,UAAc,GAAA,IAAA,CAAA;AAAA,SAAAQ,GAAAA,YAAAE,WAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,YAAAC,WAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGrBL;AAAAA,UAAc,GAAA,IAAA,CAAA;AAAA,QAG1D,CAAA,CAAA,CAAA;AAAA,MACH;AAEA,aAAAI,YAAA,QAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAqCF,QAAQ,CAAA;AAAA;EAEjD;AACF,CAAC;"}
@@ -75,22 +75,10 @@ const Table = /* @__PURE__ */ defineComponent({
75
75
  if (oldIndx === newIndex) {
76
76
  return;
77
77
  }
78
- const movedElement = unref(dataTable).getList()[oldIndx];
79
- if (oldIndx > newIndex) {
80
- const middleElements = unref(dataTable).getList().splice(newIndex, oldIndx);
81
- movedElement.sort = middleElements[0].sort;
82
- for (const middleElement of middleElements) {
83
- Number.parseInt(middleElement.sort);
84
- }
85
- [movedElement, ...middleElements];
86
- } else {
87
- const middleElements = unref(dataTable).getList().splice(oldIndx, newIndex);
88
- movedElement.sort = middleElements[middleElements.length - 1].sort;
89
- for (const middleElement of middleElements) {
90
- Number.parseInt(middleElement.sort);
91
- }
92
- [...middleElements, movedElement];
93
- }
78
+ const sourceItem = unref(dataTable).getList()[oldIndx];
79
+ let dropItem = unref(dataTable).getList()[newIndex];
80
+ let sortAction = oldIndx > newIndex ? 1 : 2;
81
+ unref(dataTable).moveTarget(sourceItem, dropItem, sortAction);
94
82
  }
95
83
  });
96
84
  onCleanup(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../../../../../src/components/data-model/data-table/views/table/table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n ref,\r\n Ref,\r\n unref,\r\n watch,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport { Column, ElEmpty, ElTable, ElTableColumn } from \"element-plus\";\r\nimport { isEqual } from \"lodash-es\";\r\nimport MKDataTableColumn from \"../../data-table-column\";\r\nimport { tableProps } from \"./table-options\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\nimport Sortable from \"sortablejs\";\r\nimport { OrderType } from \"@maketribe/request\";\r\n\r\nexport default defineComponent({\r\n name: \"MKTable\",\r\n props: tableProps,\r\n setup(props, { slots }) {\r\n const treeProps = computed(() => {\r\n return props.treeProps;\r\n });\r\n\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY);\r\n\r\n const dataTableEl = computed(() => dataTableContext?.el ?? null);\r\n\r\n const tableEl: Ref<InstanceType<typeof ElTable> | null> = ref(null);\r\n\r\n const dataTable = computed(\r\n () => props.dataTable ?? dataTableContext!.dataTable\r\n );\r\n\r\n const rowKey = computed(() => props.rowKey || unref(dataTable).primaryKey);\r\n\r\n const list = computed(() => props.getList(unref(dataTable)));\r\n\r\n const selectionColumn = computed(() => unref(dataTable).selectionColumn);\r\n\r\n type SortChangeEvent = { column: Column; prop: string; order: string };\r\n\r\n const handleSortChange = ({ column, prop, order }: SortChangeEvent) => {\r\n let orderType: OrderType | null = null;\r\n\r\n if (order === \"descending\") {\r\n orderType = OrderType.DESC;\r\n } else if (order === \"ascending\") {\r\n orderType = OrderType.ASC;\r\n }\r\n\r\n unref(dataTable).sorter.setColumnSort(prop, orderType);\r\n };\r\n\r\n let allowChangeSelection = true;\r\n\r\n const handleSelectionChange = (items: any[]) => {\r\n if (allowChangeSelection) {\r\n unref(dataTable).setSelection(\r\n items.map((item) => item[unref(dataTable).primaryKey])\r\n );\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n const _tableEl = unref(tableEl)!;\r\n\r\n watch(list, (list, _, onCleanup) => {\r\n onCleanup(\r\n watch(\r\n computed(() => unref(dataTable).getSelection()),\r\n async (selections) => {\r\n const primaryKey = unref(dataTable).primaryKey;\r\n\r\n const tableSelections = _tableEl\r\n .getSelectionRows()\r\n .map((item: any) => item[primaryKey])\r\n .sort();\r\n\r\n if (isEqual(selections, tableSelections)) {\r\n return;\r\n }\r\n\r\n allowChangeSelection = false;\r\n\r\n _tableEl.clearSelection();\r\n\r\n await nextTick();\r\n\r\n const selectedRows = list.filter((item: any) =>\r\n selections.includes(item[primaryKey])\r\n );\r\n\r\n for (var item of selectedRows) {\r\n _tableEl.toggleRowSelection(item, true);\r\n }\r\n\r\n allowChangeSelection = true;\r\n },\r\n {\r\n immediate: true,\r\n }\r\n )\r\n );\r\n });\r\n\r\n watch(\r\n dataTableEl,\r\n (el, _, onCleanup) => {\r\n if (!el) {\r\n return;\r\n }\r\n var sortableInstance = Sortable.create(el.querySelector(\"tbody\")!, {\r\n handle: \".mk-column-sort__drag\",\r\n animation: 300,\r\n onEnd: (event) => {\r\n const newIndex = event.newIndex!;\r\n const oldIndx = event.oldIndex!;\r\n\r\n if (oldIndx === newIndex) {\r\n return;\r\n }\r\n\r\n const movedElement = unref(dataTable).getList()[oldIndx];\r\n\r\n var updateRecords: any[] = [];\r\n\r\n if (oldIndx > newIndex) {\r\n // 后面元素移到了中间元素前 中间元素需要增加排序值\r\n const middleElements = unref(dataTable)\r\n .getList()\r\n .splice(newIndex, oldIndx);\r\n\r\n movedElement.sort = middleElements[0].sort;\r\n\r\n for (const middleElement of middleElements) {\r\n let sort = Number.parseInt(middleElement.sort);\r\n sort = Number.isNaN(sort) ? 0 : sort;\r\n sort += 1;\r\n }\r\n\r\n updateRecords = [movedElement, ...middleElements];\r\n } else {\r\n // 前面元素移动到了中间元素后 中间元素需要减少排序值\r\n const middleElements = unref(dataTable)\r\n .getList()\r\n .splice(oldIndx, newIndex);\r\n\r\n movedElement.sort =\r\n middleElements[middleElements.length - 1].sort;\r\n\r\n for (const middleElement of middleElements) {\r\n let sort = Number.parseInt(middleElement.sort);\r\n sort = Number.isNaN(sort) ? 0 : sort;\r\n sort -= 1;\r\n }\r\n\r\n updateRecords = [...middleElements, movedElement];\r\n }\r\n },\r\n });\r\n\r\n onCleanup(() => {\r\n sortableInstance.destroy();\r\n });\r\n },\r\n { immediate: true }\r\n );\r\n });\r\n\r\n return () => {\r\n const columns = unref(dataTable)\r\n .getColumns()\r\n .filter((column) => column.visible && column.name)\r\n .map((column) => {\r\n const columnProps: Record<string, any> = {\r\n prop: column.name,\r\n label: column.label,\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n fixed: column.fixed,\r\n align: column.align || \"center\",\r\n reserveSelection: true,\r\n type: column.type || \"default\",\r\n sortable: column.sortable,\r\n };\r\n\r\n if (!column.visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n slots[`col-${column.name}`]?.() ?? (\r\n <ElTableColumn\r\n {...columnProps}\r\n v-slots={{\r\n default: (scope: {\r\n $index: number;\r\n row: any;\r\n column: any;\r\n }) => {\r\n let children = slots[`col-${column.name}-content`]?.({\r\n $index: scope.$index,\r\n row: scope.row,\r\n column: column,\r\n dataTable: unref(dataTable),\r\n });\r\n\r\n if (children) {\r\n return children;\r\n }\r\n\r\n return (\r\n <MKDataTableColumn\r\n column={column}\r\n row={scope.row}\r\n index={scope.$index}\r\n />\r\n );\r\n },\r\n }}\r\n />\r\n )\r\n );\r\n });\r\n\r\n return (\r\n <ElTable\r\n data={unref(list)}\r\n row-key={unref(rowKey)}\r\n onSort-change={handleSortChange}\r\n ref={(el: any) =>\r\n (tableEl.value = el as InstanceType<typeof ElTable>)\r\n }\r\n show-overflow-tooltip\r\n border\r\n stripe\r\n lazy={props.lazy}\r\n load={props.load as any}\r\n v-slots={{ empty: () => slots.empty?.() || <ElEmpty /> }}\r\n onSelection-change={handleSelectionChange}\r\n defaultExpandAll={props.defaultExpandAll}\r\n >\r\n {unref(selectionColumn).visible ? (\r\n <ElTableColumn\r\n type={unref(selectionColumn).type ?? \"selection\"}\r\n width={unref(selectionColumn).width}\r\n fixed={unref(selectionColumn).fixed}\r\n />\r\n ) : null}\r\n {columns}\r\n </ElTable>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","tableProps","setup","slots","computed","treeProps","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","dataTableEl","el","tableEl","ref","dataTable","rowKey","unref","primaryKey","list","getList","selectionColumn","handleSortChange","column","prop","order","orderType","OrderType","DESC","ASC","sorter","setColumnSort","allowChangeSelection","handleSelectionChange","items","setSelection","map","item","onMounted","_tableEl","watch","_","onCleanup","getSelection","selections","tableSelections","getSelectionRows","sort","isEqual","clearSelection","nextTick","selectedRows","filter","includes","toggleRowSelection","immediate","sortableInstance","Sortable","create","querySelector","handle","animation","onEnd","event","newIndex","oldIndx","oldIndex","movedElement","middleElements","splice","middleElement","Number","parseInt","length","destroy","columns","getColumns","visible","columnProps","label","width","minWidth","fixed","align","reserveSelection","type","sortable","_createVNode","ElTableColumn","default","scope","children","$index","row","MKDataTableColumn","ElTable","value","lazy","load","defaultExpandAll","empty","ElEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../../../../../src/components/data-model/data-table/views/table/table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n ref,\r\n Ref,\r\n unref,\r\n watch,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport { Column, ElEmpty, ElTable, ElTableColumn } from \"element-plus\";\r\nimport { isEqual } from \"lodash-es\";\r\nimport MKDataTableColumn from \"../../data-table-column\";\r\nimport { tableProps } from \"./table-options\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\nimport Sortable from \"sortablejs\";\r\nimport { OrderType } from \"@maketribe/request\";\r\n\r\nexport default defineComponent({\r\n name: \"MKTable\",\r\n props: tableProps,\r\n setup(props, { slots }) {\r\n const treeProps = computed(() => {\r\n return props.treeProps;\r\n });\r\n\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY);\r\n\r\n const dataTableEl = computed(() => dataTableContext?.el ?? null);\r\n\r\n const tableEl: Ref<InstanceType<typeof ElTable> | null> = ref(null);\r\n\r\n const dataTable = computed(\r\n () => props.dataTable ?? dataTableContext!.dataTable\r\n );\r\n\r\n const rowKey = computed(() => props.rowKey || unref(dataTable).primaryKey);\r\n\r\n const list = computed(() => props.getList(unref(dataTable)));\r\n\r\n const selectionColumn = computed(() => unref(dataTable).selectionColumn);\r\n\r\n type SortChangeEvent = { column: Column; prop: string; order: string };\r\n\r\n const handleSortChange = ({ column, prop, order }: SortChangeEvent) => {\r\n let orderType: OrderType | null = null;\r\n\r\n if (order === \"descending\") {\r\n orderType = OrderType.DESC;\r\n } else if (order === \"ascending\") {\r\n orderType = OrderType.ASC;\r\n }\r\n\r\n unref(dataTable).sorter.setColumnSort(prop, orderType);\r\n };\r\n\r\n let allowChangeSelection = true;\r\n\r\n const handleSelectionChange = (items: any[]) => {\r\n if (allowChangeSelection) {\r\n unref(dataTable).setSelection(\r\n items.map((item) => item[unref(dataTable).primaryKey])\r\n );\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n const _tableEl = unref(tableEl)!;\r\n\r\n watch(list, (list, _, onCleanup) => {\r\n onCleanup(\r\n watch(\r\n computed(() => unref(dataTable).getSelection()),\r\n async (selections) => {\r\n const primaryKey = unref(dataTable).primaryKey;\r\n\r\n const tableSelections = _tableEl\r\n .getSelectionRows()\r\n .map((item: any) => item[primaryKey])\r\n .sort();\r\n\r\n if (isEqual(selections, tableSelections)) {\r\n return;\r\n }\r\n\r\n allowChangeSelection = false;\r\n\r\n _tableEl.clearSelection();\r\n\r\n await nextTick();\r\n\r\n const selectedRows = list.filter((item: any) =>\r\n selections.includes(item[primaryKey])\r\n );\r\n\r\n for (var item of selectedRows) {\r\n _tableEl.toggleRowSelection(item, true);\r\n }\r\n\r\n allowChangeSelection = true;\r\n },\r\n {\r\n immediate: true,\r\n }\r\n )\r\n );\r\n });\r\n\r\n watch(\r\n dataTableEl,\r\n (el, _, onCleanup) => {\r\n if (!el) {\r\n return;\r\n }\r\n var sortableInstance = Sortable.create(el.querySelector(\"tbody\")!, {\r\n handle: \".mk-column-sort__drag\",\r\n animation: 300,\r\n onEnd: (event) => {\r\n const newIndex = event.newIndex!;\r\n const oldIndx = event.oldIndex!;\r\n\r\n if (oldIndx === newIndex) {\r\n return;\r\n }\r\n\r\n const sourceItem = unref(dataTable).getList()[oldIndx];\r\n let dropItem = unref(dataTable).getList()[newIndex];\r\n let sortAction = oldIndx > newIndex ? 1 : 2;\r\n\r\n unref(dataTable).moveTarget(sourceItem, dropItem, sortAction);\r\n\r\n },\r\n });\r\n\r\n onCleanup(() => {\r\n sortableInstance.destroy();\r\n });\r\n },\r\n { immediate: true }\r\n );\r\n });\r\n\r\n return () => {\r\n const columns = unref(dataTable)\r\n .getColumns()\r\n .filter((column) => column.visible && column.name)\r\n .map((column) => {\r\n const columnProps: Record<string, any> = {\r\n prop: column.name,\r\n label: column.label,\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n fixed: column.fixed,\r\n align: column.align || \"center\",\r\n reserveSelection: true,\r\n type: column.type || \"default\",\r\n sortable: column.sortable,\r\n };\r\n\r\n if (!column.visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n slots[`col-${column.name}`]?.() ?? (\r\n <ElTableColumn\r\n {...columnProps}\r\n v-slots={{\r\n default: (scope: {\r\n $index: number;\r\n row: any;\r\n column: any;\r\n }) => {\r\n let children = slots[`col-${column.name}-content`]?.({\r\n $index: scope.$index,\r\n row: scope.row,\r\n column: column,\r\n dataTable: unref(dataTable),\r\n });\r\n\r\n if (children) {\r\n return children;\r\n }\r\n\r\n return (\r\n <MKDataTableColumn\r\n column={column}\r\n row={scope.row}\r\n index={scope.$index}\r\n />\r\n );\r\n },\r\n }}\r\n />\r\n )\r\n );\r\n });\r\n\r\n return (\r\n <ElTable\r\n data={unref(list)}\r\n row-key={unref(rowKey)}\r\n onSort-change={handleSortChange}\r\n ref={(el: any) =>\r\n (tableEl.value = el as InstanceType<typeof ElTable>)\r\n }\r\n show-overflow-tooltip\r\n border\r\n stripe\r\n lazy={props.lazy}\r\n load={props.load as any}\r\n v-slots={{ empty: () => slots.empty?.() || <ElEmpty /> }}\r\n onSelection-change={handleSelectionChange}\r\n defaultExpandAll={props.defaultExpandAll}\r\n >\r\n {unref(selectionColumn).visible ? (\r\n <ElTableColumn\r\n type={unref(selectionColumn).type ?? \"selection\"}\r\n width={unref(selectionColumn).width}\r\n fixed={unref(selectionColumn).fixed}\r\n />\r\n ) : null}\r\n {columns}\r\n </ElTable>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","tableProps","setup","slots","computed","treeProps","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","dataTableEl","el","tableEl","ref","dataTable","rowKey","unref","primaryKey","list","getList","selectionColumn","handleSortChange","column","prop","order","orderType","OrderType","DESC","ASC","sorter","setColumnSort","allowChangeSelection","handleSelectionChange","items","setSelection","map","item","onMounted","_tableEl","watch","_","onCleanup","getSelection","selections","tableSelections","getSelectionRows","sort","isEqual","clearSelection","nextTick","selectedRows","filter","includes","toggleRowSelection","immediate","sortableInstance","Sortable","create","querySelector","handle","animation","onEnd","event","newIndex","oldIndx","oldIndex","sourceItem","dropItem","sortAction","moveTarget","destroy","columns","getColumns","visible","columnProps","label","width","minWidth","fixed","align","reserveSelection","type","sortable","_createVNode","ElTableColumn","default","scope","children","$index","row","MKDataTableColumn","ElTable","value","lazy","load","defaultExpandAll","empty","ElEmpty"],"mappings":"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"}
@@ -180,7 +180,7 @@ class DialogerImpl extends SkeletonDialoger {
180
180
  },
181
181
  body: () => {
182
182
  return createVNode(ElScrollbar, {
183
- "max-height": "600px"
183
+ "max-height": "550px"
184
184
  }, {
185
185
  default: () => [createVNode(MKDataForm, {
186
186
  "dataForm": dataForm
@@ -1 +1 @@
1
- {"version":3,"file":"DialogerImpl.js","sources":["../../../src/message-impl/DialogerImpl.tsx"],"sourcesContent":["import {\r\n DataForm,\r\n DataFormDialogOptions,\r\n DataTable,\r\n DataTableSelectDialogResult,\r\n DialogInstance,\r\n IDialogMessage,\r\n IDialogRenderOptions,\r\n Messager,\r\n SkeletonDialoger,\r\n TableActionColumn,\r\n} from \"@maketribe/dm\";\r\nimport { Event } from \"@maketribe/utils\";\r\nimport { ElButton, ElDrawer, ElMessageBox, ElScrollbar } from \"element-plus\";\r\nimport { isFunction } from \"lodash-es\";\r\nimport { MKDataForm, MKDataTable, MKForm } from \"../components\";\r\nimport { Fragment, reactive } from \"vue\";\r\nimport { I18n } from \"@maketribe/locale\";\r\n\r\nlet uid = 0;\r\n\r\nexport class DialogerImpl extends SkeletonDialoger {\r\n dialogInstanceCreateEvent: Event<DialogInstance> = new Event();\r\n\r\n async prompt(options: IDialogMessage): Promise<string> {\r\n const promptResult = await ElMessageBox.prompt(\r\n options.message,\r\n options.title,\r\n options\r\n );\r\n\r\n return promptResult.value;\r\n }\r\n\r\n async confirm(options: IDialogMessage): Promise<boolean> {\r\n try {\r\n await ElMessageBox.confirm(options.message, options.title, options);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n async alert(options: IDialogMessage): Promise<void> {\r\n await ElMessageBox.alert(options.message, options.title, options);\r\n }\r\n\r\n customRender(options: IDialogRenderOptions): DialogInstance {\r\n let visible = true;\r\n\r\n const dialogInstance: DialogInstance = {\r\n class: \"\",\r\n ...options,\r\n id: uid++,\r\n get visible() {\r\n return visible;\r\n },\r\n set visible(v) {\r\n visible = v;\r\n dialogInstance.visibleChangeEvent.emit(visible);\r\n },\r\n visibleChangeEvent: new Event(),\r\n destroyEvent: new Event(),\r\n destroy: () => {\r\n dialogInstance.visible = false;\r\n dialogInstance.destroyEvent.emit();\r\n },\r\n };\r\n this.dialogInstanceCreateEvent.emit(dialogInstance);\r\n\r\n return dialogInstance;\r\n }\r\n\r\n async custom(options: IDialogRenderOptions): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n const dialogInstance = this.customRender({\r\n ...options,\r\n onConfirm: async () => {\r\n if (\r\n isFunction(options.onConfirm)\r\n ? (await options.onConfirm()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(true);\r\n },\r\n onCancel: async () => {\r\n if (\r\n isFunction(options.onCancel)\r\n ? (await options.onCancel()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(false);\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataTableSelectDialog(\r\n dataTable: DataTable\r\n ): Promise<DataTableSelectDialogResult> {\r\n dataTable = reactive(dataTable) as DataTable;\r\n\r\n dataTable.afterInitdEvent.once(() => {\r\n // 过滤掉操作列\r\n const columns = dataTable\r\n .getColumns()\r\n .filter((column) => column.name !== TableActionColumn.actionColumnName);\r\n dataTable.setColumns(columns);\r\n });\r\n\r\n return new Promise((resolve) => {\r\n const handleConfirm = () => {\r\n resolve({ isConfirm: true, selections: dataTable.getSelection() });\r\n\r\n dataTable.setList([]);\r\n dataTable.setSelection([]);\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const handleCancel = () => {\r\n resolve({ isConfirm: false, selections: [] });\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const dialogInstance = this.customRender({\r\n class: \"mk-data-table-select-dialog\",\r\n width: \"80%\",\r\n body: () => {\r\n return (\r\n <div class=\"mk-data-table-select-dialog__main\">\r\n <MKDataTable dataTable={dataTable} selection />\r\n </div>\r\n );\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n onClick={handleConfirm}\r\n disabled={dataTable.getSelection().length === 0}\r\n >\r\n 确定\r\n </ElButton>\r\n <ElButton onClick={handleCancel}>取消</ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataFormDialog(\r\n dataFormOptions: DataFormDialogOptions\r\n ): Promise<DialogInstance> {\r\n return new Promise((resolve) => {\r\n const dataForm = reactive(dataFormOptions.dataForm) as DataForm;\r\n\r\n let title = \"\";\r\n\r\n if (dataFormOptions.customDataFormStatus !== true) {\r\n if (dataFormOptions.recId) {\r\n dataForm.editRecord(dataFormOptions.recId);\r\n } else {\r\n dataForm.addRecord();\r\n }\r\n\r\n title = dataFormOptions.recId ? \"编辑\" : \"新增\";\r\n }\r\n\r\n const dialogInstance = this.customRender({\r\n title: dataFormOptions.title ?? title,\r\n onClose: () => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return (\r\n <ElScrollbar max-height=\"600px\">\r\n <MKDataForm dataForm={dataForm}>\r\n <MKForm dataForm={dataForm} />\r\n </MKDataForm>\r\n </ElScrollbar>\r\n );\r\n },\r\n\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n disabled={!dataForm.isChanged}\r\n loading={!dataForm.allowSubmit}\r\n onClick={async () => {\r\n if (!(await dataForm.validate())) {\r\n return;\r\n }\r\n\r\n if (await dataForm.simpleSubmit()) {\r\n dialogInstance.destroy();\r\n }\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.saveButton\")}\r\n </ElButton>\r\n <ElButton\r\n onClick={() => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.cancelButton\")}\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n\r\n resolve(dialogInstance);\r\n });\r\n }\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","uid","DialogerImpl","SkeletonDialoger","dialogInstanceCreateEvent","Event","prompt","options","promptResult","ElMessageBox","message","title","value","confirm","e","alert","customRender","visible","dialogInstance","class","id","v","visibleChangeEvent","emit","destroyEvent","destroy","custom","Promise","resolve","onConfirm","isFunction","onCancel","dataTableSelectDialog","dataTable","reactive","afterInitdEvent","once","columns","getColumns","filter","column","name","TableActionColumn","actionColumnName","setColumns","handleConfirm","isConfirm","selections","getSelection","setList","setSelection","handleCancel","width","body","_createVNode","MKDataTable","footer","_Fragment","ElButton","length","default","_createTextVNode","dataFormDialog","dataFormOptions","dataForm","customDataFormStatus","recId","editRecord","addRecord","onClose","cancel","ElScrollbar","MKDataForm","MKForm","_slot","_slot2","isChanged","allowSubmit","validate","simpleSubmit","I18n","instance","translate","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"DialogerImpl.js","sources":["../../../src/message-impl/DialogerImpl.tsx"],"sourcesContent":["import {\r\n DataForm,\r\n DataFormDialogOptions,\r\n DataTable,\r\n DataTableSelectDialogResult,\r\n DialogInstance,\r\n IDialogMessage,\r\n IDialogRenderOptions,\r\n Messager,\r\n SkeletonDialoger,\r\n TableActionColumn,\r\n} from \"@maketribe/dm\";\r\nimport { Event } from \"@maketribe/utils\";\r\nimport { ElButton, ElDrawer, ElMessageBox, ElScrollbar } from \"element-plus\";\r\nimport { isFunction } from \"lodash-es\";\r\nimport { MKDataForm, MKDataTable, MKForm } from \"../components\";\r\nimport { Fragment, reactive } from \"vue\";\r\nimport { I18n } from \"@maketribe/locale\";\r\n\r\nlet uid = 0;\r\n\r\nexport class DialogerImpl extends SkeletonDialoger {\r\n dialogInstanceCreateEvent: Event<DialogInstance> = new Event();\r\n\r\n async prompt(options: IDialogMessage): Promise<string> {\r\n const promptResult = await ElMessageBox.prompt(\r\n options.message,\r\n options.title,\r\n options\r\n );\r\n\r\n return promptResult.value;\r\n }\r\n\r\n async confirm(options: IDialogMessage): Promise<boolean> {\r\n try {\r\n await ElMessageBox.confirm(options.message, options.title, options);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n async alert(options: IDialogMessage): Promise<void> {\r\n await ElMessageBox.alert(options.message, options.title, options);\r\n }\r\n\r\n customRender(options: IDialogRenderOptions): DialogInstance {\r\n let visible = true;\r\n\r\n const dialogInstance: DialogInstance = {\r\n class: \"\",\r\n ...options,\r\n id: uid++,\r\n get visible() {\r\n return visible;\r\n },\r\n set visible(v) {\r\n visible = v;\r\n dialogInstance.visibleChangeEvent.emit(visible);\r\n },\r\n visibleChangeEvent: new Event(),\r\n destroyEvent: new Event(),\r\n destroy: () => {\r\n dialogInstance.visible = false;\r\n dialogInstance.destroyEvent.emit();\r\n },\r\n };\r\n this.dialogInstanceCreateEvent.emit(dialogInstance);\r\n\r\n return dialogInstance;\r\n }\r\n\r\n async custom(options: IDialogRenderOptions): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n const dialogInstance = this.customRender({\r\n ...options,\r\n onConfirm: async () => {\r\n if (\r\n isFunction(options.onConfirm)\r\n ? (await options.onConfirm()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(true);\r\n },\r\n onCancel: async () => {\r\n if (\r\n isFunction(options.onCancel)\r\n ? (await options.onCancel()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(false);\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataTableSelectDialog(\r\n dataTable: DataTable\r\n ): Promise<DataTableSelectDialogResult> {\r\n dataTable = reactive(dataTable) as DataTable;\r\n\r\n dataTable.afterInitdEvent.once(() => {\r\n // 过滤掉操作列\r\n const columns = dataTable\r\n .getColumns()\r\n .filter((column) => column.name !== TableActionColumn.actionColumnName);\r\n dataTable.setColumns(columns);\r\n });\r\n\r\n return new Promise((resolve) => {\r\n const handleConfirm = () => {\r\n resolve({ isConfirm: true, selections: dataTable.getSelection() });\r\n\r\n dataTable.setList([]);\r\n dataTable.setSelection([]);\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const handleCancel = () => {\r\n resolve({ isConfirm: false, selections: [] });\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const dialogInstance = this.customRender({\r\n class: \"mk-data-table-select-dialog\",\r\n width: \"80%\",\r\n body: () => {\r\n return (\r\n <div class=\"mk-data-table-select-dialog__main\">\r\n <MKDataTable dataTable={dataTable} selection />\r\n </div>\r\n );\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n onClick={handleConfirm}\r\n disabled={dataTable.getSelection().length === 0}\r\n >\r\n 确定\r\n </ElButton>\r\n <ElButton onClick={handleCancel}>取消</ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataFormDialog(\r\n dataFormOptions: DataFormDialogOptions\r\n ): Promise<DialogInstance> {\r\n return new Promise((resolve) => {\r\n const dataForm = reactive(dataFormOptions.dataForm) as DataForm;\r\n\r\n let title = \"\";\r\n\r\n if (dataFormOptions.customDataFormStatus !== true) {\r\n if (dataFormOptions.recId) {\r\n dataForm.editRecord(dataFormOptions.recId);\r\n } else {\r\n dataForm.addRecord();\r\n }\r\n\r\n title = dataFormOptions.recId ? \"编辑\" : \"新增\";\r\n }\r\n\r\n const dialogInstance = this.customRender({\r\n title: dataFormOptions.title ?? title,\r\n onClose: () => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return (\r\n <ElScrollbar max-height=\"550px\">\r\n <MKDataForm dataForm={dataForm}>\r\n <MKForm dataForm={dataForm} />\r\n </MKDataForm>\r\n </ElScrollbar>\r\n );\r\n },\r\n\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n disabled={!dataForm.isChanged}\r\n loading={!dataForm.allowSubmit}\r\n onClick={async () => {\r\n if (!(await dataForm.validate())) {\r\n return;\r\n }\r\n\r\n if (await dataForm.simpleSubmit()) {\r\n dialogInstance.destroy();\r\n }\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.saveButton\")}\r\n </ElButton>\r\n <ElButton\r\n onClick={() => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.cancelButton\")}\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n\r\n resolve(dialogInstance);\r\n });\r\n }\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","uid","DialogerImpl","SkeletonDialoger","dialogInstanceCreateEvent","Event","prompt","options","promptResult","ElMessageBox","message","title","value","confirm","e","alert","customRender","visible","dialogInstance","class","id","v","visibleChangeEvent","emit","destroyEvent","destroy","custom","Promise","resolve","onConfirm","isFunction","onCancel","dataTableSelectDialog","dataTable","reactive","afterInitdEvent","once","columns","getColumns","filter","column","name","TableActionColumn","actionColumnName","setColumns","handleConfirm","isConfirm","selections","getSelection","setList","setSelection","handleCancel","width","body","_createVNode","MKDataTable","footer","_Fragment","ElButton","length","default","_createTextVNode","dataFormDialog","dataFormOptions","dataForm","customDataFormStatus","recId","editRecord","addRecord","onClose","cancel","ElScrollbar","MKDataForm","MKForm","_slot","_slot2","isChanged","allowSubmit","validate","simpleSubmit","I18n","instance","translate","onClick"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, toRaw, resolveComponent, openBlock, createBlock, normalizeClass, withCtx, createElementVNode, createVNode, createTextVNode, createCommentVNode, unref, toDisplayString } from "vue";
2
- import "@maketribe/dm";
2
+ import { Messager } from "@maketribe/dm";
3
3
  import { MsMaterialTable } from "../../dataviews/ms-material/MsMaterialTable.js";
4
4
  const _hoisted_1 = { class: "mk-material-item__tools" };
5
5
  const _hoisted_2 = { class: "mk-material-item__tools-item" };
@@ -45,6 +45,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
45
45
  const handleDownloadClick = () => {
46
46
  emit("download", props.material);
47
47
  };
48
+ const handleCopyClick = (isAbsolute) => {
49
+ let copyText = props.material.path;
50
+ if (isAbsolute) {
51
+ copyText = location.origin + props.material.path;
52
+ }
53
+ if (navigator.clipboard === void 0) {
54
+ const input = document.createElement("input");
55
+ input.value = copyText;
56
+ document.body.appendChild(input);
57
+ input.select();
58
+ document.execCommand("Copy");
59
+ document.body.removeChild(input);
60
+ } else {
61
+ navigator.clipboard.writeText(copyText);
62
+ }
63
+ Messager.success({ message: "复制成功" });
64
+ };
48
65
  return (_ctx, _cache) => {
49
66
  const _component_MKSvgIcon = resolveComponent("MKSvgIcon");
50
67
  const _component_ElDropdownItem = resolveComponent("ElDropdownItem");
@@ -89,6 +106,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
89
106
  createTextVNode("删除")
90
107
  ]),
91
108
  _: 1
109
+ }),
110
+ createVNode(_component_ElDropdownItem, {
111
+ onClick: _cache[0] || (_cache[0] = ($event) => handleCopyClick(true))
112
+ }, {
113
+ default: withCtx(() => [
114
+ createTextVNode("复制绝对路径")
115
+ ]),
116
+ _: 1
117
+ }),
118
+ createVNode(_component_ElDropdownItem, {
119
+ onClick: _cache[1] || (_cache[1] = ($event) => handleCopyClick(false))
120
+ }, {
121
+ default: withCtx(() => [
122
+ createTextVNode("复制相对路径")
123
+ ]),
124
+ _: 1
92
125
  })
93
126
  ]),
94
127
  default: withCtx(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"material-item.vue.js","sources":["../../../../../../src/modules/ms/components/material-list/material-item.vue"],"sourcesContent":["<template>\r\n <ElCard\r\n :class=\"['mk-material-item', isSelected ? 'is-selected' : '']\"\r\n shadow=\"never\"\r\n @click.capture=\"handleClick\"\r\n >\r\n <div class=\"mk-material-item__tools\">\r\n <div class=\"mk-material-item__tools-item\">\r\n <ElDropdown>\r\n <MKSvgIcon iconClass=\"More\" />\r\n\r\n <template #dropdown>\r\n <ElDropdownItem\r\n v-if=\"currentMaterialTypeValue === 1\"\r\n @click=\"handleCutClick\"\r\n >\r\n 裁切\r\n </ElDropdownItem>\r\n <ElDropdownItem\r\n v-if=\"currentMaterialTypeValue === 2\"\r\n @click=\"handleDownloadClick\"\r\n >\r\n 下载\r\n </ElDropdownItem>\r\n <ElDropdownItem @click=\"handleMoveClick\">移动分组</ElDropdownItem>\r\n <ElDropdownItem @click=\"handleDeleteClick\">删除</ElDropdownItem>\r\n </template>\r\n </ElDropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mk-material-item__preview\">\r\n <MaterialComponent :src=\"material.path\" />\r\n </div>\r\n <div class=\"mk-material-item__title\">{{ material.desc }}</div>\r\n </ElCard>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { MsMaterial, MsMaterialTable } from \"../../dataviews/ms-material\";\r\nimport { computed, toRaw } from \"vue\";\r\n\r\nconst props = defineProps({\r\n materialTable: { type: MsMaterialTable, required: true },\r\n material: { type: Object, required: true },\r\n});\r\n\r\nconst emit = defineEmits([\"click\", \"move\", \"cut\", \"download\"]);\r\n\r\nconst isSelected = computed(() =>\r\n props.materialTable.getSelection().includes(props.material.id)\r\n);\r\n\r\nconst currentMaterialTypeValue = computed(\r\n () => props.materialTable.currentMaterialType?.value ?? null\r\n);\r\n\r\nconst MaterialComponent = computed(() => {\r\n const component =\r\n props.materialTable.resolveMaterialComponent(\r\n props.material as MsMaterial\r\n ) || props.materialTable.materialComponents.resolveComponent(\"MKFileView\")!;\r\n\r\n return toRaw(component.component);\r\n});\r\n\r\nconst handleClick = (event: MouseEvent) => {\r\n emit(\"click\", event);\r\n};\r\n\r\nconst handleDeleteClick = () => {\r\n props.materialTable.deleteRecord(props.material);\r\n};\r\n\r\nconst handleMoveClick = () => {\r\n emit(\"move\", props.material);\r\n};\r\n\r\nconst handleCutClick = () => {\r\n emit(\"cut\", props.material);\r\n};\r\n\r\nconst handleDownloadClick = () => {\r\n emit(\"download\", props.material);\r\n};\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AA0CA,UAAM,QAAQ;AAKd,UAAM,OAAO;AAEb,UAAM,aAAa;AAAA,MAAS,MAC1B,MAAM,cAAc,aAAA,EAAe,SAAS,MAAM,SAAS,EAAE;AAAA,IAAA;AAG/D,UAAM,2BAA2B;AAAA,MAC/B,MAAA;;AAAM,4BAAM,cAAc,wBAApB,mBAAyC,UAAS;AAAA;AAAA,IAAA;AAGpD,UAAA,oBAAoB,SAAS,MAAM;AACjC,YAAA,YACJ,MAAM,cAAc;AAAA,QAClB,MAAM;AAAA,MACH,KAAA,MAAM,cAAc,mBAAmB,iBAAiB,YAAY;AAEpE,aAAA,MAAM,UAAU,SAAS;AAAA,IAAA,CACjC;AAEK,UAAA,cAAc,CAAC,UAAsB;AACzC,WAAK,SAAS,KAAK;AAAA,IAAA;AAGrB,UAAM,oBAAoB,MAAM;AACxB,YAAA,cAAc,aAAa,MAAM,QAAQ;AAAA,IAAA;AAGjD,UAAM,kBAAkB,MAAM;AACvB,WAAA,QAAQ,MAAM,QAAQ;AAAA,IAAA;AAG7B,UAAM,iBAAiB,MAAM;AACtB,WAAA,OAAO,MAAM,QAAQ;AAAA,IAAA;AAG5B,UAAM,sBAAsB,MAAM;AAC3B,WAAA,YAAY,MAAM,QAAQ;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"material-item.vue.js","sources":["../../../../../../src/modules/ms/components/material-list/material-item.vue"],"sourcesContent":["<template>\r\n <ElCard\r\n :class=\"['mk-material-item', isSelected ? 'is-selected' : '']\"\r\n shadow=\"never\"\r\n @click.capture=\"handleClick\"\r\n >\r\n <div class=\"mk-material-item__tools\">\r\n <div class=\"mk-material-item__tools-item\">\r\n <ElDropdown>\r\n <MKSvgIcon iconClass=\"More\" />\r\n\r\n <template #dropdown>\r\n <ElDropdownItem\r\n v-if=\"currentMaterialTypeValue === 1\"\r\n @click=\"handleCutClick\"\r\n >\r\n 裁切\r\n </ElDropdownItem>\r\n <ElDropdownItem\r\n v-if=\"currentMaterialTypeValue === 2\"\r\n @click=\"handleDownloadClick\"\r\n >\r\n 下载\r\n </ElDropdownItem>\r\n <ElDropdownItem @click=\"handleMoveClick\">移动分组</ElDropdownItem>\r\n <ElDropdownItem @click=\"handleDeleteClick\">删除</ElDropdownItem>\r\n <ElDropdownItem @click=\"handleCopyClick(true)\">复制绝对路径</ElDropdownItem>\r\n <ElDropdownItem @click=\"handleCopyClick(false)\">复制相对路径</ElDropdownItem>\r\n </template>\r\n </ElDropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mk-material-item__preview\">\r\n <MaterialComponent :src=\"material.path\" />\r\n </div>\r\n <div class=\"mk-material-item__title\">{{ material.desc }}</div>\r\n </ElCard>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { Messager } from \"@maketribe/dm\";\r\nimport { MsMaterial, MsMaterialTable } from \"../../dataviews/ms-material\";\r\nimport { computed, getCurrentInstance, toRaw } from \"vue\";\r\n\r\nconst props = defineProps({\r\n materialTable: { type: MsMaterialTable, required: true },\r\n material: { type: Object, required: true },\r\n});\r\n\r\nconst emit = defineEmits([\"click\", \"move\", \"cut\", \"download\"]);\r\n\r\nconst isSelected = computed(() =>\r\n props.materialTable.getSelection().includes(props.material.id)\r\n);\r\n\r\nconst currentMaterialTypeValue = computed(\r\n () => props.materialTable.currentMaterialType?.value ?? null\r\n);\r\n\r\nconst MaterialComponent = computed(() => {\r\n const component =\r\n props.materialTable.resolveMaterialComponent(\r\n props.material as MsMaterial\r\n ) || props.materialTable.materialComponents.resolveComponent(\"MKFileView\")!;\r\n\r\n return toRaw(component.component);\r\n});\r\n\r\nconst handleClick = (event: MouseEvent) => {\r\n emit(\"click\", event);\r\n};\r\n\r\nconst handleDeleteClick = () => {\r\n props.materialTable.deleteRecord(props.material);\r\n};\r\n\r\nconst handleMoveClick = () => {\r\n emit(\"move\", props.material);\r\n};\r\n\r\nconst handleCutClick = () => {\r\n emit(\"cut\", props.material);\r\n};\r\n\r\nconst handleDownloadClick = () => {\r\n emit(\"download\", props.material);\r\n};\r\n\r\nconst handleCopyClick = (isAbsolute: boolean) => {\r\n let copyText = props.material.path\r\n if(isAbsolute){\r\n copyText = location.origin + props.material.path\r\n }\r\n\r\n //兼容性判断\r\n if (navigator.clipboard === undefined) {\r\n //通过input标签进行复制\r\n const input = document.createElement(\"input\");\r\n input.value = copyText;\r\n document.body.appendChild(input);\r\n input.select();\r\n document.execCommand(\"Copy\");\r\n document.body.removeChild(input);\r\n } else {\r\n navigator.clipboard.writeText(copyText);\r\n }\r\n Messager.success({ message: \"复制成功\" });\r\n};\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAKd,UAAM,OAAO;AAEb,UAAM,aAAa;AAAA,MAAS,MAC1B,MAAM,cAAc,aAAA,EAAe,SAAS,MAAM,SAAS,EAAE;AAAA,IAAA;AAG/D,UAAM,2BAA2B;AAAA,MAC/B,MAAA;;AAAM,4BAAM,cAAc,wBAApB,mBAAyC,UAAS;AAAA;AAAA,IAAA;AAGpD,UAAA,oBAAoB,SAAS,MAAM;AACjC,YAAA,YACJ,MAAM,cAAc;AAAA,QAClB,MAAM;AAAA,MACH,KAAA,MAAM,cAAc,mBAAmB,iBAAiB,YAAY;AAEpE,aAAA,MAAM,UAAU,SAAS;AAAA,IAAA,CACjC;AAEK,UAAA,cAAc,CAAC,UAAsB;AACzC,WAAK,SAAS,KAAK;AAAA,IAAA;AAGrB,UAAM,oBAAoB,MAAM;AACxB,YAAA,cAAc,aAAa,MAAM,QAAQ;AAAA,IAAA;AAGjD,UAAM,kBAAkB,MAAM;AACvB,WAAA,QAAQ,MAAM,QAAQ;AAAA,IAAA;AAG7B,UAAM,iBAAiB,MAAM;AACtB,WAAA,OAAO,MAAM,QAAQ;AAAA,IAAA;AAG5B,UAAM,sBAAsB,MAAM;AAC3B,WAAA,YAAY,MAAM,QAAQ;AAAA,IAAA;AAG3B,UAAA,kBAAkB,CAAC,eAAwB;AACrC,UAAA,WAAW,MAAM,SAAS;AAC9B,UAAG,YAAW;AACD,mBAAA,SAAS,SAAS,MAAM,SAAS;AAAA,MAC9C;AAGE,UAAA,UAAU,cAAc,QAAW;AAE/B,cAAA,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,QAAQ;AACL,iBAAA,KAAK,YAAY,KAAK;AAC/B,cAAM,OAAO;AACb,iBAAS,YAAY,MAAM;AAClB,iBAAA,KAAK,YAAY,KAAK;AAAA,MAAA,OAC1B;AACK,kBAAA,UAAU,UAAU,QAAQ;AAAA,MACxC;AACA,eAAS,QAAQ,EAAE,SAAS,OAAQ,CAAA;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}