tachybase_todo/packages/plugins/@tachybase/plugin-field-markdown-vditor/src/client/index.tsx
wjh 63c351ea1a fix: 完善移动端审批组件 (#1042)
Reviewed-on: daoyoucloud/tachybase#1042
Co-authored-by: wjh <wwwjh0710@163.com>
Co-committed-by: wjh <wwwjh0710@163.com>
2024-05-23 21:00:32 +08:00

58 lines
2.0 KiB
TypeScript

import { Plugin } from '@tachybase/client';
import 'vditor/dist/index.css';
import { MarkdownVditor } from './components';
import { MarkdownVditorFieldInterface } from './interfaces/markdown-vditor';
export class PluginFieldMarkdownVditorClient extends Plugin {
async afterAdd() {}
async beforeLoad() {}
async load() {
this.app.addComponents({ MarkdownVditor });
this.initVditorDependency();
this.app.dataSourceManager.addFieldInterfaces([MarkdownVditorFieldInterface]);
}
getCDN() {
if (process.env.NODE_ENV !== 'production') {
// 开发模式下使用远程 cdn
return 'https://unpkg.com/vditor@3.10.4';
}
// 生产环境,使用本地链接,支持内网
// 需要支持子目录,比如应用部署在 /xxx/ 目录下
return this.app.getPublicPath() + 'static/plugins/@tachybase/plugin-field-markdown-vditor/dist/client/vditor';
}
initVditorDependency() {
const cdn = this.getCDN();
try {
const vditorDepdencePrefix = 'plugin-field-markdown-vditor-dep';
const vditorDepdence = {
[`${vditorDepdencePrefix}.katex`]: `${cdn}/dist/js/katex/katex.min.js?v=0.16.9`,
[`${vditorDepdencePrefix}.ABCJS`]: `${cdn}/dist/js/abcjs/abcjs_basic.min`,
[`${vditorDepdencePrefix}.plantumlEncoder`]: `${cdn}/dist/js/plantuml/plantuml-encoder.min`,
[`${vditorDepdencePrefix}.echarts`]: `${cdn}/dist/js/echarts/echarts.min`,
[`${vditorDepdencePrefix}.flowchart`]: `${cdn}/dist/js/flowchart.js/flowchart.min`,
[`${vditorDepdencePrefix}.Viz`]: `${cdn}/dist/js/graphviz/viz`,
[`${vditorDepdencePrefix}.mermaid`]: `${cdn}/dist/js/mermaid/mermaid.min`,
};
this.app.requirejs.require.config({
waitSeconds: 120,
paths: vditorDepdence,
});
Object.keys(vditorDepdence).forEach((key) => {
this.app.requirejs.require([key], (m) => {
window[key.split('.')[1]] = m;
});
});
} catch (e) {
console.log('initVditorDependency failed', e);
}
}
}
export default PluginFieldMarkdownVditorClient;