@alilc/build-plugin-alt
Version:
build-scripts plugin template for developers
212 lines (211 loc) • 10 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const React = __importStar(require("react"));
const lowcode_engine_1 = require("@alilc/lowcode-engine");
const logo_1 = __importDefault(require("../../builtIn/logo"));
const lowcode_plugin_undo_redo_1 = __importDefault(require("@alilc/lowcode-plugin-undo-redo"));
const lowcode_plugin_components_pane_1 = __importDefault(require("@alilc/lowcode-plugin-components-pane"));
const lowcode_plugin_zh_en_1 = __importDefault(require("@alilc/lowcode-plugin-zh-en"));
const lowcode_plugin_schema_1 = __importDefault(require("@alilc/lowcode-plugin-schema"));
const lowcode_plugin_code_editor_1 = __importDefault(require("@alilc/lowcode-plugin-code-editor"));
const utils_1 = require("./utils");
const assets_json_1 = __importDefault(require("../../public/assets.json"));
;
exports.default = ({ type, demoPlugin = undefined }) => __awaiter(void 0, void 0, void 0, function* () {
const registerPlugin = (plugin) => __awaiter(void 0, void 0, void 0, function* () {
// 避免要调试的插件被二次注册
if ((demoPlugin === null || demoPlugin === void 0 ? void 0 : demoPlugin.pluginName) && plugin.pluginName === (demoPlugin === null || demoPlugin === void 0 ? void 0 : demoPlugin.pluginName)) {
return;
}
yield lowcode_engine_1.plugins.register(plugin);
});
// plugin API 见 https://lowcode-engine.cn/site/docs/api/plugins
yield registerPlugin(lowcode_plugin_schema_1.default);
yield registerPlugin(lowcode_plugin_code_editor_1.default);
const editorInit = (ctx) => {
return {
name: 'editor-init',
init() {
return __awaiter(this, void 0, void 0, function* () {
if (type === 'setter') {
const COMP_NAME = "BuiltInComp";
const COMP_VERSION = '1.0.0';
const COMP_TITLE = '内置调试组件';
const COMP_PACKAGE = 'setter-plugin-builtin-component';
assets_json_1.default.packages.push({
package: COMP_PACKAGE,
version: COMP_VERSION,
urls: [
`/js/component.js`,
`/css/component.css`
],
library: COMP_NAME
});
assets_json_1.default.components.unshift({
componentName: COMP_NAME,
category: '调试用',
group: '调试用',
title: COMP_TITLE,
icon: "https://img.alicdn.com/imgextra/i1/O1CN01m4IZ481VKPwFFbDhP_!!6000000002634-2-tps-112-112.png",
docUrl: "",
screenshot: "",
npm: {
package: COMP_PACKAGE,
version: COMP_VERSION
},
props: [
{
name: "custom",
title: "内容",
propType: "string"
}
],
snippets: [
{
title: "调试用内置组件",
screenshot: "https://img.alicdn.com/imgextra/i1/O1CN01m4IZ481VKPwFFbDhP_!!6000000002634-2-tps-112-112.png",
schema: {
componentName: COMP_NAME,
props: {}
}
}
],
configure: {
props: {
isExtends: true,
override: [
{
name: "custom",
title: "",
setter: "DemoSetter"
}
]
}
}
});
}
// 设置物料描述
const { material, project } = ctx;
material.setAssets(assets_json_1.default);
const schema = yield (0, utils_1.getPageSchema)(type);
// 加载 schema
project.openDocument(schema);
});
},
};
};
editorInit.pluginName = 'editorInit';
yield registerPlugin(editorInit);
const builtinPluginRegistry = (ctx) => {
return {
name: 'builtin-plugin-registry',
init() {
return __awaiter(this, void 0, void 0, function* () {
// 注册 logo 面板
lowcode_engine_1.skeleton.add({
area: 'topArea',
type: 'Widget',
name: 'logo',
content: logo_1.default,
contentProps: {
logo: 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png',
href: '/',
},
props: {
align: 'left',
width: 100,
},
});
// 注册组件面板
lowcode_engine_1.skeleton.add({
area: 'leftArea',
type: 'PanelDock',
name: 'componentsPane',
content: lowcode_plugin_components_pane_1.default,
contentProps: {},
props: {
align: 'top',
icon: 'zujianku',
description: '组件库',
},
});
});
},
};
};
builtinPluginRegistry.pluginName = 'builtinPluginRegistry';
yield registerPlugin(builtinPluginRegistry);
// 注册回退/前进
yield registerPlugin(lowcode_plugin_undo_redo_1.default);
// 注册中英文切换
yield registerPlugin(lowcode_plugin_zh_en_1.default);
// 注册保存面板
const saveSample = (ctx) => {
return {
name: 'saveSample',
init() {
return __awaiter(this, void 0, void 0, function* () {
ctx.skeleton.add({
name: 'saveSample',
area: 'topArea',
type: 'Widget',
props: {
align: 'right',
},
content: React.createElement("button", { className: 'save-sample', onClick: utils_1.saveSchema }, "\u4FDD\u5B58\u5230\u672C\u5730")
});
ctx.skeleton.add({
name: 'resetSchema',
area: 'topArea',
type: 'Widget',
props: {
align: 'right',
},
content: React.createElement("button", { className: 'save-sample', onClick: utils_1.resetSchema }, "\u91CD\u7F6E\u9875\u9762")
});
ctx.hotkey.bind('command+s', (e) => {
e.preventDefault();
(0, utils_1.saveSchema)();
});
});
},
};
};
saveSample.pluginName = 'saveSample';
yield registerPlugin(saveSample);
});