mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-04-08 13:40:03 +00:00
87 lines
1.8 KiB
TypeScript
87 lines
1.8 KiB
TypeScript
import { createApp, onBeforeUnmount } from 'vue';
|
|
import cssStyle from 'element-plus/dist/index.css?raw';
|
|
|
|
import { editorService, Layout, propsService, uiService } from '@tmagic/editor';
|
|
import MagicForm, { type FormConfig } from '@tmagic/form';
|
|
import type StageCore from '@tmagic/stage';
|
|
import { injectStyle } from '@tmagic/utils';
|
|
|
|
import commonConfig from './form-config/common';
|
|
import App from './App.vue';
|
|
import formConfigs from './form-config';
|
|
|
|
export * from './component-group-list';
|
|
|
|
export const propsConfigs = formConfigs;
|
|
|
|
export const canSelect = (el: HTMLElement) => Boolean(el.dataset.magicId);
|
|
|
|
export const useRuntime = () => {
|
|
const render = (stage: StageCore) => {
|
|
injectStyle(stage.renderer.getDocument()!, cssStyle);
|
|
injectStyle(
|
|
stage.renderer.getDocument()!,
|
|
`
|
|
html,
|
|
body,
|
|
#app {
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0;
|
|
}
|
|
::-webkit-scrollbar {
|
|
width: 0;
|
|
}
|
|
`,
|
|
);
|
|
|
|
const el: HTMLDivElement = globalThis.document.createElement('div');
|
|
el.id = 'app';
|
|
el.style.overflow = 'auto';
|
|
|
|
createApp(App, {
|
|
stage,
|
|
})
|
|
.use(MagicForm)
|
|
.mount(el);
|
|
|
|
setTimeout(() => {
|
|
uiService.set('showRule', false);
|
|
});
|
|
|
|
return el;
|
|
};
|
|
|
|
propsService.usePlugin({
|
|
afterFillConfig(config: FormConfig, itemConfig: FormConfig) {
|
|
return [
|
|
{
|
|
type: 'tab',
|
|
items: [
|
|
{
|
|
title: '属性',
|
|
labelWidth: '80px',
|
|
items: [...commonConfig, ...itemConfig],
|
|
},
|
|
],
|
|
},
|
|
];
|
|
},
|
|
});
|
|
|
|
editorService.usePlugin({
|
|
afterGetLayout() {
|
|
return Layout.RELATIVE;
|
|
},
|
|
});
|
|
|
|
onBeforeUnmount(() => {
|
|
propsService.removeAllPlugins();
|
|
editorService.removeAllPlugins();
|
|
});
|
|
|
|
return {
|
|
render,
|
|
};
|
|
};
|