mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-10 12:50:28 +08:00
94 lines
2.0 KiB
TypeScript
94 lines
2.0 KiB
TypeScript
import { createApp, onBeforeUnmount, Plugin } from 'vue';
|
|
import cssStyle from 'element-plus/dist/index.css?raw';
|
|
|
|
import type { FormConfig, StageCore } from '@tmagic/editor';
|
|
import { editorService, formPlugin, injectStyle, Layout, propsService, uiService } from '@tmagic/editor';
|
|
|
|
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 useRuntime = ({
|
|
plugins = [],
|
|
fillConfig = (config) => config,
|
|
}: {
|
|
plugins?: Plugin[];
|
|
fillConfig?: (config: FormConfig, mForm: any) => FormConfig;
|
|
} = {}) => {
|
|
const render = (stage: StageCore) => {
|
|
const doc = stage.renderer?.getDocument();
|
|
|
|
if (doc) {
|
|
injectStyle(doc, cssStyle);
|
|
injectStyle(
|
|
doc,
|
|
`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';
|
|
|
|
const vueApp = createApp(App, {
|
|
stage,
|
|
fillConfig,
|
|
});
|
|
vueApp.use(formPlugin);
|
|
plugins.forEach((plugin) => vueApp.use(plugin));
|
|
vueApp.mount(el);
|
|
|
|
setTimeout(() => {
|
|
uiService.set('showRule', false);
|
|
});
|
|
|
|
return el;
|
|
};
|
|
|
|
propsService.usePlugin({
|
|
async afterFillConfig(config: FormConfig, itemConfig: FormConfig, labelWidth = '80px') {
|
|
return [
|
|
{
|
|
type: 'tab',
|
|
items: [
|
|
{
|
|
title: '属性',
|
|
labelWidth,
|
|
items: [...commonConfig, ...itemConfig],
|
|
},
|
|
],
|
|
},
|
|
] as FormConfig;
|
|
},
|
|
});
|
|
|
|
editorService.usePlugin({
|
|
async afterGetLayout() {
|
|
return Layout.RELATIVE;
|
|
},
|
|
});
|
|
|
|
onBeforeUnmount(() => {
|
|
propsService.removeAllPlugins();
|
|
editorService.removeAllPlugins();
|
|
});
|
|
|
|
return {
|
|
render,
|
|
};
|
|
};
|