@cicctencent/low-code-simulate-base 0.0.0-stage → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +1 -3
  2. package/__tests__/plugin.spec.ts +40 -0
  3. package/__tests__/utils.transform.test.ts +37 -0
  4. package/api-extractor.json +36 -0
  5. package/build/md.js +25 -0
  6. package/dist/VCComponent.d.ts +5 -0
  7. package/dist/VCComponent.js +91 -0
  8. package/dist/domain/BaseProjectDomain.d.ts +389 -0
  9. package/dist/domain/BaseProjectDomain.js +1305 -0
  10. package/dist/domain/ComponentManager.d.ts +78 -0
  11. package/dist/domain/ComponentManager.js +293 -0
  12. package/dist/domain/DataHistoryDomain.d.ts +53 -0
  13. package/dist/domain/DataHistoryDomain.js +110 -0
  14. package/dist/domain/PreviewDomain.d.ts +208 -0
  15. package/dist/domain/PreviewDomain.js +490 -0
  16. package/dist/domain/ProjectDomain.d.ts +209 -0
  17. package/dist/domain/ProjectDomain.js +138 -0
  18. package/dist/event/generateEventHandler.d.ts +21 -0
  19. package/dist/event/generateEventHandler.js +218 -0
  20. package/dist/event/generateEventSchema.d.ts +123 -0
  21. package/dist/event/generateEventSchema.js +342 -0
  22. package/dist/event/register.d.ts +56 -0
  23. package/dist/event/register.js +207 -0
  24. package/dist/index.d.ts +1369 -0
  25. package/dist/index.js +28 -0
  26. package/dist/plugin/onH5PageValidate.d.ts +7 -0
  27. package/dist/plugin/onH5PageValidate.js +178 -0
  28. package/dist/plugin/onPlaceholder.d.ts +6 -0
  29. package/dist/plugin/onPlaceholder.js +68 -0
  30. package/dist/plugin/subscribeInsertUploadList.d.ts +6 -0
  31. package/dist/plugin/subscribeInsertUploadList.js +49 -0
  32. package/dist/plugin/subscribeSetTitle.d.ts +6 -0
  33. package/dist/plugin/subscribeSetTitle.js +16 -0
  34. package/dist/plugin/subscribeTransformComponentMeta.d.ts +14 -0
  35. package/dist/plugin/subscribeTransformComponentMeta.js +31 -0
  36. package/dist/plugin/subscribeValidateField.d.ts +7 -0
  37. package/dist/plugin/subscribeValidateField.js +57 -0
  38. package/dist/plugin/subscribeValidateUpload.d.ts +6 -0
  39. package/dist/plugin/subscribeValidateUpload.js +92 -0
  40. package/dist/utils/base64.d.ts +14 -0
  41. package/dist/utils/base64.js +14 -0
  42. package/dist/utils/buildInVariable.d.ts +61 -0
  43. package/dist/utils/buildInVariable.js +216 -0
  44. package/dist/utils/dom.d.ts +14 -0
  45. package/dist/utils/dom.js +19 -0
  46. package/dist/utils/index.d.ts +55 -0
  47. package/dist/utils/index.js +201 -0
  48. package/dist/utils/transform.d.ts +39 -0
  49. package/dist/utils/transform.js +191 -0
  50. package/dist/utils/validate.d.ts +7 -0
  51. package/dist/utils/validate.js +18 -0
  52. package/docs/.api/low-code-simulate-base.api.json +8450 -0
  53. package/jest.config.ts +20 -0
  54. package/package.json +45 -4
  55. package/src/VCComponent.ts +118 -0
  56. package/src/domain/BaseProjectDomain.ts +1341 -0
  57. package/src/domain/ComponentManager.ts +241 -0
  58. package/src/domain/DataHistoryDomain.ts +102 -0
  59. package/src/domain/PreviewDomain.ts +424 -0
  60. package/src/domain/ProjectDomain.ts +244 -0
  61. package/src/event/generateEventHandler.ts +162 -0
  62. package/src/event/generateEventSchema.ts +371 -0
  63. package/src/event/register.ts +181 -0
  64. package/src/index.ts +61 -0
  65. package/src/plugin/onH5PageValidate.ts +179 -0
  66. package/src/plugin/onPlaceholder.ts +71 -0
  67. package/src/plugin/subscribeInsertUploadList.ts +51 -0
  68. package/src/plugin/subscribeSetTitle.ts +18 -0
  69. package/src/plugin/subscribeTransformComponentMeta.ts +38 -0
  70. package/src/plugin/subscribeValidateField.ts +65 -0
  71. package/src/plugin/subscribeValidateUpload.ts +116 -0
  72. package/src/utils/base64.ts +17 -0
  73. package/src/utils/buildInVariable.ts +157 -0
  74. package/src/utils/dom.ts +30 -0
  75. package/src/utils/index.ts +194 -0
  76. package/src/utils/transform.ts +171 -0
  77. package/src/utils/validate.ts +19 -0
  78. package/temp/low-code-simulate-base.api.md +597 -0
  79. package/test/plugin.test.ts +4 -0
  80. package/tsconfig.build.json +9 -0
  81. package/tsconfig.json +9 -0
  82. package/tsconfig.test.json +14 -0
