@kdesigner/amis-vue 0.0.0-alpha.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["useDebug","useAdapter","ajaxFetch","default_jumpTo","isCancel","default_isCurrentUrl","copy","defineComponent","ref","createPage","deepClone","createRoot","h","useRoute","useAdapter","UserApis","transformPageJson","bindActions","renderAmis","React","useAdapter","applyPureVueInReact","createObject","resolveVariableAndFilter","ScopedContext","Renderer","FormItem","OmniLib"],"sources":["../src/editor/AmisPageEditor.vue","../src/editor/AmisPageEditor.vue","../src/editor/XuiPageEditor.vue","../src/editor/XuiPageEditor.vue","../src/editor/XuiPageEditorDialog.vue","../src/editor/XuiPageEditorDialog.vue","../src/editor/XuiLoading.vue","../src/runtime/env.ts","../src/runtime/react-adapter.ts","../src/page/AmisSchemaPage.ts","../src/page/XuiSchemaPage.vue","../src/page/XuiSchemaPage.vue","../src/debug/debugger.ts","../src/debug/XuiDebugger.vue","../src/debug/XuiDebugger.vue","../src/page/XuiPage.vue","../src/page/XuiPage.vue","../src/toast/AmisToast.vue","../src/toast/AmisToast.vue","../src/runtime/AmisVueComponent.ts","../src/lib.ts","../src/index.ts"],"sourcesContent":["<template>\n <iframe\n style=\"width: 100%; height: 100%; border: none\"\n ref=\"editorRef\"\n src=\"/amis-editor/index.html\"\n ></iframe>\n</template>\n\n<script lang=\"ts\">\nimport { ajaxFetch } from '@kdesigner/core'\nimport { isString } from '@kdesigner/shared'\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\n\nexport default defineComponent({\n props: {\n schema: Object,\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n },\n\n emits: ['exit'],\n\n setup(props, { emit }) {\n const editorRef = ref(null)\n let fetched = false\n // iframe 是否已 ready;用于宿主异步补 schema 后推送\n let editorInited = false\n\n const { savePageSource, rollbackPageSource, getPageSource } = props\n\n function pushSchema(schema: unknown) {\n postMsg({\n type: 'setSchema',\n data: schema\n })\n }\n\n /** 首次初始化:有 schema 直接推;否则自行拉取(宿主已去掉前置 loading) */\n function applyInitialSchema() {\n if (fetched) return\n if (props.schema != null) {\n fetched = true\n pushSchema(props.schema)\n return\n }\n fetched = true\n getPageSource(true)\n .then((page) => {\n pushSchema(page)\n })\n .catch((e) => {\n fetched = false\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n }\n\n function handleEvent(event: MessageEvent) {\n if (event.data == 'amis-editor-inited') {\n editorInited = true\n applyInitialSchema()\n } else if (event.data === 'amis-editor-reload') {\n fetched = false\n startFetch()\n } else if (event.data === 'amis-editor-exit') {\n emit('exit')\n } else if (event.data === 'amis-editor-rollback') {\n //deletePageCache(props.path)\n if (rollbackPageSource) {\n rollbackPageSource()\n .then(() => {\n postMsg({\n type: 'toast',\n level: 'info',\n message: '回滚成功'\n })\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n .then(() => {\n fetched = false\n return startFetch()\n })\n }\n } else if (isString(event.data) && event.data.startsWith('{')) {\n var data = JSON.parse(event.data)\n if (data.type == 'save') {\n savePageSource(data.data)\n .then(() => {\n postMsg({\n type: 'toast',\n message: '保存成功'\n })\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n } else if (data.type == 'ajaxFetch') {\n ajaxFetch(data.data).then((result) => {\n postMsg({\n type: 'ajaxComplete',\n reqId: data.reqId,\n result\n })\n })\n }\n } else {\n console.log('unknown-message', event.data)\n }\n }\n\n function postMsg(msg: any) {\n const frame: any = editorRef.value\n if (!frame) return\n const str = isString(msg) ? msg : JSON.stringify(msg)\n frame.contentWindow.postMessage(str, '*')\n }\n\n function startFetch() {\n const frame: any = editorRef.value\n if (!frame) return\n fetched = true\n return getPageSource(true)\n .then((page) => {\n postMsg({\n type: 'toast',\n level: 'info',\n message: '页面加载成功'\n })\n\n var msg = {\n type: 'setSchema',\n data: page\n }\n postMsg(msg)\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n throw e\n })\n }\n\n window.addEventListener('message', handleEvent)\n\n // 宿主异步补 schema:iframe 已就绪时再推一次,覆盖竞态下的空 schema\n watch(\n () => props.schema,\n (schema) => {\n if (!editorInited || schema == null) return\n fetched = true\n pushSchema(schema)\n }\n )\n\n onUnmounted(() => {\n console.log('editor unmounted')\n window.removeEventListener('message', handleEvent)\n })\n\n return {\n editorRef\n }\n }\n})\n</script>\n","<template>\n <iframe\n style=\"width: 100%; height: 100%; border: none\"\n ref=\"editorRef\"\n src=\"/amis-editor/index.html\"\n ></iframe>\n</template>\n\n<script lang=\"ts\">\nimport { ajaxFetch } from '@kdesigner/core'\nimport { isString } from '@kdesigner/shared'\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\n\nexport default defineComponent({\n props: {\n schema: Object,\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n },\n\n emits: ['exit'],\n\n setup(props, { emit }) {\n const editorRef = ref(null)\n let fetched = false\n // iframe 是否已 ready;用于宿主异步补 schema 后推送\n let editorInited = false\n\n const { savePageSource, rollbackPageSource, getPageSource } = props\n\n function pushSchema(schema: unknown) {\n postMsg({\n type: 'setSchema',\n data: schema\n })\n }\n\n /** 首次初始化:有 schema 直接推;否则自行拉取(宿主已去掉前置 loading) */\n function applyInitialSchema() {\n if (fetched) return\n if (props.schema != null) {\n fetched = true\n pushSchema(props.schema)\n return\n }\n fetched = true\n getPageSource(true)\n .then((page) => {\n pushSchema(page)\n })\n .catch((e) => {\n fetched = false\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n }\n\n function handleEvent(event: MessageEvent) {\n if (event.data == 'amis-editor-inited') {\n editorInited = true\n applyInitialSchema()\n } else if (event.data === 'amis-editor-reload') {\n fetched = false\n startFetch()\n } else if (event.data === 'amis-editor-exit') {\n emit('exit')\n } else if (event.data === 'amis-editor-rollback') {\n //deletePageCache(props.path)\n if (rollbackPageSource) {\n rollbackPageSource()\n .then(() => {\n postMsg({\n type: 'toast',\n level: 'info',\n message: '回滚成功'\n })\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n .then(() => {\n fetched = false\n return startFetch()\n })\n }\n } else if (isString(event.data) && event.data.startsWith('{')) {\n var data = JSON.parse(event.data)\n if (data.type == 'save') {\n savePageSource(data.data)\n .then(() => {\n postMsg({\n type: 'toast',\n message: '保存成功'\n })\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n })\n } else if (data.type == 'ajaxFetch') {\n ajaxFetch(data.data).then((result) => {\n postMsg({\n type: 'ajaxComplete',\n reqId: data.reqId,\n result\n })\n })\n }\n } else {\n console.log('unknown-message', event.data)\n }\n }\n\n function postMsg(msg: any) {\n const frame: any = editorRef.value\n if (!frame) return\n const str = isString(msg) ? msg : JSON.stringify(msg)\n frame.contentWindow.postMessage(str, '*')\n }\n\n function startFetch() {\n const frame: any = editorRef.value\n if (!frame) return\n fetched = true\n return getPageSource(true)\n .then((page) => {\n postMsg({\n type: 'toast',\n level: 'info',\n message: '页面加载成功'\n })\n\n var msg = {\n type: 'setSchema',\n data: page\n }\n postMsg(msg)\n })\n .catch((e) => {\n postMsg({\n type: 'toast',\n level: 'error',\n message: e.message || e.toString()\n })\n throw e\n })\n }\n\n window.addEventListener('message', handleEvent)\n\n // 宿主异步补 schema:iframe 已就绪时再推一次,覆盖竞态下的空 schema\n watch(\n () => props.schema,\n (schema) => {\n if (!editorInited || schema == null) return\n fetched = true\n pushSchema(schema)\n }\n )\n\n onUnmounted(() => {\n console.log('editor unmounted')\n window.removeEventListener('message', handleEvent)\n })\n\n return {\n editorRef\n }\n }\n})\n</script>\n","<template>\n <component :is=\"componentType\" v-bind=\"props\" :schema=\"schemaRef\" @exit=\"handleExit\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useAdapter, getSchemaProcessorType } from '@kdesigner/core'\nimport { defineComponent, shallowRef, watchEffect, markRaw } from 'vue'\n\nimport AmisPageEditor from './AmisPageEditor.vue'\n\nconst props = defineProps({\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n})\n\nconst { getPageSource } = props\n\nconst { useI18n } = useAdapter()\n\nconst emit = defineEmits(['exit'])\n\nfunction handleExit() {\n emit('exit')\n}\n\n// 默认直接挂 Amis 可视化编辑器,避免宿主侧多余 loading;schema 异步补上\nconst componentType = shallowRef(markRaw(AmisPageEditor))\nconst schemaRef = shallowRef()\n\nwatchEffect(() => {\n getPageSource(false).then((schema) => {\n if (!schema) schema = {}\n schemaRef.value = markRaw(schema)\n\n const schemaTypeName = schema['xui:schema-type']\n if (!schemaTypeName) {\n componentType.value = markRaw(AmisPageEditor)\n return\n }\n\n const schemaType = getSchemaProcessorType(schemaTypeName)\n if (!schemaType) {\n const { t } = useI18n()\n useAdapter().notify('error', t('nop.err.unknown-schema-type'))\n throw new Error('nop.err.unknown-schema-type')\n }\n componentType.value = markRaw(\n schemaType.editorComponentType as ReturnType<typeof defineComponent>\n )\n })\n})\n</script>\n","<template>\n <component :is=\"componentType\" v-bind=\"props\" :schema=\"schemaRef\" @exit=\"handleExit\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useAdapter, getSchemaProcessorType } from '@kdesigner/core'\nimport { defineComponent, shallowRef, watchEffect, markRaw } from 'vue'\n\nimport AmisPageEditor from './AmisPageEditor.vue'\n\nconst props = defineProps({\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n})\n\nconst { getPageSource } = props\n\nconst { useI18n } = useAdapter()\n\nconst emit = defineEmits(['exit'])\n\nfunction handleExit() {\n emit('exit')\n}\n\n// 默认直接挂 Amis 可视化编辑器,避免宿主侧多余 loading;schema 异步补上\nconst componentType = shallowRef(markRaw(AmisPageEditor))\nconst schemaRef = shallowRef()\n\nwatchEffect(() => {\n getPageSource(false).then((schema) => {\n if (!schema) schema = {}\n schemaRef.value = markRaw(schema)\n\n const schemaTypeName = schema['xui:schema-type']\n if (!schemaTypeName) {\n componentType.value = markRaw(AmisPageEditor)\n return\n }\n\n const schemaType = getSchemaProcessorType(schemaTypeName)\n if (!schemaType) {\n const { t } = useI18n()\n useAdapter().notify('error', t('nop.err.unknown-schema-type'))\n throw new Error('nop.err.unknown-schema-type')\n }\n componentType.value = markRaw(\n schemaType.editorComponentType as ReturnType<typeof defineComponent>\n )\n })\n})\n</script>\n","<template>\n <!-- 自绘全屏层:不依赖 element-plus 样式(宿主常未引入) -->\n <Teleport to=\"body\">\n <div v-if=\"modelValue\" class=\"page-editor-root\" role=\"dialog\" aria-modal=\"true\">\n <XuiPageEditor\n :savePageSource=\"savePageSource\"\n :rollbackPageSource=\"rollbackPageSource\"\n :getPageSource=\"getPageSource\"\n @exit=\"handleEditorExit\"\n />\n </div>\n </Teleport>\n</template>\n\n<style>\n.page-editor-root {\n position: fixed;\n inset: 0;\n z-index: 2100;\n background: var(--color-bg, #fff);\n}\n</style>\n\n<script setup lang=\"ts\">\nimport { watch, onUnmounted } from 'vue'\n\nimport XuiPageEditor from './XuiPageEditor.vue'\n\nconst props = defineProps({\n modelValue: Boolean,\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n})\n\nconst emit = defineEmits(['update:modelValue', 'exit'])\n\nlet prevBodyOverflow = ''\n\nwatch(\n () => props.modelValue,\n (open) => {\n if (open) {\n prevBodyOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = prevBodyOverflow\n }\n }\n)\n\nonUnmounted(() => {\n document.body.style.overflow = prevBodyOverflow\n})\n\nfunction handleEditorExit() {\n emit('update:modelValue', false)\n emit('exit')\n}\n</script>\n","<template>\n <!-- 自绘全屏层:不依赖 element-plus 样式(宿主常未引入) -->\n <Teleport to=\"body\">\n <div v-if=\"modelValue\" class=\"page-editor-root\" role=\"dialog\" aria-modal=\"true\">\n <XuiPageEditor\n :savePageSource=\"savePageSource\"\n :rollbackPageSource=\"rollbackPageSource\"\n :getPageSource=\"getPageSource\"\n @exit=\"handleEditorExit\"\n />\n </div>\n </Teleport>\n</template>\n\n<style>\n.page-editor-root {\n position: fixed;\n inset: 0;\n z-index: 2100;\n background: var(--color-bg, #fff);\n}\n</style>\n\n<script setup lang=\"ts\">\nimport { watch, onUnmounted } from 'vue'\n\nimport XuiPageEditor from './XuiPageEditor.vue'\n\nconst props = defineProps({\n modelValue: Boolean,\n rollbackPageSource: Function,\n getPageSource: {\n type: Function,\n required: true\n },\n savePageSource: {\n type: Function,\n required: true\n }\n})\n\nconst emit = defineEmits(['update:modelValue', 'exit'])\n\nlet prevBodyOverflow = ''\n\nwatch(\n () => props.modelValue,\n (open) => {\n if (open) {\n prevBodyOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = prevBodyOverflow\n }\n }\n)\n\nonUnmounted(() => {\n document.body.style.overflow = prevBodyOverflow\n})\n\nfunction handleEditorExit() {\n emit('update:modelValue', false)\n emit('exit')\n}\n</script>\n","<template>\n <div class=\"app-loading\" role=\"status\" aria-live=\"polite\" aria-label=\"Loading\">\n <div class=\"app-loading-spinner\" />\n </div>\n</template>\n\n<style scoped>\n.app-loading {\n display: flex;\n width: 100%;\n height: 100%;\n min-height: 160px;\n align-items: center;\n justify-content: center;\n background: var(--color-bg, #fafafa);\n}\n\n.app-loading-spinner {\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: 2px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-top-color: var(--color-fg, #111);\n animation: app-loading-spin 0.7s linear infinite;\n}\n\nhtml[data-theme='dark'] .app-loading {\n background: var(--color-bg, #111);\n}\n\nhtml[data-theme='dark'] .app-loading-spinner {\n border-color: var(--color-border, rgba(255, 255, 255, 0.16));\n border-top-color: var(--color-fg, #ededed);\n}\n\n@keyframes app-loading-spin {\n to {\n transform: rotate(360deg);\n }\n}\n</style>\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { PageObject, FetcherRequest } from '@kdesigner/core'\nimport {\n useDebug,\n default_jumpTo,\n isCancel,\n useAdapter,\n default_isCurrentUrl,\n ajaxFetch,\n default_updateLocation,\n providePage\n} from '@kdesigner/core'\nimport type { ActionObject } from 'amis'\nimport { toast } from 'amis'\nimport type { RenderOptions } from 'amis-core/lib/factory'\nimport copy from 'copy-to-clipboard'\n\nexport function createEnv(page: PageObject): RenderOptions {\n const { debug } = useDebug()\n const adapter = useAdapter()\n\n const env: RenderOptions = {\n session: page.id,\n affixOffsetTop: 0,\n\n fetcher(options) {\n providePage(page)\n ;(options as FetcherRequest)._page = page\n return ajaxFetch(options as FetcherRequest) as any\n },\n\n jumpTo(to: string, _action?: ActionObject, _ctx?: object) {\n const router = adapter.useRouter()\n return default_jumpTo(router, to)\n },\n\n isCancel: isCancel,\n\n isCurrentUrl: default_isCurrentUrl,\n\n updateLocation(to, replace) {\n // 调用go将会导致页面组件重新加载\n // const go = useGo(page.router)\n // go(normalizeLink(to), replace)\n default_updateLocation(to, !!replace)\n },\n\n notify: adapter.notify,\n\n enableAMISDebug: debug.value,\n\n alert: adapter.alert,\n confirm: adapter.confirm,\n\n copy: (contents, options) => {\n if (options === void 0) {\n options = {}\n }\n const { t } = adapter.useI18n()\n const ret = copy(contents, options)\n if (ret && (!options || options.shutup !== true)) {\n toast.info(t('Copy To Clipboard'))\n }\n return ret\n }\n }\n\n ;(env as any)._page = page\n ;(page as any).env = env\n return env\n}\n","import { createPage } from '@kdesigner/core'\nimport type { PageObject, RegisterPage, PageOptions } from '@kdesigner/core'\nimport { deepClone } from '@kdesigner/shared'\nimport type { Root } from 'react-dom/client'\nimport { createRoot } from 'react-dom/client'\nimport type { PropType } from 'vue'\nimport { defineComponent, onBeforeUnmount, ref, h, watchEffect } from 'vue'\n\nexport type ReactPageOptions = PageOptions & {\n onRenderPage(schema: any, data: any, page: PageObject): Promise<JSX.Element> | JSX.Element\n onDestroyPage?(page: PageObject): void\n}\n\nexport function defineReactPageComponent(\n builder: (props: { actions?: Record<string, Function> }) => ReactPageOptions\n) {\n return defineComponent({\n props: {\n schema: Object,\n data: Object,\n registerPage: Function as PropType<RegisterPage>,\n actions: Object as PropType<Record<string, Function>>\n },\n\n setup(props) {\n const domRef = ref<HTMLElement>()\n let root: Root | undefined\n\n const options = builder({ actions: props.actions })\n const page = createPage(options)\n\n props.registerPage?.(page)\n\n function destroyPage() {\n if (root) {\n // 先卸载root触发销毁操作,然后再执行其他清理函数\n root.unmount()\n options.onDestroyPage?.(page)\n root = undefined\n }\n }\n\n function renderPage() {\n const schema = deepClone(props.schema as any)\n // render返回undefined\n root = createRoot(domRef.value!)\n const r = root\n const vdom = Promise.resolve(options.onRenderPage(schema, props.data, page))\n vdom.then((v) => r.render(v as any))\n }\n\n watchEffect(() => {\n destroyPage()\n if (props.schema && domRef.value) {\n renderPage()\n }\n })\n\n onBeforeUnmount(() => {\n destroyPage()\n\n return {\n domRef\n }\n })\n\n return () =>\n h('div', {\n ref: domRef,\n style: {\n width: '100%',\n height: '100%'\n },\n class: 'nop-page'\n })\n }\n })\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { PageObject } from '@kdesigner/core'\nimport { bindActions, useAdapter, transformPageJson, UserApis } from '@kdesigner/core'\nimport { clearStoresCache, render as renderAmis, setDefaultLocale } from 'amis'\nimport type { RootRenderProps } from 'amis-core/lib/Root'\nimport { useRoute } from 'vue-router'\n\nimport { createEnv } from '../runtime/env'\nimport { defineReactPageComponent } from '../runtime/react-adapter'\nimport 'moment/locale/zh-cn'\n\nexport default defineReactPageComponent((props: { actions?: Record<string, Function> }) => {\n let amisScoped: any\n const route = useRoute()\n return {\n actions: props.actions,\n getComponent(name: string) {\n return get_component(name)\n },\n\n getScopedStore(name: string) {\n return get_component(name)?.props?.store\n },\n\n getState(name: string) {\n return get_root_store().get(name)\n },\n\n setState(name: string, value: any) {\n get_root_store().set(name, value)\n },\n\n onDestroyPage(page: PageObject) {\n clearStoresCache(page.id)\n },\n\n async onRenderPage(schema: any, data: any, page: PageObject) {\n const env = createEnv(page)\n const locale = useAdapter().useLocale()\n let globalScopeData = {}\n try {\n globalScopeData = await UserApis.LoginApi__getLoginUserInfo()\n } catch (e) {\n console.error(e)\n }\n const opts: RootRenderProps = {\n data: {\n ...data,\n globalScopeData,\n route: {\n meta: route.meta,\n path: route.path,\n name: route.name,\n query: route.query,\n params: route.params,\n fullPath: route.fullPath,\n hash: route.hash\n }\n },\n onConfirm: page.getAction('ok') || function () {},\n onClose: function (b: boolean) {\n if (b) {\n page.getAction('ok')?.()\n } else {\n page.getAction('cancel')?.()\n }\n },\n scopeRef: (scoped: any) => {\n amisScoped = scoped\n },\n locale: locale, // amis内部会自动替换zh_CN为zh-CN\n theme: 'cxd'\n }\n\n setDefaultLocale(locale)\n schema = await transformPageJson(schema.__baseUrl, schema)\n await bindActions(schema.__baseUrl, schema, page)\n return renderAmis(schema, opts, env)\n }\n }\n\n function get_root() {\n return amisScoped?.getComponents()[0]\n }\n\n function get_root_store() {\n return get_root()?.context.store\n }\n\n function get_component(name: string) {\n if (name[0] == '#') {\n const pos = name.indexOf('.')\n if (pos < 0) {\n return get_root()?.context.getComponentById(name.substring(1))\n } else {\n return get_root()\n ?.context.getComponentById(name.substring(1))\n .getComponentByName(name.substring(pos + 1))\n }\n } else {\n return get_root()?.context.getComponentByName(name)\n }\n }\n\n // function get_form() {\n // let root = get_root()\n // let comps = root?.context.getComponents()\n // for (let i = 0, n = comps.length; i < n; i++) {\n // if (comps[i].props.type == 'form')\n // return comps[i]\n // }\n // return null\n // }\n})\n","<template>\n <component :is=\"componentType\" v-bind=\"$props\"></component>\n</template>\n\n<script lang=\"ts\">\nimport { getSchemaProcessorType, useAdapter, RegisterPage } from '@kdesigner/core'\nimport { PropType, defineComponent, watchEffect, ref, markRaw } from 'vue'\n\nimport AmisSchemaPage from './AmisSchemaPage'\n\n/**\n * 嵌入到vue中的amis页面。每个AmisSchemaPage都对应一个ReactRooot。schema发生变化时会重新创建react组件\n */\nexport default defineComponent({\n props: {\n schema: Object,\n data: Object,\n registerPage: Function as PropType<RegisterPage>,\n actions: Object as PropType<Record<string, Function>>\n },\n\n setup(props) {\n const { useI18n } = useAdapter()\n\n let componentType = ref(markRaw(AmisSchemaPage))\n watchEffect(() => {\n const schemaTypeName = props.schema?.['xui:schema-type']\n if (!schemaTypeName) {\n componentType.value = markRaw(AmisSchemaPage)\n } else {\n const schemaType = getSchemaProcessorType(schemaTypeName)\n if (!schemaType) {\n const { t } = useI18n()\n useAdapter().notify('error', t('nop.err.unknown-schema-type'))\n throw new Error('nop.err.unknown-schema-type')\n }\n componentType.value = markRaw(\n schemaType.componentType as ReturnType<typeof defineComponent>\n )\n }\n })\n\n return {\n componentType\n }\n }\n})\n</script>\n","<template>\n <component :is=\"componentType\" v-bind=\"$props\"></component>\n</template>\n\n<script lang=\"ts\">\nimport { getSchemaProcessorType, useAdapter, RegisterPage } from '@kdesigner/core'\nimport { PropType, defineComponent, watchEffect, ref, markRaw } from 'vue'\n\nimport AmisSchemaPage from './AmisSchemaPage'\n\n/**\n * 嵌入到vue中的amis页面。每个AmisSchemaPage都对应一个ReactRooot。schema发生变化时会重新创建react组件\n */\nexport default defineComponent({\n props: {\n schema: Object,\n data: Object,\n registerPage: Function as PropType<RegisterPage>,\n actions: Object as PropType<Record<string, Function>>\n },\n\n setup(props) {\n const { useI18n } = useAdapter()\n\n let componentType = ref(markRaw(AmisSchemaPage))\n watchEffect(() => {\n const schemaTypeName = props.schema?.['xui:schema-type']\n if (!schemaTypeName) {\n componentType.value = markRaw(AmisSchemaPage)\n } else {\n const schemaType = getSchemaProcessorType(schemaTypeName)\n if (!schemaType) {\n const { t } = useI18n()\n useAdapter().notify('error', t('nop.err.unknown-schema-type'))\n throw new Error('nop.err.unknown-schema-type')\n }\n componentType.value = markRaw(\n schemaType.componentType as ReturnType<typeof defineComponent>\n )\n }\n })\n\n return {\n componentType\n }\n }\n})\n</script>\n","export default {\n type: 'page',\n 'xui:schema': 'amis',\n body: {\n type: 'form',\n title: null,\n actions: [\n {\n label: 'Cancel',\n type: 'action',\n actionType: 'ajax',\n level: 'default',\n api: {\n url: 'action://cancel',\n messages: {\n success: '_'\n }\n }\n },\n {\n label: 'Apply',\n type: 'action',\n actionType: 'ajax',\n level: 'success',\n api: 'action://change'\n },\n {\n label: 'Yaml/JSON',\n type: 'action',\n actionType: 'ajax',\n level: 'primary',\n api: 'action://toggleYaml'\n },\n {\n label: 'Submit',\n type: 'action',\n actionType: 'ajax',\n level: 'primary',\n api: 'action://ok'\n }\n ],\n body: [\n {\n type: 'editor',\n name: 'schema',\n placeholder: '{}',\n visibleOn: \"this.lang !='yaml'\"\n },\n {\n type: 'yaml-editor',\n name: 'schema',\n placeholder: {},\n visibleOn: \"this.lang == 'yaml'\"\n }\n ]\n }\n}\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <span class=\"page-debugger\" :class=\"{ 'is-dragging': dragging }\" :style=\"positionStyle\">\n <button\n type=\"button\"\n class=\"debug-handle\"\n title=\"拖动\"\n aria-label=\"拖动调试工具\"\n @pointerdown=\"onPointerDown\"\n >\n ⋮⋮\n </button>\n <button type=\"button\" class=\"debug-btn\" title=\"Schema Json Editor\" @click=\"openSchemaEditor\">\n S\n </button>\n <button\n v-if=\"path\"\n type=\"button\"\n class=\"debug-btn\"\n title=\"Page Visual Designer\"\n @click=\"openXuiPageEditor\"\n >\n V\n </button>\n </span>\n\n <!-- 自绘浮层:宿主未必引入 element-plus 样式,el-dialog 会掉进文档流撑高页面 -->\n <Teleport to=\"body\">\n <div\n v-if=\"schemaVisible\"\n class=\"schema-modal-root\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Page Schema\"\n @keydown.esc=\"handleCancel\"\n >\n <div class=\"schema-modal-mask\" @click=\"handleCancel\" />\n <div class=\"schema-modal-panel\">\n <header class=\"schema-modal-header\">\n <h2 class=\"schema-modal-title\">Page Schema</h2>\n <button type=\"button\" class=\"schema-modal-close\" aria-label=\"关闭\" @click=\"handleCancel\">\n ×\n </button>\n </header>\n <div class=\"schema-modal-body\">\n <AmisSchemaPage :schema=\"debuggerSchema\" :actions=\"schemaActions\" :data=\"schemaData\" />\n </div>\n </div>\n </div>\n </Teleport>\n\n <xui-page-editor-dialog\n v-model=\"designerVisible\"\n :savePageSource=\"savePageSource\"\n :rollbackPageSource=\"rollbackPageSource\"\n :getPageSource=\"getPageSource\"\n />\n</template>\n\n<style>\n.page-debugger {\n position: fixed;\n top: 56px;\n right: 16px;\n z-index: 1000;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 8px;\n background: var(--color-bg, #fff);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.page-debugger.is-dragging {\n opacity: 0.92;\n}\n\n.debug-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--color-fg-subtle, #999);\n font-size: 12px;\n line-height: 1;\n letter-spacing: -2px;\n cursor: grab;\n touch-action: none;\n user-select: none;\n}\n\n.debug-handle:hover {\n color: var(--color-fg-muted, #666);\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n}\n\n.page-debugger.is-dragging .debug-handle {\n cursor: grabbing;\n}\n\n.debug-btn {\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n background: transparent;\n color: var(--color-fg-muted, #666);\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1;\n cursor: pointer;\n transition:\n color 0.15s ease,\n background 0.15s ease,\n border-color 0.15s ease;\n}\n\n.debug-btn:hover {\n color: var(--color-fg, #111);\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n border-color: var(--color-fg-muted, #999);\n}\n\n.schema-modal-root {\n position: fixed;\n inset: 0;\n z-index: 2000;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.schema-modal-mask {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.35);\n}\n\n.schema-modal-panel {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n width: min(720px, 100%);\n max-height: min(80vh, 720px);\n overflow: hidden;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 10px;\n background: var(--color-bg, #fff);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);\n}\n\n.schema-modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n height: 48px;\n padding: 0 14px 0 16px;\n border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));\n}\n\n.schema-modal-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--color-fg, #111);\n}\n\n.schema-modal-close {\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--color-fg-muted, #666);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.schema-modal-close:hover {\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n color: var(--color-fg, #111);\n}\n\n.schema-modal-body {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: 12px 16px 16px;\n}\n</style>\n\n<script lang=\"ts\" setup>\nimport { PageApis, deletePageCache } from '@kdesigner/core'\nimport yaml from 'js-yaml'\nimport { computed, onMounted, onUnmounted, shallowRef, ref, watch } from 'vue'\n\nimport XuiPageEditorDialog from '../editor/XuiPageEditorDialog.vue'\nimport AmisSchemaPage from '../page/AmisSchemaPage'\nimport debuggerSchema from './debugger'\n\nconst POSITION_KEY = 'kdesigner:xui-debugger-pos'\n\nconst props = defineProps({\n path: {\n type: String,\n required: true\n },\n schema: Object\n})\n\nconst emit = defineEmits(['update:schema', 'rebuild'])\n\nconst schemaVisible = ref(false)\nconst designerVisible = ref(false)\nconst dragging = ref(false)\nconst pos = ref<{ left: number; top: number } | null>(null)\nlet prevBodyOverflow = ''\n\nconst positionStyle = computed(() => {\n if (!pos.value) return undefined\n return {\n left: `${pos.value.left}px`,\n top: `${pos.value.top}px`,\n right: 'auto'\n }\n})\n\nonMounted(() => {\n try {\n const raw = sessionStorage.getItem(POSITION_KEY)\n if (!raw) return\n const parsed = JSON.parse(raw) as { left: number; top: number }\n if (Number.isFinite(parsed.left) && Number.isFinite(parsed.top)) {\n pos.value = clampPos(parsed.left, parsed.top)\n }\n } catch {\n // ignore\n }\n})\n\nonUnmounted(() => {\n restoreBodyScroll()\n})\n\nwatch(schemaVisible, (open) => {\n if (open) lockBodyScroll()\n else restoreBodyScroll()\n})\n\nfunction lockBodyScroll() {\n prevBodyOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n}\n\nfunction restoreBodyScroll() {\n document.body.style.overflow = prevBodyOverflow\n}\n\nfunction clampPos(left: number, top: number) {\n const maxLeft = Math.max(8, window.innerWidth - 100)\n const maxTop = Math.max(8, window.innerHeight - 48)\n return {\n left: Math.min(Math.max(8, left), maxLeft),\n top: Math.min(Math.max(8, top), maxTop)\n }\n}\n\n/** 仅手柄可拖;S/V 保持正常 click,避免 pointer capture 吞事件 */\nfunction onPointerDown(e: PointerEvent) {\n if (e.button !== 0 && e.pointerType === 'mouse') return\n e.preventDefault()\n\n const handle = e.currentTarget as HTMLElement\n const panel = handle.closest('.page-debugger') as HTMLElement | null\n if (!panel) return\n\n const rect = panel.getBoundingClientRect()\n const startX = e.clientX\n const startY = e.clientY\n const originLeft = rect.left\n const originTop = rect.top\n dragging.value = true\n handle.setPointerCapture(e.pointerId)\n\n const onMove = (ev: PointerEvent) => {\n pos.value = clampPos(originLeft + (ev.clientX - startX), originTop + (ev.clientY - startY))\n }\n\n const onUp = (ev: PointerEvent) => {\n dragging.value = false\n handle.releasePointerCapture(ev.pointerId)\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', onUp)\n handle.removeEventListener('pointercancel', onUp)\n if (pos.value) {\n try {\n sessionStorage.setItem(POSITION_KEY, JSON.stringify(pos.value))\n } catch {\n // ignore\n }\n }\n }\n\n handle.addEventListener('pointermove', onMove)\n handle.addEventListener('pointerup', onUp)\n handle.addEventListener('pointercancel', onUp)\n}\n\nconst schemaData = shallowRef({\n schema: '',\n lang: 'json'\n})\n\nconst {\n PageProvider__getPageSource,\n PageProvider__rollbackPageSource,\n PageProvider__savePageSource\n} = PageApis\n\nfunction getPageSource(silent: boolean) {\n return PageProvider__getPageSource(props.path, silent)\n}\n\nfunction savePageSource(data: any) {\n deletePageCache(props.path)\n PageProvider__savePageSource(props.path, data, true)\n}\n\nfunction rollbackPageSource() {\n PageProvider__rollbackPageSource(props.path, true)\n}\n\nfunction openSchemaEditor() {\n schemaData.value = { schema: yaml.dump(props.schema), lang: 'yaml' }\n schemaVisible.value = true\n}\n\nconst schemaActions: Record<string, Function> = {\n ok: handleOk,\n cancel: handleCancel,\n change: handleChange,\n rebuild: handleRebuild,\n toggleYaml: handleToggleYaml\n}\n\nfunction handleChange(options: any) {\n const data = options.data\n let json = schemaData.value.lang == 'yaml' ? yaml.load(data.schema) : JSON.parse(data.schema)\n emit('update:schema', json)\n}\n\nfunction handleOk(data: any) {\n handleChange(data)\n schemaVisible.value = false\n}\n\nfunction handleCancel() {\n schemaVisible.value = false\n}\n\nfunction handleRebuild() {\n emit('rebuild')\n}\n\nfunction handleToggleYaml(options: any) {\n let schema = options.data.schema\n if (options.data.lang == 'yaml') {\n schemaData.value = { lang: 'json', schema: JSON.stringify(yaml.load(schema), null, ' ') }\n } else {\n schemaData.value = { lang: 'yaml', schema: yaml.dump(JSON.parse(schema)) }\n }\n}\n\nfunction openXuiPageEditor() {\n designerVisible.value = true\n}\n</script>\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <span class=\"page-debugger\" :class=\"{ 'is-dragging': dragging }\" :style=\"positionStyle\">\n <button\n type=\"button\"\n class=\"debug-handle\"\n title=\"拖动\"\n aria-label=\"拖动调试工具\"\n @pointerdown=\"onPointerDown\"\n >\n ⋮⋮\n </button>\n <button type=\"button\" class=\"debug-btn\" title=\"Schema Json Editor\" @click=\"openSchemaEditor\">\n S\n </button>\n <button\n v-if=\"path\"\n type=\"button\"\n class=\"debug-btn\"\n title=\"Page Visual Designer\"\n @click=\"openXuiPageEditor\"\n >\n V\n </button>\n </span>\n\n <!-- 自绘浮层:宿主未必引入 element-plus 样式,el-dialog 会掉进文档流撑高页面 -->\n <Teleport to=\"body\">\n <div\n v-if=\"schemaVisible\"\n class=\"schema-modal-root\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Page Schema\"\n @keydown.esc=\"handleCancel\"\n >\n <div class=\"schema-modal-mask\" @click=\"handleCancel\" />\n <div class=\"schema-modal-panel\">\n <header class=\"schema-modal-header\">\n <h2 class=\"schema-modal-title\">Page Schema</h2>\n <button type=\"button\" class=\"schema-modal-close\" aria-label=\"关闭\" @click=\"handleCancel\">\n ×\n </button>\n </header>\n <div class=\"schema-modal-body\">\n <AmisSchemaPage :schema=\"debuggerSchema\" :actions=\"schemaActions\" :data=\"schemaData\" />\n </div>\n </div>\n </div>\n </Teleport>\n\n <xui-page-editor-dialog\n v-model=\"designerVisible\"\n :savePageSource=\"savePageSource\"\n :rollbackPageSource=\"rollbackPageSource\"\n :getPageSource=\"getPageSource\"\n />\n</template>\n\n<style>\n.page-debugger {\n position: fixed;\n top: 56px;\n right: 16px;\n z-index: 1000;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 8px;\n background: var(--color-bg, #fff);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.page-debugger.is-dragging {\n opacity: 0.92;\n}\n\n.debug-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--color-fg-subtle, #999);\n font-size: 12px;\n line-height: 1;\n letter-spacing: -2px;\n cursor: grab;\n touch-action: none;\n user-select: none;\n}\n\n.debug-handle:hover {\n color: var(--color-fg-muted, #666);\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n}\n\n.page-debugger.is-dragging .debug-handle {\n cursor: grabbing;\n}\n\n.debug-btn {\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n background: transparent;\n color: var(--color-fg-muted, #666);\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1;\n cursor: pointer;\n transition:\n color 0.15s ease,\n background 0.15s ease,\n border-color 0.15s ease;\n}\n\n.debug-btn:hover {\n color: var(--color-fg, #111);\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n border-color: var(--color-fg-muted, #999);\n}\n\n.schema-modal-root {\n position: fixed;\n inset: 0;\n z-index: 2000;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.schema-modal-mask {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.35);\n}\n\n.schema-modal-panel {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n width: min(720px, 100%);\n max-height: min(80vh, 720px);\n overflow: hidden;\n border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));\n border-radius: 10px;\n background: var(--color-bg, #fff);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);\n}\n\n.schema-modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n height: 48px;\n padding: 0 14px 0 16px;\n border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));\n}\n\n.schema-modal-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--color-fg, #111);\n}\n\n.schema-modal-close {\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--color-fg-muted, #666);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.schema-modal-close:hover {\n background: var(--color-hover, rgba(0, 0, 0, 0.04));\n color: var(--color-fg, #111);\n}\n\n.schema-modal-body {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: 12px 16px 16px;\n}\n</style>\n\n<script lang=\"ts\" setup>\nimport { PageApis, deletePageCache } from '@kdesigner/core'\nimport yaml from 'js-yaml'\nimport { computed, onMounted, onUnmounted, shallowRef, ref, watch } from 'vue'\n\nimport XuiPageEditorDialog from '../editor/XuiPageEditorDialog.vue'\nimport AmisSchemaPage from '../page/AmisSchemaPage'\nimport debuggerSchema from './debugger'\n\nconst POSITION_KEY = 'kdesigner:xui-debugger-pos'\n\nconst props = defineProps({\n path: {\n type: String,\n required: true\n },\n schema: Object\n})\n\nconst emit = defineEmits(['update:schema', 'rebuild'])\n\nconst schemaVisible = ref(false)\nconst designerVisible = ref(false)\nconst dragging = ref(false)\nconst pos = ref<{ left: number; top: number } | null>(null)\nlet prevBodyOverflow = ''\n\nconst positionStyle = computed(() => {\n if (!pos.value) return undefined\n return {\n left: `${pos.value.left}px`,\n top: `${pos.value.top}px`,\n right: 'auto'\n }\n})\n\nonMounted(() => {\n try {\n const raw = sessionStorage.getItem(POSITION_KEY)\n if (!raw) return\n const parsed = JSON.parse(raw) as { left: number; top: number }\n if (Number.isFinite(parsed.left) && Number.isFinite(parsed.top)) {\n pos.value = clampPos(parsed.left, parsed.top)\n }\n } catch {\n // ignore\n }\n})\n\nonUnmounted(() => {\n restoreBodyScroll()\n})\n\nwatch(schemaVisible, (open) => {\n if (open) lockBodyScroll()\n else restoreBodyScroll()\n})\n\nfunction lockBodyScroll() {\n prevBodyOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n}\n\nfunction restoreBodyScroll() {\n document.body.style.overflow = prevBodyOverflow\n}\n\nfunction clampPos(left: number, top: number) {\n const maxLeft = Math.max(8, window.innerWidth - 100)\n const maxTop = Math.max(8, window.innerHeight - 48)\n return {\n left: Math.min(Math.max(8, left), maxLeft),\n top: Math.min(Math.max(8, top), maxTop)\n }\n}\n\n/** 仅手柄可拖;S/V 保持正常 click,避免 pointer capture 吞事件 */\nfunction onPointerDown(e: PointerEvent) {\n if (e.button !== 0 && e.pointerType === 'mouse') return\n e.preventDefault()\n\n const handle = e.currentTarget as HTMLElement\n const panel = handle.closest('.page-debugger') as HTMLElement | null\n if (!panel) return\n\n const rect = panel.getBoundingClientRect()\n const startX = e.clientX\n const startY = e.clientY\n const originLeft = rect.left\n const originTop = rect.top\n dragging.value = true\n handle.setPointerCapture(e.pointerId)\n\n const onMove = (ev: PointerEvent) => {\n pos.value = clampPos(originLeft + (ev.clientX - startX), originTop + (ev.clientY - startY))\n }\n\n const onUp = (ev: PointerEvent) => {\n dragging.value = false\n handle.releasePointerCapture(ev.pointerId)\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', onUp)\n handle.removeEventListener('pointercancel', onUp)\n if (pos.value) {\n try {\n sessionStorage.setItem(POSITION_KEY, JSON.stringify(pos.value))\n } catch {\n // ignore\n }\n }\n }\n\n handle.addEventListener('pointermove', onMove)\n handle.addEventListener('pointerup', onUp)\n handle.addEventListener('pointercancel', onUp)\n}\n\nconst schemaData = shallowRef({\n schema: '',\n lang: 'json'\n})\n\nconst {\n PageProvider__getPageSource,\n PageProvider__rollbackPageSource,\n PageProvider__savePageSource\n} = PageApis\n\nfunction getPageSource(silent: boolean) {\n return PageProvider__getPageSource(props.path, silent)\n}\n\nfunction savePageSource(data: any) {\n deletePageCache(props.path)\n PageProvider__savePageSource(props.path, data, true)\n}\n\nfunction rollbackPageSource() {\n PageProvider__rollbackPageSource(props.path, true)\n}\n\nfunction openSchemaEditor() {\n schemaData.value = { schema: yaml.dump(props.schema), lang: 'yaml' }\n schemaVisible.value = true\n}\n\nconst schemaActions: Record<string, Function> = {\n ok: handleOk,\n cancel: handleCancel,\n change: handleChange,\n rebuild: handleRebuild,\n toggleYaml: handleToggleYaml\n}\n\nfunction handleChange(options: any) {\n const data = options.data\n let json = schemaData.value.lang == 'yaml' ? yaml.load(data.schema) : JSON.parse(data.schema)\n emit('update:schema', json)\n}\n\nfunction handleOk(data: any) {\n handleChange(data)\n schemaVisible.value = false\n}\n\nfunction handleCancel() {\n schemaVisible.value = false\n}\n\nfunction handleRebuild() {\n emit('rebuild')\n}\n\nfunction handleToggleYaml(options: any) {\n let schema = options.data.schema\n if (options.data.lang == 'yaml') {\n schemaData.value = { lang: 'json', schema: JSON.stringify(yaml.load(schema), null, ' ') }\n } else {\n schemaData.value = { lang: 'yaml', schema: yaml.dump(JSON.parse(schema)) }\n }\n}\n\nfunction openXuiPageEditor() {\n designerVisible.value = true\n}\n</script>\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <xui-debugger\n v-if=\"debug\"\n :path=\"path\"\n :schema=\"pageSchema\"\n @update:schema=\"updateSchema\"\n @rebuild=\"rebuild\"\n />\n <XuiSchemaPage :schema=\"pageSchema\" :registerPage=\"registerPage\" :action=\"actions\" :data=\"data\" />\n</template>\n\n<script lang=\"ts\">\nimport type { PageObject, RegisterPage } from '@kdesigner/core'\nimport { useDebug, useAdapter } from '@kdesigner/core'\nimport { deepClone } from '@kdesigner/shared'\nimport { PropType, defineComponent, shallowRef, watchEffect } from 'vue'\n\nimport XuiDebugger from '../debug/XuiDebugger.vue'\nimport XuiSchemaPage from './XuiSchemaPage.vue'\n\n/**\n * 在AmisSchemaPage的基础上增加AmisDebugger调试功能,以及根据path动态加载schema的功能\n */\nexport default defineComponent({\n name: 'amis-page',\n props: {\n path: {\n type: String,\n required: true\n },\n data: Object,\n config: Object,\n registerPage: Function as PropType<RegisterPage>,\n actions: Object as PropType<Record<string, Function>>\n },\n\n components: { XuiDebugger, XuiSchemaPage },\n\n setup(props) {\n const { getPage } = useAdapter()\n\n let pageSchema = shallowRef<any>()\n\n function registerPage(p: PageObject) {\n props.registerPage?.(p)\n }\n\n watchEffect(() => {\n getPage(props.path).then((res) => {\n res.__baseUrl = props.path\n updateSchema(res)\n })\n })\n\n function updateSchema(value: any) {\n pageSchema.value = value\n }\n\n function rebuild() {\n pageSchema.value = deepClone(pageSchema.value)\n }\n\n const { debug } = useDebug()\n\n const actions = { ...props.actions }\n\n // registerPage/actions/data 与 props 同名,setup 需返回以暴露给模板绑定\n // oxlint-disable vue/no-dupe-keys\n return {\n pageSchema,\n updateSchema,\n rebuild,\n registerPage,\n debug,\n actions,\n data: props.data\n }\n // oxlint-enable vue/no-dupe-keys\n }\n})\n</script>\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <xui-debugger\n v-if=\"debug\"\n :path=\"path\"\n :schema=\"pageSchema\"\n @update:schema=\"updateSchema\"\n @rebuild=\"rebuild\"\n />\n <XuiSchemaPage :schema=\"pageSchema\" :registerPage=\"registerPage\" :action=\"actions\" :data=\"data\" />\n</template>\n\n<script lang=\"ts\">\nimport type { PageObject, RegisterPage } from '@kdesigner/core'\nimport { useDebug, useAdapter } from '@kdesigner/core'\nimport { deepClone } from '@kdesigner/shared'\nimport { PropType, defineComponent, shallowRef, watchEffect } from 'vue'\n\nimport XuiDebugger from '../debug/XuiDebugger.vue'\nimport XuiSchemaPage from './XuiSchemaPage.vue'\n\n/**\n * 在AmisSchemaPage的基础上增加AmisDebugger调试功能,以及根据path动态加载schema的功能\n */\nexport default defineComponent({\n name: 'amis-page',\n props: {\n path: {\n type: String,\n required: true\n },\n data: Object,\n config: Object,\n registerPage: Function as PropType<RegisterPage>,\n actions: Object as PropType<Record<string, Function>>\n },\n\n components: { XuiDebugger, XuiSchemaPage },\n\n setup(props) {\n const { getPage } = useAdapter()\n\n let pageSchema = shallowRef<any>()\n\n function registerPage(p: PageObject) {\n props.registerPage?.(p)\n }\n\n watchEffect(() => {\n getPage(props.path).then((res) => {\n res.__baseUrl = props.path\n updateSchema(res)\n })\n })\n\n function updateSchema(value: any) {\n pageSchema.value = value\n }\n\n function rebuild() {\n pageSchema.value = deepClone(pageSchema.value)\n }\n\n const { debug } = useDebug()\n\n const actions = { ...props.actions }\n\n // registerPage/actions/data 与 props 同名,setup 需返回以暴露给模板绑定\n // oxlint-disable vue/no-dupe-keys\n return {\n pageSchema,\n updateSchema,\n rebuild,\n registerPage,\n debug,\n actions,\n data: props.data\n }\n // oxlint-enable vue/no-dupe-keys\n }\n})\n</script>\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <div ref=\"domRef\"></div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ToastComponent } from 'amis'\nimport { createElement, Fragment } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { onMounted, Ref, ref, onBeforeUnmount } from 'vue'\n\nconst domRef: Ref<HTMLElement | undefined> = ref()\n\nlet root\n\nonMounted(() => {\n root = createRoot(domRef.value!)\n root.render(createElement(Fragment, {}, createElement(ToastComponent, { position: 'top-right' })))\n})\n\nonBeforeUnmount(() => {\n if (root) {\n root.unmount()\n root = undefined\n }\n})\n</script>\n","<!--\n/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n-->\n<template>\n <div ref=\"domRef\"></div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ToastComponent } from 'amis'\nimport { createElement, Fragment } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { onMounted, Ref, ref, onBeforeUnmount } from 'vue'\n\nconst domRef: Ref<HTMLElement | undefined> = ref()\n\nlet root\n\nonMounted(() => {\n root = createRoot(domRef.value!)\n root.render(createElement(Fragment, {}, createElement(ToastComponent, { position: 'top-right' })))\n})\n\nonBeforeUnmount(() => {\n if (root) {\n root.unmount()\n root = undefined\n }\n})\n</script>\n","import { useAdapter } from '@kdesigner/core'\nimport type { FormControlProps, IScopedContext } from 'amis'\nimport { FormItem, Renderer, ScopedContext } from 'amis'\nimport type { ActionObject, RendererData } from 'amis-core'\nimport { createObject, resolveVariableAndFilter } from 'amis-core'\nimport React from 'react'\nimport { applyPureVueInReact } from 'veaury'\n\nexport interface VueControlProps extends FormControlProps {\n componentName: string\n /** schema 中声明的全局 Vue 组件名 */\n vueComponent?: string\n props: Record<string, any>\n}\n\nexport default class VueControl extends React.Component<VueControlProps, any> {\n vueComponent: any\n /** 未解析到组件时的名称,用于占位提示 */\n missingComponentName?: string\n\n constructor(props: VueControlProps) {\n super(props)\n const { resolveVueComponent } = useAdapter()\n // 兼容 schema 字段 vueComponent / componentName\n const name = props.vueComponent || props.componentName\n const resolved = typeof name === 'string' && name ? resolveVueComponent(name) : name\n\n // veaury 在组件为 undefined 时会读 __esModule 直接抛错,这里先拦截\n if (!resolved) {\n this.missingComponentName = String(name || 'unknown')\n this.vueComponent = null\n console.error(`[amis-vue] Vue component not registered: ${this.missingComponentName}`)\n return\n }\n\n this.vueComponent = applyPureVueInReact(resolved)\n }\n\n doAction(action: ActionObject, _data: RendererData, _throwErrors?: boolean) {\n const { resetValue, onChange } = this.props\n const actionType = action?.actionType as string\n\n if (actionType === 'clear') {\n onChange(undefined)\n } else if (actionType === 'reset') {\n onChange(resetValue)\n }\n }\n\n async dispatchChangeEvent(eventData: any = {}) {\n const { dispatchEvent, data, onChange } = this.props\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: eventData\n })\n )\n\n if (rendererEvent?.prevented) {\n return\n }\n\n onChange?.(eventData)\n }\n\n render() {\n if (!this.vueComponent) {\n return React.createElement(\n 'div',\n {\n className: 'cxd-Form-label',\n style: { color: 'var(--colors-error-5, #ff4d4f)', padding: '4px 0' }\n },\n `Vue 组件未注册: ${this.missingComponentName}`\n )\n }\n\n let { props, value, env, store } = this.props\n\n if (props) {\n props = { ...props }\n for (const key of Object.keys(props)) {\n if (typeof props[key] === 'string') {\n props[key] = resolveVariableAndFilter(props[key], this.props.data, '| raw')\n }\n }\n }\n\n const mergedProps = {\n env,\n store,\n ...props,\n value,\n 'onUpdate:value': (value: any) => this.dispatchChangeEvent(value)\n }\n return React.createElement(this.vueComponent, mergedProps)\n }\n}\n\n// @Renderer({\n// type: 'vue-renderer',\n// autoVar:true\n// })\nclass VueRenderer extends VueControl {\n static contextType = ScopedContext\n\n constructor(props: VueControlProps) {\n super(props)\n const scoped = this.context as IScopedContext\n if (scoped) scoped.registerComponent(this)\n }\n\n componentWillUnmount() {\n const scoped = this.context as IScopedContext\n if (scoped) scoped.unRegisterComponent(this)\n }\n}\n\n// autoVar只对最顶层的string字符串属性有效\nRenderer({\n type: 'vue-renderer',\n autoVar: false\n})(VueRenderer as any)\n\n// @FormItem({\n// type: 'vue-form-item',\n// autoVar:true\n// })\nclass VueFormItem extends VueControl {}\n\nFormItem({\n type: 'vue-form-item',\n autoVar: false\n})(VueFormItem as any)\n","// 导出核心功能模块\nexport * from '@kdesigner/core'\n\nexport * from './exports'\n\nexport * from '@kdesigner/components'\n\nexport * from '@kdesigner/amis-extensions'\n","export * from './lib'\n\n// 样式文件导入 - 兼容原有 SDK 的样式导入\nimport '@kdesigner/amis-extensions/style.css'\nimport '@kdesigner/components/style'\nimport './styles/fix.css'\nimport * as OmniLib from './lib'\n\n// 注册 Omni 模块 - 兼容原有 SDK 的注册方式\n// oxlint-disable-next-line import/namespace -- registerModule 经 lib.ts 的 `export * from '@kdesigner/core'` 间接导出,oxlint 跨包 namespace 静态分析无法追踪\nOmniLib.registerModule?.('@kdesigner/amis-vue', OmniLib)\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AAGrB,OAAO,sCAAsC,CAAA;AAC7C,OAAO,6BAA6B,CAAA;AACpC,OAAO,kBAAkB,CAAA"}