feat(runtime): vue2/vue3公共部分提出到vue-runtime-help中

This commit is contained in:
roymondchen 2024-05-24 17:44:01 +08:00
parent 66001dae04
commit f8dd062a50
22 changed files with 474 additions and 420 deletions

View File

@ -212,8 +212,8 @@ class App extends EventEmitter implements AppCore {
this.components.delete(type); this.components.delete(type);
} }
public resolveComponent(type: string) { public resolveComponent<T = any>(type: string) {
return this.components.get(type); return this.components.get(type) as T;
} }
public bindEvents() { public bindEvents() {

198
pnpm-lock.yaml generated
View File

@ -49,7 +49,7 @@ importers:
version: 3.3.0(typescript@5.4.2) version: 3.3.0(typescript@5.4.2)
element-plus: element-plus:
specifier: ^2.6.1 specifier: ^2.6.1
version: 2.6.1(vue@3.4.27(typescript@5.4.2)) version: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
enquirer: enquirer:
specifier: ^2.3.6 specifier: ^2.3.6
version: 2.3.6 version: 2.3.6
@ -118,7 +118,7 @@ importers:
version: 5.2.11(@types/node@18.19.3)(sass@1.77.0)(terser@5.31.0) version: 5.2.11(@types/node@18.19.3)(sass@1.77.0)(terser@5.31.0)
vitepress: vitepress:
specifier: 1.1.4 specifier: 1.1.4
version: 1.1.4(@algolia/client-search@4.9.1)(@types/node@18.19.3)(@types/react@17.0.37)(async-validator@4.2.5)(axios@0.25.0)(postcss@8.4.38)(qrcode@1.5.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(sass@1.77.0)(search-insights@2.9.0)(sortablejs@1.15.2)(terser@5.31.0)(typescript@5.4.2) version: 1.1.4(@algolia/client-search@4.9.1)(@types/node@18.19.3)(@types/react@17.0.37)(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(async-validator@4.2.5)(axios@0.25.0)(postcss@8.4.38)(qrcode@1.5.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(sass@1.77.0)(search-insights@2.9.0)(sortablejs@1.15.2)(terser@5.31.0)(typescript@5.4.2)
vitest: vitest:
specifier: ^1.6.0 specifier: ^1.6.0
version: 1.6.0(@types/node@18.19.3)(jsdom@19.0.0)(sass@1.77.0)(terser@5.31.0) version: 1.6.0(@types/node@18.19.3)(jsdom@19.0.0)(sass@1.77.0)(terser@5.31.0)
@ -400,7 +400,7 @@ importers:
version: link:../design version: link:../design
element-plus: element-plus:
specifier: ^2.6.1 specifier: ^2.6.1
version: 2.6.1(vue@3.4.27(typescript@5.4.2)) version: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^18.19.0 specifier: ^18.19.0
@ -754,7 +754,7 @@ importers:
version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)) version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2))
'@tmagic/element-plus-adapter': '@tmagic/element-plus-adapter':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(element-plus@2.6.1(vue@3.4.27(typescript@5.4.2))) version: 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(element-plus@2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))
'@tmagic/form': '@tmagic/form':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)) version: 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2))
@ -766,13 +766,13 @@ importers:
version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4) version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4)
'@tmagic/tmagic-form-runtime': '@tmagic/tmagic-form-runtime':
specifier: 1.0.2 specifier: 1.0.2
version: 1.0.2(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/editor@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(element-plus@2.6.1(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)) version: 1.0.2(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/editor@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(element-plus@2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
'@tmagic/utils': '@tmagic/utils':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/schema@1.4.5) version: 1.4.5(@tmagic/schema@1.4.5)
element-plus: element-plus:
specifier: ^2.6.1 specifier: ^2.6.1
version: 2.6.1(vue@3.4.27(typescript@5.4.2)) version: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
monaco-editor: monaco-editor:
specifier: ^0.48.0 specifier: ^0.48.0
version: 0.48.0 version: 0.48.0
@ -815,7 +815,7 @@ importers:
version: 5.4.2 version: 5.4.2
unplugin-auto-import: unplugin-auto-import:
specifier: ^0.12.0 specifier: ^0.12.0
version: 0.12.0(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.4.2)))(rollup@2.25.0) version: 0.12.0(@vueuse/core@10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))(rollup@2.25.0)
unplugin-vue-components: unplugin-vue-components:
specifier: ^0.22.11 specifier: ^0.22.11
version: 0.22.11(@babel/parser@7.24.5)(rollup@2.25.0)(vue@3.4.27(typescript@5.4.2)) version: 0.22.11(@babel/parser@7.24.5)(rollup@2.25.0)(vue@3.4.27(typescript@5.4.2))
@ -906,7 +906,7 @@ importers:
version: link:../../packages/utils version: link:../../packages/utils
element-plus: element-plus:
specifier: ^2.6.1 specifier: ^2.6.1
version: 2.6.1(vue@3.4.27(typescript@5.4.2)) version: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
vue: vue:
specifier: ^3.4.27 specifier: ^3.4.27
version: 3.4.27(typescript@5.4.2) version: 3.4.27(typescript@5.4.2)
@ -933,6 +933,43 @@ importers:
specifier: ^2.0.16 specifier: ^2.0.16
version: 2.0.16(typescript@5.4.2) version: 2.0.16(typescript@5.4.2)
runtime/vue-runtime-help:
dependencies:
'@tmagic/core':
specifier: workspace:*
version: link:../../packages/core
'@tmagic/data-source':
specifier: workspace:*
version: link:../../packages/data-source
'@tmagic/schema':
specifier: workspace:*
version: link:../../packages/schema
'@tmagic/stage':
specifier: workspace:*
version: link:../../packages/stage
'@tmagic/utils':
specifier: workspace:*
version: link:../../packages/utils
'@vue/composition-api':
specifier: '>=1.7.2'
version: 1.7.2(vue@3.4.27(typescript@5.4.2))
vue:
specifier: '>=2.0.0 || >=3.0.0'
version: 3.4.27(typescript@5.4.2)
vue-demi:
specifier: ^0.14.7
version: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
devDependencies:
'@types/node':
specifier: ^18.19.0
version: 18.19.3
rimraf:
specifier: ^3.0.2
version: 3.0.2
typescript:
specifier: ^5.4.2
version: 5.4.2
runtime/vue2: runtime/vue2:
dependencies: dependencies:
'@tmagic/cli': '@tmagic/cli':
@ -947,15 +984,15 @@ importers:
'@tmagic/schema': '@tmagic/schema':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5 version: 1.4.5
'@tmagic/stage':
specifier: 1.4.5
version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4)
'@tmagic/ui-vue2': '@tmagic/ui-vue2':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(dayjs@1.11.11)(qrcode@1.5.0)(vue@2.7.4) version: 1.4.5(dayjs@1.11.11)(qrcode@1.5.0)(vue@2.7.4)
'@tmagic/utils': '@tmagic/utils':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/schema@1.4.5) version: 1.4.5(@tmagic/schema@1.4.5)
'@tmagic/vue-runtime-help':
specifier: ^0.0.2
version: 0.0.2(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(@vue/composition-api@1.7.2(vue@2.7.4))(scenejs@1.9.4)(vue@2.7.4)
axios: axios:
specifier: ^0.25.0 specifier: ^0.25.0
version: 0.25.0 version: 0.25.0
@ -993,9 +1030,6 @@ importers:
runtime/vue3: runtime/vue3:
dependencies: dependencies:
'@tmagic/cli':
specifier: 1.4.5
version: 1.4.5
'@tmagic/core': '@tmagic/core':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)) version: 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
@ -1005,15 +1039,15 @@ importers:
'@tmagic/schema': '@tmagic/schema':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5 version: 1.4.5
'@tmagic/stage':
specifier: 1.4.5
version: 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4)
'@tmagic/ui': '@tmagic/ui':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(dayjs@1.11.11)(qrcode@1.5.0)(vue@3.4.27(typescript@5.4.2)) version: 1.4.5(dayjs@1.11.11)(qrcode@1.5.0)(vue@3.4.27(typescript@5.4.2))
'@tmagic/utils': '@tmagic/utils':
specifier: 1.4.5 specifier: 1.4.5
version: 1.4.5(@tmagic/schema@1.4.5) version: 1.4.5(@tmagic/schema@1.4.5)
'@tmagic/vue-runtime-help':
specifier: ^0.0.2
version: 0.0.2(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(scenejs@1.9.4)(vue@3.4.27(typescript@5.4.2))
axios: axios:
specifier: ^0.25.0 specifier: ^0.25.0
version: 0.25.0 version: 0.25.0
@ -1021,6 +1055,9 @@ importers:
specifier: ^3.4.27 specifier: ^3.4.27
version: 3.4.27(typescript@5.4.2) version: 3.4.27(typescript@5.4.2)
devDependencies: devDependencies:
'@tmagic/cli':
specifier: 1.4.5
version: 1.4.5
'@types/node': '@types/node':
specifier: ^18.19.0 specifier: ^18.19.0
version: 18.19.3 version: 18.19.3
@ -2812,6 +2849,20 @@ packages:
peerDependencies: peerDependencies:
'@tmagic/schema': 1.4.5 '@tmagic/schema': 1.4.5
'@tmagic/vue-runtime-help@0.0.2':
resolution: {integrity: sha512-bE2Fmt9pXlS4AZn/oJZfojId2erKID1FleYxGswUjFAMF4heoPU4/Bhl17cA3jn/hQAQpUWtW+Xqj5KwZAkWaw==}
engines: {node: '>=18'}
peerDependencies:
'@tmagic/core': 1.4.5
'@tmagic/data-source': 1.4.5
'@tmagic/schema': 1.4.5
'@tmagic/utils': 1.4.5
'@vue/composition-api': '>=1.7.2'
vue: '>=2.0.0 || >=3.0.0'
peerDependenciesMeta:
'@vue/composition-api':
optional: true
'@tootallnate/once@2.0.0': '@tootallnate/once@2.0.0':
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@ -3067,6 +3118,11 @@ packages:
'@vue/compiler-ssr@3.4.27': '@vue/compiler-ssr@3.4.27':
resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==}
'@vue/composition-api@1.7.2':
resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==}
peerDependencies:
vue: '>= 2.5 < 2.7'
'@vue/devtools-api@6.5.0': '@vue/devtools-api@6.5.0':
resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==}
@ -6104,17 +6160,6 @@ packages:
vue-component-type-helpers@2.0.16: vue-component-type-helpers@2.0.16:
resolution: {integrity: sha512-qisL/iAfdO++7w+SsfYQJVPj6QKvxp4i1MMxvsNO41z/8zu3KuAw9LkhKUfP/kcOWGDxESp+pQObWppXusejCA==} resolution: {integrity: sha512-qisL/iAfdO++7w+SsfYQJVPj6QKvxp4i1MMxvsNO41z/8zu3KuAw9LkhKUfP/kcOWGDxESp+pQObWppXusejCA==}
vue-demi@0.14.6:
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}
hasBin: true
peerDependencies:
'@vue/composition-api': ^1.0.0-rc.1
vue: ^3.0.0-0 || ^2.6.0
peerDependenciesMeta:
'@vue/composition-api':
optional: true
vue-demi@0.14.7: vue-demi@0.14.7:
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
engines: {node: '>=12'} engines: {node: '>=12'}
@ -8187,10 +8232,10 @@ snapshots:
serialize-javascript: 6.0.0 serialize-javascript: 6.0.0
vue: 3.4.27(typescript@5.4.2) vue: 3.4.27(typescript@5.4.2)
'@tmagic/element-plus-adapter@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(element-plus@2.6.1(vue@3.4.27(typescript@5.4.2)))': '@tmagic/element-plus-adapter@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(element-plus@2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))':
dependencies: dependencies:
'@tmagic/design': 1.4.5(vue@3.4.27(typescript@5.4.2)) '@tmagic/design': 1.4.5(vue@3.4.27(typescript@5.4.2))
element-plus: 2.6.1(vue@3.4.27(typescript@5.4.2)) element-plus: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
'@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2))': '@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
@ -8227,14 +8272,14 @@ snapshots:
lodash-es: 4.17.21 lodash-es: 4.17.21
vue: 3.4.27(typescript@5.4.2) vue: 3.4.27(typescript@5.4.2)
? '@tmagic/tmagic-form-runtime@1.0.2(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/editor@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(element-plus@2.6.1(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))' ? '@tmagic/tmagic-form-runtime@1.0.2(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/editor@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(element-plus@2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))'
: dependencies: : dependencies:
'@tmagic/core': 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)) '@tmagic/core': 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
'@tmagic/editor': 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2)) '@tmagic/editor': 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/form@1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)))(@tmagic/schema@1.4.5)(@tmagic/stage@1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(monaco-editor@0.48.0)(vue@3.4.27(typescript@5.4.2))
'@tmagic/form': 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2)) '@tmagic/form': 1.4.5(@tmagic/design@1.4.5(vue@3.4.27(typescript@5.4.2)))(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(vue@3.4.27(typescript@5.4.2))
'@tmagic/schema': 1.4.5 '@tmagic/schema': 1.4.5
'@tmagic/utils': 1.4.5(@tmagic/schema@1.4.5) '@tmagic/utils': 1.4.5(@tmagic/schema@1.4.5)
element-plus: 2.6.1(vue@3.4.27(typescript@5.4.2)) element-plus: 2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
vue: 3.4.27(typescript@5.4.2) vue: 3.4.27(typescript@5.4.2)
transitivePeerDependencies: transitivePeerDependencies:
- '@tmagic/data-source' - '@tmagic/data-source'
@ -8284,6 +8329,34 @@ snapshots:
dayjs: 1.11.11 dayjs: 1.11.11
lodash-es: 4.17.21 lodash-es: 4.17.21
'@tmagic/vue-runtime-help@0.0.2(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(@vue/composition-api@1.7.2(vue@2.7.4))(scenejs@1.9.4)(vue@2.7.4)':
dependencies:
'@tmagic/core': 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
'@tmagic/data-source': 1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
'@tmagic/schema': 1.4.5
'@tmagic/stage': 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4)
'@tmagic/utils': 1.4.5(@tmagic/schema@1.4.5)
vue: 2.7.4
vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@2.7.4))(vue@2.7.4)
optionalDependencies:
'@vue/composition-api': 1.7.2(vue@2.7.4)
transitivePeerDependencies:
- scenejs
'@tmagic/vue-runtime-help@0.0.2(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(scenejs@1.9.4)(vue@3.4.27(typescript@5.4.2))':
dependencies:
'@tmagic/core': 1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
'@tmagic/data-source': 1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))
'@tmagic/schema': 1.4.5
'@tmagic/stage': 1.4.5(@tmagic/core@1.4.5(@tmagic/data-source@1.4.5(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5)))(@tmagic/schema@1.4.5)(@tmagic/utils@1.4.5(@tmagic/schema@1.4.5))(scenejs@1.9.4)
'@tmagic/utils': 1.4.5(@tmagic/schema@1.4.5)
vue: 3.4.27(typescript@5.4.2)
vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
optionalDependencies:
'@vue/composition-api': 1.7.2(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies:
- scenejs
'@tootallnate/once@2.0.0': {} '@tootallnate/once@2.0.0': {}
'@types/aria-query@4.2.2': {} '@types/aria-query@4.2.2': {}
@ -8628,6 +8701,15 @@ snapshots:
'@vue/compiler-dom': 3.4.27 '@vue/compiler-dom': 3.4.27
'@vue/shared': 3.4.27 '@vue/shared': 3.4.27
'@vue/composition-api@1.7.2(vue@2.7.4)':
dependencies:
vue: 2.7.4
optional: true
'@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2))':
dependencies:
vue: 3.4.27(typescript@5.4.2)
'@vue/devtools-api@6.5.0': {} '@vue/devtools-api@6.5.0': {}
'@vue/devtools-api@7.1.3(vue@3.4.27(typescript@5.4.2))': '@vue/devtools-api@7.1.3(vue@3.4.27(typescript@5.4.2))':
@ -8689,31 +8771,31 @@ snapshots:
js-beautify: 1.15.1 js-beautify: 1.15.1
vue-component-type-helpers: 2.0.16 vue-component-type-helpers: 2.0.16
'@vueuse/core@10.9.0(vue@3.4.27(typescript@5.4.2))': '@vueuse/core@10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
'@types/web-bluetooth': 0.0.20 '@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.9.0 '@vueuse/metadata': 10.9.0
'@vueuse/shared': 10.9.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/shared': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
vue-demi: 0.14.7(vue@3.4.27(typescript@5.4.2)) vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
'@vueuse/core@9.13.0(vue@3.4.27(typescript@5.4.2))': '@vueuse/core@9.13.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
'@types/web-bluetooth': 0.0.16 '@types/web-bluetooth': 0.0.16
'@vueuse/metadata': 9.13.0 '@vueuse/metadata': 9.13.0
'@vueuse/shared': 9.13.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/shared': 9.13.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
vue-demi: 0.14.6(vue@3.4.27(typescript@5.4.2)) vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
'@vueuse/integrations@10.9.0(async-validator@4.2.5)(axios@0.25.0)(focus-trap@7.5.4)(qrcode@1.5.0)(sortablejs@1.15.2)(vue@3.4.27(typescript@5.4.2))': '@vueuse/integrations@10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(async-validator@4.2.5)(axios@0.25.0)(focus-trap@7.5.4)(qrcode@1.5.0)(sortablejs@1.15.2)(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
'@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/core': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
'@vueuse/shared': 10.9.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/shared': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
vue-demi: 0.14.7(vue@3.4.27(typescript@5.4.2)) vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
optionalDependencies: optionalDependencies:
async-validator: 4.2.5 async-validator: 4.2.5
axios: 0.25.0 axios: 0.25.0
@ -8728,16 +8810,16 @@ snapshots:
'@vueuse/metadata@9.13.0': {} '@vueuse/metadata@9.13.0': {}
'@vueuse/shared@10.9.0(vue@3.4.27(typescript@5.4.2))': '@vueuse/shared@10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
vue-demi: 0.14.7(vue@3.4.27(typescript@5.4.2)) vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
'@vueuse/shared@9.13.0(vue@3.4.27(typescript@5.4.2))': '@vueuse/shared@9.13.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))':
dependencies: dependencies:
vue-demi: 0.14.6(vue@3.4.27(typescript@5.4.2)) vue-demi: 0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
@ -9500,7 +9582,7 @@ snapshots:
electron-to-chromium@1.4.761: {} electron-to-chromium@1.4.761: {}
element-plus@2.6.1(vue@3.4.27(typescript@5.4.2)): element-plus@2.6.1(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)):
dependencies: dependencies:
'@ctrl/tinycolor': 3.6.0 '@ctrl/tinycolor': 3.6.0
'@element-plus/icons-vue': 2.3.1(vue@3.4.27(typescript@5.4.2)) '@element-plus/icons-vue': 2.3.1(vue@3.4.27(typescript@5.4.2))
@ -9508,7 +9590,7 @@ snapshots:
'@popperjs/core': '@sxzz/popperjs-es@2.11.7' '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
'@types/lodash': 4.14.192 '@types/lodash': 4.14.192
'@types/lodash-es': 4.17.7 '@types/lodash-es': 4.17.7
'@vueuse/core': 9.13.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/core': 9.13.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
async-validator: 4.2.5 async-validator: 4.2.5
dayjs: 1.11.10 dayjs: 1.11.10
escape-html: 1.0.3 escape-html: 1.0.3
@ -11819,7 +11901,7 @@ snapshots:
universalify@2.0.0: {} universalify@2.0.0: {}
unplugin-auto-import@0.12.0(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.4.2)))(rollup@2.25.0): unplugin-auto-import@0.12.0(@vueuse/core@10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)))(rollup@2.25.0):
dependencies: dependencies:
'@antfu/utils': 0.7.2 '@antfu/utils': 0.7.2
'@rollup/pluginutils': 5.0.2(rollup@2.25.0) '@rollup/pluginutils': 5.0.2(rollup@2.25.0)
@ -11828,7 +11910,7 @@ snapshots:
unimport: 1.3.0(rollup@2.25.0) unimport: 1.3.0(rollup@2.25.0)
unplugin: 1.3.1 unplugin: 1.3.1
optionalDependencies: optionalDependencies:
'@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/core': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
@ -11934,7 +12016,7 @@ snapshots:
sass: 1.77.0 sass: 1.77.0
terser: 5.31.0 terser: 5.31.0
vitepress@1.1.4(@algolia/client-search@4.9.1)(@types/node@18.19.3)(@types/react@17.0.37)(async-validator@4.2.5)(axios@0.25.0)(postcss@8.4.38)(qrcode@1.5.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(sass@1.77.0)(search-insights@2.9.0)(sortablejs@1.15.2)(terser@5.31.0)(typescript@5.4.2): vitepress@1.1.4(@algolia/client-search@4.9.1)(@types/node@18.19.3)(@types/react@17.0.37)(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(async-validator@4.2.5)(axios@0.25.0)(postcss@8.4.38)(qrcode@1.5.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(sass@1.77.0)(search-insights@2.9.0)(sortablejs@1.15.2)(terser@5.31.0)(typescript@5.4.2):
dependencies: dependencies:
'@docsearch/css': 3.6.0 '@docsearch/css': 3.6.0
'@docsearch/js': 3.6.0(@algolia/client-search@4.9.1)(@types/react@17.0.37)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.9.0) '@docsearch/js': 3.6.0(@algolia/client-search@4.9.1)(@types/react@17.0.37)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.9.0)
@ -11943,8 +12025,8 @@ snapshots:
'@types/markdown-it': 14.1.1 '@types/markdown-it': 14.1.1
'@vitejs/plugin-vue': 5.0.4(vite@5.2.11(@types/node@18.19.3)(sass@1.77.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.2)) '@vitejs/plugin-vue': 5.0.4(vite@5.2.11(@types/node@18.19.3)(sass@1.77.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.2))
'@vue/devtools-api': 7.1.3(vue@3.4.27(typescript@5.4.2)) '@vue/devtools-api': 7.1.3(vue@3.4.27(typescript@5.4.2))
'@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.2)) '@vueuse/core': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2))
'@vueuse/integrations': 10.9.0(async-validator@4.2.5)(axios@0.25.0)(focus-trap@7.5.4)(qrcode@1.5.0)(sortablejs@1.15.2)(vue@3.4.27(typescript@5.4.2)) '@vueuse/integrations': 10.9.0(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(async-validator@4.2.5)(axios@0.25.0)(focus-trap@7.5.4)(qrcode@1.5.0)(sortablejs@1.15.2)(vue@3.4.27(typescript@5.4.2))
focus-trap: 7.5.4 focus-trap: 7.5.4
mark.js: 8.11.1 mark.js: 8.11.1
minisearch: 6.3.0 minisearch: 6.3.0
@ -12016,13 +12098,17 @@ snapshots:
vue-component-type-helpers@2.0.16: {} vue-component-type-helpers@2.0.16: {}
vue-demi@0.14.6(vue@3.4.27(typescript@5.4.2)): vue-demi@0.14.7(@vue/composition-api@1.7.2(vue@2.7.4))(vue@2.7.4):
dependencies: dependencies:
vue: 3.4.27(typescript@5.4.2) vue: 2.7.4
optionalDependencies:
'@vue/composition-api': 1.7.2(vue@2.7.4)
vue-demi@0.14.7(vue@3.4.27(typescript@5.4.2)): vue-demi@0.14.7(@vue/composition-api@1.7.2(vue@3.4.27(typescript@5.4.2)))(vue@3.4.27(typescript@5.4.2)):
dependencies: dependencies:
vue: 3.4.27(typescript@5.4.2) vue: 3.4.27(typescript@5.4.2)
optionalDependencies:
'@vue/composition-api': 1.7.2(vue@3.4.27(typescript@5.4.2))
vue-eslint-parser@9.1.1(eslint@8.38.0): vue-eslint-parser@9.1.1(eslint@8.38.0):
dependencies: dependencies:

View File

@ -0,0 +1,50 @@
{
"version": "0.0.2",
"name": "@tmagic/vue-runtime-help",
"type": "module",
"sideEffects": false,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
".": {
"types": "./types/index.d.ts",
"import": "./dist/index.js"
},
"./*": "./*"
},
"license": "Apache-2.0",
"scripts": {
"build": "pnpm clean && tsc -b tsconfig.build.json",
"clean": "rimraf dist *.tsbuildinfo",
"check:type": "tsc --noEmit --project tsconfig.build.json"
},
"engines": {
"node": ">=18"
},
"repository": {
"type": "git",
"url": "https://github.com/Tencent/tmagic-editor.git"
},
"dependencies": {
"@tmagic/stage": "workspace:*",
"vue-demi": "^0.14.7"
},
"peerDependencies": {
"@tmagic/core": "workspace:*",
"@tmagic/data-source": "workspace:*",
"@tmagic/schema": "workspace:*",
"@tmagic/utils": "workspace:*",
"@vue/composition-api": ">=1.7.2",
"vue": ">=2.0.0 || >=3.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
},
"devDependencies": {
"@types/node": "^18.19.0",
"rimraf": "^3.0.2",
"typescript": "^5.4.2"
}
}

View File

@ -0,0 +1,31 @@
import { inject, nextTick, reactive, ref } from 'vue-demi';
import Core from '@tmagic/core';
import type { ChangeEvent } from '@tmagic/data-source';
import type { MNode } from '@tmagic/schema';
import { isPage, replaceChildNode } from '@tmagic/utils';
export const useDsl = () => {
const app = inject<Core | undefined>('app');
const pageConfig = ref(app?.page?.data || {});
app?.dataSourceManager?.on('update-data', (nodes: MNode[], sourceId: string, changeEvent: ChangeEvent) => {
nodes.forEach((node) => {
if (isPage(node)) {
pageConfig.value = node;
} else {
replaceChildNode(reactive(node), [pageConfig.value as MNode]);
}
});
if (!app) return;
nextTick(() => {
app.emit('replaced-node', { nodes, sourceId, ...changeEvent });
});
});
return {
pageConfig,
};
};

View File

@ -0,0 +1,120 @@
import { computed, inject, nextTick, reactive, ref, watch } from 'vue-demi';
import Core from '@tmagic/core';
import type { Id, MApp, MNode } from '@tmagic/schema';
import type { Magic, RemoveData, UpdateData } from '@tmagic/stage';
import { getNodePath, replaceChildNode } from '@tmagic/utils';
declare global {
interface Window {
magic?: Magic;
}
}
export const useEditorDsl = (win = window) => {
const app = inject<Core | undefined>('app');
const root = ref<MApp>();
const curPageId = ref<Id>();
const selectedId = ref<Id>();
const pageConfig = computed(
() => root.value?.items?.find((item: MNode) => item.id === curPageId.value) || root.value?.items?.[0],
);
watch(pageConfig, async () => {
await nextTick();
const page = document.querySelector<HTMLElement>('.magic-ui-page');
page && win.magic?.onPageElUpdate(page);
});
win.magic?.onRuntimeReady({
getApp() {
return app;
},
updateRootConfig(config: MApp) {
root.value = config;
app?.setConfig(config, curPageId.value);
},
updatePageId(id: Id) {
curPageId.value = id;
app?.setPage(id);
},
select(id: Id) {
selectedId.value = id;
if (app?.getPage(id)) {
this.updatePageId?.(id);
}
const el = document.getElementById(`${id}`);
if (el) return el;
// 未在当前文档下找到目标元素,可能是还未渲染,等待渲染完成后再尝试获取
return nextTick().then(() => document.getElementById(`${id}`) as HTMLElement);
},
add({ config, parentId }: UpdateData) {
if (!root.value) throw new Error('error');
if (!selectedId.value) throw new Error('error');
if (!parentId) throw new Error('error');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父节点');
if (config.type !== 'page') {
const parentNode = app?.page?.getNode(parent.id);
parentNode && app?.page?.initNode(config, parentNode);
}
if (parent.id !== selectedId.value) {
const index = parent.items?.findIndex((child: MNode) => child.id === selectedId.value);
parent.items?.splice(index + 1, 0, config);
} else {
// 新增节点添加到配置中
parent.items?.push(config);
}
},
update({ config, parentId }: UpdateData) {
if (!root.value || !app) throw new Error('error');
const newNode = app.dataSourceManager?.compiledNode(config, undefined, true) || config;
replaceChildNode(reactive(newNode), [root.value], parentId);
const nodeInstance = app.page?.getNode(config.id);
if (nodeInstance) {
nodeInstance.setData(newNode);
}
if (app.page?.data.id === config.id) {
app.page.setData(newNode);
}
},
remove({ id, parentId }: RemoveData) {
if (!root.value) throw new Error('error');
const node = getNodePath(id, [root.value]).pop();
if (!node) throw new Error('未找到目标元素');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父元素');
if (node.type === 'page') {
app?.deletePage();
} else {
app?.page?.deleteNode(node.id);
}
const index = parent.items?.findIndex((child: MNode) => child.id === node.id);
parent.items.splice(index, 1);
},
});
return {
pageConfig,
};
};

View File

@ -0,0 +1,2 @@
export * from './hooks/use-editor-dsl';
export * from './hooks/use-dsl';

View File

@ -0,0 +1,10 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist",
"declaration": true,
"sourceMap": false
},
"include": ["./src"],
}

