From a4f2de4a6e8b7496d712e27e39b804d6f9e85cb9 Mon Sep 17 00:00:00 2001 From: yy-wow Date: Wed, 9 Oct 2024 18:53:37 -0700 Subject: [PATCH 01/12] feat: customized canvas entry --- .../canvas/DesignCanvas/src/DesignCanvas.vue | 20 +++++++++++++------ .../canvas/container/src/CanvasContainer.vue | 20 +++++++++++-------- packages/canvas/index.js | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/packages/canvas/DesignCanvas/src/DesignCanvas.vue b/packages/canvas/DesignCanvas/src/DesignCanvas.vue index 95229979d..041c6f2e8 100644 --- a/packages/canvas/DesignCanvas/src/DesignCanvas.vue +++ b/packages/canvas/DesignCanvas/src/DesignCanvas.vue @@ -5,7 +5,8 @@ :is="CanvasContainer.entry" :controller="controller" :materials-panel="materialsPanel" - :canvas-src="canvasUrl" + :canvas-src="canvasSrc" + :canvas-src-doc="canvasSrcDoc" @remove="removeNode" @selected="nodeSelected" > @@ -26,13 +27,15 @@ import { useHistory, useModal, getMergeRegistry, - getMergeMeta + getMergeMeta, + getOptions } from '@opentiny/tiny-engine-meta-register' import { useHttp } from '@opentiny/tiny-engine-http' import { constants } from '@opentiny/tiny-engine-utils' import * as ast from '@opentiny/tiny-engine-common/js/ast' import { initCanvas } from '../../init-canvas/init-canvas' import { getImportMapData } from './importMap' +import meta from '../meta' const { PAGE_STATUS } = constants @@ -52,6 +55,13 @@ export default { const showMask = ref(true) const canvasRef = ref(null) let showModal = false // 弹窗标识 + const { canvasSrc = '' } = getOptions(meta.id) || {} + let canvasSrcDoc = '' + + if (!canvasSrc) { + const { importMap, importStyles } = getImportMapData(getMergeMeta('engine.config')?.importMapVersion) + canvasSrcDoc = initCanvas(importMap, importStyles) + } const removeNode = (node) => { const { pageState } = useCanvas() @@ -158,12 +168,10 @@ export default { canvasResizeObserver?.disconnect?.() }) - const { importMap, importStyles } = getImportMapData(getMergeMeta('engine.config')?.importMapVersion) - const { html: canvasUrl } = initCanvas(importMap, importStyles) - return { removeNode, - canvasUrl, + canvasSrc, + canvasSrcDoc, nodeSelected, footData, materialsPanel, diff --git a/packages/canvas/container/src/CanvasContainer.vue b/packages/canvas/container/src/CanvasContainer.vue index aac69d2d1..c757c4278 100644 --- a/packages/canvas/container/src/CanvasContainer.vue +++ b/packages/canvas/container/src/CanvasContainer.vue @@ -11,13 +11,14 @@ - +
应用数据初始化中...
@@ -63,6 +64,7 @@ export default { props: { controller: Object, canvasSrc: String, + canvasSrcDoc: String, materialsPanel: Object }, emits: ['selected', 'remove'], @@ -73,6 +75,7 @@ export default { const loading = computed(() => useCanvas().isLoading()) let showSettingModel = ref(false) let target = ref(null) + const srcAttrName = computed(() => (props.canvasSrc ? 'src' : 'srcdoc')) const setCurrentNode = async (event) => { const { clientX, clientY } = event @@ -241,7 +244,8 @@ export default { target, showSettingModel, insertPosition, - loading + loading, + srcAttrName } } } diff --git a/packages/canvas/index.js b/packages/canvas/index.js index 4b935cabd..14596342c 100644 --- a/packages/canvas/index.js +++ b/packages/canvas/index.js @@ -17,6 +17,7 @@ import CanvasLayout from './layout' import DesignCanvas from './DesignCanvas' export { CanvasContainer, CanvasLayout, DesignCanvas } +export { createRender } from './render' export default { ...DesignCanvas, From 705ce2cf03d15c5ff4ae3aa78abf9cb0005ef780 Mon Sep 17 00:00:00 2001 From: yy-wow Date: Wed, 9 Oct 2024 18:53:58 -0700 Subject: [PATCH 02/12] feat: export conditions --- packages/canvas/render/src/RenderMain.js | 4 ++++ packages/canvas/render/src/context.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/canvas/render/src/RenderMain.js b/packages/canvas/render/src/RenderMain.js index 1f52ca617..04e2c928f 100644 --- a/packages/canvas/render/src/RenderMain.js +++ b/packages/canvas/render/src/RenderMain.js @@ -24,6 +24,8 @@ import { setContext, getContext, setCondition, + getCondition, + getConditions, context, setNode } from './context' @@ -441,6 +443,8 @@ export const api = { getRoot, setPagecss, setCondition, + getCondition, + getConditions, getGlobalState, getDataSourceMap, setDataSourceMap, diff --git a/packages/canvas/render/src/context.js b/packages/canvas/render/src/context.js index 96b8ca673..3fe5e640a 100644 --- a/packages/canvas/render/src/context.js +++ b/packages/canvas/render/src/context.js @@ -51,3 +51,7 @@ export const getContext = () => context export const setCondition = (id, visible = false) => { conditions[id] = visible } + +export const getCondition = (id) => conditions[id] !== false + +export const getConditions = () => conditions \ No newline at end of file From 7a9cc616050306af2f6cd7f7e1366872cbd0e27c Mon Sep 17 00:00:00 2001 From: yy-wow Date: Wed, 9 Oct 2024 18:54:23 -0700 Subject: [PATCH 03/12] feat: delete vue params --- packages/canvas/render/src/runner.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/canvas/render/src/runner.js b/packages/canvas/render/src/runner.js index dab5021e3..deb1ce1b9 100644 --- a/packages/canvas/render/src/runner.js +++ b/packages/canvas/render/src/runner.js @@ -10,7 +10,7 @@ * */ -import { createApp, h } from 'vue' +import { createApp } from 'vue' import { addScript, addStyle, dynamicImportComponents, updateDependencies } from '../../common' import TinyI18nHost, { I18nInjectionKey } from '@opentiny/tiny-engine-common/js/i18n' import Main, { api } from './RenderMain' @@ -49,7 +49,7 @@ const renderer = { const create = async (config) => { const { beforeAppCreate, appCreated } = config.lifeCycles || {} if (typeof beforeAppCreate === 'function') { - await beforeAppCreate({ Vue: { h }, canvasWin: window, api }) + await beforeAppCreate({ api: renderer }) } App && App.unmount() App = null From f44fe8eaa36391dcb6932c8555a52896ac78fb22 Mon Sep 17 00:00:00 2001 From: yy-wow Date: Wed, 9 Oct 2024 18:55:08 -0700 Subject: [PATCH 04/12] feat: add beforeSaveMethod --- .../src/components/BindEventsDialog.vue | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/settings/events/src/components/BindEventsDialog.vue b/packages/settings/events/src/components/BindEventsDialog.vue index 10d387a91..a7f6ef122 100644 --- a/packages/settings/events/src/components/BindEventsDialog.vue +++ b/packages/settings/events/src/components/BindEventsDialog.vue @@ -13,7 +13,7 @@ 选择已有方法或者添加新方法(点击 确定 之后将在JS面板中创建一个该名称的新方法)。
- +