@@ -0,0 +1,209 @@
1
+ import { Entity } from '@cicctencent/ark-util';
2
+ import type { LowCodeKey, Component, FunctionData, EditorConfig, ComponentItem, History } from '@cicctencent/low-code-core';
3
+ import { ProjectDomainState } from './BaseProjectDomain';
4
+ /**
5
+ * @public
6
+ */
7
+ export declare const navTreeKey: {
8
+ module: string;
9
+ };
10
+ /**
11
+ * @public
12
+ */
13
+ export declare const componentTreeKey: {
14
+ module: string;
15
+ };
16
+ /**
17
+ * @public
18
+ */
19
+ export interface SpliceState {
20
+ draggingNode: Component;
21
+ dropNode: Component;
22
+ dropType: 'after' | 'before';
23
+ }
24
+ /**
25
+ * @public
26
+ */
27
+ export interface InsertUploadData {
28
+ key: string;
29
+ name: string;
30
+ list: string[];
31
+ }
32
+ /**
33
+ * @public
34
+ * 项目实体是与业务有关的 每个业务可以有自己的数据结构
35
+ * 项目可能有多个页面 每个页面有自己的组件列表 但当前最多只会有一个页面或一个组件处于选中状态
36
+ */
37
+ export default abstract class ProjectDomain extends Entity<any> {
38
+ /**
39
+ * 当前编辑页面索引
40
+ * @public
41
+ */
42
+ abstract currentPageIndex: number;
43
+ /**
44
+ * 当前编辑组件索引路径
45
+ * @public
46
+ */
47
+ abstract currentComponentPath: string;
48
+ /**
49
+ * @public
50
+ */
51
+ state: ProjectDomainState;
52
+ /**
53
+ * 项目名称
54
+ * @public
55
+ */
56
+ abstract get title(): string;
57
+ /**
58
+ * config.navTreeData 导航树配置
59
+ * @public
60
+ */
61
+ abstract get navTreeData(): any;
62
+ /**
63
+ * config.componentTreeData 组件库配置
64
+ * @public
65
+ */
66
+ abstract get componentTreeData(): any;
67
+ /**
68
+ * config.schemaData 表单配置
69
+ *
70
+ * @public
71
+ */
72
+ abstract get schemaData(): any;
73
+ /**
74
+ * 菜单数据
75
+ * @public
76
+ */
77
+ abstract get menuData(): any;
78
+ /**
79
+ * 当前组件配置
80
+ * @public
81
+ */
82
+ abstract get currentComponent(): any;
83
+ /**
84
+ * 获取functionData
85
+ * @public
86
+ */
87
+ abstract get functionData(): FunctionData;
88
+ /**
89
+ * 替换project数据 undo,redo
90
+ * @public
91
+ * @param store - History数据
92
+ */
93
+ abstract replaceProject(store: History): void;
94
+ /**
95
+ * 项目的所有页面
96
+ * @public
97
+ */
98
+ abstract get pages(): any;
99
+ /**
100
+ * 扩展信息
101
+ * @public
102
+ * @deprecated 减少使用
103
+ */
104
+ get extend(): Record<string, any>;
105
+ /**
106
+ * @public
107
+ */
108
+ abstract get config(): EditorConfig;
109
+ /**
110
+ * Action
111
+ * @public
112
+ * @param name - 组件名
113
+ */
114
+ abstract action(name: string, data: any): void;
115
+ /**
116
+ * 设置项目数据
117
+ * @public
118
+ * @param project - 项目数据
119
+ */
120
+ abstract setProject(project: any): void;
121
+ /**
122
+ * 移动组件到某个位置
123
+ * @public
124
+ * @param originPath - 原路径
125
+ * @param newPath - 目标路径
126
+ * @example
127
+ * moveTo('0.components.0.list.0', '0.components.0.list.1')
128
+ */
129
+ abstract moveTo(originPath: any, newPath: any): void;
130
+ /**
131
+ * 生成componentPath
132
+ * @public
133
+ * @param flagKey - 根据该字段找到组件
134
+ */
135
+ abstract generateComponentPath(flagKey: any, ...args: any[]): string;
136
+ /**
137
+ * 是更新还是插入历史栈,true表示更新,false表示插入(影响撤销、重做栈)
138
+ * @public
139
+ */
140
+ abstract needUpdateHistory(project: any): boolean;
141
+ /**
142
+ * 激活。比如点击了导航树或者某个组件,currentPageIndex或currentComponentPath需要变化
143
+ * @public
144
+ */
145
+ abstract activate(key: Partial<LowCodeKey>): void;
146
+ /**
147
+ * 删除组件
148
+ * @public
149
+ */
150
+ abstract componentDelete(key: LowCodeKey): void;
151
+ /**
152
+ * 复制组件
153
+ * @public
154
+ */
155
+ abstract componentCopy(key: LowCodeKey): void;
156
+ /**
157
+ * 处理通过拖拽方式插入的组件
158
+ * @public
159
+ */
160
+ abstract componentDrag(key: LowCodeKey, value: any): void;
161
+ /**
162
+ * 插入组件
163
+ * @public
164
+ */
165
+ abstract componentInsert(value: any): void;
166
+ /**
167
+ * 上移组件
168
+ * @public
169
+ */
170
+ abstract componentMoveUp(key: LowCodeKey): void;
171
+ /**
172
+ * 下移组件
173
+ * @public
174
+ */
175
+ abstract componentMoveDown(key: LowCodeKey): void;
176
+ /**
177
+ * @public
178
+ * 设置projectMeta数据,项目宽高等
179
+ */
180
+ setProjectMeta(value: any): void;
181
+ /**
182
+ * @public
183
+ * 根据componentPath获取组件数据
184
+ */
185
+ pathToData(path: string, pages?: any): ComponentItem | any;
186
+ /**
187
+ * @public
188
+ * @param path - 组件路径
189
+ * @param value - 数据
190
+ * @returns
191
+ */
192
+ setPathData(path: string, value: Record<string, any>): any;
193
+ /**
194
+ * 通知编辑器
195
+ * @param cmd - 模拟器推送给编辑器的事件名
196
+ * @param params - 事件传递的参数
197
+ * @deprecated 减少使用
198
+ * @public
199
+ */
200
+ publishEditor(cmd: string, ...params: any[]): void;
201
+ /**
202
+ * 通知模拟器
203
+ * @param cmd - 模拟器通知模拟器视图的事件名
204
+ * @param params - 事件传递的参数
205
+ * @deprecated 减少使用
206
+ * @public
207
+ */
208
+ publishPreview(cmd: string, ...params: any[]): void;
209
+ }
@@ -0,0 +1,138 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __assign = (this && this.__assign) || function () {
17
+ __assign = Object.assign || function(t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
+ t[p] = s[p];
22
+ }
23
+ return t;
24
+ };
25
+ return __assign.apply(this, arguments);
26
+ };
27
+ var __read = (this && this.__read) || function (o, n) {
28
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
29
+ if (!m) return o;
30
+ var i = m.call(o), r, ar = [], e;
31
+ try {
32
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
33
+ }
34
+ catch (error) { e = { error: error }; }
35
+ finally {
36
+ try {
37
+ if (r && !r.done && (m = i["return"])) m.call(i);
38
+ }
39
+ finally { if (e) throw e.error; }
40
+ }
41
+ return ar;
42
+ };
43
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
44
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
45
+ if (ar || !(i in from)) {
46
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
47
+ ar[i] = from[i];
48
+ }
49
+ }
50
+ return to.concat(ar || Array.prototype.slice.call(from));
51
+ };
52
+ import { Entity, get, set } from '@cicctencent/ark-util';
53
+ /**
54
+ * @public
55
+ */
56
+ export var navTreeKey = { module: 'navTree' };
57
+ /**
58
+ * @public
59
+ */
60
+ export var componentTreeKey = { module: 'componentTree' };
61
+ /**
62
+ * @public
63
+ * 项目实体是与业务有关的 每个业务可以有自己的数据结构
64
+ * 项目可能有多个页面 每个页面有自己的组件列表 但当前最多只会有一个页面或一个组件处于选中状态
65
+ */
66
+ var ProjectDomain = /** @class */ (function (_super) {
67
+ __extends(ProjectDomain, _super);
68
+ function ProjectDomain() {
69
+ return _super !== null && _super.apply(this, arguments) || this;
70
+ }
71
+ Object.defineProperty(ProjectDomain.prototype, "extend", {
72
+ /**
73
+ * 扩展信息
74
+ * @public
75
+ * @deprecated 减少使用
76
+ */
77
+ get: function () {
78
+ return {};
79
+ },
80
+ enumerable: false,
81
+ configurable: true
82
+ });
83
+ ;
84
+ /**
85
+ * @public
86
+ * 设置projectMeta数据,项目宽高等
87
+ */
88
+ ProjectDomain.prototype.setProjectMeta = function (value) {
89
+ this.state.project.meta = __assign(__assign({}, this.state.project.meta), value);
90
+ };
91
+ /**
92
+ * @public
93
+ * 根据componentPath获取组件数据
94
+ */
95
+ ProjectDomain.prototype.pathToData = function (path, pages) {
96
+ return path ? get(pages || this.state.project.pages, path) : null;
97
+ };
98
+ /**
99
+ * @public
100
+ * @param path - 组件路径
101
+ * @param value - 数据
102
+ * @returns
103
+ */
104
+ ProjectDomain.prototype.setPathData = function (path, value) {
105
+ var data = this.pathToData(path);
106
+ return set(this.pages, path, __assign(__assign({}, data), value));
107
+ };
108
+ /**
109
+ * 通知编辑器
110
+ * @param cmd - 模拟器推送给编辑器的事件名
111
+ * @param params - 事件传递的参数
112
+ * @deprecated 减少使用
113
+ * @public
114
+ */
115
+ ProjectDomain.prototype.publishEditor = function (cmd) {
116
+ var params = [];
117
+ for (var _i = 1; _i < arguments.length; _i++) {
118
+ params[_i - 1] = arguments[_i];
119
+ }
120
+ this.emit.apply(this, __spreadArray(['emitEditor', cmd], __read(params), false));
121
+ };
122
+ /**
123
+ * 通知模拟器
124
+ * @param cmd - 模拟器通知模拟器视图的事件名
125
+ * @param params - 事件传递的参数
126
+ * @deprecated 减少使用
127
+ * @public
128
+ */
129
+ ProjectDomain.prototype.publishPreview = function (cmd) {
130
+ var params = [];
131
+ for (var _i = 1; _i < arguments.length; _i++) {
132
+ params[_i - 1] = arguments[_i];
133
+ }
134
+ this.emit.apply(this, __spreadArray(['emitPreview', cmd], __read(params), false));
135
+ };
136
+ return ProjectDomain;
137
+ }(Entity));
138
+ export default ProjectDomain;
@@ -0,0 +1,21 @@
1
+ import type { IConfiguredEvent, Next, IConfiguredMiddleware } from '@cicctencent/low-code-core';
2
+ /**
3
+ * 关键:返回事件处理,供组件调用
4
+ * @public
5
+ * @param VCComponentInstance - 组件实例
6
+ * @param events - 事件列表list
7
+ * @returns
8
+ */
9
+ export declare function generateEventHandlers(VCComponentInstance: any, events: IConfiguredEvent[]): {
10
+ on: any;
11
+ nativeOn: any;
12
+ };
13
+ /**
14
+ * @public
15
+ * 使用koa-compose执行中间件
16
+ * @param middlewares - 中间件列表
17
+ * @param context - 上下文:组件实例
18
+ * @param next - 调用下一个中间件函数/最终执行函数
19
+ * @param options - 事件配置
20
+ */
21
+ export declare function executeMiddleware(middlewares: IConfiguredMiddleware[], context: any, next?: Next, options?: {}): void;
@@ -0,0 +1,218 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __values = (this && this.__values) || function(o) {
38
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
39
+ if (m) return m.call(o);
40
+ if (o && typeof o.length === "number") return {
41
+ next: function () {
42
+ if (o && i >= o.length) o = void 0;
43
+ return { value: o && o[i++], done: !o };
44
+ }
45
+ };
46
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
47
+ };
48
+ import compose from 'koa-compose';
49
+ import { eventRegistry, eventMiddlewareRegistry, nativeEventTypeRegistry, } from './register';
50
+ /**
51
+ * 关键:返回事件处理,供组件调用
52
+ * @public
53
+ * @param VCComponentInstance - 组件实例
54
+ * @param events - 事件列表list
55
+ * @returns
56
+ */
57
+ export function generateEventHandlers(VCComponentInstance, events) {
58
+ if (!Array.isArray(events))
59
+ return { on: {}, nativeOn: {} };
60
+ var _a = transformConfiguredEvents(events), customEvents = _a.customEvents, nativeEvents = _a.nativeEvents;
61
+ return {
62
+ on: initEventHandlers(VCComponentInstance, customEvents),
63
+ nativeOn: initEventHandlers(VCComponentInstance, nativeEvents),
64
+ };
65
+ }
66
+ /**
67
+ * @public
68
+ * 初始化事件的处理函数:同一个事件可能存在多个处理函数;
69
+ */
70
+ function initEventHandlers(VCComponentInstance, eventsMap) {
71
+ var e_1, _a;
72
+ var handlers = {};
73
+ var _loop_1 = function (name_1) {
74
+ handlers[name_1] = function ($event) {
75
+ var e_2, _a;
76
+ var events = eventsMap[name_1];
77
+ try {
78
+ for (var events_1 = (e_2 = void 0, __values(events)), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {
79
+ var configuredEvent = events_1_1.value;
80
+ executeHandler(VCComponentInstance, configuredEvent, $event);
81
+ }
82
+ }
83
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
84
+ finally {
85
+ try {
86
+ if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);
87
+ }
88
+ finally { if (e_2) throw e_2.error; }
89
+ }
90
+ };
91
+ };
92
+ try {
93
+ for (var _b = __values(Object.keys(eventsMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
94
+ var name_1 = _c.value;
95
+ _loop_1(name_1);
96
+ }
97
+ }
98
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
99
+ finally {
100
+ try {
101
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
102
+ }
103
+ finally { if (e_1) throw e_1.error; }
104
+ }
105
+ return handlers;
106
+ }
107
+ /**
108
+ * @public
109
+ * 执行处理程序:
110
+ * 1. 根据事件配置数据(handler),获取对应的处理程序:先取事件注册表中的handler,其次取组件methods中的handler
111
+ * 2. 若存在中间件配置,以中间件方式执行程序
112
+ * */
113
+ function executeHandler(VCComponentInstance, configuredEvent, $event) {
114
+ var _this = this;
115
+ var renderedComponentInstance = VCComponentInstance;
116
+ var _a = configuredEvent.handler, cbName = _a.name, options = _a.options, _b = configuredEvent.middlewares, middlewares = _b === void 0 ? [] : _b;
117
+ var _handler = null;
118
+ if (eventRegistry[cbName]) {
119
+ var handler_1 = eventRegistry[cbName].handler;
120
+ if (typeof handler_1 === 'function') {
121
+ _handler = function () { return __awaiter(_this, void 0, void 0, function () {
122
+ return __generator(this, function (_a) {
123
+ handler_1(renderedComponentInstance, options, $event);
124
+ return [2 /*return*/];
125
+ });
126
+ }); };
127
+ }
128
+ }
129
+ else if (typeof renderedComponentInstance[cbName] === 'function') {
130
+ _handler = renderedComponentInstance[cbName];
131
+ }
132
+ if (_handler !== null) {
133
+ if (middlewares && middlewares.length > 0) {
134
+ executeMiddleware(middlewares, renderedComponentInstance, _handler, options);
135
+ }
136
+ else {
137
+ _handler(renderedComponentInstance, options, $event);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * @public
143
+ * 使用koa-compose执行中间件
144
+ * @param middlewares - 中间件列表
145
+ * @param context - 上下文:组件实例
146
+ * @param next - 调用下一个中间件函数/最终执行函数
147
+ * @param options - 事件配置
148
+ */
149
+ export function executeMiddleware(middlewares, context, next, options) {
150
+ if (next === void 0) { next = function () { }; }
151
+ if (options === void 0) { options = {}; }
152
+ var middlewareFunctions = [];
153
+ middlewares.forEach(function (mw) {
154
+ var _a;
155
+ if (typeof mw === 'object' && !(mw === null || mw === void 0 ? void 0 : mw.name)) {
156
+ return;
157
+ }
158
+ var mwName = typeof mw === 'object' ? mw.name : mw;
159
+ var mwOptions = typeof mw === 'object' ? mw.options : null;
160
+ var mwFunc = (_a = eventMiddlewareRegistry[mwName]) === null || _a === void 0 ? void 0 : _a.middleware;
161
+ if (typeof mwFunc === 'function') {
162
+ var func = function (context, next) {
163
+ var contextProxy = new Proxy(context, {
164
+ get: function (target, key) {
165
+ if (key === 'middlewareOptions' && mwOptions)
166
+ return mwOptions;
167
+ else if (key === 'eventOptions')
168
+ return options;
169
+ else if (key === 'instance')
170
+ return target;
171
+ else
172
+ return Reflect.get(target, key);
173
+ },
174
+ });
175
+ mwFunc(contextProxy, next);
176
+ };
177
+ middlewareFunctions.push(func);
178
+ }
179
+ });
180
+ compose(middlewareFunctions)(context, next);
181
+ }
182
+ /**
183
+ * @public
184
+ * 转换事件配置数据的数据结构
185
+ */
186
+ function transformConfiguredEvents(events) {
187
+ var e_3, _a;
188
+ var customEvents = {};
189
+ var nativeEvents = {};
190
+ try {
191
+ for (var events_2 = __values(events), events_2_1 = events_2.next(); !events_2_1.done; events_2_1 = events_2.next()) {
192
+ var eventConfigData = events_2_1.value;
193
+ var type = eventConfigData.type;
194
+ if (type === '')
195
+ continue;
196
+ var nativeEentTypes = Object.values(nativeEventTypeRegistry).map(function (it) { return it.name; });
197
+ if (nativeEentTypes.includes(type)) {
198
+ nativeEvents[type] = nativeEvents[type] || [];
199
+ nativeEvents[type].push(eventConfigData);
200
+ }
201
+ else {
202
+ customEvents[type] = customEvents[type] || [];
203
+ customEvents[type].push(eventConfigData);
204
+ }
205
+ }
206
+ }
207
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
208
+ finally {
209
+ try {
210
+ if (events_2_1 && !events_2_1.done && (_a = events_2.return)) _a.call(events_2);
211
+ }
212
+ finally { if (e_3) throw e_3.error; }
213
+ }
214
+ return {
215
+ customEvents: customEvents,
216
+ nativeEvents: nativeEvents,
217
+ };
218
+ }