View File

@ -0,0 +1,6 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"baseUrl": "./",
},
}

View File

@ -24,8 +24,8 @@
"@tmagic/data-source": "1.4.5", "@tmagic/data-source": "1.4.5",
"@tmagic/ui-vue2": "1.4.5", "@tmagic/ui-vue2": "1.4.5",
"@tmagic/schema": "1.4.5", "@tmagic/schema": "1.4.5",
"@tmagic/stage": "1.4.5",
"@tmagic/utils": "1.4.5", "@tmagic/utils": "1.4.5",
"@tmagic/vue-runtime-help": "^0.0.2",
"axios": "^0.25.0", "axios": "^0.25.0",
"terser": "^5.31.0", "terser": "^5.31.0",
"vue": "^2.7.4" "vue": "^2.7.4"

View File

@ -3,20 +3,20 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, inject, nextTick, reactive, ref } from 'vue'; import { defineComponent } from 'vue';
import type { Page } from '@tmagic/core'; import type { Page } from '@tmagic/core';
import Core from '@tmagic/core'; import Core from '@tmagic/core';
import type { ChangeEvent } from '@tmagic/data-source'; import { addParamToUrl } from '@tmagic/utils';
import type { MNode } from '@tmagic/schema'; import { useDsl } from '@tmagic/vue-runtime-help';
import { addParamToUrl, isPage, replaceChildNode } from '@tmagic/utils';
export default defineComponent({ export default defineComponent({
name: 'App', name: 'App',
setup() { setup() {
const { pageConfig } = useDsl();
const app = inject<Core | undefined>('app'); const app = inject<Core | undefined>('app');
const pageConfig = ref(app?.page?.data || {});
app?.on('page-change', (page?: Page) => { app?.on('page-change', (page?: Page) => {
if (!page) { if (!page) {
@ -25,22 +25,6 @@ export default defineComponent({
addParamToUrl({ page: page.data.id }, window); addParamToUrl({ page: page.data.id }, window);
}); });
app?.dataSourceManager?.on('update-data', (nodes: MNode[], sourceId: string, changeEvent: ChangeEvent) => {
nodes.forEach((node) => {
if (isPage(node)) {
pageConfig.value = node;
} else {
replaceChildNode(reactive(node), [pageConfig.value as MNode]);
}
});
if (!app) return;
nextTick(() => {
app.emit('replaced-node', { nodes, sourceId, ...changeEvent });
});
});
return { return {
pageConfig, pageConfig,
}; };

View File

@ -19,14 +19,14 @@
import Vue from 'vue'; import Vue from 'vue';
import Core from '@tmagic/core'; import Core from '@tmagic/core';
import { DataSourceManager } from '@tmagic/data-source'; import { DataSourceManager, registerDataSourceOnDemand } from '@tmagic/data-source';
import { getUrlParam } from '@tmagic/utils'; import { getUrlParam } from '@tmagic/utils';
import asyncDataSources from '../.tmagic/async-datasource-entry';
import components from '../.tmagic/comp-entry'; import components from '../.tmagic/comp-entry';
import dataSources from '../.tmagic/datasource-entry';
import plugins from '../.tmagic/plugin-entry'; import plugins from '../.tmagic/plugin-entry';
import request from './utils/request'; import request, { service } from './utils/request';
import AppComponent from './App.vue'; import AppComponent from './App.vue';
import { getLocalConfig } from './utils'; import { getLocalConfig } from './utils';
@ -34,35 +34,40 @@ import '@tmagic/utils/resetcss.css';
Vue.use(request); Vue.use(request);
Object.keys(components).forEach((type: string) => { const dsl = ((getUrlParam('localPreview') ? getLocalConfig() : window.magicDSL) || [])[0] || {};
Vue.component(`magic-ui-${type}`, components[type]);
});
Object.entries(dataSources).forEach(([type, ds]: [string, any]) => {
DataSourceManager.register(type, ds);
});
Object.values(plugins).forEach((plugin: any) => {
Vue.use(plugin);
});
const app = new Core({ const app = new Core({
ua: window.navigator.userAgent, ua: window.navigator.userAgent,
config: ((getUrlParam('localPreview') ? getLocalConfig() : window.magicDSL) || [])[0] || {}, config: dsl,
request: service,
curPage: getUrlParam('page'), curPage: getUrlParam('page'),
useMock: Boolean(getUrlParam('useMock')), useMock: Boolean(getUrlParam('useMock')),
}); });
app.setDesignWidth(app.env.isWeb ? window.document.documentElement.getBoundingClientRect().width : 375); app.setDesignWidth(app.env.isWeb ? window.document.documentElement.getBoundingClientRect().width : 375);
Vue.prototype.app = app; Object.keys(components).forEach((type: string) => {
Vue.component(`magic-ui-${type}`, components[type]);
const magicApp = new Vue({
provide: {
app,
},
render: (h) => h(AppComponent),
}); });
magicApp.$mount('#app'); Object.values(plugins).forEach((plugin: any) => {
Vue.use(plugin, { app });
});
registerDataSourceOnDemand(dsl, asyncDataSources).then((dataSources) => {
Object.entries(dataSources).forEach(([type, ds]: [string, any]) => {
DataSourceManager.register(type, ds);
});
Vue.prototype.app = app;
const vueApp = new Vue({
provide: {
app,
},
render: (h) => h(AppComponent),
});
vueApp.$mount('#app');
});

View File

@ -18,11 +18,6 @@
import axios, { AxiosResponse } from 'axios'; import axios, { AxiosResponse } from 'axios';
const service = axios.create({
withCredentials: true,
timeout: 7000,
});
const requestHandler = function (config: Record<any, any>) { const requestHandler = function (config: Record<any, any>) {
return config; return config;
}; };
@ -31,6 +26,11 @@ const responseHandler = function (response: AxiosResponse) {
return response; return response;
}; };
export const service = axios.create({
withCredentials: true,
timeout: 7000,
});
service.interceptors.request.use(requestHandler); service.interceptors.request.use(requestHandler);
service.interceptors.response.use(responseHandler); service.interceptors.response.use(responseHandler);

View File

@ -3,13 +3,9 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, inject, nextTick, reactive, ref, watch } from 'vue'; import { defineComponent } from 'vue';
import Core from '@tmagic/core';
import type { Id, MApp, MNode } from '@tmagic/schema';
import { Magic, RemoveData, UpdateData } from '@tmagic/stage';
import { getNodePath, replaceChildNode } from '@tmagic/utils';
import { useEditorDsl } from '@tmagic/vue-runtime-help';
declare global { declare global {
interface Window { interface Window {
magic: Magic; magic: Magic;
@ -19,107 +15,7 @@ declare global {
export default defineComponent({ export default defineComponent({
setup() { setup() {
const app = inject<Core | undefined>('app'); const { pageConfig } = useEditorDsl();
const root = ref<MApp>();
const curPageId = ref<Id>();
const selectedId = ref<Id>();
const pageConfig = computed(
() => root.value?.items?.find((item: MNode) => item.id === curPageId.value) || root.value?.items?.[0],
);
watch(pageConfig, async () => {
await nextTick();
const page = document.querySelector<HTMLElement>('.magic-ui-page');
page && window.magic.onPageElUpdate(page);
});
window.magic?.onRuntimeReady({
getApp() {
return app;
},
updateRootConfig(config: MApp) {
root.value = config;
app?.setConfig(config, curPageId.value);
},
updatePageId(id: Id) {
curPageId.value = id;
app?.setPage(id);
},
select(id: Id) {
selectedId.value = id;
if (app?.getPage(id)) {
this.updatePageId?.(id);
}
const el = document.getElementById(`${id}`);
if (el) return el;
//
return nextTick().then(() => document.getElementById(`${id}`) as HTMLElement);
},
add({ config, parentId }: UpdateData) {
if (!root.value) throw new Error('error');
if (!selectedId.value) throw new Error('error');
if (!parentId) throw new Error('error');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父节点');
if (config.type !== 'page') {
const parentNode = app?.page?.getNode(parent.id);
parentNode && app?.page?.initNode(config, parentNode);
}
if (parent.id !== selectedId.value) {
const index = parent.items?.findIndex((child: MNode) => child.id === selectedId.value);
parent.items?.splice(index + 1, 0, config);
} else {
//
parent.items?.push(config);
}
},
update({ config, parentId }: UpdateData) {
if (!root.value || !app) throw new Error('error');
const newNode = app.dataSourceManager?.compiledNode(config, undefined, true) || config;
replaceChildNode(reactive(newNode), [root.value], parentId);
const nodeInstance = app.page?.getNode(config.id);
if (nodeInstance) {
nodeInstance.setData(newNode);
}
if (app.page?.data.id === config.id) {
app.page.setData(newNode);
}
},
remove({ id, parentId }: RemoveData) {
if (!root.value) throw new Error('error');
const node = getNodePath(id, [root.value]).pop();
if (!node) throw new Error('未找到目标元素');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父元素');
if (node.type === 'page') {
app?.deletePage();
} else {
app?.page?.deleteNode(node.id);
}
const index = parent.items?.findIndex((child: MNode) => child.id === node.id);
parent.items.splice(index, 1);
},
});
return { return {
pageConfig, pageConfig,

View File

@ -30,6 +30,15 @@ Promise.all([
import('../.tmagic/plugin-entry'), import('../.tmagic/plugin-entry'),
import('../.tmagic/datasource-entry'), import('../.tmagic/datasource-entry'),
]).then(([components, plugins, dataSources]) => { ]).then(([components, plugins, dataSources]) => {
const app = new Core({
ua: window.navigator.userAgent,
platform: 'editor',
});
if (app.env.isWeb) {
app.setDesignWidth(window.document.documentElement.getBoundingClientRect().width);
}
Object.entries(components.default).forEach(([type, component]: [string, any]) => { Object.entries(components.default).forEach(([type, component]: [string, any]) => {
Vue.component(`magic-ui-${type}`, component); Vue.component(`magic-ui-${type}`, component);
}); });
@ -39,18 +48,9 @@ Promise.all([
}); });
Object.values(plugins.default).forEach((plugin: any) => { Object.values(plugins.default).forEach((plugin: any) => {
Vue.use(plugin); Vue.use(plugin, { app });
}); });
const app = new Core({
ua: window.navigator.userAgent,
platform: 'editor',
});
if (app.env.isWeb) {
app.setDesignWidth(window.document.documentElement.getBoundingClientRect().width);
}
window.appInstance = app; window.appInstance = app;
Vue.prototype.app = app; Vue.prototype.app = app;

View File

@ -5,4 +5,5 @@ import { defineConfig } from '@tmagic/cli';
export default defineConfig({ export default defineConfig({
packages: [path.join(__dirname, '../../packages/ui-vue2')], packages: [path.join(__dirname, '../../packages/ui-vue2')],
componentFileAffix: '.vue', componentFileAffix: '.vue',
dynamicImport: true,
}); });

View File

@ -38,6 +38,7 @@ export default defineConfig({
{ find: /^@tmagic\/dep/, replacement: path.join(__dirname, '../../packages/dep/src/index.ts') }, { find: /^@tmagic\/dep/, replacement: path.join(__dirname, '../../packages/dep/src/index.ts') },
{ find: /^@data-source/, replacement: path.join(__dirname, '../../packages/data-source/src') }, { find: /^@data-source/, replacement: path.join(__dirname, '../../packages/data-source/src') },
{ find: /^@tmagic\/schema/, replacement: path.join(__dirname, '../../packages/schema/src/index.ts') }, { find: /^@tmagic\/schema/, replacement: path.join(__dirname, '../../packages/schema/src/index.ts') },
{ find: /^@tmagic\/vue-runtime-help/, replacement: path.join(__dirname, '../vue-runtime-help/src/index.ts') },
], ],
}, },

View File

@ -18,17 +18,17 @@
"build:ds:event": "vite build --config build.vite.config.ts --mode ds:event" "build:ds:event": "vite build --config build.vite.config.ts --mode ds:event"
}, },
"dependencies": { "dependencies": {
"@tmagic/cli": "1.4.5",
"@tmagic/data-source": "1.4.5", "@tmagic/data-source": "1.4.5",
"@tmagic/core": "1.4.5", "@tmagic/core": "1.4.5",
"@tmagic/ui": "1.4.5", "@tmagic/ui": "1.4.5",
"@tmagic/schema": "1.4.5", "@tmagic/schema": "1.4.5",
"@tmagic/stage": "1.4.5",
"@tmagic/utils": "1.4.5", "@tmagic/utils": "1.4.5",
"@tmagic/vue-runtime-help": "^0.0.2",
"axios": "^0.25.0", "axios": "^0.25.0",
"vue": "^3.4.27" "vue": "^3.4.27"
}, },
"devDependencies": { "devDependencies": {
"@tmagic/cli": "1.4.5",
"@types/node": "^18.19.0", "@types/node": "^18.19.0",
"@vitejs/plugin-legacy": "^5.4.0", "@vitejs/plugin-legacy": "^5.4.0",
"@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue": "^5.0.4",

View File

@ -2,48 +2,20 @@
<magic-ui-page :config="pageConfig"></magic-ui-page> <magic-ui-page :config="pageConfig"></magic-ui-page>
</template> </template>
<script lang="ts"> <script lang="ts" setup>
import { defineComponent, inject, nextTick, reactive, ref } from 'vue';
import type { Page } from '@tmagic/core'; import type { Page } from '@tmagic/core';
import Core from '@tmagic/core'; import Core from '@tmagic/core';
import type { ChangeEvent } from '@tmagic/data-source'; import { addParamToUrl } from '@tmagic/utils';
import type { MNode } from '@tmagic/schema'; import { useDsl } from '@tmagic/vue-runtime-help';
import { addParamToUrl, isPage, replaceChildNode } from '@tmagic/utils';
export default defineComponent({ const { pageConfig } = useDsl();
name: 'App',
setup() { const app = inject<Core | undefined>('app');
const app = inject<Core | undefined>('app');
const pageConfig = ref(app?.page?.data || {});
app?.on('page-change', (page?: Page) => { app?.on('page-change', (page?: Page) => {
if (!page) { if (!page) {
throw new Error(`页面不存在`); throw new Error(`页面不存在`);
} }
addParamToUrl({ page: page.data.id }, window); addParamToUrl({ page: page.data.id }, window);
});
app?.dataSourceManager?.on('update-data', (nodes: MNode[], sourceId: string, changeEvent: ChangeEvent) => {
nodes.forEach((node) => {
if (isPage(node)) {
pageConfig.value = node;
} else {
replaceChildNode(reactive(node), [pageConfig.value as MNode]);
}
});
if (!app) return;
nextTick(() => {
app.emit('replaced-node', { nodes, sourceId, ...changeEvent });
});
});
return {
pageConfig,
};
},
}); });
</script> </script>

View File

@ -26,42 +26,43 @@ import components from '../.tmagic/async-comp-entry';
import asyncDataSources from '../.tmagic/async-datasource-entry'; import asyncDataSources from '../.tmagic/async-datasource-entry';
import plugins from '../.tmagic/plugin-entry'; import plugins from '../.tmagic/plugin-entry';
import request from './utils/request'; import request, { service } from './utils/request';
import AppComponent from './App.vue'; import AppComponent from './App.vue';
import { getLocalConfig } from './utils'; import { getLocalConfig } from './utils';
import '@tmagic/utils/resetcss.css'; import '@tmagic/utils/resetcss.css';
const magicApp = createApp(AppComponent); const vueApp = createApp(AppComponent);
magicApp.use(request); vueApp.use(request);
const dsl = ((getUrlParam('localPreview') ? getLocalConfig() : window.magicDSL) || [])[0] || {};
const app = new Core({
ua: window.navigator.userAgent,
config: dsl,
request: service,
curPage: getUrlParam('page'),
useMock: Boolean(getUrlParam('useMock')),
});
app.setDesignWidth(app.env.isWeb ? window.document.documentElement.getBoundingClientRect().width : 375);
Object.entries(components).forEach(([type, component]: [string, any]) => { Object.entries(components).forEach(([type, component]: [string, any]) => {
magicApp.component(`magic-ui-${type}`, defineAsyncComponent(component)); vueApp.component(`magic-ui-${type}`, defineAsyncComponent(component));
}); });
Object.values(plugins).forEach((plugin: any) => { Object.values(plugins).forEach((plugin: any) => {
magicApp.use(plugin); vueApp.use(plugin, { app });
}); });
const dsl = ((getUrlParam('localPreview') ? getLocalConfig() : window.magicDSL) || [])[0] || {};
registerDataSourceOnDemand(dsl, asyncDataSources).then((dataSources) => { registerDataSourceOnDemand(dsl, asyncDataSources).then((dataSources) => {
Object.entries(dataSources).forEach(([type, ds]: [string, any]) => { Object.entries(dataSources).forEach(([type, ds]: [string, any]) => {
DataSourceManager.register(type, ds); DataSourceManager.register(type, ds);
}); });
const app = new Core({ vueApp.config.globalProperties.app = app;
ua: window.navigator.userAgent, vueApp.provide('app', app);
config: dsl,
curPage: getUrlParam('page'),
useMock: Boolean(getUrlParam('useMock')),
});
app.setDesignWidth(app.env.isWeb ? window.document.documentElement.getBoundingClientRect().width : 375); vueApp.mount('#app');
magicApp.config.globalProperties.app = app;
magicApp.provide('app', app);
magicApp.mount('#app');
}); });

View File

@ -19,11 +19,6 @@
import { App } from 'vue'; import { App } from 'vue';
import axios, { AxiosResponse } from 'axios'; import axios, { AxiosResponse } from 'axios';
const service = axios.create({
withCredentials: true,
timeout: 7000,
});
const requestHandler = function (config: Record<any, any>) { const requestHandler = function (config: Record<any, any>) {
return config; return config;
}; };
@ -32,6 +27,11 @@ const responseHandler = function (response: AxiosResponse) {
return response; return response;
}; };
export const service = axios.create({
withCredentials: true,
timeout: 7000,
});
service.interceptors.request.use(requestHandler); service.interceptors.request.use(requestHandler);
service.interceptors.response.use(responseHandler); service.interceptors.response.use(responseHandler);

View File

@ -3,118 +3,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, inject, nextTick, reactive, ref, watch } from 'vue'; import { useEditorDsl } from '@tmagic/vue-runtime-help';
import Core from '@tmagic/core'; const { pageConfig } = useEditorDsl();
import type { Id, MApp, MNode } from '@tmagic/schema';
import { Magic, RemoveData, UpdateData } from '@tmagic/stage';
import { getNodePath, replaceChildNode } from '@tmagic/utils';
declare global {
interface Window {
magic: Magic;
}
}
const app = inject<Core | undefined>('app');
const root = ref<MApp>();
const curPageId = ref<Id>();
const selectedId = ref<Id>();
const pageConfig = computed(
() => root.value?.items?.find((item: MNode) => item.id === curPageId.value) || root.value?.items?.[0],
);
watch(pageConfig, async () => {
await nextTick();
const page = document.querySelector<HTMLElement>('.magic-ui-page');
page && window.magic.onPageElUpdate(page);
});
window.magic?.onRuntimeReady({
getApp() {
return app;
},
updateRootConfig(config: MApp) {
root.value = config;
app?.setConfig(config, curPageId.value);
},
updatePageId(id: Id) {
curPageId.value = id;
app?.setPage(id);
},
select(id: Id) {
selectedId.value = id;
if (app?.getPage(id)) {
this.updatePageId?.(id);
}
const el = document.getElementById(`${id}`);
if (el) return el;
//
return nextTick().then(() => document.getElementById(`${id}`) as HTMLElement);
},
add({ config, parentId }: UpdateData) {
if (!root.value) throw new Error('error');
if (!selectedId.value) throw new Error('error');
if (!parentId) throw new Error('error');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父节点');
if (config.type !== 'page') {
const parentNode = app?.page?.getNode(parent.id);
parentNode && app?.page?.initNode(config, parentNode);
}
if (parent.id !== selectedId.value) {
const index = parent.items?.findIndex((child: MNode) => child.id === selectedId.value);
parent.items?.splice(index + 1, 0, config);
} else {
//
parent.items?.push(config);
}
},
update({ config, parentId }: UpdateData) {
if (!root.value || !app) throw new Error('error');
const newNode = app.dataSourceManager?.compiledNode(config, undefined, true) || config;
replaceChildNode(reactive(newNode), [root.value], parentId);
const nodeInstance = app.page?.getNode(config.id);
if (nodeInstance) {
nodeInstance.setData(newNode);
}
if (app.page?.data.id === config.id) {
app.page.setData(newNode);
}
},
remove({ id, parentId }: RemoveData) {
if (!root.value) throw new Error('error');
const node = getNodePath(id, [root.value]).pop();
if (!node) throw new Error('未找到目标元素');
const parent = getNodePath(parentId, [root.value]).pop();
if (!parent) throw new Error('未找到父元素');
if (node.type === 'page') {
app?.deletePage();
} else {
app?.page?.deleteNode(node.id);
}
const index = parent.items?.findIndex((child: MNode) => child.id === node.id);
parent.items.splice(index, 1);
},
});
</script> </script>

View File

@ -30,19 +30,7 @@ Promise.all([
import('../.tmagic/plugin-entry'), import('../.tmagic/plugin-entry'),
import('../.tmagic/datasource-entry'), import('../.tmagic/datasource-entry'),
]).then(([components, plugins, dataSources]) => { ]).then(([components, plugins, dataSources]) => {
const magicApp = createApp(App); const vueApp = createApp(App);
Object.entries(components.default).forEach(([type, component]: [string, any]) => {
magicApp.component(`magic-ui-${type}`, component);
});
Object.entries(dataSources.default).forEach(([type, ds]: [string, any]) => {
DataSourceManager.register(type, ds);
});
Object.values(plugins.default).forEach((plugin: any) => {
magicApp.use(plugin);
});
const app = new Core({ const app = new Core({
ua: window.navigator.userAgent, ua: window.navigator.userAgent,
@ -53,9 +41,21 @@ Promise.all([
app.setDesignWidth(window.document.documentElement.getBoundingClientRect().width); app.setDesignWidth(window.document.documentElement.getBoundingClientRect().width);
} }
window.appInstance = app; Object.entries(components.default).forEach(([type, component]: [string, any]) => {
magicApp.config.globalProperties.app = app; vueApp.component(`magic-ui-${type}`, component);
magicApp.provide('app', app); });
magicApp.mount('#app'); Object.entries(dataSources.default).forEach(([type, ds]: [string, any]) => {
DataSourceManager.register(type, ds);
});
Object.values(plugins.default).forEach((plugin: any) => {
vueApp.use(plugin, { app });
});
window.appInstance = app;
vueApp.config.globalProperties.app = app;
vueApp.provide('app', app);
vueApp.mount('#app');
}); });