@cloudbase/cals 0.3.20 → 0.3.22-alpha.2

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 (31) hide show
  1. package/README.md +17 -10
  2. package/lib/parser/cals/index.d.ts +21 -67
  3. package/lib/parser/cals/index.d.ts.map +1 -1
  4. package/lib/parser/cals/index.js +137 -100
  5. package/lib/parser/cals/utils/block/index.js +2 -2
  6. package/lib/parser/cals/utils/runtime.d.ts +4 -1
  7. package/lib/parser/cals/utils/runtime.d.ts.map +1 -1
  8. package/lib/parser/cals/utils/runtime.js +7 -0
  9. package/lib/parser/cals/utils/spinoff/index.d.ts.map +1 -1
  10. package/lib/parser/cals/utils/version/utils.d.ts +4 -4
  11. package/lib/parser/cals/utils/version/utils.d.ts.map +1 -1
  12. package/lib/parser/expression/index.d.ts +8 -1
  13. package/lib/parser/expression/index.d.ts.map +1 -1
  14. package/lib/parser/expression/index.js +6 -1
  15. package/lib/tsconfig.tsbuildinfo +1 -1
  16. package/lib/types/platform/app.d.ts +15 -1
  17. package/lib/types/platform/app.d.ts.map +1 -1
  18. package/lib/types/platform/common.d.ts +7 -7
  19. package/lib/types/platform/common.d.ts.map +1 -1
  20. package/lib/types/platform/common.js +4 -5
  21. package/lib/types/platform/component.d.ts +17 -30
  22. package/lib/types/platform/component.d.ts.map +1 -1
  23. package/lib/types/platform/component.js +5 -6
  24. package/lib/types/platform/datasource.d.ts +9 -5
  25. package/lib/types/platform/datasource.d.ts.map +1 -1
  26. package/lib/types/platform/widget/form.js +0 -1
  27. package/package.json +5 -2
  28. package/lib/schema/platform_application.json +0 -2177
  29. package/lib/tests/common-application-specs.test.d.ts +0 -2
  30. package/lib/tests/common-application-specs.test.d.ts.map +0 -1
  31. package/lib/tests/common-application-specs.test.js +0 -45
@@ -16,7 +16,6 @@ const lodash_1 = require("lodash");
16
16
  const common_1 = require("../../types/platform/common");
17
17
  var common_2 = require("./utils/common");
18
18
  Object.defineProperty(exports, "getUsedComps", { enumerable: true, get: function () { return common_2.getUsedComps; } });
19
- const types_1 = require("../../types");
20
19
  const expression_1 = require("../expression");
21
20
  const common_3 = require("./utils/common");
22
21
  const style_1 = require("./utils/style");
