import { init, plugins, project, common } from "@clc/lowcode-engine"; import { createFetchHandler } from "@clc/lowcode-datasource-fetch-handler"; import EditorInitPlugin from "./plugins/plugin-editor-init"; import UndoRedoPlugin from "@clc/lowcode-plugin-undo-redo"; import ZhEnPlugin from "@clc/lowcode-plugin-zh-en"; import { PluginMode } from "@cverse/core-lib-beta"; // import DataSourcePanePlugin from '@clc/lowcode-plugin-datasource-pane'; import CustomStatePlugin from "./plugins/plugin-custom-state-panel"; import DataSourcePanePlugin from "./plugins/plugin-dataSource-panel"; import SchemaPlugin from "@clc/lowcode-plugin-schema"; import CodeEditorPlugin from "@clc/lowcode-plugin-code-editor"; import ManualPlugin from "@clc/lowcode-plugin-manual"; import InjectPlugin from "@clc/lowcode-plugin-inject"; import SimulatorResizerPlugin from "@clc/lowcode-plugin-simulator-select"; import ComponentPanelPlugin from "./plugins/plugin-component-panel"; import DefaultSettersRegistryPlugin from "./plugins/plugin-default-setters-registry"; import SaveSamplePlugin from "./plugins/plugin-save-sample"; import PreviewSamplePlugin from "./plugins/plugin-preview-sample"; import SetRefPropPlugin from "@clc/lowcode-plugin-set-ref-prop"; import LogoSamplePlugin from "./plugins/plugin-logo-sample"; import ConnectorPlugin from "./plugins/plugin-connector"; import "./global.scss"; import { setters } from "@clc/lowcode-engine"; import CPanelSetter from "./setters/CPanelSetter"; import CLabelSetter from "./setters/CLabelSetter"; import { CStyleSetter, InputLangSetter } from "./setters"; import CUploadImageSetter from "./setters/CUploadImageSetter"; import { envConfig } from "@cverse/core-config-beta"; import { useWalletConnect } from "@cverse/core-connector-beta"; import * as echarts from "echarts"; import SavePlugin from "./plugins/plugin-save"; import GuidePlugin from "./plugins/plugin-guide"; import SettingPlugin from "./plugins/plugin-setting"; import CUploadImageDefaultSetter from "./setters/CUploadImageDefaultSetter"; import DictionaryPanePlugin from "./plugins/plugin-dictionary-panel"; import DictionarySetter from "./setters/dictionary-setter"; import CustomCopyPlugin from "./plugins/plugin-custom-copy-panel"; // import JsonToDomSetter from "./setters/jsonToDom-setter"; import Login from "./views/Login"; import ReactDOM from "react-dom"; import { initFontFamilyList, RuleOSWindowKey } from "./struct/utils"; import DebugPreviewSamplePlugin from "./plugins/plugin-preview-sample/debugIndex"; export function changeLangData(str: string | null) { if (str === null) { return "zh-CN"; } let langObj: any = { zh: "zh-CN", zh_tw: "zh-CN", en: "en-US", }; return langObj[str] ? langObj[str] : "zh-CN"; } async function registerPlugins() { await plugins.register(InjectPlugin); await plugins.register(EditorInitPlugin, { scenarioName: "basic-antd", displayName: "基础 AntD 组件", info: { urls: [ { key: "设计器", value: "https://github.com/alibaba/lowcode-demo/tree/main/demo-basic-antd", }, { key: "antd 物料", value: "https://github.com/alibaba/lowcode-materials/tree/main/packages/antd-lowcode-materials", }, ], }, }); // 设置内置 setter 和事件绑定、插件绑定面板 await plugins.register(DefaultSettersRegistryPlugin); await plugins.register(LogoSamplePlugin); await plugins.register(ComponentPanelPlugin); // schema await plugins.register(SchemaPlugin); // 教程文档 // await plugins.register(GuidePlugin); //帮助手册 // await plugins.register(ManualPlugin); // 注册回退/前进 await plugins.register(UndoRedoPlugin); // // 注册中英文切换 // await plugins.register(ZhEnPlugin); // await plugins.register(SetRefPropPlugin); await plugins.register(SimulatorResizerPlugin); // 自定义数据源 await plugins.register(DataSourcePanePlugin, {}); // 自定义变量 await plugins.register(CustomStatePlugin, {}); // 字典数据源 await plugins.register(DictionaryPanePlugin, {}); // 自定义变量 await plugins.register(CustomCopyPlugin); // 注册出码插件 // await plugins.register(CodeGenPlugin); if (window.location.host.startsWith("localhost")) { await plugins.register(SaveSamplePlugin); // JS panel await plugins.register(CodeEditorPlugin); } else { await plugins.register(SavePlugin); } await plugins.register(DebugPreviewSamplePlugin); await plugins.register(PreviewSamplePlugin); // await plugins.register(CustomSetterSamplePlugin); await plugins.register(SettingPlugin); // await plugins.register(ConnectorPlugin); let lang = localStorage.getItem("lang"); let newLang = changeLangData(lang); common.utils.createIntl().setLocale(newLang); // console.log('语言变化--',common.utils,common.utils.createIntl().getLocale()) } async function walletRefresh() { const { walletConnect, walletConnectRefreshDefault } = useWalletConnect(); // console.log("----------- home walletConnect",walletConnect); // console.log("----------- home window.walletConnect",window.walletConnect); if (!window.walletConnect) { // console.log("--------- register useWalletConnect start"); envConfig.defaultNetwork = ""; // envConfig.envs.development.devUrl = "https://chaosverse-dev-test.chainopen.cn/api2/" // envConfig.networks["1337"].accounts=[ // '0xbe316c91fb4926300018038295f872443adde461ca28184f8ba598583ba3e769', // ] // console.log("--------- register useWalletConnect",useWalletConnect); await walletConnectRefreshDefault(); window.walletConnect = walletConnect; // console.log("-------- web-ide-site walletConnect",walletConnect); } } async function registerSetter() { // console.log("---------- engine register setters",setters); setters.registerSetter({ CPanelSetter: { component: CPanelSetter, }, }); setters.registerSetter({ CLabelSetter: { component: CLabelSetter, }, }); setters.registerSetter({ CUploadImageSetter: { component: CUploadImageSetter, }, }); setters.registerSetter({ CUploadImageDefaultSetter: { component: CUploadImageDefaultSetter, }, }); setters.registerSetter({ CStyleSetter: { component: CStyleSetter, }, }); setters.registerSetter({ InputLangSetter: { component: InputLangSetter, }, }); setters.registerSetter({ DictionarySetter: { component: DictionarySetter, }, }); // setters.registerSetter({ // JsonToDomSetter:{ // component: JsonToDomSetter, // } // }) } /** * 编辑态是双重iframe 需要特别注意 */ async function registerJS() { let interval = setInterval(() => { let iframeWindow: any = project.simulatorHost?.contentWindow; // console.log("------------ iframeWindow ethereum interval start",iframeWindow) if (iframeWindow && (window as any).walletConnect) { // console.log("------------ iframeWindow ethereum interval start") iframeWindow.echarts = echarts; iframeWindow.ethereum = (window as any).ethereum; iframeWindow.walletConnect = (window as any).walletConnect; iframeWindow[RuleOSWindowKey.ruleOSDictionaryList] = (window as any)[RuleOSWindowKey.ruleOSDictionaryList] if ((window as any).PubSub) { iframeWindow.PubSub = (window as any).PubSub; } var cssLink = document.createElement("link"); cssLink.href = "https://d3r48att5ocy3q.cloudfront.net/font/ST-font-face.css"; cssLink.rel = "stylesheet"; iframeWindow.document.head.appendChild(cssLink); clearInterval(interval); // iframeWindow.location.reload(true); // console.log("------------ iframeWindow ethereum interval end") } }, 500); } (async function main() { // const isHasAdmin = localStorage.getItem("admin"); // if (!isHasAdmin) { // window.alert("please log in first!"); // return; // } (window as any)[RuleOSWindowKey.ruleOSMode] = PluginMode.EmbedEdit // TODO 开发者需要有一个默认登录请求 await registerPlugins(); init(document.getElementById("lce-container")!, { // locale: 'zh-CN', enableCondition: true, enableCanvasLock: true, // 默认绑定变量 supportVariableGlobally: true, requestHandlersMap: { fetch: createFetchHandler(), }, }); await initFontFamilyList(); await registerSetter(); await walletRefresh(); await registerJS(); })();