@opentiny/tiny-engine-toolbar-save 2.6.1 → 2.6.2-alpha.0
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.
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../meta.js","../src/js/index.ts","../src/Main.vue","../index.ts"],"sourcesContent":["export default {\n id: 'engine.toolbars.save',\n type: 'toolbars',\n title: 'save',\n options: {\n icon: {\n default: 'save'\n },\n renderType: 'button'\n }\n}\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport { reactive, ref } from 'vue'\nimport {\n useBlock,\n useCanvas,\n useLayout,\n useNotify,\n usePage,\n getOptions,\n getMetaApi,\n META_APP,\n useMessage\n} from '@opentiny/tiny-engine-meta-register'\nimport { constants } from '@opentiny/tiny-engine-utils'\nimport { handlePageUpdate } from '@opentiny/tiny-engine-common/js/http'\nimport meta from '../../meta'\n\nconst { publish } = useMessage()\n\nconst { PAGE_STATUS, AUTO_SAVED } = constants\nconst state = reactive({\n visible: false,\n code: '',\n originalCode: '',\n disabled: false\n})\n\nexport const isLoading = ref(false)\n\n// 保存或新建区块\nconst saveBlock = async (pageSchema: { fileName: any }) => {\n const api = getMetaApi(META_APP.BlockManage)\n const { getCurrentBlock } = useBlock()\n const block = getCurrentBlock()\n\n block.label = pageSchema.fileName\n // 画布上的schem回写到block的schema\n block.content = pageSchema\n // 获取区块截图\n isLoading.value = true\n block.screenshot = await api.getBlockBase64()\n await api.saveBlock?.(block)\n isLoading.value = false\n}\n\nconst savePage = async (pageSchema: any) => {\n const { currentPage } = useCanvas().pageState\n const params = {\n page_content: pageSchema\n }\n\n isLoading.value = true\n const updateParams = {\n id: currentPage.id,\n params: { ...currentPage, ...params }\n }\n await handlePageUpdate(updateParams)\n isLoading.value = false\n\n // 发布页面保存事件,通知其他组件进行相应处理\n publish({ topic: 'page-saved' })\n}\n\nexport const saveCommon = (value: string) => {\n const { pageSettingState, isTemporaryPage } = usePage()\n const { isBlock, canvasApi, pageState, resetBlockCanvasState, resetPageCanvasState } = useCanvas()\n const pageSchema = JSON.parse(value)\n const { selectNode } = canvasApi.value\n\n if (isBlock()) {\n resetBlockCanvasState({ ...pageState, pageSchema })\n } else {\n resetPageCanvasState({ ...pageState, pageSchema })\n }\n\n if (pageSettingState?.isAIPage) {\n if (isTemporaryPage.saved) {\n isTemporaryPage.saved = false\n }\n\n // 如果当前页面没有ID,为临时生成的页面,则打开新建页面面板\n isTemporaryPage.saved = true\n const pageContent = 'page_content'\n\n pageSettingState.currentPageData[pageContent] = pageSchema\n\n return Promise.resolve()\n }\n\n // 选中画布中的页面,关闭插件、属性配置\n selectNode(null)\n\n return isBlock() ? saveBlock(pageSchema) : savePage(pageSchema)\n}\nexport const openCommon = async () => {\n const { isSaved, getSchema } = useCanvas()\n if (isSaved() || state.disabled) {\n return\n }\n\n const { beforeSave, saveMethod, saved } = getOptions(meta.id)\n\n try {\n if (typeof beforeSave === 'function') {\n await beforeSave()\n }\n\n if (typeof saveMethod === 'function') {\n const stop = await saveMethod()\n\n if (stop) {\n return\n }\n }\n } catch (error) {\n useNotify({\n type: 'error',\n message: `Error in saving: ${error}`\n })\n }\n\n const pageStatus = useLayout().layoutState?.pageStatus\n const curPageState = pageStatus?.state\n const pageInfo = pageStatus?.data\n const ERR_MSG = {\n [PAGE_STATUS.Release]: '当前页面未锁定,请先锁定再保存',\n [PAGE_STATUS.Empty]: '当前应用无页面,请先新建页面再保存',\n [PAGE_STATUS.Guest]: '官网演示应用不能保存页面,如需体验请切换应用',\n [PAGE_STATUS.Lock]: `当前页面被 ${pageInfo?.username} ${pageInfo?.resetPasswordToken} 锁定,如需编辑请先联系他解锁文件,然后再锁定该页面后编辑!`\n }\n\n if ([PAGE_STATUS.Release, PAGE_STATUS.Empty, PAGE_STATUS.Guest, PAGE_STATUS.Lock].includes(curPageState)) {\n useNotify({\n type: 'error',\n title: '保存失败',\n message: ERR_MSG[curPageState]\n })\n\n return\n }\n\n state.disabled = true\n\n const pageSchema = getSchema()\n\n state.code = JSON.stringify(pageSchema || {}, null, 2)\n\n // 获取请求前schema代码,暂时先屏蔽\n /**\n if (useCanvas().isBlock()) {\n const api = getMetaApi(META_APP.BlockManage)\n const block = useBlock().getCurrentBlock()\n const remote = await api.getBlockById(block?.id)\n state.originalCode = JSON.stringify(remote?.content || {}, null, 2)\n } else {\n const api = getMetaApi(META_APP.AppManage)\n const remote = await api.getPageById(pageState?.currentPage?.id)\n state.originalCode = JSON.stringify(remote?.['page_content'] || {}, null, 2)\n }\n */\n\n saveCommon(state.code).finally(() => {\n state.disabled = false\n\n if (typeof saved === 'function') {\n try {\n saved()\n } catch (error) {\n useNotify({\n type: 'error',\n message: `Error in saved: ${error}`\n })\n }\n }\n })\n}\n\nexport const getAutoSaveStatus = () => {\n try {\n const value = localStorage.getItem(AUTO_SAVED) ?? ''\n return JSON.parse(value) ?? false\n } catch {\n return false\n }\n}\n\nexport const setAutoSaveStatus = (status: any) => {\n try {\n localStorage.setItem(AUTO_SAVED, JSON.stringify(status))\n return true\n } catch {\n return false\n }\n}\n","<template>\n <div class=\"toolbar-save\">\n <toolbar-base\n :content=\"isLoading ? '保存中' : '保存'\"\n :icon=\"options.icon.default || options.icon\"\n :options=\"{ ...options, showDots: !isSaved() }\"\n @click-api=\"openApi\"\n >\n <template #button>\n <tiny-popover :visible-arrow=\"false\" width=\"203\" trigger=\"click\" :open-delay=\"OPEN_DELAY.Default\">\n <template #reference>\n <svg-icon :name=\"iconExpand\"></svg-icon>\n </template>\n <div class=\"save-style\">\n <div class=\"save-setting\">保存设置</div>\n <tiny-checkbox v-model=\"state.checked\" name=\"tiny-checkbox\">自动保存</tiny-checkbox>\n <div class=\"save-time\">\n <div class=\"save-time-label\">保存间隔</div>\n <tiny-select v-model=\"state.timeValue\" :options=\"delayOptions\" :disabled=\"!state.checked\" autocomplete>\n </tiny-select>\n </div>\n <div class=\"save-button-group\">\n <tiny-button type=\"primary\" @click=\"saveConfig\">设置并保存</tiny-button>\n </div>\n </div>\n </tiny-popover>\n </template>\n <template #default>\n <tiny-dialog-box\n class=\"dialog-box\"\n :modal=\"false\"\n :fullscreen=\"true\"\n :append-to-body=\"true\"\n :visible=\"state.visible\"\n title=\"Schema 本地与线上差异\"\n @update:visible=\"state.visible = $event\"\n >\n <vue-monaco\n v-if=\"state.visible\"\n ref=\"editor\"\n class=\"monaco-editor\"\n :diffEditor=\"true\"\n :options=\"editorOptions\"\n :value=\"state.code\"\n :original=\"state.originalCode\"\n ></vue-monaco>\n <template #footer>\n <tiny-button @click=\"close\">取 消</tiny-button>\n <tiny-button type=\"primary\" @click=\"saveApi\">保 存</tiny-button>\n </template>\n </tiny-dialog-box>\n </template>\n </toolbar-base>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { reactive, ref, onUnmounted, onMounted } from 'vue'\nimport { VueMonaco } from '@opentiny/tiny-engine-common'\nimport { Button, Popover, DialogBox, Checkbox, Select } from '@opentiny/vue'\nimport { useCanvas, useMessage } from '@opentiny/tiny-engine-meta-register'\nimport { ToolbarBase } from '@opentiny/tiny-engine-common'\nimport { openCommon, saveCommon } from './js/index'\nimport { isLoading, setAutoSaveStatus, getAutoSaveStatus } from './js/index'\nimport { constants } from '@opentiny/tiny-engine-utils'\nconst { OPEN_DELAY } = constants\n\nexport const api = {\n saveCommon,\n openCommon\n}\nexport default {\n components: {\n VueMonaco,\n TinyButton: Button,\n TinyPopover: Popover,\n TinyDialogBox: DialogBox,\n TinyCheckbox: Checkbox,\n TinySelect: Select,\n ToolbarBase\n },\n props: {\n iconExpand: {\n type: String,\n default: 'down-arrow'\n },\n options: {\n type: Object,\n default: () => ({})\n }\n },\n setup() {\n const delayOptions = [\n { value: 5, label: '5分钟' },\n { value: 10, label: '10分钟' },\n { value: 15, label: '15分钟' }\n ]\n const state = reactive({\n visible: false,\n code: '',\n originalCode: '',\n checked: false,\n timeValue: 5,\n preservationTime: null\n })\n\n const editor = ref(null)\n\n const { isSaved, setSaved, getSchema } = useCanvas()\n\n const { subscribe, unsubscribe } = useMessage()\n const subscriber = 'toolbar-save'\n\n const originSchema = ref(null)\n\n onMounted(() => {\n // 订阅页面/区块初始化事件\n subscribe({\n topic: 'pageOrBlockInit',\n subscriber,\n callback: (schema: any) => {\n originSchema.value = JSON.stringify(schema)\n setSaved(true) // 初始化时标记为已保存\n }\n })\n\n // 订阅 schema 变更事件\n subscribe({\n topic: 'schemaChange',\n subscriber,\n callback: () => {\n if (originSchema.value) {\n const hasChange = JSON.stringify(getSchema()) === originSchema.value\n setSaved(hasChange)\n }\n }\n })\n\n // 订阅 schema 导入事件\n subscribe({\n topic: 'schemaImport',\n subscriber,\n callback: () => {\n if (originSchema.value) {\n const hasChange = JSON.stringify(getSchema()) === originSchema.value\n setSaved(hasChange)\n }\n }\n })\n })\n\n onUnmounted(() => {\n unsubscribe({ topic: 'pageOrBlockInit', subscriber })\n unsubscribe({ topic: 'schemaChange', subscriber })\n unsubscribe({ topic: 'schemaImport', subscriber })\n })\n\n const close = () => {\n state.visible = false\n state.originalCode = ''\n }\n const openApi = () => {\n if (!isLoading.value) {\n openCommon()\n }\n }\n const saveApi = () => {\n saveCommon()\n }\n // 保存或新建区块\n const editorOptions = {\n language: 'json',\n lineNumbers: true,\n minimap: {\n enabled: false\n }\n }\n const saveSetTimeout = () => {\n clearTimeout(state.preservationTime)\n state.preservationTime = setTimeout(() => {\n openApi()\n saveSetTimeout()\n }, state.timeValue * 60 * 1000)\n }\n const saveConfig = () => {\n setAutoSaveStatus(state.checked)\n if (state.checked) {\n saveSetTimeout()\n } else {\n clearTimeout(state.preservationTime)\n }\n }\n\n onMounted(() => {\n state.checked = getAutoSaveStatus()\n if (state.checked) {\n saveSetTimeout()\n }\n })\n\n onUnmounted(() => {\n clearTimeout(state.preservationTime)\n })\n\n return {\n state,\n editor,\n editorOptions,\n isLoading,\n isSaved,\n close,\n openApi,\n saveApi,\n delayOptions,\n saveConfig,\n OPEN_DELAY\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.dots {\n width: 6px;\n height: 6px;\n background: var(--te-toolbars-save-dot-color);\n border-radius: 50%;\n display: inline-block;\n position: absolute;\n top: 4px;\n right: 3px;\n z-index: 100;\n}\n\n.toolbar-save {\n .icon-down-arrow.icon-down-arrow {\n margin-left: var(--te-base-space-2x);\n margin-right: var(--te-base-space-0);\n }\n .save-button {\n background-color: var(--te-toolbars-save-button-bg-color);\n border: none;\n min-width: 70px;\n height: 26px;\n display: flex;\n align-items: center;\n padding: 0 8px;\n border-radius: 4px;\n &:not(.disabled):hover {\n background-color: var(--te-toolbars-save-button-bg-color);\n }\n }\n\n :deep(.icon-down-arrow:focus) {\n outline: none;\n }\n}\n\n.save-style {\n padding: 8px 4px;\n font-size: 12px;\n\n .save-setting {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n height: 20px;\n margin-bottom: 16px;\n }\n\n .save-time {\n line-height: 24px;\n font-size: 12px;\n margin: 12px 0 16px 0;\n display: flex;\n .save-time-label {\n width: 60px;\n color: var(--te-toolbars-save-text-color);\n }\n\n .tiny-select {\n width: 103px;\n margin-left: 12px;\n\n :deep(.tiny-input__suffix) {\n width: 12px;\n }\n }\n :deep(.tiny-select.is-disabled .tiny-input__suffix) {\n display: flex;\n }\n }\n\n .save-button-group {\n text-align: right;\n }\n}\n\n#saving {\n cursor: not-allowed;\n color: var(--te-toolbars-save-text-color-disabled);\n\n :deep(svg) {\n color: var(--te-toolbars-save-text-color-disabled);\n }\n}\n\n.dialog-box {\n :deep(.tiny-dialog-box) {\n display: flex;\n flex-direction: column;\n\n .tiny-dialog-box__body {\n flex: 1;\n }\n }\n\n .monaco-editor {\n width: 100%;\n height: 100%;\n }\n}\n</style>\n\n<style>\n.changeRole a {\n color: var(--te-toolbars-save-text-color-link);\n padding: 0 5px;\n}\n.save-style .save-time .tiny-input__inner {\n height: 24px !important;\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport entry, { api } from './src/Main.vue'\nimport metaData from './meta'\nimport './src/styles/vars.less'\n\nexport default {\n ...metaData,\n entry,\n apis: api\n}\n"],"names":["metaData","publish","useMessage","PAGE_STATUS","AUTO_SAVED","constants","state","reactive","isLoading","ref","saveBlock","pageSchema","api","getMetaApi","META_APP","getCurrentBlock","useBlock","block","_a","savePage","currentPage","useCanvas","params","updateParams","handlePageUpdate","saveCommon","value","pageSettingState","isTemporaryPage","usePage","isBlock","canvasApi","pageState","resetBlockCanvasState","resetPageCanvasState","selectNode","pageContent","openCommon","isSaved","getSchema","beforeSave","saveMethod","saved","getOptions","meta","error","useNotify","pageStatus","useLayout","curPageState","pageInfo","ERR_MSG","getAutoSaveStatus","setAutoSaveStatus","status","OPEN_DELAY","_sfc_main","VueMonaco","Button","Popover","DialogBox","Checkbox","Select","ToolbarBase","delayOptions","editor","setSaved","subscribe","unsubscribe","subscriber","originSchema","onMounted","schema","hasChange","onUnmounted","close","openApi","saveApi","editorOptions","saveSetTimeout","saveConfig","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_createVNode","_component_toolbar_base","$setup","$props","_withCtx","_component_tiny_popover","_component_svg_icon","_createElementVNode","_cache","_component_tiny_checkbox","$event","_createTextVNode","_component_tiny_select","_component_tiny_button","_component_tiny_dialog_box","_createBlock","_component_vue_monaco","_createCommentVNode","index","entry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../meta.js","../src/js/index.ts","../src/Main.vue","../index.ts"],"sourcesContent":["export default {\n id: 'engine.toolbars.save',\n type: 'toolbars',\n title: 'save',\n options: {\n icon: {\n default: 'save'\n },\n renderType: 'button'\n }\n}\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport { reactive, ref } from 'vue'\nimport {\n useBlock,\n useCanvas,\n useLayout,\n useNotify,\n usePage,\n getOptions,\n getMetaApi,\n META_APP,\n useMessage\n} from '@opentiny/tiny-engine-meta-register'\nimport { constants } from '@opentiny/tiny-engine-utils'\nimport { handlePageUpdate } from '@opentiny/tiny-engine-common/js/http'\nimport meta from '../../meta'\n\nconst { publish } = useMessage()\n\nconst { PAGE_STATUS, AUTO_SAVED } = constants\nconst state = reactive({\n visible: false,\n code: '',\n originalCode: '',\n disabled: false\n})\n\nexport const isLoading = ref(false)\n\n// 保存或新建区块\nconst saveBlock = async (pageSchema: { fileName: any }) => {\n const api = getMetaApi(META_APP.BlockManage)\n const { getCurrentBlock } = useBlock()\n const block = getCurrentBlock()\n\n block.label = pageSchema.fileName\n // 画布上的schem回写到block的schema\n block.content = pageSchema\n // 获取区块截图\n isLoading.value = true\n block.screenshot = await api.getBlockBase64()\n await api.saveBlock?.(block)\n isLoading.value = false\n}\n\nconst savePage = async (pageSchema: any) => {\n const { currentPage } = useCanvas().pageState\n const params = {\n page_content: pageSchema\n }\n\n isLoading.value = true\n const updateParams = {\n id: currentPage.id,\n params: { ...currentPage, ...params }\n }\n await handlePageUpdate(updateParams)\n isLoading.value = false\n\n // 发布页面保存事件,通知其他组件进行相应处理\n publish({ topic: 'page-saved' })\n}\n\nexport const saveCommon = (value: string) => {\n const { pageSettingState, isTemporaryPage } = usePage()\n const { isBlock, canvasApi, pageState, resetBlockCanvasState, resetPageCanvasState } = useCanvas()\n const pageSchema = JSON.parse(value)\n const { selectNode } = canvasApi.value\n\n if (isBlock()) {\n resetBlockCanvasState({ ...pageState, pageSchema })\n } else {\n resetPageCanvasState({ ...pageState, pageSchema })\n }\n\n if (pageSettingState?.isAIPage) {\n if (isTemporaryPage.saved) {\n isTemporaryPage.saved = false\n }\n\n // 如果当前页面没有ID,为临时生成的页面,则打开新建页面面板\n isTemporaryPage.saved = true\n const pageContent = 'page_content'\n\n pageSettingState.currentPageData[pageContent] = pageSchema\n\n return Promise.resolve()\n }\n\n // 选中画布中的页面,关闭插件、属性配置\n selectNode(null)\n\n return isBlock() ? saveBlock(pageSchema) : savePage(pageSchema)\n}\nexport const openCommon = async () => {\n const { isSaved, getSchema } = useCanvas()\n if (isSaved() || state.disabled) {\n return\n }\n\n const { beforeSave, saveMethod, saved } = getOptions(meta.id)\n\n try {\n if (typeof beforeSave === 'function') {\n await beforeSave()\n }\n\n if (typeof saveMethod === 'function') {\n const stop = await saveMethod()\n\n if (stop) {\n return\n }\n }\n } catch (error) {\n useNotify({\n type: 'error',\n message: `Error in saving: ${error}`\n })\n }\n\n const pageStatus = useLayout().layoutState?.pageStatus\n const curPageState = pageStatus?.state\n const pageInfo = pageStatus?.data\n const ERR_MSG = {\n [PAGE_STATUS.Release]: '当前页面未锁定,请先锁定再保存',\n [PAGE_STATUS.Empty]: '当前应用无页面,请先新建页面再保存',\n [PAGE_STATUS.Guest]: '官网演示应用不能保存页面,如需体验请切换应用',\n [PAGE_STATUS.Lock]: `当前页面被 ${pageInfo?.username} ${pageInfo?.resetPasswordToken} 锁定,如需编辑请先联系他解锁文件,然后再锁定该页面后编辑!`\n }\n\n if ([PAGE_STATUS.Release, PAGE_STATUS.Empty, PAGE_STATUS.Guest, PAGE_STATUS.Lock].includes(curPageState)) {\n useNotify({\n type: 'error',\n title: '保存失败',\n message: ERR_MSG[curPageState]\n })\n\n return\n }\n\n state.disabled = true\n\n const pageSchema = getSchema()\n\n state.code = JSON.stringify(pageSchema || {}, null, 2)\n\n // 获取请求前schema代码,暂时先屏蔽\n /**\n if (useCanvas().isBlock()) {\n const api = getMetaApi(META_APP.BlockManage)\n const block = useBlock().getCurrentBlock()\n const remote = await api.getBlockById(block?.id)\n state.originalCode = JSON.stringify(remote?.content || {}, null, 2)\n } else {\n const api = getMetaApi(META_APP.AppManage)\n const remote = await api.getPageById(pageState?.currentPage?.id)\n state.originalCode = JSON.stringify(remote?.['page_content'] || {}, null, 2)\n }\n */\n\n saveCommon(state.code).finally(() => {\n state.disabled = false\n\n if (typeof saved === 'function') {\n try {\n saved()\n } catch (error) {\n useNotify({\n type: 'error',\n message: `Error in saved: ${error}`\n })\n }\n }\n })\n}\n\nexport const getAutoSaveStatus = () => {\n try {\n const value = localStorage.getItem(AUTO_SAVED) ?? ''\n return JSON.parse(value) ?? false\n } catch {\n return false\n }\n}\n\nexport const setAutoSaveStatus = (status: any) => {\n try {\n localStorage.setItem(AUTO_SAVED, JSON.stringify(status))\n return true\n } catch {\n return false\n }\n}\n","<template>\n <div class=\"toolbar-save\">\n <toolbar-base\n :content=\"isLoading ? '保存中' : '保存'\"\n :icon=\"options.icon.default || options.icon\"\n :options=\"{ ...options, showDots: !isSaved() }\"\n @click-api=\"openApi\"\n >\n <template #button>\n <tiny-popover :visible-arrow=\"false\" width=\"203\" trigger=\"click\" :open-delay=\"OPEN_DELAY.Default\">\n <template #reference>\n <svg-icon :name=\"iconExpand\"></svg-icon>\n </template>\n <div class=\"save-style\">\n <div class=\"save-setting\">保存设置</div>\n <tiny-checkbox v-model=\"state.checked\" name=\"tiny-checkbox\">自动保存</tiny-checkbox>\n <div class=\"save-time\">\n <div class=\"save-time-label\">保存间隔</div>\n <tiny-select v-model=\"state.timeValue\" :options=\"delayOptions\" :disabled=\"!state.checked\" autocomplete>\n </tiny-select>\n </div>\n <div class=\"save-button-group\">\n <tiny-button type=\"primary\" @click=\"saveConfig\">设置并保存</tiny-button>\n </div>\n </div>\n </tiny-popover>\n </template>\n <template #default>\n <tiny-dialog-box\n class=\"dialog-box\"\n :modal=\"false\"\n :fullscreen=\"true\"\n :append-to-body=\"true\"\n :visible=\"state.visible\"\n title=\"Schema 本地与线上差异\"\n @update:visible=\"state.visible = $event\"\n >\n <vue-monaco\n v-if=\"state.visible\"\n ref=\"editor\"\n class=\"monaco-editor\"\n :diffEditor=\"true\"\n :options=\"editorOptions\"\n :value=\"state.code\"\n :original=\"state.originalCode\"\n ></vue-monaco>\n <template #footer>\n <tiny-button @click=\"close\">取 消</tiny-button>\n <tiny-button type=\"primary\" @click=\"saveApi\">保 存</tiny-button>\n </template>\n </tiny-dialog-box>\n </template>\n </toolbar-base>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { reactive, ref, onUnmounted, onMounted } from 'vue'\nimport { VueMonaco } from '@opentiny/tiny-engine-common'\nimport { Button, Popover, DialogBox, Checkbox, Select } from '@opentiny/vue'\nimport { useCanvas, useMessage } from '@opentiny/tiny-engine-meta-register'\nimport { ToolbarBase } from '@opentiny/tiny-engine-common'\nimport { openCommon, saveCommon } from './js/index'\nimport { isLoading, setAutoSaveStatus, getAutoSaveStatus } from './js/index'\nimport { constants } from '@opentiny/tiny-engine-utils'\nconst { OPEN_DELAY } = constants\n\nexport const api = {\n saveCommon,\n openCommon\n}\nexport default {\n components: {\n VueMonaco,\n TinyButton: Button,\n TinyPopover: Popover,\n TinyDialogBox: DialogBox,\n TinyCheckbox: Checkbox,\n TinySelect: Select,\n ToolbarBase\n },\n props: {\n iconExpand: {\n type: String,\n default: 'down-arrow'\n },\n options: {\n type: Object,\n default: () => ({})\n }\n },\n setup() {\n const delayOptions = [\n { value: 5, label: '5分钟' },\n { value: 10, label: '10分钟' },\n { value: 15, label: '15分钟' }\n ]\n const state = reactive({\n visible: false,\n code: '',\n originalCode: '',\n checked: false,\n timeValue: 5,\n preservationTime: null\n })\n\n const editor = ref(null)\n\n const { isSaved, setSaved, getSchema } = useCanvas()\n\n const { subscribe, unsubscribe } = useMessage()\n const subscriber = 'toolbar-save'\n\n const originSchema = ref(null)\n\n onMounted(() => {\n // 订阅页面/区块初始化事件\n subscribe({\n topic: 'pageOrBlockInit',\n subscriber,\n callback: (schema: any) => {\n originSchema.value = JSON.stringify(schema)\n setSaved(true) // 初始化时标记为已保存\n }\n })\n\n // 订阅 schema 变更事件\n subscribe({\n topic: 'schemaChange',\n subscriber,\n callback: () => {\n if (originSchema.value) {\n const hasChange = JSON.stringify(getSchema()) === originSchema.value\n setSaved(hasChange)\n }\n }\n })\n\n // 订阅 schema 导入事件\n subscribe({\n topic: 'schemaImport',\n subscriber,\n callback: () => {\n if (originSchema.value) {\n const hasChange = JSON.stringify(getSchema()) === originSchema.value\n setSaved(hasChange)\n }\n }\n })\n })\n\n onUnmounted(() => {\n unsubscribe({ topic: 'pageOrBlockInit', subscriber })\n unsubscribe({ topic: 'schemaChange', subscriber })\n unsubscribe({ topic: 'schemaImport', subscriber })\n })\n\n const close = () => {\n state.visible = false\n state.originalCode = ''\n }\n const openApi = () => {\n if (!isLoading.value) {\n openCommon()\n }\n }\n const saveApi = () => {\n saveCommon()\n }\n // 保存或新建区块\n const editorOptions = {\n language: 'json',\n lineNumbers: true,\n minimap: {\n enabled: false\n }\n }\n const saveSetTimeout = () => {\n clearTimeout(state.preservationTime)\n state.preservationTime = setTimeout(() => {\n openApi()\n saveSetTimeout()\n }, state.timeValue * 60 * 1000)\n }\n const saveConfig = () => {\n setAutoSaveStatus(state.checked)\n if (state.checked) {\n saveSetTimeout()\n } else {\n clearTimeout(state.preservationTime)\n }\n }\n\n onMounted(() => {\n state.checked = getAutoSaveStatus()\n if (state.checked) {\n saveSetTimeout()\n }\n })\n\n onUnmounted(() => {\n clearTimeout(state.preservationTime)\n })\n\n return {\n state,\n editor,\n editorOptions,\n isLoading,\n isSaved,\n close,\n openApi,\n saveApi,\n delayOptions,\n saveConfig,\n OPEN_DELAY\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.dots {\n width: 6px;\n height: 6px;\n background: var(--te-toolbars-save-dot-color);\n border-radius: 50%;\n display: inline-block;\n position: absolute;\n top: 4px;\n right: 3px;\n z-index: 100;\n}\n\n.toolbar-save {\n .icon-down-arrow.icon-down-arrow {\n margin-left: var(--te-base-space-2x);\n margin-right: var(--te-base-space-0);\n }\n .save-button {\n background-color: var(--te-toolbars-save-button-bg-color);\n border: none;\n min-width: 70px;\n height: 26px;\n display: flex;\n align-items: center;\n padding: 0 8px;\n border-radius: 4px;\n &:not(.disabled):hover {\n background-color: var(--te-toolbars-save-button-bg-color);\n }\n }\n\n :deep(.icon-down-arrow:focus) {\n outline: none;\n }\n}\n\n.save-style {\n padding: 8px 4px;\n font-size: 12px;\n\n .save-setting {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n height: 20px;\n margin-bottom: 16px;\n }\n\n .save-time {\n line-height: 24px;\n font-size: 12px;\n margin: 12px 0 16px 0;\n display: flex;\n .save-time-label {\n width: 60px;\n color: var(--te-toolbars-save-text-color);\n }\n\n .tiny-select {\n width: 103px;\n margin-left: 12px;\n\n :deep(.tiny-input__suffix) {\n width: 12px;\n }\n }\n :deep(.tiny-select.is-disabled .tiny-input__suffix) {\n display: flex;\n }\n }\n\n .save-button-group {\n text-align: right;\n }\n}\n\n#saving {\n cursor: not-allowed;\n color: var(--te-toolbars-save-text-color-disabled);\n\n :deep(svg) {\n color: var(--te-toolbars-save-text-color-disabled);\n }\n}\n\n.dialog-box {\n :deep(.tiny-dialog-box) {\n display: flex;\n flex-direction: column;\n\n .tiny-dialog-box__body {\n flex: 1;\n }\n }\n\n .monaco-editor {\n width: 100%;\n height: 100%;\n }\n}\n</style>\n\n<style>\n.changeRole a {\n color: var(--te-toolbars-save-text-color-link);\n padding: 0 5px;\n}\n.save-style .save-time .tiny-input__inner {\n height: 24px !important;\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport entry, { api } from './src/Main.vue'\nimport metaData from './meta'\nimport './src/styles/vars.less'\n\nexport default {\n ...metaData,\n entry,\n apis: api\n}\n"],"names":["metaData","publish","useMessage","PAGE_STATUS","AUTO_SAVED","constants","state","reactive","isLoading","ref","saveBlock","pageSchema","api","getMetaApi","META_APP","getCurrentBlock","useBlock","block","_a","savePage","currentPage","useCanvas","params","updateParams","handlePageUpdate","saveCommon","value","pageSettingState","isTemporaryPage","usePage","isBlock","canvasApi","pageState","resetBlockCanvasState","resetPageCanvasState","selectNode","pageContent","openCommon","isSaved","getSchema","beforeSave","saveMethod","saved","getOptions","meta","error","useNotify","pageStatus","useLayout","curPageState","pageInfo","ERR_MSG","getAutoSaveStatus","setAutoSaveStatus","status","OPEN_DELAY","_sfc_main","VueMonaco","Button","Popover","DialogBox","Checkbox","Select","ToolbarBase","delayOptions","editor","setSaved","subscribe","unsubscribe","subscriber","originSchema","onMounted","schema","hasChange","onUnmounted","close","openApi","saveApi","editorOptions","saveSetTimeout","saveConfig","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_createVNode","_component_toolbar_base","$setup","$props","_withCtx","_component_tiny_popover","_component_svg_icon","_createElementVNode","_cache","_component_tiny_checkbox","$event","_createTextVNode","_component_tiny_select","_component_tiny_button","_component_tiny_dialog_box","_createBlock","_component_vue_monaco","_createCommentVNode","index","entry"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentiny/tiny-engine-toolbar-save",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2-alpha.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"homepage": "https://opentiny.design/tiny-engine",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@opentiny/tiny-engine-common": "2.6.
|
|
29
|
-
"@opentiny/tiny-engine-meta-register": "2.6.
|
|
30
|
-
"@opentiny/tiny-engine-utils": "2.6.
|
|
28
|
+
"@opentiny/tiny-engine-common": "2.6.2-alpha.0",
|
|
29
|
+
"@opentiny/tiny-engine-meta-register": "2.6.2-alpha.0",
|
|
30
|
+
"@opentiny/tiny-engine-utils": "2.6.2-alpha.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@opentiny/tiny-engine-vite-plugin-meta-comments": "2.6.
|
|
33
|
+
"@opentiny/tiny-engine-vite-plugin-meta-comments": "2.6.2-alpha.0",
|
|
34
34
|
"@vitejs/plugin-vue": "^5.1.2",
|
|
35
35
|
"@vitejs/plugin-vue-jsx": "^4.0.1",
|
|
36
36
|
"vite": "^5.4.2"
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"@opentiny/vue": "^3.20.0",
|
|
40
40
|
"vue": "^3.4.15"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "2ba591367de3ffd4c0efcbe4180487e2f3be217c"
|
|
43
43
|
}
|