@@ -34,14 +33,14 @@ function serializeValue({ ctx, key, dynamicValue, scope = 'page', streamlineDefa
34
33
  case expression_1.PropBindType.computed:
35
34
  case expression_1.PropBindType.dataVar:
36
35
  case expression_1.PropBindType.stateData:
37
- case expression_1.PropBindType.paramData: {
36
+ case expression_1.PropBindType.params: {
38
37
  const TYPE_MAP = {
39
38
  [expression_1.PropBindType.prop]: 'props',
40
39
  [expression_1.PropBindType.state]: 'state',
41
40
  [expression_1.PropBindType.computed]: 'computed',
42
41
  [expression_1.PropBindType.dataVar]: 'dataVar',
43
42
  [expression_1.PropBindType.stateData]: 'dataset.state',
44
- [expression_1.PropBindType.paramData]: 'dataset.params',
43
+ [expression_1.PropBindType.params]: 'dataset.params',
45
44
  };
46
45
  let exp = dynamicValue.value;
47
46
  let reg = /^(.*?)\./;
@@ -86,12 +85,13 @@ function serializeValue({ ctx, key, dynamicValue, scope = 'page', streamlineDefa
86
85
  value = undefined;
87
86
  }
88
87
  }
89
- return { key, value };
88
+ return { key, value, extra: dynamicValue.extra };
90
89
  }
91
90
  exports.serializeValue = serializeValue;
92
- function deserializeValue(ctx, key, value) {
91
+ const DYNAMIC_KEY_REG = /^:(.*)$/;
92
+ function deserializeValue(ctx, key, value, extra) {
93
93
  var _a;
94
- let matched = key.match(/^:(.*)$/);
94
+ let matched = key.match(DYNAMIC_KEY_REG);
95
95
  if (matched) {
96
96
  let key = matched[1];
97
97
  let type = expression_1.PropBindType.expression;
@@ -119,7 +119,7 @@ function deserializeValue(ctx, key, value) {
119
119
  }
120
120
  return {
121
121
  key,
122
- value: { type, value },
122
+ value: { type, value, extra },
123
123
  };
124
124
  }
125
125
  else {
@@ -130,13 +130,19 @@ function deserializeValue(ctx, key, value) {
130
130
  : {
131
131
  type: undefined /*'static'*/,
132
132
  value,
133
+ extra,
133
134
  },
134
135
  };
135
136
  }
136
137
  }
137
138
  exports.deserializeValue = deserializeValue;
138
- function serializeDynamicMap({ ctx, map = {}, scope = 'page', streamlineDefaultValue, }) {
139
+ function serializeDynamicMap(props) {
140
+ return serializeDynamicMapWithExtra(props).data;
141
+ }
142
+ exports.serializeDynamicMap = serializeDynamicMap;
143
+ function serializeDynamicMapWithExtra({ ctx, map = {}, scope = 'page', streamlineDefaultValue, }) {
139
144
  let data = {};
145
+ let extra = {};
140
146
  Object.keys(map)
141
147
  .sort((a, b) => {
142
148
  const aPath = a.split('.');
@@ -151,7 +157,7 @@ function serializeDynamicMap({ ctx, map = {}, scope = 'page', streamlineDefaultV
151
157
  }
152
158
  })
153
159
  .forEach((key) => {
154
- let { key: processedKey, value: processedValue } = serializeValue({
160
+ let { key: processedKey, value: processedValue, extra: processedExtra, } = serializeValue({
155
161
  ctx,
156
162
  key,
157
163
  dynamicValue: map[key],
@@ -159,17 +165,17 @@ function serializeDynamicMap({ ctx, map = {}, scope = 'page', streamlineDefaultV
159
165
  streamlineDefaultValue,
160
166
  });
161
167
  let matched = processedKey.match(/^:(.*)$/);
168
+ let originKey = processedKey;
162
169
  if (matched) {
163
- const originValue = matched[1];
164
- (0, lodash_1.unset)(data, originValue);
170
+ originKey = matched[1];
171
+ (0, lodash_1.unset)(data, originKey);
165
172
  }
166
173
  if ((0, lodash_1.get)(data, processedKey) == undefined) {
167
- let ValueTmp = processedValue;
168
174
  /* 选区结构处理 [formily] to [CALS] */
169
- if (Array.isArray(ValueTmp) &&
170
- (ValueTmp === null || ValueTmp === void 0 ? void 0 : ValueTmp.some((item) => item && item.selectableBlock))) {
171
- ValueTmp = (0, lodash_1.cloneDeep)(processedValue);
172
- ValueTmp === null || ValueTmp === void 0 ? void 0 : ValueTmp.map((_value) => {
175
+ if (Array.isArray(processedValue) &&
176
+ (processedValue === null || processedValue === void 0 ? void 0 : processedValue.some((item) => item && item.selectableBlock))) {
177
+ let valueTmp = (0, lodash_1.cloneDeep)(processedValue);
178
+ valueTmp === null || valueTmp === void 0 ? void 0 : valueTmp.map((_value) => {
173
179
  var _a, _b, _c;
174
180
  const xProp = (_a = _value === null || _value === void 0 ? void 0 : _value.selectableBlock) === null || _a === void 0 ? void 0 : _a['x-props'];
175
181
  const xComponent = (_c = (_b = _value === null || _value === void 0 ? void 0 : _value.selectableBlock) === null || _b === void 0 ? void 0 : _b['x-component']) === null || _c === void 0 ? void 0 : _c.toLowerCase();
@@ -183,24 +189,24 @@ function serializeDynamicMap({ ctx, map = {}, scope = 'page', streamlineDefaultV
183
189
  return _value;
184
190
  });
185
191
  }
186
- data[processedKey] = ValueTmp;
192
+ data[processedKey] = processedValue;
187
193
  }
194
+ extra[originKey] = processedExtra;
188
195
  });
189
- return data;
196
+ return { data, extra };
190
197
  }
191
- exports.serializeDynamicMap = serializeDynamicMap;
192
- function deserializeDynamicMap(ctx, map) {
198
+ function deserializeDynamicMap(ctx, map, extraMap) {
193
199
  var _a, _b, _c;
194
200
  let data = {};
195
201
  for (let key in map || {}) {
196
202
  let value = (_a = map) === null || _a === void 0 ? void 0 : _a[key];
197
- let { key: processedKey, value: processedValue } = deserializeValue(ctx, key, value);
198
- let ValueTmp = processedValue;
203
+ let matched = key.match(DYNAMIC_KEY_REG);
204
+ let { key: processedKey, value: processedValue } = deserializeValue(ctx, key, value, extraMap === null || extraMap === void 0 ? void 0 : extraMap[matched ? matched[1] : key]);
199
205
  /* 选区结构处理 [CALS] to [formily] */
200
206
  if (Array.isArray(processedValue === null || processedValue === void 0 ? void 0 : processedValue.value) &&
201
207
  ((_b = processedValue === null || processedValue === void 0 ? void 0 : processedValue.value) === null || _b === void 0 ? void 0 : _b.some((item) => item && item.selectableBlock))) {
202
- ValueTmp = (0, lodash_1.cloneDeep)(processedValue);
203
- (_c = ValueTmp === null || ValueTmp === void 0 ? void 0 : ValueTmp.value) === null || _c === void 0 ? void 0 : _c.map((_value) => {
208
+ let valueTmp = (0, lodash_1.cloneDeep)(processedValue);
209
+ (_c = valueTmp === null || valueTmp === void 0 ? void 0 : valueTmp.value) === null || _c === void 0 ? void 0 : _c.forEach((_value) => {
204
210
  var _a, _b, _c, _d;
205
211
  const module = (_b = (_a = _value === null || _value === void 0 ? void 0 : _value.selectableBlock) === null || _a === void 0 ? void 0 : _a.module) === null || _b === void 0 ? void 0 : _b.toLowerCase();
206
212
  const component = (_d = (_c = _value === null || _value === void 0 ? void 0 : _value.selectableBlock) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.toLowerCase();
@@ -212,21 +218,25 @@ function deserializeDynamicMap(ctx, map) {
212
218
  return _value;
213
219
  });
214
220
  }
215
- data[processedKey] = ValueTmp;
221
+ data[processedKey] = processedValue;
216
222
  }
217
223
  return data;
218
224
  }
219
225
  exports.deserializeDynamicMap = deserializeDynamicMap;
220
226
  function serializeAttributes(ctx, scope, attributes = {}) {
221
- return serializeDynamicMap({
227
+ var _a;
228
+ return (_a = serializeAttributesWithExtra(ctx, scope, attributes)) === null || _a === void 0 ? void 0 : _a.data;
229
+ }
230
+ exports.serializeAttributes = serializeAttributes;
231
+ function serializeAttributesWithExtra(ctx, scope, attributes = {}) {
232
+ return serializeDynamicMapWithExtra({
222
233
  ctx,
223
234
  scope,
224
235
  map: attributes,
225
236
  streamlineDefaultValue: ctx.streamlineDefaultValue,
226
237
  });
227
238
  }
228
- exports.serializeAttributes = serializeAttributes;
229
- function deserializeAttributes(ctx, attributes = {}) {
239
+ function deserializeAttributes(ctx, attributes = {}, attributesExtraData = {}) {
230
240
  const reservedAttributes = ['style', 'commonStyle', 'class'];
231
241
  const reservedAttributesMap = reservedAttributes.reduce((map, key) => {
232
242
  map[key] = true;
@@ -242,7 +252,7 @@ function deserializeAttributes(ctx, attributes = {}) {
242
252
  restAttributes[key] = attributes[key];
243
253
  }
244
254
  }
245
- return deserializeDynamicMap(ctx, restAttributes);
255
+ return deserializeDynamicMap(ctx, restAttributes, attributesExtraData);
246
256
  }
247
257
  exports.deserializeAttributes = deserializeAttributes;
248
258
  /**
@@ -254,20 +264,20 @@ function serializeDataset(ctx, dataset) {
254
264
  return dataset;
255
265
  const result = JSON.parse(JSON.stringify(dataset));
256
266
  Object.values(result.state).forEach((state) => {
257
- var _a, _b;
267
+ var _a, _b, _c, _d;
258
268
  if (state.varType !== 'datasource')
259
269
  return;
260
270
  if ((_a = state.initMethod) === null || _a === void 0 ? void 0 : _a.params) {
261
- state.initMethod.params = serializeDynamicMap({
271
+ state.initMethod.params = (_b = serializeDynamicMapWithExtra({
262
272
  ctx,
263
273
  map: state.initMethod.params,
264
- });
274
+ })) === null || _b === void 0 ? void 0 : _b.data;
265
275
  }
266
- if ((_b = state.updateMethod) === null || _b === void 0 ? void 0 : _b.params) {
267
- state.updateMethod.params = serializeDynamicMap({
276
+ if ((_c = state.updateMethod) === null || _c === void 0 ? void 0 : _c.params) {
277
+ state.updateMethod.params = (_d = serializeDynamicMapWithExtra({
268
278
  ctx,
269
279
  map: state.updateMethod.params,
270
- });
280
+ })) === null || _d === void 0 ? void 0 : _d.data;
271
281
  }
272
282
  });
273
283
  return result;
@@ -377,10 +387,10 @@ function serializeListener(ctx, listener) {
377
387
  module: /^comp\-\w+$/.test(listener.handler.moduleName)
378
388
  ? '$comp'
379
389
  : listener.handler.moduleName,
380
- params: serializeDynamicMap({
390
+ params: serializeDynamicMapWithExtra({
381
391
  ctx,
382
392
  map: listener.data,
383
- }),
393
+ }).data,
384
394
  },
385
395
  isCapturePhase: listener.isCapturePhase,
386
396
  };
@@ -492,45 +502,59 @@ function serializeComponent(ctx, component, scope = 'page') {
492
502
  if (componentCtx.dependencies && !componentCtx.dependenciesMap) {
493
503
  componentCtx.dependenciesMap = processDependenciesMap(componentCtx.dependencies || []);
494
504
  }
505
+ const { data: attributes = {}, extra: attributeExtraData = {} } = serializeAttributesWithExtra(componentCtx, scope, (component.xProps.data || {})) || {};
506
+ let classListBindData = null;
507
+ let styleBindData = null;
508
+ if ((_d = component === null || component === void 0 ? void 0 : component.xProps) === null || _d === void 0 ? void 0 : _d.classListBind) {
509
+ classListBindData = serializeValue({
510
+ ctx: componentCtx,
511
+ key: 'classListBind',
512
+ dynamicValue: (_e = component === null || component === void 0 ? void 0 : component.xProps) === null || _e === void 0 ? void 0 : _e.classListBind,
513
+ scope,
514
+ });
515
+ if (classListBindData.extra) {
516
+ attributeExtraData['class'] = classListBindData.extra;
517
+ }
518
+ }
519
+ if ((_f = component === null || component === void 0 ? void 0 : component.xProps) === null || _f === void 0 ? void 0 : _f.styleBind) {
520
+ styleBindData = serializeValue({
521
+ ctx: componentCtx,
522
+ key: 'styleBind',
523
+ dynamicValue: (_g = component === null || component === void 0 ? void 0 : component.xProps) === null || _g === void 0 ? void 0 : _g.styleBind,
524
+ });
525
+ if (styleBindData.extra) {
526
+ attributeExtraData['style'] = styleBindData.extra;
527
+ }
528
+ }
495
529
  return {
496
530
  id: component.id,
497
531
  type: undefined,
498
532
  module: serializeModuleName(componentCtx, moduleName, componentName),
499
533
  component: componentName,
500
534
  attributes: (0, runtime_1.getValidValue)(component.xProps
501
- ? Object.assign(Object.assign({}, serializeAttributes(componentCtx, scope, (component.xProps.data || {}))), { style: (_d = component.xProps) === null || _d === void 0 ? void 0 : _d.style, class: (_f = (_e = component.xProps) === null || _e === void 0 ? void 0 : _e.classList) === null || _f === void 0 ? void 0 : _f.join(' ') }) : undefined),
535
+ ? Object.assign(Object.assign({}, attributes), { style: (_h = component.xProps) === null || _h === void 0 ? void 0 : _h.style, class: (_k = (_j = component.xProps) === null || _j === void 0 ? void 0 : _j.classList) === null || _k === void 0 ? void 0 : _k.join(' ') }) : undefined),
502
536
  items: component.properties
503
537
  ? Object.keys(component.properties).map((key) => {
504
538
  var _a;
505
539
  return serializeComponent(componentCtx, Object.assign({ id: key }, (_a = component.properties) === null || _a === void 0 ? void 0 : _a[key]), scope);
506
540
  })
507
541
  : undefined,
508
- listeners: (0, runtime_1.getValidValue)((_h = (_g = component.xProps) === null || _g === void 0 ? void 0 : _g.listeners) === null || _h === void 0 ? void 0 : _h.map((listener) => {
542
+ listeners: (0, runtime_1.getValidValue)((_m = (_l = component.xProps) === null || _l === void 0 ? void 0 : _l.listeners) === null || _m === void 0 ? void 0 : _m.map((listener) => {
509
543
  return serializeListener(componentCtx, listener);
510
544
  })),
511
- directives: serializeDirecties(componentCtx, (((_j = component.xProps) === null || _j === void 0 ? void 0 : _j.directives) || {}), scope) || {
545
+ directives: serializeDirecties(componentCtx, (((_o = component.xProps) === null || _o === void 0 ? void 0 : _o.directives) || {}), scope) || {
512
546
  ':if': true,
513
547
  },
514
- ':class': ((_k = component === null || component === void 0 ? void 0 : component.xProps) === null || _k === void 0 ? void 0 : _k.classListBind)
515
- ? serializeValue({
516
- ctx: componentCtx,
517
- key: 'classListBind',
518
- dynamicValue: (_l = component === null || component === void 0 ? void 0 : component.xProps) === null || _l === void 0 ? void 0 : _l.classListBind,
519
- scope,
520
- }).value
521
- : undefined,
522
- ':style': ((_m = component === null || component === void 0 ? void 0 : component.xProps) === null || _m === void 0 ? void 0 : _m.styleBind)
523
- ? serializeValue({
524
- ctx: componentCtx,
525
- key: 'styleBind',
526
- dynamicValue: (_o = component === null || component === void 0 ? void 0 : component.xProps) === null || _o === void 0 ? void 0 : _o.styleBind,
527
- }).value
528
- : undefined,
548
+ ':class': classListBindData ? classListBindData.value : undefined,
549
+ ':style': styleBindData ? styleBindData.value : undefined,
529
550
  extra: {
530
551
  commonStyle: (_p = component.xProps) === null || _p === void 0 ? void 0 : _p.commonStyle,
531
552
  xIndex: component.xIndex,
532
553
  styleBindPath: (_q = component === null || component === void 0 ? void 0 : component.xProps) === null || _q === void 0 ? void 0 : _q.styleBindPath,
533
554
  staticResourceAttribute: (_r = component === null || component === void 0 ? void 0 : component.xProps) === null || _r === void 0 ? void 0 : _r.staticResourceAttribute,
555
+ attributeExtraData: (0, common_3.isEmptyObj)(attributeExtraData)
556
+ ? undefined
557
+ : attributeExtraData,
534
558
  },
535
559
  };
536
560
  }
@@ -538,11 +562,14 @@ exports.serializeComponent = serializeComponent;
538
562
  function deserializeComponent(ctx, components) {
539
563
  let componentMap = components.reduce((map, item) => {
540
564
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
565
+ const { attributeExtraData = {} } = item.extra || {};
541
566
  let dynamicStyle = item[':style']
542
- ? deserializeValue(ctx, ':style', item[':style']).value
567
+ ? deserializeValue(ctx, ':style', item[':style'], attributeExtraData['style'] // 此处就是 style,取的是原始的属性
568
+ ).value
543
569
  : undefined;
544
570
  let dynamicClassList = item[':class']
545
- ? deserializeValue(ctx, ':class', item[':class']).value
571
+ ? deserializeValue(ctx, ':class', item[':class'], attributeExtraData['class'] // 此处就是 class,取的是原始的属性
572
+ ).value
546
573
  : undefined;
547
574
  const xComponent = {
548
575
  moduleName: item.module,
@@ -554,7 +581,7 @@ function deserializeComponent(ctx, components) {
554
581
  xComponent.moduleName;
555
582
  }
556
583
  const xProps = {
557
- data: deserializeAttributes(ctx, item.attributes),
584
+ data: deserializeAttributes(ctx, item.attributes, attributeExtraData),
558
585
  directives: deserializeDirecties(ctx, item.directives || {}),
559
586
  style: (_a = item.attributes) === null || _a === void 0 ? void 0 : _a.style,
560
587
  styleBind: dynamicStyle
@@ -563,9 +590,6 @@ function deserializeComponent(ctx, components) {
563
590
  value: dynamicStyle.value,
564
591
  }
565
592
  : undefined,
566
- // styleBindPath: item.styleBindPath
567
- // ? deserializeValue('styleBindPath', item.styleBindPath).value
568
- // : undefined, // 含义未知
569
593
  commonStyle: (_b = item === null || item === void 0 ? void 0 : item.extra) === null || _b === void 0 ? void 0 : _b.commonStyle,
570
594
  staticResourceAttribute: (_c = item === null || item === void 0 ? void 0 : item.extra) === null || _c === void 0 ? void 0 : _c.staticResourceAttribute,
571
595
  classList: (_f = (_e = (_d = item.attributes) === null || _d === void 0 ? void 0 : _d.class) === null || _e === void 0 ? void 0 : _e.split(/\s/g)) === null || _f === void 0 ? void 0 : _f.filter((className) => !!className),
@@ -608,30 +632,29 @@ function deserializeComponent(ctx, components) {
608
632
  }
609
633
  exports.deserializeComponent = deserializeComponent;
610
634
  function serializePage(ctx, page) {
611
- var _a, _b, _c, _d;
635
+ var _a, _b, _c, _d, _e;
612
636
  const pageCtx = Object.assign(Object.assign({}, ctx), { page });
613
637
  if (pageCtx.dependencies && !pageCtx.dependenciesMap) {
614
638
  pageCtx.dependenciesMap = processDependenciesMap(pageCtx.dependencies || []);
615
639
  }
616
640
  let processedPage = {
617
641
  id: page.id,
618
- type: types_1.EComponentType.PAGE,
642
+ type: 'PAGE',
619
643
  component: 'Page',
620
- attributes: (0, runtime_1.getValidValue)(serializeAttributes(pageCtx, 'page', page.data)),
644
+ attributes: (0, runtime_1.getValidValue)((_a = serializeAttributesWithExtra(pageCtx, 'page', page.data)) === null || _a === void 0 ? void 0 : _a.data),
621
645
  items: Object.keys(page.componentInstances || {}).map((id) => {
622
646
  return serializeComponent(pageCtx, Object.assign({ id }, page.componentInstances[id]));
623
647
  }),
624
648
  directives: {
625
649
  ':if': true,
626
650
  },
627
- resources: (_a = page === null || page === void 0 ? void 0 : page.lowCodes) === null || _a === void 0 ? void 0 : _a.map((item) => serializeCodeSource(pageCtx, item)),
651
+ resources: (_b = page === null || page === void 0 ? void 0 : page.lowCodes) === null || _b === void 0 ? void 0 : _b.map((item) => serializeCodeSource(pageCtx, item)),
628
652
  dataset: serializeDataset(ctx, page === null || page === void 0 ? void 0 : page.dataset),
629
- dataVariables: (0, runtime_1.getValidValue)((_c = (_b = page === null || page === void 0 ? void 0 : page.vars) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.map((item) => serializeDataVariables(pageCtx, item))),
630
- listeners: (0, runtime_1.getValidValue)((_d = page === null || page === void 0 ? void 0 : page.listeners) === null || _d === void 0 ? void 0 : _d.map((item) => {
653
+ dataVariables: (0, runtime_1.getValidValue)((_d = (_c = page === null || page === void 0 ? void 0 : page.vars) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.map((item) => serializeDataVariables(pageCtx, item))),
654
+ listeners: (0, runtime_1.getValidValue)((_e = page === null || page === void 0 ? void 0 : page.listeners) === null || _e === void 0 ? void 0 : _e.map((item) => {
631
655
  return serializeListener(pageCtx, item);
632
656
  })),
633
657
  extra: {
634
- pluginInstances: page === null || page === void 0 ? void 0 : page.pluginInstances,
635
658
  commonStyle: page === null || page === void 0 ? void 0 : page.commonStyle,
636
659
  xIndex: page.xIndex,
637
660
  staticResourceAttribute: page === null || page === void 0 ? void 0 : page.staticResourceAttribute,
@@ -667,9 +690,8 @@ function deserializePage(ctx, page) {
667
690
  return deserializeDataVariables(pageCtx, item);
668
691
  })) || [],
669
692
  },
670
- data: deserializeAttributes(pageCtx, page.attributes),
693
+ data: deserializeAttributes(pageCtx, page.attributes, (_b = page === null || page === void 0 ? void 0 : page.extra) === null || _b === void 0 ? void 0 : _b.attributeExtraData),
671
694
  componentInstances: deserializeComponent(pageCtx, page.items || []),
672
- pluginInstances: (_b = page.extra) === null || _b === void 0 ? void 0 : _b.pluginInstances,
673
695
  commonStyle: (_c = page === null || page === void 0 ? void 0 : page.extra) === null || _c === void 0 ? void 0 : _c.commonStyle,
674
696
  staticResourceAttribute: (_d = page === null || page === void 0 ? void 0 : page.extra) === null || _d === void 0 ? void 0 : _d.staticResourceAttribute,
675
697
  hideAdminPortalMenu: (_e = page === null || page === void 0 ? void 0 : page.extra) === null || _e === void 0 ? void 0 : _e.hideAdminPortalMenu,
@@ -726,7 +748,7 @@ function deserializePlatformApp(data, optsions) {
726
748
  var _a, _b;
727
749
  let homePageId = data.main || ((_a = data.items[0]) === null || _a === void 0 ? void 0 : _a.id) || '';
728
750
  let extra = data.extra || {};
729
- const { historyType, npmDependencies, plugins, maxID, rootPath, themeVars, presetColors, appConfig, miniprogramPlugins } = extra, restExtra = __rest(extra, ["historyType", "npmDependencies", "plugins", "maxID", "rootPath", "themeVars", "presetColors", "appConfig", "miniprogramPlugins"]);
751
+ const { historyType, npmDependencies, plugins, maxID, rootPath, themeVars, presetColors, appConfig, miniprogramPlugins, compHiddenConfig } = extra, restExtra = __rest(extra, ["historyType", "npmDependencies", "plugins", "maxID", "rootPath", "themeVars", "presetColors", "appConfig", "miniprogramPlugins", "compHiddenConfig"]);
730
752
  const ctx = {
731
753
  app: data,
732
754
  dependencies: (optsions === null || optsions === void 0 ? void 0 : optsions.dependencies) || [],
@@ -754,6 +776,7 @@ function deserializePlatformApp(data, optsions) {
754
776
  return deserializeDataVariables(ctx, item);
755
777
  })) || [],
756
778
  },
779
+ compHiddenConfig: compHiddenConfig || {},
757
780
  npmDependencies: npmDependencies || {},
758
781
  plugins: plugins || [],
759
782
  maxID: maxID,
@@ -776,29 +799,28 @@ exports.deserializePlatformApp = deserializePlatformApp;
776
799
  */
777
800
  function serializeRuntimePage(ctx, page //IPageInstance
778
801
  ) {
779
- var _a, _b, _c, _d, _e;
802
+ var _a, _b, _c, _d, _e, _f;
780
803
  const pageCtx = Object.assign(Object.assign({}, ctx), { dependenciesMap: processDependenciesMap(ctx.dependencies || []), page: { id: page.id } });
781
804
  let processedPage = {
782
805
  id: page.id,
783
- type: types_1.EComponentType.PAGE,
806
+ type: 'PAGE',
784
807
  component: 'Page',
785
- attributes: serializeAttributes(pageCtx, 'page', (0, runtime_1.readDynamicData)(page)),
786
- items: (0, runtime_1.getValidValue)(Object.keys(((_a = page.componentSchemaJson) === null || _a === void 0 ? void 0 : _a.properties) || {}).map((id) => {
808
+ attributes: (_a = serializeAttributesWithExtra(pageCtx, 'page', (0, runtime_1.readDynamicData)(page))) === null || _a === void 0 ? void 0 : _a.data,
809
+ items: (0, runtime_1.getValidValue)(Object.keys(((_b = page.componentSchemaJson) === null || _b === void 0 ? void 0 : _b.properties) || {}).map((id) => {
787
810
  var _a;
788
811
  return serializeRuntimeComponent(pageCtx, Object.assign({ id }, (_a = page.componentSchemaJson) === null || _a === void 0 ? void 0 : _a.properties[id]));
789
812
  })),
790
- resources: (_b = page === null || page === void 0 ? void 0 : page.codeModules) === null || _b === void 0 ? void 0 : _b.map((item) => serializeCodeSource(pageCtx, item)),
813
+ resources: (_c = page === null || page === void 0 ? void 0 : page.codeModules) === null || _c === void 0 ? void 0 : _c.map((item) => serializeCodeSource(pageCtx, item)),
791
814
  dataset: page === null || page === void 0 ? void 0 : page.dataset,
792
- dataVariables: (0, runtime_1.getValidValue)((_d = (_c = page === null || page === void 0 ? void 0 : page.vars) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.map((item) => serializeDataVariables(pageCtx, item))),
815
+ dataVariables: (0, runtime_1.getValidValue)((_e = (_d = page === null || page === void 0 ? void 0 : page.vars) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.map((item) => serializeDataVariables(pageCtx, item))),
793
816
  listeners: (0, runtime_1.getValidValue)((0, runtime_1.readListeners)(page.listenerInstances || []).map((item) => {
794
817
  return serializeListener(pageCtx, item);
795
818
  })),
796
819
  extra: {
797
- pluginInstances: (0, runtime_1.getValidValue)(page === null || page === void 0 ? void 0 : page.pluginInstances),
798
820
  commonStyle: (0, runtime_1.getValidValue)((0, style_1.removeInvalidStyleFormValue)(page.style)),
799
821
  styleBindPath: (0, runtime_1.getValidValue)(page.styleBindPath),
800
822
  xIndex: page.xIndex,
801
- children: (0, runtime_1.getValidValue)((_e = page.children) === null || _e === void 0 ? void 0 : _e.map((child) => serializeRuntimePage(ctx, child))),
823
+ children: (0, runtime_1.getValidValue)((_f = page.children) === null || _f === void 0 ? void 0 : _f.map((child) => serializeRuntimePage(ctx, child))),
802
824
  },
803
825
  };
804
826
  if ((0, common_3.isValidStyleBind)(page.styleBind) && (0, runtime_1.getValidValue)(page.styleBind)) {
@@ -854,33 +876,48 @@ function serializeRuntimeComponent(ctx, component //IComponentSchemaJson
854
876
  .filter((dataType) => dataType.type !== 'slot')
855
877
  .map((dataType) => dataType.propertyPath);
856
878
  let properties = component.properties || {};
857
- processed = Object.assign(Object.assign({}, processed), { module: serializeModuleName(componentCtx, moduleName, name), component: name, attributes: Object.assign(Object.assign({}, serializeAttributes(componentCtx, 'page', ((0, runtime_1.getValidValue)((0, runtime_1.readDynamicData)(props)) || {}))), { style: (0, runtime_1.getValidValue)(props.style), class: (_a = (0, runtime_1.getValidValue)(props.classNameList)) === null || _a === void 0 ? void 0 : _a.join(' ') }), items: (0, runtime_1.getValidValue)(Object.keys(properties)
879
+ const { data: attributes = {}, extra: attributeExtraData = {} } = serializeAttributesWithExtra(componentCtx, 'page', (0, runtime_1.getValidValue)((0, runtime_1.readDynamicData)(props)) || {}) || {};
880
+ let styleBindData = null;
881
+ let classListBindData = null;
882
+ if ((_a = props === null || props === void 0 ? void 0 : props.styleBind) === null || _a === void 0 ? void 0 : _a.bindDataPath) {
883
+ styleBindData = serializeValue({
884
+ ctx: componentCtx,
885
+ key: 'styleBind',
886
+ dynamicValue: {
887
+ type: props.styleBind.type,
888
+ value: props.styleBind.bindDataPath,
889
+ extra: props.styleBind.extra,
890
+ },
891
+ });
892
+ if (styleBindData === null || styleBindData === void 0 ? void 0 : styleBindData.extra) {
893
+ attributeExtraData.style = styleBindData === null || styleBindData === void 0 ? void 0 : styleBindData.extra;
894
+ }
895
+ }
896
+ if ((0, common_3.isValidClassNameListBind)(props.classNameListBind)) {
897
+ classListBindData = serializeValue({
898
+ ctx: componentCtx,
899
+ key: 'classListBind',
900
+ dynamicValue: (0, runtime_1.getValidValue)({
901
+ type: props.classNameListBind.type,
902
+ value: props.classNameListBind.bindDataPath,
903
+ }),
904
+ });
905
+ if (classListBindData === null || classListBindData === void 0 ? void 0 : classListBindData.extra) {
906
+ attributeExtraData.class = classListBindData === null || classListBindData === void 0 ? void 0 : classListBindData.extra;
907
+ }
908
+ }
909
+ processed = Object.assign(Object.assign({}, processed), { module: serializeModuleName(componentCtx, moduleName, name), component: name, attributes: Object.assign(Object.assign({}, attributes), { style: (0, runtime_1.getValidValue)(props.style), class: (_b = (0, runtime_1.getValidValue)(props.classNameList)) === null || _b === void 0 ? void 0 : _b.join(' ') }), items: (0, runtime_1.getValidValue)(Object.keys(properties)
858
910
  .filter((key) => !excludeKeys.includes(key))
859
- .map((key) => serializeRuntimeComponent(ctx, Object.assign({ id: key }, properties[key])))), listeners: (_b = (0, runtime_1.getValidValue)((0, runtime_1.readListeners)(props.listenerInstances))) === null || _b === void 0 ? void 0 : _b.map((listener /* IEventListener */) => {
911
+ .map((key) => serializeRuntimeComponent(ctx, Object.assign({ id: key }, properties[key])))), listeners: (_c = (0, runtime_1.getValidValue)((0, runtime_1.readListeners)(props.listenerInstances))) === null || _c === void 0 ? void 0 : _c.map((listener /* IEventListener */) => {
860
912
  return serializeListener(componentCtx, listener);
861
- }), directives: serializeDirecties(componentCtx, ((0, runtime_1.getValidValue)((0, runtime_1.readDirectives)(props)) || {})) || undefined, ':class': (0, common_3.isValidClassNameListBind)(props.classNameListBind)
862
- ? serializeValue({
863
- ctx: componentCtx,
864
- key: 'classListBind',
865
- dynamicValue: (0, runtime_1.getValidValue)({
866
- type: props.classNameListBind.type,
867
- value: props.classNameListBind.bindDataPath,
868
- }),
869
- }).value
870
- : undefined, ':style': ((_c = props === null || props === void 0 ? void 0 : props.styleBind) === null || _c === void 0 ? void 0 : _c.bindDataPath)
871
- ? serializeValue({
872
- ctx: componentCtx,
873
- key: 'styleBind',
874
- dynamicValue: {
875
- type: props.styleBind.type,
876
- value: props.styleBind.bindDataPath,
877
- },
878
- }).value
879
- : undefined, extra: {
913
+ }), directives: serializeDirecties(componentCtx, ((0, runtime_1.getValidValue)((0, runtime_1.readDirectives)(props)) || {})) || undefined, ':class': (classListBindData === null || classListBindData === void 0 ? void 0 : classListBindData.value) || undefined, ':style': (styleBindData === null || styleBindData === void 0 ? void 0 : styleBindData.value) || undefined, extra: {
880
914
  commonStyle: (0, runtime_1.getValidValue)((0, style_1.removeInvalidStyleFormValue)(props.commonStyle)),
881
915
  xIndex: (0, runtime_1.getValidValue)(component['x-index']),
882
916
  styleBindPath: (0, runtime_1.getValidValue)(props.styleBindPath),
883
917
  staticResourceAttribute: (0, runtime_1.getValidValue)(props.staticResourceAttribute),
918
+ attributeExtraData: (0, common_3.isEmptyObj)(attributeExtraData)
919
+ ? undefined
920
+ : attributeExtraData,
884
921
  } });
885
922
  }
886
923
  else {
@@ -108,10 +108,10 @@ function parseValueCals(ctx, value) {
108
108
  let parser = new expression_1.DynamicValueParser(value, { pageId: '$page' });
109
109
  let res = parser.parse();
110
110
  switch (res.type) {
111
- case expression_1.PropBindType.paramData:
111
+ case expression_1.PropBindType.params:
112
112
  case expression_1.PropBindType.stateData: {
113
113
  const TYPE_MAP = {
114
- [expression_1.PropBindType.paramData]: 'params',
114
+ [expression_1.PropBindType.params]: 'params',
115
115
  [expression_1.PropBindType.stateData]: 'state',
116
116
  };
117
117
  const type = TYPE_MAP[res.type];
@@ -1,8 +1,11 @@
1
+ import { IDynamicValue } from '../../expression';
1
2
  export declare function readComponents(properties?: {
2
3
  [key: string]: any;
3
4
  }, excludeKeys?: string[]): Object;
4
5
  export declare function readDirectives(cmp: any): any;
5
- export declare function readDynamicData(cmp: any): any;
6
+ export declare function readDynamicData(cmp: any): {
7
+ [key: string]: IDynamicValue;
8
+ };
6
9
  export declare function readListeners(listenerInstances?: any[]): any;
7
10
  export declare function writeListeners(listeners?: any[]): any[];
8
11
  export declare function writeDynamicData(from: any, to: any, properties: any): any;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../parser/cals/utils/runtime.ts"],"names":[],"mappings":"AAUA,wBAAgB,cAAc,CAC5B,UAAU,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAmB,EACnD,WAAW,GAAE,MAAM,EAAO,GACzB,MAAM,CA+DR;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,OAuCtC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,OA8BvC;AAED,wBAAgB,aAAa,CAAC,iBAAiB,GAAE,GAAG,EAAO,OAiB1D;AAED,wBAAgB,cAAc,CAAC,SAAS,GAAE,GAAG,EAAO,SAenD;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,OAgExE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAKjE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,OAWvC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../parser/cals/utils/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,kBAAkB,CAAA;AAUzE,wBAAgB,cAAc,CAC5B,UAAU,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAmB,EACnD,WAAW,GAAE,MAAM,EAAO,GACzB,MAAM,CAiER;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,OAwCtC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CA+B1E;AAED,wBAAgB,aAAa,CAAC,iBAAiB,GAAE,GAAG,EAAO,OAiB1D;AAED,wBAAgB,cAAc,CAAC,SAAS,GAAE,GAAG,EAAO,SAenD;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,OAkExE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAKjE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,OAWvC"}
@@ -31,6 +31,7 @@ function readComponents(properties = {}, excludeKeys = []) {
31
31
  componentXProps.styleBind = {
32
32
  type: srcProps.styleBind.type,
33
33
  value: srcProps.styleBind.bindDataPath,
34
+ extra: srcProps.styleBind.extra,
34
35
  };
35
36
  }
36
37
  if ((0, common_1.isValidClassNameListBind)(srcProps.classNameListBind)) {
@@ -38,6 +39,7 @@ function readComponents(properties = {}, excludeKeys = []) {
38
39
  setValidValue(componentXProps, 'classListBind', {
39
40
  type: classList.type,
40
41
  value: classList.bindDataPath,
42
+ extra: classList.extra,
41
43
  });
42
44
  }
43
45
  if (srcProps.classNameList) {
@@ -73,6 +75,7 @@ function readDirectives(cmp) {
73
75
  directives.waIf = {
74
76
  type: bind.type || expression_1.PropBindType.state,
75
77
  value: bind.bindDataPath,
78
+ extra: bind.extra,
76
79
  };
77
80
  }
78
81
  }
@@ -81,6 +84,7 @@ function readDirectives(cmp) {
81
84
  directives.waFor = {
82
85
  type: forBind.type || expression_1.PropBindType.state,
83
86
  value: forBind.bindDataPath,
87
+ extra: bind.extra,
84
88
  };
85
89
  }
86
90
  }
@@ -109,6 +113,7 @@ function readDynamicData(cmp) {
109
113
  data[bind.propertyPath] = {
110
114
  type: bind.type || expression_1.PropBindType.state,
111
115
  value: bind.bindDataPath,
116
+ extra: bind.extra,
112
117
  };
113
118
  }
114
119
  });
@@ -178,6 +183,7 @@ function writeDynamicData(from = {}, to, properties) {
178
183
  propertyPath: prop,
179
184
  bindDataPath: dv.value,
180
185
  type: dv.type,
186
+ extra: dv.extra,
181
187
  });
182
188
  }
183
189
  else {
@@ -194,6 +200,7 @@ function writeDynamicData(from = {}, to, properties) {
194
200
  propertyPath: prop,
195
201
  bindDataPath: fixedValue,
196
202
  type: expression_1.PropBindType.expression,
203
+ extra: dv.extra,
197
204
  });
198
205
  }
199
206
  act.dataTypes.push({
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../parser/cals/utils/spinoff/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EAOb,MAAM,mBAAmB,CAAA;AAwI1B;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE;IACR,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,GACA,YAAY,CAiCd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../parser/cals/utils/spinoff/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EAMb,MAAM,mBAAmB,CAAA;AAwI1B;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE;IACR,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,GACA,YAAY,CAiCd"}
@@ -1,12 +1,12 @@
1
1
  export declare function init(json: any): void;
2
2
  export declare function getId(): string;
3
- export declare function isComplexComponent(name?: string): string | undefined;
4
- export declare function isGsdH5ReactComponent(name?: string): string | undefined;
5
- export declare function addDefaultSlot(slotKey: string[] | undefined, comp: any): void;
3
+ export declare function isComplexComponent(name?: string): string;
4
+ export declare function isGsdH5ReactComponent(name?: string): string;
5
+ export declare function addDefaultSlot(slotKey: string[], comp: any): void;
6
6
  export declare function addDefaultData(defaultData: any, comp: any): void;
7
7
  export declare function isComplexJSON(json: any): any;
8
8
  export declare function getComponentChildren(component: any): [string, unknown][];
9
- export declare function isWeAppId(key?: string): RegExpMatchArray | null;
9
+ export declare function isWeAppId(key?: string): RegExpMatchArray;
10
10
  export declare function isEmptyObject(obj?: {}): boolean;
11
11
  export declare function isPlainObject(src: any): boolean;
12
12
  export declare function checkIsNeedAddFormWrapper(tree: any): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../parser/cals/utils/version/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,QA6B7B;AAED,wBAAgB,KAAK,WAEpB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAK,sBAQ3C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,SAAK,sBAQ9C;AAED,wBAAgB,cAAc,CAAC,OAAO,sBAAe,EAAE,IAAI,EAAE,GAAG,QAO/D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAKzD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAItC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,GAAG,uBAWlD;AAED,wBAAgB,SAAS,CAAC,GAAG,SAAK,2BAEjC;AAED,wBAAgB,aAAa,CAAC,GAAG,KAAK,WAErC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,WAErC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,WAoBlD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,EACnC,IAAI,SAAK,GACR,GAAG,CAmBL"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../parser/cals/utils/version/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,QA6B7B;AAED,wBAAgB,KAAK,WAEpB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAK,UAQ3C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,SAAK,UAQ9C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAO,EAAE,IAAI,EAAE,GAAG,QAO/D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAKzD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAItC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,GAAG,uBAWlD;AAED,wBAAgB,SAAS,CAAC,GAAG,SAAK,oBAEjC;AAED,wBAAgB,aAAa,CAAC,GAAG,KAAK,WAErC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,WAErC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,WAoBlD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,EACnC,IAAI,SAAK,GACR,GAAG,CAmBL"}