@piying/view-angular 1.6.0 → 1.6.1

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.
@@ -69,279 +69,6 @@ function getComponentCheckConfig(a) {
69
69
  };
70
70
  }
71
71
 
72
- //packages/compiler/src/directive_matching.ts
73
- /**
74
- * @license
75
- * Copyright Google LLC All Rights Reserved.
76
- *
77
- * Use of this source code is governed by an MIT-style license that can be
78
- * found in the LICENSE file at https://angular.dev/license
79
- */
80
- const _SELECTOR_REGEXP = new RegExp('(\\:not\\()|' + // 1: ":not("
81
- '(([\\.\\#]?)[-\\w]+)|' + // 2: "tag"; 3: "."/"#";
82
- // "-" should appear first in the regexp below as FF31 parses "[.-\w]" as a range
83
- // 4: attribute; 5: attribute_string; 6: attribute_value
84
- '(?:\\[([-.\\w*\\\\$]+)(?:=(["\']?)([^\\]"\']*)\\5)?\\])|' + // "[name]", "[name=value]",
85
- // "[name="value"]",
86
- // "[name='value']"
87
- '(\\))|' + // 7: ")"
88
- '(\\s*,\\s*)', // 8: ","
89
- 'g');
90
- /**
91
- * These offsets should match the match-groups in `_SELECTOR_REGEXP` offsets.
92
- */
93
- var SelectorRegexp;
94
- (function (SelectorRegexp) {
95
- SelectorRegexp[SelectorRegexp["ALL"] = 0] = "ALL";
96
- SelectorRegexp[SelectorRegexp["NOT"] = 1] = "NOT";
97
- SelectorRegexp[SelectorRegexp["TAG"] = 2] = "TAG";
98
- SelectorRegexp[SelectorRegexp["PREFIX"] = 3] = "PREFIX";
99
- SelectorRegexp[SelectorRegexp["ATTRIBUTE"] = 4] = "ATTRIBUTE";
100
- SelectorRegexp[SelectorRegexp["ATTRIBUTE_STRING"] = 5] = "ATTRIBUTE_STRING";
101
- SelectorRegexp[SelectorRegexp["ATTRIBUTE_VALUE"] = 6] = "ATTRIBUTE_VALUE";
102
- SelectorRegexp[SelectorRegexp["NOT_END"] = 7] = "NOT_END";
103
- SelectorRegexp[SelectorRegexp["SEPARATOR"] = 8] = "SEPARATOR";
104
- })(SelectorRegexp || (SelectorRegexp = {}));
105
- /**
106
- * A css selector contains an element name,
107
- * css classes and attribute/value pairs with the purpose
108
- * of selecting subsets out of them.
109
- */
110
- class CssSelector {
111
- element = null;
112
- classNames = [];
113
- /**
114
- * The selectors are encoded in pairs where:
115
- * - even locations are attribute names
116
- * - odd locations are attribute values.
117
- *
118
- * Example:
119
- * Selector: `[key1=value1][key2]` would parse to:
120
- * ```
121
- * ['key1', 'value1', 'key2', '']
122
- * ```
123
- */
124
- attrs = [];
125
- notSelectors = [];
126
- static parse(selector) {
127
- const results = [];
128
- const _addResult = (res, cssSel) => {
129
- if (cssSel.notSelectors.length > 0 &&
130
- !cssSel.element &&
131
- cssSel.classNames.length == 0 &&
132
- cssSel.attrs.length == 0) {
133
- cssSel.element = '*';
134
- }
135
- res.push(cssSel);
136
- };
137
- let cssSelector = new CssSelector();
138
- let match;
139
- let current = cssSelector;
140
- let inNot = false;
141
- _SELECTOR_REGEXP.lastIndex = 0;
142
- while ((match = _SELECTOR_REGEXP.exec(selector))) {
143
- if (match[SelectorRegexp.NOT]) {
144
- if (inNot) {
145
- throw new Error('Nesting :not in a selector is not allowed');
146
- }
147
- inNot = true;
148
- current = new CssSelector();
149
- cssSelector.notSelectors.push(current);
150
- }
151
- const tag = match[SelectorRegexp.TAG];
152
- if (tag) {
153
- const prefix = match[SelectorRegexp.PREFIX];
154
- if (prefix === '#') {
155
- // #hash
156
- current.addAttribute('id', tag.slice(1));
157
- }
158
- else if (prefix === '.') {
159
- // Class
160
- current.addClassName(tag.slice(1));
161
- }
162
- else {
163
- // Element
164
- current.setElement(tag);
165
- }
166
- }
167
- const attribute = match[SelectorRegexp.ATTRIBUTE];
168
- if (attribute) {
169
- current.addAttribute(current.unescapeAttribute(attribute), match[SelectorRegexp.ATTRIBUTE_VALUE]);
170
- }
171
- if (match[SelectorRegexp.NOT_END]) {
172
- inNot = false;
173
- current = cssSelector;
174
- }
175
- if (match[SelectorRegexp.SEPARATOR]) {
176
- if (inNot) {
177
- throw new Error('Multiple selectors in :not are not supported');
178
- }
179
- _addResult(results, cssSelector);
180
- cssSelector = current = new CssSelector();
181
- }
182
- }
183
- _addResult(results, cssSelector);
184
- return results;
185
- }
186
- /**
187
- * Unescape `\$` sequences from the CSS attribute selector.
188
- *
189
- * This is needed because `$` can have a special meaning in CSS selectors,
190
- * but we might want to match an attribute that contains `$`.
191
- * [MDN web link for more
192
- * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).
193
- * @param attr the attribute to unescape.
194
- * @returns the unescaped string.
195
- */
196
- unescapeAttribute(attr) {
197
- let result = '';
198
- let escaping = false;
199
- for (let i = 0; i < attr.length; i++) {
200
- const char = attr.charAt(i);
201
- if (char === '\\') {
202
- escaping = true;
203
- continue;
204
- }
205
- if (char === '$' && !escaping) {
206
- throw new Error(`Error in attribute selector "${attr}". ` +
207
- `Unescaped "$" is not supported. Please escape with "\\$".`);
208
- }
209
- escaping = false;
210
- result += char;
211
- }
212
- return result;
213
- }
214
- /**
215
- * Escape `$` sequences from the CSS attribute selector.
216
- *
217
- * This is needed because `$` can have a special meaning in CSS selectors,
218
- * with this method we are escaping `$` with `\$'.
219
- * [MDN web link for more
220
- * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).
221
- * @param attr the attribute to escape.
222
- * @returns the escaped string.
223
- */
224
- escapeAttribute(attr) {
225
- return attr.replace(/\\/g, '\\\\').replace(/\$/g, '\\$');
226
- }
227
- setElement(element = null) {
228
- this.element = element;
229
- }
230
- addAttribute(name, value = '') {
231
- this.attrs.push(name, (value && value.toLowerCase()) || '');
232
- }
233
- addClassName(name) {
234
- this.classNames.push(name.toLowerCase());
235
- }
236
- toString() {
237
- let res = this.element || '';
238
- if (this.classNames) {
239
- this.classNames.forEach((klass) => (res += `.${klass}`));
240
- }
241
- if (this.attrs) {
242
- for (let i = 0; i < this.attrs.length; i += 2) {
243
- const name = this.escapeAttribute(this.attrs[i]);
244
- const value = this.attrs[i + 1];
245
- res += `[${name}${value ? '=' + value : ''}]`;
246
- }
247
- }
248
- this.notSelectors.forEach((notSelector) => (res += `:not(${notSelector})`));
249
- return res;
250
- }
251
- }
252
-
253
- // packages/compiler/src/core.ts
254
- /**
255
- * Flags used to generate R3-style CSS Selectors. They are pasted from
256
- * core/src/render3/projection.ts because they cannot be referenced directly.
257
- */
258
- var SelectorFlags;
259
- (function (SelectorFlags) {
260
- /** Indicates this is the beginning of a new negative selector */
261
- SelectorFlags[SelectorFlags["NOT"] = 1] = "NOT";
262
- /** Mode for matching attributes */
263
- SelectorFlags[SelectorFlags["ATTRIBUTE"] = 2] = "ATTRIBUTE";
264
- /** Mode for matching tag names */
265
- SelectorFlags[SelectorFlags["ELEMENT"] = 4] = "ELEMENT";
266
- /** Mode for matching class names */
267
- SelectorFlags[SelectorFlags["CLASS"] = 8] = "CLASS";
268
- })(SelectorFlags || (SelectorFlags = {}));
269
- function parserSelectorToSimpleSelector(selector) {
270
- const classes = selector.classNames && selector.classNames.length
271
- ? [SelectorFlags.CLASS, ...selector.classNames]
272
- : [];
273
- const elementName = selector.element && selector.element !== '*' ? selector.element : '';
274
- return [elementName, ...selector.attrs, ...classes];
275
- }
276
- function parserSelectorToNegativeSelector(selector) {
277
- const classes = selector.classNames && selector.classNames.length
278
- ? [SelectorFlags.CLASS, ...selector.classNames]
279
- : [];
280
- if (selector.element) {
281
- return [
282
- SelectorFlags.NOT | SelectorFlags.ELEMENT,
283
- selector.element,
284
- ...selector.attrs,
285
- ...classes,
286
- ];
287
- }
288
- else if (selector.attrs.length) {
289
- return [
290
- SelectorFlags.NOT | SelectorFlags.ATTRIBUTE,
291
- ...selector.attrs,
292
- ...classes,
293
- ];
294
- }
295
- else {
296
- return selector.classNames && selector.classNames.length
297
- ? [SelectorFlags.NOT | SelectorFlags.CLASS, ...selector.classNames]
298
- : [];
299
- }
300
- }
301
- function parserSelectorToR3Selector(selector) {
302
- const positive = parserSelectorToSimpleSelector(selector);
303
- const negative = selector.notSelectors && selector.notSelectors.length
304
- ? selector.notSelectors.map((notSelector) => parserSelectorToNegativeSelector(notSelector))
305
- : [];
306
- return positive.concat(...negative);
307
- }
308
- function parseSelectorToR3Selector(selector) {
309
- return selector
310
- ? CssSelector.parse(selector).map(parserSelectorToR3Selector)
311
- : [];
312
- }
313
-
314
- function createElement(selector, document) {
315
- const [item] = parseSelectorToR3Selector(selector);
316
- const [element, ...rest] = item;
317
- if (!element || typeof element !== 'string') {
318
- throw new Error(`tag must be string;selector: ${selector}`);
319
- }
320
- const el = document.createElement(element);
321
- let index = 0;
322
- for (; index < rest.length; index += 2) {
323
- const key = rest[index];
324
- const value = rest[index + 1];
325
- if (typeof key !== 'string') {
326
- break;
327
- }
328
- el.setAttribute(key, value);
329
- }
330
- let type;
331
- for (; index < rest.length; index++) {
332
- const item = rest[index];
333
- if (typeof item === 'number') {
334
- type = item;
335
- continue;
336
- }
337
- // class
338
- if (type === 8) {
339
- el.classList.add(item);
340
- }
341
- }
342
- return el;
343
- }
344
-
345
72
  class AttributesDirective {
346
73
  a = input.required();
347
74
  #rederer = inject(Renderer2);
@@ -445,7 +172,6 @@ class BaseComponent {
445
172
  : undefined),
446
173
  };
447
174
  const type = reflectComponentType(componentConfig.type);
448
- const el = createElement(type.selector, this.#document);
449
175
  this.#setComponentCheck(componentConfig);
450
176
  const componentInjector = Injector.create({
451
177
  providers: [
@@ -459,7 +185,6 @@ class BaseComponent {
459
185
  const componentRef = createComponent(componentConfig.type, {
460
186
  elementInjector: componentInjector,
461
187
  environmentInjector: componentInjector.get(EnvironmentInjector),
462
- hostElement: el,
463
188
  bindings: [
464
189
  ...createInputsBind(this.#inputCache.inputs),
465
190
  ...createOutputsBind(componentConfig.outputs),
@@ -475,10 +200,10 @@ class BaseComponent {
475
200
  ...attrDirective,
476
201
  ],
477
202
  });
478
- viewContainerRef.insert(componentRef.hostView);
479
203
  this.fieldComponentInstance = componentRef.instance;
480
204
  this.fieldElementRef = componentRef.location;
481
205
  this.fieldDirectiveRefList = (componentConfig.directives ?? []).map((item) => componentRef.injector.get(item.type));
206
+ viewContainerRef.insert(componentRef.hostView);
482
207
  this.destroyComponentFn = () => {
483
208
  viewContainerRef.clear();
484
209
  componentRef.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"piying-view-angular.mjs","sources":["../../../projects/view-angular/lib/type/view-token.ts","../../../projects/view-angular/lib/component/group/component.base.ts","../../../projects/view-angular/lib/component/group/component.ts","../../../projects/view-angular/lib/component/group/component.html","../../../projects/view-angular/lib/const.ts","../../../projects/view-angular/lib/util/component-config.equal.ts","../../../projects/view-angular/lib/hook/directive_matching.ts","../../../projects/view-angular/lib/hook/selector.ts","../../../projects/view-angular/lib/hook/create-element.ts","../../../projects/view-angular/lib/directives/attributes.directive.ts","../../../projects/view-angular/lib/component/base.component.ts","../../../projects/view-angular/lib/directives/interop_ng_control.ts","../../../projects/view-angular/lib/directives/field-control-directive.ts","../../../projects/view-angular/lib/hook/ng_component_outlet.ts","../../../projects/view-angular/lib/util/async-cache.ts","../../../projects/view-angular/lib/builder.ts","../../../projects/view-angular/lib/schema/ng-schema.ts","../../../projects/view-angular/lib/pipe/pure.pipe.ts","../../../projects/view-angular/lib/view.component.ts","../../../projects/view-angular/lib/component.html","../../../projects/view-angular/lib/component/wrapper-base.component.ts","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport { InjectionToken, Signal, EventEmitter } from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { PiResolvedViewFieldConfig } from './group';\n\n/** wrapper中可以使用,已解析的配置 */\nexport const PI_VIEW_FIELD_TOKEN = new InjectionToken<\n Signal<PiResolvedViewFieldConfig>\n>('PI_VIEW_FIELD_TOKEN');\n\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_COMPONENT_LIST = new InjectionToken<DynamicComponentConfig[]>(\n 'PI_COMPONENT_LIST',\n);\nexport const PI_COMPONENT_INDEX = new InjectionToken<number>(\n 'PI_COMPONENT_INDEX',\n);\nexport const PI_COMPONENT_LIST_LISTEN = new InjectionToken<\n EventEmitter<DynamicComponentConfig[]>\n>('PI_COMPONENT_LIST_LISTEN');\n","import { computed, Directive, inject, input, TemplateRef } from '@angular/core';\nimport { PI_VIEW_FIELD_TOKEN } from '../../type';\n\n@Directive()\nexport class PiyingViewGroupBase {\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n children$$ = computed(() => this.field$$().children!());\n fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);\n restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);\n fieldTemplateRef = input.required<TemplateRef<any>>();\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { PiyingViewGroupBase } from './component.base';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'piying-view-group',\n imports: [NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingViewGroup extends PiyingViewGroupBase {}\n","@for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"fieldTemplateRef(); context: { $implicit: field }\"\n ></ng-container>\n}\n","import { ConfigMergeStrategyObject } from './type';\n\nexport const EMPTY_ARRAY = [];\nexport const NG_CONFIG_DEFAULT_MERGE_STRAGEGY: ConfigMergeStrategyObject = {\n directives: 'merge',\n formConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n props: 'merge',\n renderConfig: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","import { DynamicComponentConfig } from '../type/component';\n\nexport function getComponentCheckConfig(a: DynamicComponentConfig) {\n return {\n ...a,\n inputs: Object.keys(a.inputs() ?? {}).join(','),\n // todo 需要等修改为动态的再比较key\n attributes: Object.entries(a.attributes() ?? {})\n .map((key, value) => `${key}:${value}`)\n .join(','),\n directives: a.directives\n ? a.directives.map((config) => ({\n ...config,\n inputs: `${config.inputs ? Object.keys(config.inputs()).join(',') : ''}`,\n }))\n : undefined,\n };\n}\n\nexport type ComponentCheckConfig = ReturnType<typeof getComponentCheckConfig>;\n","//packages/compiler/src/directive_matching.ts\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nconst _SELECTOR_REGEXP = new RegExp(\n '(\\\\:not\\\\()|' + // 1: \":not(\"\n '(([\\\\.\\\\#]?)[-\\\\w]+)|' + // 2: \"tag\"; 3: \".\"/\"#\";\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n // 4: attribute; 5: attribute_string; 6: attribute_value\n '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\"\\']?)([^\\\\]\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' + // 7: \")\"\n '(\\\\s*,\\\\s*)', // 8: \",\"\n 'g',\n);\n\n/**\n * These offsets should match the match-groups in `_SELECTOR_REGEXP` offsets.\n */\nconst enum SelectorRegexp {\n ALL = 0, // The whole match\n NOT = 1,\n TAG = 2,\n PREFIX = 3,\n ATTRIBUTE = 4,\n ATTRIBUTE_STRING = 5,\n ATTRIBUTE_VALUE = 6,\n NOT_END = 7,\n SEPARATOR = 8,\n}\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nexport class CssSelector {\n element: string | null = null;\n classNames: string[] = [];\n /**\n * The selectors are encoded in pairs where:\n * - even locations are attribute names\n * - odd locations are attribute values.\n *\n * Example:\n * Selector: `[key1=value1][key2]` would parse to:\n * ```\n * ['key1', 'value1', 'key2', '']\n * ```\n */\n attrs: string[] = [];\n notSelectors: CssSelector[] = [];\n\n static parse(selector: string): CssSelector[] {\n const results: CssSelector[] = [];\n const _addResult = (res: CssSelector[], cssSel: CssSelector) => {\n if (\n cssSel.notSelectors.length > 0 &&\n !cssSel.element &&\n cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0\n ) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match: string[] | null;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while ((match = _SELECTOR_REGEXP.exec(selector))) {\n if (match[SelectorRegexp.NOT]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[SelectorRegexp.TAG];\n if (tag) {\n const prefix = match[SelectorRegexp.PREFIX];\n if (prefix === '#') {\n // #hash\n current.addAttribute('id', tag.slice(1));\n } else if (prefix === '.') {\n // Class\n current.addClassName(tag.slice(1));\n } else {\n // Element\n current.setElement(tag);\n }\n }\n const attribute = match[SelectorRegexp.ATTRIBUTE];\n\n if (attribute) {\n current.addAttribute(\n current.unescapeAttribute(attribute),\n match[SelectorRegexp.ATTRIBUTE_VALUE],\n );\n }\n if (match[SelectorRegexp.NOT_END]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[SelectorRegexp.SEPARATOR]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n\n /**\n * Unescape `\\$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * but we might want to match an attribute that contains `$`.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to unescape.\n * @returns the unescaped string.\n */\n unescapeAttribute(attr: string): string {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(\n `Error in attribute selector \"${attr}\". ` +\n `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`,\n );\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n\n /**\n * Escape `$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * with this method we are escaping `$` with `\\$'.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to escape.\n * @returns the escaped string.\n */\n escapeAttribute(attr: string): string {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n\n setElement(element: string | null = null) {\n this.element = element;\n }\n\n addAttribute(name: string, value: string = '') {\n this.attrs.push(name, (value && value.toLowerCase()) || '');\n }\n\n addClassName(name: string) {\n this.classNames.push(name.toLowerCase());\n }\n\n toString(): string {\n let res: string = this.element || '';\n if (this.classNames) {\n this.classNames.forEach((klass) => (res += `.${klass}`));\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach((notSelector) => (res += `:not(${notSelector})`));\n return res;\n }\n}\n","import { CssSelector } from './directive_matching';\n// packages/compiler/src/core.ts\n/**\n * Flags used to generate R3-style CSS Selectors. They are pasted from\n * core/src/render3/projection.ts because they cannot be referenced directly.\n */\nconst enum SelectorFlags {\n /** Indicates this is the beginning of a new negative selector */\n NOT = 0b0001,\n\n /** Mode for matching attributes */\n ATTRIBUTE = 0b0010,\n\n /** Mode for matching tag names */\n ELEMENT = 0b0100,\n\n /** Mode for matching class names */\n CLASS = 0b1000,\n}\n\n// These are a copy the CSS types from core/src/render3/interfaces/projection.ts\n// They are duplicated here as they cannot be directly referenced from core.\ntype R3CssSelector = (string | SelectorFlags)[];\ntype R3CssSelectorList = R3CssSelector[];\n\nfunction parserSelectorToSimpleSelector(selector: CssSelector): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n const elementName =\n selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\n\nfunction parserSelectorToNegativeSelector(\n selector: CssSelector,\n): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n\n if (selector.element) {\n return [\n SelectorFlags.NOT | SelectorFlags.ELEMENT,\n selector.element,\n ...selector.attrs,\n ...classes,\n ];\n } else if (selector.attrs.length) {\n return [\n SelectorFlags.NOT | SelectorFlags.ATTRIBUTE,\n ...selector.attrs,\n ...classes,\n ];\n } else {\n return selector.classNames && selector.classNames.length\n ? [SelectorFlags.NOT | SelectorFlags.CLASS, ...selector.classNames]\n : [];\n }\n}\n\nfunction parserSelectorToR3Selector(selector: CssSelector): R3CssSelector {\n const positive = parserSelectorToSimpleSelector(selector);\n\n const negative: R3CssSelectorList =\n selector.notSelectors && selector.notSelectors.length\n ? selector.notSelectors.map((notSelector) =>\n parserSelectorToNegativeSelector(notSelector),\n )\n : [];\n\n return positive.concat(...negative);\n}\n\nexport function parseSelectorToR3Selector(\n selector: string | null,\n): R3CssSelectorList {\n return selector\n ? CssSelector.parse(selector).map(parserSelectorToR3Selector)\n : [];\n}\n","import { parseSelectorToR3Selector } from './selector';\n\nexport function createElement(selector: string, document: Document) {\n const [item] = parseSelectorToR3Selector(selector);\n const [element, ...rest] = item;\n if (!element || typeof element !== 'string') {\n throw new Error(`tag must be string;selector: ${selector}`);\n }\n const el = document.createElement(element);\n let index = 0;\n for (; index < rest.length; index += 2) {\n const key = rest[index];\n const value = rest[index + 1];\n if (typeof key !== 'string') {\n break;\n }\n el.setAttribute(key, value as string);\n }\n let type;\n for (; index < rest.length; index++) {\n const item = rest[index];\n if (typeof item === 'number') {\n type = item;\n continue;\n }\n // class\n if (type === 8) {\n el.classList.add(item);\n }\n }\n return el;\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n})\nexport class AttributesDirective {\n a = input.required<Record<string, any>>();\n #rederer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n ngOnChanges(changes: SimpleChanges): void {\n const { previousValue, currentValue, firstChange } = changes['a'];\n for (const key in currentValue) {\n this.#rederer.setAttribute(this.#el, key, currentValue[key]);\n }\n if (!firstChange) {\n for (const key in previousValue) {\n if (!(key in currentValue)) {\n this.#rederer.removeAttribute(this.#el, key);\n }\n }\n }\n }\n}\n","import {\n computed,\n createComponent,\n Directive,\n DOCUMENT,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n inputBinding,\n outputBinding,\n reflectComponentType,\n signal,\n Signal,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig } from '../type';\nimport { DynamicComponentConfig } from '../type/component';\nimport {\n ComponentCheckConfig,\n getComponentCheckConfig,\n} from '../util/component-config.equal';\nimport { deepEqual } from 'fast-equals';\nimport {\n PI_COMPONENT_INDEX,\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\nimport { createElement } from '../hook/create-element';\nimport {\n CoreRawViewAttributes,\n CoreRawViewInputs,\n CoreRawViewOutputs,\n} from '@piying/view-angular-core';\nimport { AttributesDirective } from '../directives/attributes.directive';\nfunction createInputsBind(inputs?: Signal<CoreRawViewInputs | undefined>) {\n if (!inputs || !inputs()) {\n return [];\n }\n return Object.keys(inputs()!).map((key) =>\n inputBinding(\n key,\n computed(() => inputs()![key]),\n ),\n );\n}\nfunction createOutputsBind(outputs?: CoreRawViewOutputs) {\n if (!outputs) {\n return [];\n }\n return Object.entries(outputs).map(([key, value]) =>\n outputBinding(key, value),\n );\n}\nfunction createAttributesDirective(\n attributes: Signal<CoreRawViewAttributes | undefined>,\n) {\n if (attributes()) {\n return [\n {\n type: AttributesDirective,\n bindings: [inputBinding('a', attributes)],\n },\n ];\n }\n return [];\n}\nconst EmptyOBJ = {};\n@Directive()\nexport class BaseComponent {\n /** 第一次默认为空 */\n #index = inject(PI_COMPONENT_INDEX, { optional: true })!;\n\n /** 发射提供到下一级 */\n #eventEmitter!: EventEmitter<DynamicComponentConfig[]>;\n #componentConfig!: DynamicComponentConfig;\n #viewContainerRef?: ViewContainerRef;\n\n destroyComponentFn?: () => void;\n fieldComponentInstance?: any;\n fieldElementRef?: ElementRef<HTMLElement>;\n fieldDirectiveRefList?: any[];\n /** 比较时使用 */\n #componentCheckConfig$$!: Signal<ComponentCheckConfig>;\n #setComponentCheck(config: DynamicComponentConfig) {\n this.#componentCheckConfig$$ = computed(() =>\n untracked(() => getComponentCheckConfig(config)),\n );\n }\n setFieldData(field: Signal<PiResolvedViewFieldConfig>, index: number) {\n this.#index = index;\n }\n /**\n * 输入引用绑定\n * 1. 上次传入的数据格式和当前一样,只触发更新\n * 2. 上次传入的数据格式和当前不一样,直接重新创建\n */\n #inputCache!: {\n inputs?: Signal<Record<string, any>>;\n attributes?: Signal<Record<string, any>>;\n directiveList?: (Signal<Record<string, any>> | undefined)[];\n };\n #configUpdate$ = signal(0);\n #document = inject(DOCUMENT);\n createComponent(\n list: DynamicComponentConfig[],\n viewContainerRef: ViewContainerRef,\n ) {\n // 销毁\n this.destroyComponentFn?.();\n this.#viewContainerRef = viewContainerRef;\n // 取消上一级的定义\n this.#eventEmitter = new EventEmitter();\n const componentConfig = list[this.#index];\n\n this.#componentConfig = componentConfig;\n this.#inputCache = {\n inputs: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.inputs!() ?? EmptyOBJ;\n }),\n attributes: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.attributes!() ?? EmptyOBJ;\n }),\n directiveList: this.#componentConfig?.directives?.map((config, index) =>\n config.inputs\n ? computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.directives![index].inputs!();\n })\n : undefined,\n ),\n };\n const type = reflectComponentType(componentConfig.type as any)!;\n const el = createElement(type.selector, this.#document);\n this.#setComponentCheck(componentConfig);\n\n const componentInjector = Injector.create({\n providers: [\n { provide: PI_COMPONENT_LIST, useValue: list },\n { provide: PI_COMPONENT_INDEX, useValue: this.#index + 1 },\n { provide: PI_COMPONENT_LIST_LISTEN, useValue: this.#eventEmitter },\n ],\n parent: componentConfig.injector ?? viewContainerRef.injector,\n });\n const attrDirective = createAttributesDirective(componentConfig.attributes);\n\n const componentRef = createComponent(componentConfig.type as any, {\n elementInjector: componentInjector,\n environmentInjector: componentInjector.get(EnvironmentInjector),\n hostElement: el,\n bindings: [\n ...createInputsBind(this.#inputCache.inputs),\n ...createOutputsBind(componentConfig.outputs),\n ],\n directives: [\n ...(componentConfig.directives ?? []).map((item, index) => ({\n type: item.type,\n bindings: [\n ...createInputsBind(this.#inputCache.directiveList![index]),\n ...createOutputsBind(item.outputs),\n ],\n })),\n ...attrDirective,\n ],\n });\n viewContainerRef.insert(componentRef.hostView);\n this.fieldComponentInstance = componentRef.instance;\n this.fieldElementRef = componentRef.location;\n this.fieldDirectiveRefList = (componentConfig.directives ?? []).map(\n (item) => componentRef.injector.get(item.type),\n );\n this.destroyComponentFn = () => {\n viewContainerRef.clear();\n componentRef.destroy();\n this.#eventEmitter.unsubscribe();\n };\n if (list.length === this.#index + 1) {\n const field = componentInjector.get(PI_VIEW_FIELD_TOKEN)();\n field.hooks?.afterCreateComponent?.(field);\n }\n }\n\n update(list: DynamicComponentConfig[]) {\n const item = list[this.#index];\n const currentCheckConfig = getComponentCheckConfig(item);\n const isEqual = deepEqual(\n currentCheckConfig,\n this.#componentCheckConfig$$(),\n );\n // this.#componentCheckConfig$$ = computed(() => currentCheckConfig);\n if (isEqual) {\n this.#componentConfig = item;\n this.#configUpdate$.update((a) => a + 1);\n // 相等不处理\n this.#eventEmitter.next(list);\n } else {\n this.createComponent(list, this.#viewContainerRef!);\n }\n }\n}\n","import {\n NgControl,\n Validators,\n type AbstractControl,\n type ValidationErrors,\n} from '@angular/forms';\nimport { FieldControl, PENDING } from '@piying/view-angular-core';\n\nexport type InteropSharedKeys =\n | 'value'\n | 'valid'\n | 'invalid'\n | 'touched'\n | 'untouched'\n | 'disabled'\n | 'enabled'\n | 'errors'\n | 'pristine'\n | 'dirty';\n\nexport class InteropNgControl extends NgControl {\n constructor(protected field: () => FieldControl<unknown>) {\n super();\n }\n\n readonly control: AbstractControl<any, any> =\n this as unknown as AbstractControl<any, any>;\n\n override get value(): any {\n return this.field().value;\n }\n\n override get valid(): boolean {\n return this.field().valid;\n }\n\n override get invalid(): boolean {\n return !this.field().valid;\n }\n\n override get pending(): boolean | null {\n return this.field().status$$() === PENDING;\n }\n\n override get disabled(): boolean {\n return this.field().disabled;\n }\n\n override get enabled(): boolean {\n return !this.field().disabled;\n }\n\n override get errors(): ValidationErrors | null {\n const errors = this.field().errors;\n return errors ?? null;\n }\n\n override get pristine(): boolean {\n return this.field().pristine;\n }\n\n override get dirty(): boolean {\n return this.field().dirty;\n }\n\n override get touched(): boolean {\n return this.field().touched;\n }\n\n override get untouched(): boolean {\n return !this.field().touched;\n }\n\n get submitted(): boolean {\n return false;\n }\n\n override viewToModelUpdate(newValue: any): void {}\n override get valueChanges() {\n return this.field().valueChanges;\n }\n override get statusChanges() {\n return this.field().statusChanges;\n }\n hasValidator(input: any) {\n if (Validators.required === input) {\n return this.field().required$$();\n }\n return false;\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n input,\n OnDestroy,\n Provider,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { createViewControlLink, FieldControl } from '@piying/view-angular-core';\nimport { InteropNgControl } from './interop_ng_control';\n\nconst formControlBinding: Provider = {\n provide: NgControl,\n useFactory: () => inject(FieldControlDirective).ngControl,\n};\n\n@Directive({\n selector: '[fieldControl]',\n providers: [formControlBinding],\n standalone: true,\n})\nexport class FieldControlDirective implements OnDestroy {\n fieldControl = input.required<FieldControl>();\n readonly cvaArray = inject<ControlValueAccessor[]>(NG_VALUE_ACCESSOR);\n readonly injector = inject(Injector);\n\n get cva() {\n return this.cvaArray[0];\n }\n #_ngControl: InteropNgControl | undefined;\n\n get ngControl(): NgControl {\n return (this.#_ngControl ??= new InteropNgControl(() =>\n this.fieldControl(),\n )) as unknown as NgControl;\n }\n\n #disposeFn?: (destroyed?: boolean) => void;\n ngOnChanges(): void {\n this.#disposeFn?.();\n this.#disposeFn = createViewControlLink(\n this.fieldControl,\n this.cva,\n this.injector,\n );\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.#disposeFn?.(true);\n }\n}\n","import {\n computed,\n createNgModule,\n Directive,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig, NgResolvedWraaperConfig } from '../type';\nimport {\n DynamicComponentConfig,\n RawDirectiveOutputs,\n NgResolvedComponentDefine2,\n} from '../type/component';\nimport { EMPTY_ARRAY } from '../const';\nimport { BaseComponent } from '../component/base.component';\nimport { DirectiveConfig } from '../component/dynamic-define.component';\nimport { deepEqual } from 'fast-equals';\nimport { FieldControl } from '@piying/view-angular-core';\nimport { PI_COMPONENT_INDEX, PI_VIEW_FIELD_TOKEN } from '../type/view-token';\nimport { FieldControlDirective } from '../directives/field-control-directive';\n\n@Directive({\n selector: '[ngComponentOutlet]',\n standalone: true,\n})\nexport class NgComponentOutlet<T = any>\n extends BaseComponent\n implements OnChanges, OnDestroy\n{\n /** 输入 */\n ngComponentOutlet = input<NgResolvedComponentDefine2>();\n ngComponentOutletInputs = input<Record<string, unknown>>();\n ngComponentOutletOutputs = input<RawDirectiveOutputs>();\n ngComponentOutletInjector = input<Injector>();\n /** 控件用 */\n ngComponentOutletFormControl = input<FieldControl>();\n /** 包裹用 */\n ngComponentOutletWrappers = input<NgResolvedWraaperConfig[]>();\n ngComponentOutletDirectives =\n input<PiResolvedViewFieldConfig['directives']>();\n\n ngComponentOutletField = input.required<PiResolvedViewFieldConfig>();\n #viewContainerRef = inject(ViewContainerRef);\n // 这里感觉会在非发射时出现多次输入?\n #wrappers = computed(() =>\n this.ngComponentOutletWrappers()?.map((item) => ({\n ...item,\n type: item.type.component,\n module: item.type.module,\n })),\n );\n #onputEqual$$ = computed(() => this.ngComponentOutletOutputs(), {\n equal: deepEqual,\n });\n\n #moduleDestroy?: () => void;\n\n #moduleRef$$ = computed(() => {\n this.#moduleDestroy?.();\n const injector = this.ngComponentOutletInjector() || this.#injector;\n const module = this.ngComponentOutlet()?.type.module;\n if (!module) {\n return;\n }\n const moduleRef = createNgModule(module, injector);\n this.#moduleDestroy = () => {\n moduleRef.destroy();\n this.#moduleDestroy = undefined;\n };\n return moduleRef;\n });\n #usedEnvInjector$$ = computed(() => {\n const injector =\n this.#moduleRef$$()?.injector ??\n (this.ngComponentOutletInjector() || this.#injector);\n return Injector.create({\n providers: [\n {\n provide: PI_VIEW_FIELD_TOKEN,\n useValue: this.ngComponentOutletField,\n },\n {\n provide: PI_COMPONENT_INDEX,\n useValue: 0,\n },\n ],\n parent: injector,\n }).get(Injector);\n });\n #injector = inject(Injector);\n #formControlDirectiveConfig$$ = computed(() => {\n const fieldControl = this.ngComponentOutletFormControl();\n return fieldControl\n ? ({\n type: FieldControlDirective,\n inputs: computed(() => ({ fieldControl: fieldControl })),\n } as DirectiveConfig)\n : undefined;\n });\n #directiveConfigList$$ = computed(() => {\n const directivesInputs = this.ngComponentOutletDirectives();\n const formConfig = this.#formControlDirectiveConfig$$();\n return formConfig\n ? [...(directivesInputs?.() ?? []), formConfig]\n : directivesInputs?.();\n });\n\n #componentConfig$$ = computed(() => {\n const define = this.ngComponentOutlet();\n if (!define) {\n return;\n }\n const directives = this.#directiveConfigList$$();\n return {\n ...define!,\n type: define!.type.component,\n module: define!.type.module,\n inputs: this.ngComponentOutletInputs,\n directives: directives\n ? directives.map((item) => {\n const outputs = item.outputs;\n if (outputs) {\n return {\n ...item,\n outputs: outputs,\n };\n }\n return item;\n })\n : undefined,\n outputs: this.#onputEqual$$(),\n } as DynamicComponentConfig;\n });\n #componentList$$ = computed(() => {\n const componentConfig = this.#componentConfig$$();\n if (!componentConfig) {\n return EMPTY_ARRAY;\n }\n const injector = this.#usedEnvInjector$$();\n const list: DynamicComponentConfig[] = [\n ...(this.#wrappers() ?? []),\n componentConfig,\n ];\n\n list[0] = { ...list[0], injector };\n\n return list;\n });\n\n #lastList?: DynamicComponentConfig[];\n ngOnChanges() {\n //todo 变更时的一些检测,相同时应该不处理\n const list = this.#componentList$$();\n if (!list.length) {\n return this.destroyComponentFn?.();\n }\n if (!this.#lastList) {\n const field = this.ngComponentOutletField();\n field.hooks?.beforeCreateComponent?.(field);\n this.setFieldData(this.ngComponentOutletField, 0);\n this.createComponent(list, this.#viewContainerRef);\n } else if (this.#lastList !== list) {\n this.update(list);\n }\n // 监听输入/输出变更,重新进行赋值\n\n this.#lastList = list;\n }\n\n ngOnDestroy() {\n this.#moduleDestroy?.();\n this.destroyComponentFn?.();\n }\n}\n","import {\n computed,\n Injector,\n reflectComponentType,\n resource,\n Type,\n untracked,\n} from '@angular/core';\nimport { NgResolvedComponentDefine2 } from '../type/component';\nimport { NgResolvedComponentDefine1 } from '../type';\nimport { getLazyImport, isLazyMark } from '@piying/view-angular-core';\nfunction isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\nexport function createAsyncCache<One extends boolean, Result>(\n one: One,\n injector: Injector,\n) {\n const loading = new Map<any, Promise<Result>>();\n const cached = new Map<any, Result>();\n return (\n list:\n | (One extends true\n ? NgResolvedComponentDefine2\n : NgResolvedComponentDefine2[])\n | undefined,\n ) =>\n untracked(() => {\n if (!list) {\n return { value: computed(() => undefined) };\n }\n let hasPromise = false;\n const result = (\n ((one as One) ? [list] : list) as any as NgResolvedComponentDefine1[]\n ).map((item) => {\n if (cached.has(item)) {\n return cached.get(item)!;\n } else if (loading.has(item)) {\n hasPromise = true;\n return loading.get(item)!;\n }\n const resolved = item;\n const type = resolved.type;\n if (typeof type === 'string' || isComponentType(type)) {\n const result = { ...resolved, type: { component: type } };\n cached.set(item, result as any);\n return result;\n } else if (typeof type === 'function' || isLazyMark(type)) {\n hasPromise = true;\n const result$$ = getLazyImport<() => Promise<any>>(type)!().then(\n (value) => {\n const result = {\n ...resolved,\n type: isComponentType(value) ? { component: value } : value,\n } as any;\n cached.set(item, result);\n loading.delete(item);\n return result;\n },\n );\n loading.set(item, result$$);\n return result$$;\n } else {\n return resolved;\n }\n });\n if (hasPromise) {\n return resource<Result, undefined>({\n loader: async () => (one ? result[0] : Promise.all(result)) as any,\n injector: injector,\n });\n } else {\n return {\n value: computed<Result>(() => (one ? result[0] : result) as any),\n };\n }\n });\n}\n","import {\n PiComponentDefaultConfig,\n PiResolvedViewFieldConfig,\n ConfigMergeStrategyObject,\n PiViewConfig,\n NgResolvedComponentDefine1,\n} from './type';\nimport { inject, Injectable, Type } from '@angular/core';\n\nimport { FormBuilder, PI_VIEW_CONFIG_TOKEN } from '@piying/view-angular-core';\nimport { NG_CONFIG_DEFAULT_MERGE_STRAGEGY } from './const';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n #globalConfig: PiViewConfig = inject(PI_VIEW_CONFIG_TOKEN) as any;\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n const type = rawConfig.type;\n let componentDefaultConfig: PiComponentDefaultConfig | undefined;\n let define;\n const mergeStrategy = this.#globalConfig\n .defaultConfigMergeStrategy as ConfigMergeStrategyObject;\n\n if (type) {\n const result = this.#resolveComponent(type);\n define = result.define;\n componentDefaultConfig = result.defaultConfig;\n }\n\n const directives = this.configMerge(\n [componentDefaultConfig?.directives, field.directives],\n true,\n mergeStrategy?.directives ?? NG_CONFIG_DEFAULT_MERGE_STRAGEGY.directives,\n );\n return {\n ...config,\n directives: directives,\n };\n }\n\n #resolveComponent(type: string | Type<any> | (() => Promise<Type<any>>)) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig.types?.[type];\n if (!config) {\n throw new Error(`未注册${type}`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n } as NgResolvedComponentDefine1;\n }\n } else {\n // 直接使用视为独立组件,并且selector只有一个\n define = { type } as NgResolvedComponentDefine1;\n }\n return {\n define,\n defaultConfig,\n };\n }\n}\n","import { CoreSchemaHandle } from '@piying/view-angular-core';\nimport { PiResolvedViewFieldConfig, NgDirectiveConfig } from '../type';\n\nexport class NgSchemaHandle extends CoreSchemaHandle<\n NgSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type?: any;\n directives?: NgDirectiveConfig[];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pure',\n standalone: true,\n})\nexport class PurePipe implements PipeTransform {\n transform<T extends (...args: any[]) => any>(fn: T, ...args: Parameters<T>) {\n return fn(...args) as ReturnType<T>;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n createEnvironmentInjector,\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { NgComponentOutlet } from './hook/ng_component_outlet';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n NgResolvedWraaperConfig,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgResolvedComponentDefine2 } from './type/component';\nimport { createAsyncCache } from './util/async-cache';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n isFieldArray,\n} from '@piying/view-angular-core';\nimport { AngularFormBuilder } from './builder';\nimport { NgSchemaHandle } from './schema/ng-schema';\nimport { NgConvertOptions } from './type/builder-type';\nimport type { SetOptional } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport { PurePipe } from './pipe/pure.pipe';\nconst DefaultConvertOptions = {\n builder: AngularFormBuilder,\n handle: NgSchemaHandle as any,\n};\n@Component({\n selector: 'piying-view',\n imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingView implements OnChanges {\n schema = input.required<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n >();\n model = input<any>(undefined);\n modelChange = output<any>();\n options = input<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >();\n form$$ = computed(\n () =>\n this.resolvedField$()?.form.control as\n | (FieldControl | FieldGroup | FieldArray)\n | undefined,\n );\n\n #lastRF?: PiResolvedViewFieldConfig;\n ngOnChanges(changes: SimpleChanges): void {\n const rFields = this.#resolvedFields$$();\n if (this.#lastRF !== rFields || 'model' in changes) {\n this.#updateValue(this.model());\n }\n this.#lastRF = rFields;\n }\n\n #resolvedFields$$ = computed(() => {\n this.schema();\n return untracked(() => this.#updateField());\n });\n\n #injector = inject(Injector);\n #envInjector = inject(EnvironmentInjector);\n #builderEnvInjector?: EnvironmentInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = createEnvironmentInjector([], this.#envInjector);\n this.#builderEnvInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n registerOnDestroy: (fn) => {\n envInjector.get(DestroyRef).onDestroy(() => {\n fn();\n });\n },\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderEnvInjector) {\n this.#builderEnvInjector.destroy();\n this.#builderEnvInjector = undefined;\n }\n }\n\n #updateValue(model: Record<string, any> | undefined) {\n this.#listenDispose?.();\n const result = this.resolvedField$()!;\n if (result.form.control) {\n // 监听初始化,每次field变更会初始化\n const ref = initListen(\n this.model(),\n result!.form.control,\n // 使用envInjector会导致在测试中慢一次检查,生产上可能也会慢一点?\n this.#injector,\n (value) => {\n untracked(() => {\n if (result!.form.control?.valueNoError$$()) {\n this.modelChange.emit(value);\n }\n });\n },\n );\n this.#listenDispose = () => {\n ref.destroy();\n this.#listenDispose = undefined;\n };\n result.form.control.updateValue(model);\n }\n }\n\n groupInputsValue = (\n inputs: PiResolvedViewFieldConfig['inputs'],\n\n fieldTemplateRef: TemplateRef<any>,\n ) =>\n computed(() => ({\n ...inputs(),\n fieldTemplateRef,\n }));\n\n resolvedComponent = createAsyncCache<true, NgResolvedComponentDefine2>(\n true,\n this.#injector,\n );\n // 这里的组件还是不准确,因为type已经改了,\n resolvedWrapper = createAsyncCache<false, NgResolvedWraaperConfig[]>(\n false,\n this.#injector,\n );\n\n groupHidden = (field: PiResolvedViewFieldConfig) =>\n computed(() => this.#groupHidden(field));\n #groupHidden(field: PiResolvedViewFieldConfig): boolean {\n if (isFieldArray(field.form.control) || field.restChildren) {\n return false;\n }\n if (field.fixedChildren) {\n if (!field.fixedChildren?.().length) {\n return true;\n } else {\n return field.fixedChildren().every((field) => this.#groupHidden(field));\n }\n } else {\n return !field.define || !!field.renderConfig().hidden;\n }\n }\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- 自定义group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n","import {\n computed,\n Directive,\n inject,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseComponent } from './base.component';\nimport {\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\n\n@Directive()\nexport class PiyingViewWrapperBase extends BaseComponent {\n fieldComponentAnchor = viewChild('fieldComponent', {\n read: ViewContainerRef,\n });\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n override createComponent() {\n const result = super.createComponent(\n this.#list,\n this.fieldComponentAnchor()!,\n );\n this.#listen.subscribe((list) => {\n this.update(list);\n });\n return result;\n }\n ngOnInit(): void {\n this.createComponent();\n }\n}\n","import { RawConfigCommon } from '@piying/valibot-visit';\nimport { rawConfig as originRawConfig } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from '../ng-schema';\nexport const rawConfig = originRawConfig as RawConfigCommon<NgSchemaHandle>;\n","import {\n _PiResolvedCommonViewFieldConfig,\n asyncInputMerge,\n mergeHooksFn,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { NgSchemaHandle } from '../ng-schema';\nimport { linkedSignal, signal } from '@angular/core';\n\nexport function setDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives = items;\n });\n}\nexport function patchDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives ??= [];\n field.directives.push(...items);\n });\n}\nexport function patchAsyncDirective<T>(\n fn: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Omit<NgDirectiveConfig, 'inputs'> & { inputs?: Record<string, any> },\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn<NgSchemaHandle>(\n {\n fieldResolved: (field) => {\n field.directives ??= signal([]);\n const directive = fn(field);\n const inputs = directive.inputs;\n let inputs$ = signal<Record<string, any>>({});\n if (inputs) {\n inputs$.set(\n Object.keys(inputs).reduce(\n (obj, key) => {\n obj[key] = undefined;\n return obj;\n },\n {} as Record<string, any>,\n ),\n );\n inputs$ = asyncInputMerge(inputs, inputs$);\n }\n const oldDirectives = field.directives;\n field.directives = linkedSignal(() => [\n ...oldDirectives(),\n { ...directive, inputs: inputs$ },\n ]);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\n","import { signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nexport class BaseControl<T = any> implements ControlValueAccessor {\n readonly defaultValue: any = undefined;\n value$ = signal<T>(this.defaultValue ?? (undefined as any));\n\n protected emitValue?: (value: any) => void;\n registerOnChange(fn: any): void {\n this.emitValue = fn;\n }\n /** 同时发射和value变更 */\n valueChange(value: any) {\n this.emitValue?.(value);\n this.value$.set(value);\n }\n\n writeValue(obj: any): void {\n this.value$.set(obj ?? undefined);\n }\n #touched?: () => void;\n registerOnTouched(fn: any): void {\n this.#touched = fn;\n }\n touchedChange() {\n this.#touched!();\n }\n disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originRawConfig"],"mappings":"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"}
1
+ {"version":3,"file":"piying-view-angular.mjs","sources":["../../../projects/view-angular/lib/type/view-token.ts","../../../projects/view-angular/lib/component/group/component.base.ts","../../../projects/view-angular/lib/component/group/component.ts","../../../projects/view-angular/lib/component/group/component.html","../../../projects/view-angular/lib/const.ts","../../../projects/view-angular/lib/util/component-config.equal.ts","../../../projects/view-angular/lib/directives/attributes.directive.ts","../../../projects/view-angular/lib/component/base.component.ts","../../../projects/view-angular/lib/directives/interop_ng_control.ts","../../../projects/view-angular/lib/directives/field-control-directive.ts","../../../projects/view-angular/lib/hook/ng_component_outlet.ts","../../../projects/view-angular/lib/util/async-cache.ts","../../../projects/view-angular/lib/builder.ts","../../../projects/view-angular/lib/schema/ng-schema.ts","../../../projects/view-angular/lib/pipe/pure.pipe.ts","../../../projects/view-angular/lib/view.component.ts","../../../projects/view-angular/lib/component.html","../../../projects/view-angular/lib/component/wrapper-base.component.ts","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport { InjectionToken, Signal, EventEmitter } from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { PiResolvedViewFieldConfig } from './group';\n\n/** wrapper中可以使用,已解析的配置 */\nexport const PI_VIEW_FIELD_TOKEN = new InjectionToken<\n Signal<PiResolvedViewFieldConfig>\n>('PI_VIEW_FIELD_TOKEN');\n\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_COMPONENT_LIST = new InjectionToken<DynamicComponentConfig[]>(\n 'PI_COMPONENT_LIST',\n);\nexport const PI_COMPONENT_INDEX = new InjectionToken<number>(\n 'PI_COMPONENT_INDEX',\n);\nexport const PI_COMPONENT_LIST_LISTEN = new InjectionToken<\n EventEmitter<DynamicComponentConfig[]>\n>('PI_COMPONENT_LIST_LISTEN');\n","import { computed, Directive, inject, input, TemplateRef } from '@angular/core';\nimport { PI_VIEW_FIELD_TOKEN } from '../../type';\n\n@Directive()\nexport class PiyingViewGroupBase {\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n children$$ = computed(() => this.field$$().children!());\n fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);\n restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);\n fieldTemplateRef = input.required<TemplateRef<any>>();\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { PiyingViewGroupBase } from './component.base';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'piying-view-group',\n imports: [NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingViewGroup extends PiyingViewGroupBase {}\n","@for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"fieldTemplateRef(); context: { $implicit: field }\"\n ></ng-container>\n}\n","import { ConfigMergeStrategyObject } from './type';\n\nexport const EMPTY_ARRAY = [];\nexport const NG_CONFIG_DEFAULT_MERGE_STRAGEGY: ConfigMergeStrategyObject = {\n directives: 'merge',\n formConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n props: 'merge',\n renderConfig: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","import { DynamicComponentConfig } from '../type/component';\n\nexport function getComponentCheckConfig(a: DynamicComponentConfig) {\n return {\n ...a,\n inputs: Object.keys(a.inputs() ?? {}).join(','),\n // todo 需要等修改为动态的再比较key\n attributes: Object.entries(a.attributes() ?? {})\n .map((key, value) => `${key}:${value}`)\n .join(','),\n directives: a.directives\n ? a.directives.map((config) => ({\n ...config,\n inputs: `${config.inputs ? Object.keys(config.inputs()).join(',') : ''}`,\n }))\n : undefined,\n };\n}\n\nexport type ComponentCheckConfig = ReturnType<typeof getComponentCheckConfig>;\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n})\nexport class AttributesDirective {\n a = input.required<Record<string, any>>();\n #rederer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n ngOnChanges(changes: SimpleChanges): void {\n const { previousValue, currentValue, firstChange } = changes['a'];\n for (const key in currentValue) {\n this.#rederer.setAttribute(this.#el, key, currentValue[key]);\n }\n if (!firstChange) {\n for (const key in previousValue) {\n if (!(key in currentValue)) {\n this.#rederer.removeAttribute(this.#el, key);\n }\n }\n }\n }\n}\n","import {\n computed,\n createComponent,\n Directive,\n DOCUMENT,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n inputBinding,\n outputBinding,\n reflectComponentType,\n signal,\n Signal,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig } from '../type';\nimport { DynamicComponentConfig } from '../type/component';\nimport {\n ComponentCheckConfig,\n getComponentCheckConfig,\n} from '../util/component-config.equal';\nimport { deepEqual } from 'fast-equals';\nimport {\n PI_COMPONENT_INDEX,\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\nimport {\n CoreRawViewAttributes,\n CoreRawViewInputs,\n CoreRawViewOutputs,\n} from '@piying/view-angular-core';\nimport { AttributesDirective } from '../directives/attributes.directive';\nfunction createInputsBind(inputs?: Signal<CoreRawViewInputs | undefined>) {\n if (!inputs || !inputs()) {\n return [];\n }\n return Object.keys(inputs()!).map((key) =>\n inputBinding(\n key,\n computed(() => inputs()![key]),\n ),\n );\n}\nfunction createOutputsBind(outputs?: CoreRawViewOutputs) {\n if (!outputs) {\n return [];\n }\n return Object.entries(outputs).map(([key, value]) =>\n outputBinding(key, value),\n );\n}\nfunction createAttributesDirective(\n attributes: Signal<CoreRawViewAttributes | undefined>,\n) {\n if (attributes()) {\n return [\n {\n type: AttributesDirective,\n bindings: [inputBinding('a', attributes)],\n },\n ];\n }\n return [];\n}\nconst EmptyOBJ = {};\n@Directive()\nexport class BaseComponent {\n /** 第一次默认为空 */\n #index = inject(PI_COMPONENT_INDEX, { optional: true })!;\n\n /** 发射提供到下一级 */\n #eventEmitter!: EventEmitter<DynamicComponentConfig[]>;\n #componentConfig!: DynamicComponentConfig;\n #viewContainerRef?: ViewContainerRef;\n\n destroyComponentFn?: () => void;\n fieldComponentInstance?: any;\n fieldElementRef?: ElementRef<HTMLElement>;\n fieldDirectiveRefList?: any[];\n /** 比较时使用 */\n #componentCheckConfig$$!: Signal<ComponentCheckConfig>;\n #setComponentCheck(config: DynamicComponentConfig) {\n this.#componentCheckConfig$$ = computed(() =>\n untracked(() => getComponentCheckConfig(config)),\n );\n }\n setFieldData(field: Signal<PiResolvedViewFieldConfig>, index: number) {\n this.#index = index;\n }\n /**\n * 输入引用绑定\n * 1. 上次传入的数据格式和当前一样,只触发更新\n * 2. 上次传入的数据格式和当前不一样,直接重新创建\n */\n #inputCache!: {\n inputs?: Signal<Record<string, any>>;\n attributes?: Signal<Record<string, any>>;\n directiveList?: (Signal<Record<string, any>> | undefined)[];\n };\n #configUpdate$ = signal(0);\n #document = inject(DOCUMENT);\n createComponent(\n list: DynamicComponentConfig[],\n viewContainerRef: ViewContainerRef,\n ) {\n // 销毁\n this.destroyComponentFn?.();\n this.#viewContainerRef = viewContainerRef;\n // 取消上一级的定义\n this.#eventEmitter = new EventEmitter();\n const componentConfig = list[this.#index];\n\n this.#componentConfig = componentConfig;\n this.#inputCache = {\n inputs: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.inputs!() ?? EmptyOBJ;\n }),\n attributes: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.attributes!() ?? EmptyOBJ;\n }),\n directiveList: this.#componentConfig?.directives?.map((config, index) =>\n config.inputs\n ? computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.directives![index].inputs!();\n })\n : undefined,\n ),\n };\n const type = reflectComponentType(componentConfig.type as any)!;\n this.#setComponentCheck(componentConfig);\n\n const componentInjector = Injector.create({\n providers: [\n { provide: PI_COMPONENT_LIST, useValue: list },\n { provide: PI_COMPONENT_INDEX, useValue: this.#index + 1 },\n { provide: PI_COMPONENT_LIST_LISTEN, useValue: this.#eventEmitter },\n ],\n parent: componentConfig.injector ?? viewContainerRef.injector,\n });\n const attrDirective = createAttributesDirective(componentConfig.attributes);\n const componentRef = createComponent(componentConfig.type as any, {\n elementInjector: componentInjector,\n environmentInjector: componentInjector.get(EnvironmentInjector),\n bindings: [\n ...createInputsBind(this.#inputCache.inputs),\n ...createOutputsBind(componentConfig.outputs),\n ],\n directives: [\n ...(componentConfig.directives ?? []).map((item, index) => ({\n type: item.type,\n bindings: [\n ...createInputsBind(this.#inputCache.directiveList![index]),\n ...createOutputsBind(item.outputs),\n ],\n })),\n ...attrDirective,\n ],\n });\n this.fieldComponentInstance = componentRef.instance;\n this.fieldElementRef = componentRef.location;\n this.fieldDirectiveRefList = (componentConfig.directives ?? []).map(\n (item) => componentRef.injector.get(item.type),\n );\n viewContainerRef.insert(componentRef.hostView);\n this.destroyComponentFn = () => {\n viewContainerRef.clear();\n componentRef.destroy();\n this.#eventEmitter.unsubscribe();\n };\n if (list.length === this.#index + 1) {\n const field = componentInjector.get(PI_VIEW_FIELD_TOKEN)();\n field.hooks?.afterCreateComponent?.(field);\n }\n }\n\n update(list: DynamicComponentConfig[]) {\n const item = list[this.#index];\n const currentCheckConfig = getComponentCheckConfig(item);\n const isEqual = deepEqual(\n currentCheckConfig,\n this.#componentCheckConfig$$(),\n );\n // this.#componentCheckConfig$$ = computed(() => currentCheckConfig);\n if (isEqual) {\n this.#componentConfig = item;\n this.#configUpdate$.update((a) => a + 1);\n // 相等不处理\n this.#eventEmitter.next(list);\n } else {\n this.createComponent(list, this.#viewContainerRef!);\n }\n }\n}\n","import {\n NgControl,\n Validators,\n type AbstractControl,\n type ValidationErrors,\n} from '@angular/forms';\nimport { FieldControl, PENDING } from '@piying/view-angular-core';\n\nexport type InteropSharedKeys =\n | 'value'\n | 'valid'\n | 'invalid'\n | 'touched'\n | 'untouched'\n | 'disabled'\n | 'enabled'\n | 'errors'\n | 'pristine'\n | 'dirty';\n\nexport class InteropNgControl extends NgControl {\n constructor(protected field: () => FieldControl<unknown>) {\n super();\n }\n\n readonly control: AbstractControl<any, any> =\n this as unknown as AbstractControl<any, any>;\n\n override get value(): any {\n return this.field().value;\n }\n\n override get valid(): boolean {\n return this.field().valid;\n }\n\n override get invalid(): boolean {\n return !this.field().valid;\n }\n\n override get pending(): boolean | null {\n return this.field().status$$() === PENDING;\n }\n\n override get disabled(): boolean {\n return this.field().disabled;\n }\n\n override get enabled(): boolean {\n return !this.field().disabled;\n }\n\n override get errors(): ValidationErrors | null {\n const errors = this.field().errors;\n return errors ?? null;\n }\n\n override get pristine(): boolean {\n return this.field().pristine;\n }\n\n override get dirty(): boolean {\n return this.field().dirty;\n }\n\n override get touched(): boolean {\n return this.field().touched;\n }\n\n override get untouched(): boolean {\n return !this.field().touched;\n }\n\n get submitted(): boolean {\n return false;\n }\n\n override viewToModelUpdate(newValue: any): void {}\n override get valueChanges() {\n return this.field().valueChanges;\n }\n override get statusChanges() {\n return this.field().statusChanges;\n }\n hasValidator(input: any) {\n if (Validators.required === input) {\n return this.field().required$$();\n }\n return false;\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n input,\n OnDestroy,\n Provider,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { createViewControlLink, FieldControl } from '@piying/view-angular-core';\nimport { InteropNgControl } from './interop_ng_control';\n\nconst formControlBinding: Provider = {\n provide: NgControl,\n useFactory: () => inject(FieldControlDirective).ngControl,\n};\n\n@Directive({\n selector: '[fieldControl]',\n providers: [formControlBinding],\n standalone: true,\n})\nexport class FieldControlDirective implements OnDestroy {\n fieldControl = input.required<FieldControl>();\n readonly cvaArray = inject<ControlValueAccessor[]>(NG_VALUE_ACCESSOR);\n readonly injector = inject(Injector);\n\n get cva() {\n return this.cvaArray[0];\n }\n #_ngControl: InteropNgControl | undefined;\n\n get ngControl(): NgControl {\n return (this.#_ngControl ??= new InteropNgControl(() =>\n this.fieldControl(),\n )) as unknown as NgControl;\n }\n\n #disposeFn?: (destroyed?: boolean) => void;\n ngOnChanges(): void {\n this.#disposeFn?.();\n this.#disposeFn = createViewControlLink(\n this.fieldControl,\n this.cva,\n this.injector,\n );\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.#disposeFn?.(true);\n }\n}\n","import {\n computed,\n createNgModule,\n Directive,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig, NgResolvedWraaperConfig } from '../type';\nimport {\n DynamicComponentConfig,\n RawDirectiveOutputs,\n NgResolvedComponentDefine2,\n} from '../type/component';\nimport { EMPTY_ARRAY } from '../const';\nimport { BaseComponent } from '../component/base.component';\nimport { DirectiveConfig } from '../component/dynamic-define.component';\nimport { deepEqual } from 'fast-equals';\nimport { FieldControl } from '@piying/view-angular-core';\nimport { PI_COMPONENT_INDEX, PI_VIEW_FIELD_TOKEN } from '../type/view-token';\nimport { FieldControlDirective } from '../directives/field-control-directive';\n\n@Directive({\n selector: '[ngComponentOutlet]',\n standalone: true,\n})\nexport class NgComponentOutlet<T = any>\n extends BaseComponent\n implements OnChanges, OnDestroy\n{\n /** 输入 */\n ngComponentOutlet = input<NgResolvedComponentDefine2>();\n ngComponentOutletInputs = input<Record<string, unknown>>();\n ngComponentOutletOutputs = input<RawDirectiveOutputs>();\n ngComponentOutletInjector = input<Injector>();\n /** 控件用 */\n ngComponentOutletFormControl = input<FieldControl>();\n /** 包裹用 */\n ngComponentOutletWrappers = input<NgResolvedWraaperConfig[]>();\n ngComponentOutletDirectives =\n input<PiResolvedViewFieldConfig['directives']>();\n\n ngComponentOutletField = input.required<PiResolvedViewFieldConfig>();\n #viewContainerRef = inject(ViewContainerRef);\n // 这里感觉会在非发射时出现多次输入?\n #wrappers = computed(() =>\n this.ngComponentOutletWrappers()?.map((item) => ({\n ...item,\n type: item.type.component,\n module: item.type.module,\n })),\n );\n #onputEqual$$ = computed(() => this.ngComponentOutletOutputs(), {\n equal: deepEqual,\n });\n\n #moduleDestroy?: () => void;\n\n #moduleRef$$ = computed(() => {\n this.#moduleDestroy?.();\n const injector = this.ngComponentOutletInjector() || this.#injector;\n const module = this.ngComponentOutlet()?.type.module;\n if (!module) {\n return;\n }\n const moduleRef = createNgModule(module, injector);\n this.#moduleDestroy = () => {\n moduleRef.destroy();\n this.#moduleDestroy = undefined;\n };\n return moduleRef;\n });\n #usedEnvInjector$$ = computed(() => {\n const injector =\n this.#moduleRef$$()?.injector ??\n (this.ngComponentOutletInjector() || this.#injector);\n return Injector.create({\n providers: [\n {\n provide: PI_VIEW_FIELD_TOKEN,\n useValue: this.ngComponentOutletField,\n },\n {\n provide: PI_COMPONENT_INDEX,\n useValue: 0,\n },\n ],\n parent: injector,\n }).get(Injector);\n });\n #injector = inject(Injector);\n #formControlDirectiveConfig$$ = computed(() => {\n const fieldControl = this.ngComponentOutletFormControl();\n return fieldControl\n ? ({\n type: FieldControlDirective,\n inputs: computed(() => ({ fieldControl: fieldControl })),\n } as DirectiveConfig)\n : undefined;\n });\n #directiveConfigList$$ = computed(() => {\n const directivesInputs = this.ngComponentOutletDirectives();\n const formConfig = this.#formControlDirectiveConfig$$();\n return formConfig\n ? [...(directivesInputs?.() ?? []), formConfig]\n : directivesInputs?.();\n });\n\n #componentConfig$$ = computed(() => {\n const define = this.ngComponentOutlet();\n if (!define) {\n return;\n }\n const directives = this.#directiveConfigList$$();\n return {\n ...define!,\n type: define!.type.component,\n module: define!.type.module,\n inputs: this.ngComponentOutletInputs,\n directives: directives\n ? directives.map((item) => {\n const outputs = item.outputs;\n if (outputs) {\n return {\n ...item,\n outputs: outputs,\n };\n }\n return item;\n })\n : undefined,\n outputs: this.#onputEqual$$(),\n } as DynamicComponentConfig;\n });\n #componentList$$ = computed(() => {\n const componentConfig = this.#componentConfig$$();\n if (!componentConfig) {\n return EMPTY_ARRAY;\n }\n const injector = this.#usedEnvInjector$$();\n const list: DynamicComponentConfig[] = [\n ...(this.#wrappers() ?? []),\n componentConfig,\n ];\n\n list[0] = { ...list[0], injector };\n\n return list;\n });\n\n #lastList?: DynamicComponentConfig[];\n ngOnChanges() {\n //todo 变更时的一些检测,相同时应该不处理\n const list = this.#componentList$$();\n if (!list.length) {\n return this.destroyComponentFn?.();\n }\n if (!this.#lastList) {\n const field = this.ngComponentOutletField();\n field.hooks?.beforeCreateComponent?.(field);\n this.setFieldData(this.ngComponentOutletField, 0);\n this.createComponent(list, this.#viewContainerRef);\n } else if (this.#lastList !== list) {\n this.update(list);\n }\n // 监听输入/输出变更,重新进行赋值\n\n this.#lastList = list;\n }\n\n ngOnDestroy() {\n this.#moduleDestroy?.();\n this.destroyComponentFn?.();\n }\n}\n","import {\n computed,\n Injector,\n reflectComponentType,\n resource,\n Type,\n untracked,\n} from '@angular/core';\nimport { NgResolvedComponentDefine2 } from '../type/component';\nimport { NgResolvedComponentDefine1 } from '../type';\nimport { getLazyImport, isLazyMark } from '@piying/view-angular-core';\nfunction isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\nexport function createAsyncCache<One extends boolean, Result>(\n one: One,\n injector: Injector,\n) {\n const loading = new Map<any, Promise<Result>>();\n const cached = new Map<any, Result>();\n return (\n list:\n | (One extends true\n ? NgResolvedComponentDefine2\n : NgResolvedComponentDefine2[])\n | undefined,\n ) =>\n untracked(() => {\n if (!list) {\n return { value: computed(() => undefined) };\n }\n let hasPromise = false;\n const result = (\n ((one as One) ? [list] : list) as any as NgResolvedComponentDefine1[]\n ).map((item) => {\n if (cached.has(item)) {\n return cached.get(item)!;\n } else if (loading.has(item)) {\n hasPromise = true;\n return loading.get(item)!;\n }\n const resolved = item;\n const type = resolved.type;\n if (typeof type === 'string' || isComponentType(type)) {\n const result = { ...resolved, type: { component: type } };\n cached.set(item, result as any);\n return result;\n } else if (typeof type === 'function' || isLazyMark(type)) {\n hasPromise = true;\n const result$$ = getLazyImport<() => Promise<any>>(type)!().then(\n (value) => {\n const result = {\n ...resolved,\n type: isComponentType(value) ? { component: value } : value,\n } as any;\n cached.set(item, result);\n loading.delete(item);\n return result;\n },\n );\n loading.set(item, result$$);\n return result$$;\n } else {\n return resolved;\n }\n });\n if (hasPromise) {\n return resource<Result, undefined>({\n loader: async () => (one ? result[0] : Promise.all(result)) as any,\n injector: injector,\n });\n } else {\n return {\n value: computed<Result>(() => (one ? result[0] : result) as any),\n };\n }\n });\n}\n","import {\n PiComponentDefaultConfig,\n PiResolvedViewFieldConfig,\n ConfigMergeStrategyObject,\n PiViewConfig,\n NgResolvedComponentDefine1,\n} from './type';\nimport { inject, Injectable, Type } from '@angular/core';\n\nimport { FormBuilder, PI_VIEW_CONFIG_TOKEN } from '@piying/view-angular-core';\nimport { NG_CONFIG_DEFAULT_MERGE_STRAGEGY } from './const';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n #globalConfig: PiViewConfig = inject(PI_VIEW_CONFIG_TOKEN) as any;\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n const type = rawConfig.type;\n let componentDefaultConfig: PiComponentDefaultConfig | undefined;\n let define;\n const mergeStrategy = this.#globalConfig\n .defaultConfigMergeStrategy as ConfigMergeStrategyObject;\n\n if (type) {\n const result = this.#resolveComponent(type);\n define = result.define;\n componentDefaultConfig = result.defaultConfig;\n }\n\n const directives = this.configMerge(\n [componentDefaultConfig?.directives, field.directives],\n true,\n mergeStrategy?.directives ?? NG_CONFIG_DEFAULT_MERGE_STRAGEGY.directives,\n );\n return {\n ...config,\n directives: directives,\n };\n }\n\n #resolveComponent(type: string | Type<any> | (() => Promise<Type<any>>)) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig.types?.[type];\n if (!config) {\n throw new Error(`未注册${type}`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n } as NgResolvedComponentDefine1;\n }\n } else {\n // 直接使用视为独立组件,并且selector只有一个\n define = { type } as NgResolvedComponentDefine1;\n }\n return {\n define,\n defaultConfig,\n };\n }\n}\n","import { CoreSchemaHandle } from '@piying/view-angular-core';\nimport { PiResolvedViewFieldConfig, NgDirectiveConfig } from '../type';\n\nexport class NgSchemaHandle extends CoreSchemaHandle<\n NgSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type?: any;\n directives?: NgDirectiveConfig[];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pure',\n standalone: true,\n})\nexport class PurePipe implements PipeTransform {\n transform<T extends (...args: any[]) => any>(fn: T, ...args: Parameters<T>) {\n return fn(...args) as ReturnType<T>;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n createEnvironmentInjector,\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { NgComponentOutlet } from './hook/ng_component_outlet';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n NgResolvedWraaperConfig,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgResolvedComponentDefine2 } from './type/component';\nimport { createAsyncCache } from './util/async-cache';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n isFieldArray,\n} from '@piying/view-angular-core';\nimport { AngularFormBuilder } from './builder';\nimport { NgSchemaHandle } from './schema/ng-schema';\nimport { NgConvertOptions } from './type/builder-type';\nimport type { SetOptional } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport { PurePipe } from './pipe/pure.pipe';\nconst DefaultConvertOptions = {\n builder: AngularFormBuilder,\n handle: NgSchemaHandle as any,\n};\n@Component({\n selector: 'piying-view',\n imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingView implements OnChanges {\n schema = input.required<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n >();\n model = input<any>(undefined);\n modelChange = output<any>();\n options = input<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >();\n form$$ = computed(\n () =>\n this.resolvedField$()?.form.control as\n | (FieldControl | FieldGroup | FieldArray)\n | undefined,\n );\n\n #lastRF?: PiResolvedViewFieldConfig;\n ngOnChanges(changes: SimpleChanges): void {\n const rFields = this.#resolvedFields$$();\n if (this.#lastRF !== rFields || 'model' in changes) {\n this.#updateValue(this.model());\n }\n this.#lastRF = rFields;\n }\n\n #resolvedFields$$ = computed(() => {\n this.schema();\n return untracked(() => this.#updateField());\n });\n\n #injector = inject(Injector);\n #envInjector = inject(EnvironmentInjector);\n #builderEnvInjector?: EnvironmentInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = createEnvironmentInjector([], this.#envInjector);\n this.#builderEnvInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n registerOnDestroy: (fn) => {\n envInjector.get(DestroyRef).onDestroy(() => {\n fn();\n });\n },\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderEnvInjector) {\n this.#builderEnvInjector.destroy();\n this.#builderEnvInjector = undefined;\n }\n }\n\n #updateValue(model: Record<string, any> | undefined) {\n this.#listenDispose?.();\n const result = this.resolvedField$()!;\n if (result.form.control) {\n // 监听初始化,每次field变更会初始化\n const ref = initListen(\n this.model(),\n result!.form.control,\n // 使用envInjector会导致在测试中慢一次检查,生产上可能也会慢一点?\n this.#injector,\n (value) => {\n untracked(() => {\n if (result!.form.control?.valueNoError$$()) {\n this.modelChange.emit(value);\n }\n });\n },\n );\n this.#listenDispose = () => {\n ref.destroy();\n this.#listenDispose = undefined;\n };\n result.form.control.updateValue(model);\n }\n }\n\n groupInputsValue = (\n inputs: PiResolvedViewFieldConfig['inputs'],\n\n fieldTemplateRef: TemplateRef<any>,\n ) =>\n computed(() => ({\n ...inputs(),\n fieldTemplateRef,\n }));\n\n resolvedComponent = createAsyncCache<true, NgResolvedComponentDefine2>(\n true,\n this.#injector,\n );\n // 这里的组件还是不准确,因为type已经改了,\n resolvedWrapper = createAsyncCache<false, NgResolvedWraaperConfig[]>(\n false,\n this.#injector,\n );\n\n groupHidden = (field: PiResolvedViewFieldConfig) =>\n computed(() => this.#groupHidden(field));\n #groupHidden(field: PiResolvedViewFieldConfig): boolean {\n if (isFieldArray(field.form.control) || field.restChildren) {\n return false;\n }\n if (field.fixedChildren) {\n if (!field.fixedChildren?.().length) {\n return true;\n } else {\n return field.fixedChildren().every((field) => this.#groupHidden(field));\n }\n } else {\n return !field.define || !!field.renderConfig().hidden;\n }\n }\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- 自定义group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n","import {\n computed,\n Directive,\n inject,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseComponent } from './base.component';\nimport {\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\n\n@Directive()\nexport class PiyingViewWrapperBase extends BaseComponent {\n fieldComponentAnchor = viewChild('fieldComponent', {\n read: ViewContainerRef,\n });\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n override createComponent() {\n const result = super.createComponent(\n this.#list,\n this.fieldComponentAnchor()!,\n );\n this.#listen.subscribe((list) => {\n this.update(list);\n });\n return result;\n }\n ngOnInit(): void {\n this.createComponent();\n }\n}\n","import { RawConfigCommon } from '@piying/valibot-visit';\nimport { rawConfig as originRawConfig } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from '../ng-schema';\nexport const rawConfig = originRawConfig as RawConfigCommon<NgSchemaHandle>;\n","import {\n _PiResolvedCommonViewFieldConfig,\n asyncInputMerge,\n mergeHooksFn,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { NgSchemaHandle } from '../ng-schema';\nimport { linkedSignal, signal } from '@angular/core';\n\nexport function setDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives = items;\n });\n}\nexport function patchDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives ??= [];\n field.directives.push(...items);\n });\n}\nexport function patchAsyncDirective<T>(\n fn: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Omit<NgDirectiveConfig, 'inputs'> & { inputs?: Record<string, any> },\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn<NgSchemaHandle>(\n {\n fieldResolved: (field) => {\n field.directives ??= signal([]);\n const directive = fn(field);\n const inputs = directive.inputs;\n let inputs$ = signal<Record<string, any>>({});\n if (inputs) {\n inputs$.set(\n Object.keys(inputs).reduce(\n (obj, key) => {\n obj[key] = undefined;\n return obj;\n },\n {} as Record<string, any>,\n ),\n );\n inputs$ = asyncInputMerge(inputs, inputs$);\n }\n const oldDirectives = field.directives;\n field.directives = linkedSignal(() => [\n ...oldDirectives(),\n { ...directive, inputs: inputs$ },\n ]);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\n","import { signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nexport class BaseControl<T = any> implements ControlValueAccessor {\n readonly defaultValue: any = undefined;\n value$ = signal<T>(this.defaultValue ?? (undefined as any));\n\n protected emitValue?: (value: any) => void;\n registerOnChange(fn: any): void {\n this.emitValue = fn;\n }\n /** 同时发射和value变更 */\n valueChange(value: any) {\n this.emitValue?.(value);\n this.value$.set(value);\n }\n\n writeValue(obj: any): void {\n this.value$.set(obj ?? undefined);\n }\n #touched?: () => void;\n registerOnTouched(fn: any): void {\n this.#touched = fn;\n }\n touchedChange() {\n this.#touched!();\n }\n disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originRawConfig"],"mappings":";;;;;;;;AAAA;AAMA;MACa,mBAAmB,GAAG,IAAI,cAAc,CAEnD,qBAAqB;AAEvB;;;AAGG;MACU,iBAAiB,GAAG,IAAI,cAAc,CACjD,mBAAmB;MAER,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB;MAET,wBAAwB,GAAG,IAAI,cAAc,CAExD,0BAA0B;;MCnBf,mBAAmB,CAAA;AAC9B,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAChD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,QAAS,EAAE,CAAC;AACvD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;AACxE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;AACtE,IAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAoB;uGAN1C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACSK,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;uGAA3C,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,iLAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,CAAC,gBAAgB,CAAC,cAEf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iLAAA,EAAA;;;AER1C,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,gCAAgC,GAA8B;AACzE,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,UAAU,EAAE,OAAO;CACpB;;ACVK,SAAU,uBAAuB,CAAC,CAAyB,EAAA;IAC/D,OAAO;AACL,QAAA,GAAG,CAAC;AACJ,QAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;QAE/C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE;AAC5C,aAAA,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,EAAE;aACrC,IAAI,CAAC,GAAG,CAAC;QACZ,UAAU,EAAE,CAAC,CAAC;AACZ,cAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC5B,gBAAA,GAAG,MAAM;gBACT,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA,CAAE;AACzE,aAAA,CAAC;AACJ,cAAE,SAAS;KACd;AACH;;MCLa,mBAAmB,CAAA;AAC9B,IAAA,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAuB;AACzC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AACjE,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9D;QACA,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,gBAAA,IAAI,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE;oBAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;gBAC9C;YACF;QACF;IACF;uGAhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC0BD,SAAS,gBAAgB,CAAC,MAA8C,EAAA;AACtE,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE;AACxB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KACpC,YAAY,CACV,GAAG,EACH,QAAQ,CAAC,MAAM,MAAM,EAAG,CAAC,GAAG,CAAC,CAAC,CAC/B,CACF;AACH;AACA,SAAS,iBAAiB,CAAC,OAA4B,EAAA;IACrD,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,EAAE;IACX;IACA,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAC9C,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAC1B;AACH;AACA,SAAS,yBAAyB,CAChC,UAAqD,EAAA;IAErD,IAAI,UAAU,EAAE,EAAE;QAChB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC1C,aAAA;SACF;IACH;AACA,IAAA,OAAO,EAAE;AACX;AACA,MAAM,QAAQ,GAAG,EAAE;MAEN,aAAa,CAAA;;IAExB,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;;AAGxD,IAAA,aAAa;AACb,IAAA,gBAAgB;AAChB,IAAA,iBAAiB;AAEjB,IAAA,kBAAkB;AAClB,IAAA,sBAAsB;AACtB,IAAA,eAAe;AACf,IAAA,qBAAqB;;AAErB,IAAA,uBAAuB;AACvB,IAAA,kBAAkB,CAAC,MAA8B,EAAA;AAC/C,QAAA,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,MACtC,SAAS,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC,CACjD;IACH;IACA,YAAY,CAAC,KAAwC,EAAE,KAAa,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;AACA;;;;AAIG;AACH,IAAA,WAAW;AAKX,IAAA,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,eAAe,CACb,IAA8B,EAC9B,gBAAkC,EAAA;;AAGlC,QAAA,IAAI,CAAC,kBAAkB,IAAI;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;;AAEzC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAEzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QACvC,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAK;gBACpB,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,MAAO,EAAE,IAAI,QAAQ;AACrD,YAAA,CAAC,CAAC;AACF,YAAA,UAAU,EAAE,QAAQ,CAAC,MAAK;gBACxB,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,UAAW,EAAE,IAAI,QAAQ;AACzD,YAAA,CAAC,CAAC;AACF,YAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAClE,MAAM,CAAC;AACL,kBAAE,QAAQ,CAAC,MAAK;oBACZ,IAAI,CAAC,cAAc,EAAE;oBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,MAAO,EAAE;AAC5D,gBAAA,CAAC;kBACD,SAAS,CACd;SACF;QACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,eAAe,CAAC,IAAW,CAAE;AAC/D,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;AAExC,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC9C,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AACpE,aAAA;AACD,YAAA,MAAM,EAAE,eAAe,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ;AAC9D,SAAA,CAAC;QACF,MAAM,aAAa,GAAG,yBAAyB,CAAC,eAAe,CAAC,UAAU,CAAC;AAC3E,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,IAAW,EAAE;AAChE,YAAA,eAAe,EAAE,iBAAiB;AAClC,YAAA,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC/D,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5C,gBAAA,GAAG,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC;AAC9C,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,GAAG,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;oBAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,QAAQ,EAAE;wBACR,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,KAAK,CAAC,CAAC;AAC3D,wBAAA,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,qBAAA;AACF,iBAAA,CAAC,CAAC;AACH,gBAAA,GAAG,aAAa;AACjB,aAAA;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,QAAQ;AACnD,QAAA,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CACjE,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/C;AACD,QAAA,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAK;YAC7B,gBAAgB,CAAC,KAAK,EAAE;YACxB,YAAY,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAClC,QAAA,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC1D,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,CAAC,IAA8B,EAAA;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,SAAS,CACvB,kBAAkB,EAClB,IAAI,CAAC,uBAAuB,EAAE,CAC/B;;QAED,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAExC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;aAAO;YACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAkB,CAAC;QACrD;IACF;uGAhIW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;AClDK,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AACvB,IAAA,KAAA;AAAtB,IAAA,WAAA,CAAsB,KAAkC,EAAA;AACtD,QAAA,KAAK,EAAE;QADa,IAAA,CAAA,KAAK,GAAL,KAAK;IAE3B;IAES,OAAO,GACd,IAA4C;AAE9C,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC5B;AAEA,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;IAC5C;AAEA,IAAA,IAAa,QAAQ,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC/B;AAEA,IAAA,IAAa,MAAM,GAAA;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;QAClC,OAAO,MAAM,IAAI,IAAI;IACvB;AAEA,IAAA,IAAa,QAAQ,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;IAC7B;AAEA,IAAA,IAAa,SAAS,GAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;IAC9B;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;IAES,iBAAiB,CAAC,QAAa,EAAA,EAAS;AACjD,IAAA,IAAa,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY;IAClC;AACA,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa;IACnC;AACA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;QAClC;AACA,QAAA,OAAO,KAAK;IACd;AACD;;ACzED,MAAM,kBAAkB,GAAa;AACnC,IAAA,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS;CAC1D;MAOY,qBAAqB,CAAA;AAChC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAgB;AACpC,IAAA,QAAQ,GAAG,MAAM,CAAyB,iBAAiB,CAAC;AAC5D,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpC,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzB;AACA,IAAA,WAAW;AAEX,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,WAAW,KAAK,IAAI,gBAAgB,CAAC,MAChD,IAAI,CAAC,YAAY,EAAE,CACpB;IACH;AAEA,IAAA,UAAU;IACV,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,IAAI;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,CACd;IACH;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB;uGA7BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,kBAAkB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGpB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACGK,MAAO,iBACX,SAAQ,aAAa,CAAA;;IAIrB,iBAAiB,GAAG,KAAK,EAA8B;IACvD,uBAAuB,GAAG,KAAK,EAA2B;IAC1D,wBAAwB,GAAG,KAAK,EAAuB;IACvD,yBAAyB,GAAG,KAAK,EAAY;;IAE7C,4BAA4B,GAAG,KAAK,EAAgB;;IAEpD,yBAAyB,GAAG,KAAK,EAA6B;IAC9D,2BAA2B,GACzB,KAAK,EAA2C;AAElD,IAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAA6B;AACpE,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAE5C,IAAA,SAAS,GAAG,QAAQ,CAAC,MACnB,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AAC/C,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AACzB,QAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;KACzB,CAAC,CAAC,CACJ;IACD,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,EAAE;AAC9D,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA,CAAC;AAEF,IAAA,cAAc;AAEd,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,IAAI,CAAC,cAAc,IAAI;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,SAAS;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,MAAM;QACpD,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAK;YACzB,SAAS,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AACjC,QAAA,CAAC;AACD,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,CAAC;AACF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ;aAC5B,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QACtD,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,IAAI,CAAC,sBAAsB;AACtC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,kBAAkB;AAC3B,oBAAA,QAAQ,EAAE,CAAC;AACZ,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClB,IAAA,CAAC,CAAC;AACF,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxD,QAAA,OAAO;AACL,cAAG;AACC,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;AACrC;cACrB,SAAS;AACf,IAAA,CAAC,CAAC;AACF,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC3D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACvD,QAAA,OAAO;AACL,cAAE,CAAC,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C,cAAE,gBAAgB,IAAI;AAC1B,IAAA,CAAC,CAAC;AAEF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChD,OAAO;AACL,YAAA,GAAG,MAAO;AACV,YAAA,IAAI,EAAE,MAAO,CAAC,IAAI,CAAC,SAAS;AAC5B,YAAA,MAAM,EAAE,MAAO,CAAC,IAAI,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,uBAAuB;AACpC,YAAA,UAAU,EAAE;kBACR,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACtB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;oBAC5B,IAAI,OAAO,EAAE;wBACX,OAAO;AACL,4BAAA,GAAG,IAAI;AACP,4BAAA,OAAO,EAAE,OAAO;yBACjB;oBACH;AACA,oBAAA,OAAO,IAAI;AACb,gBAAA,CAAC;AACH,kBAAE,SAAS;AACb,YAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;SACJ;AAC7B,IAAA,CAAC,CAAC;AACF,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACjD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,WAAW;QACpB;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,IAAI,GAA6B;AACrC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3B,eAAe;SAChB;AAED,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE;AAElC,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS;IACT,WAAW,GAAA;;AAET,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI;QACpC;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAC3C,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACpD;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnB;;AAGA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,IAAI,CAAC,kBAAkB,IAAI;IAC7B;uGAnJW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACjBD,SAAS,eAAe,CAAC,KAAU,EAAA;AACjC,IAAA,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAY,CAAC;AAC7C;AACM,SAAU,gBAAgB,CAC9B,GAAQ,EACR,QAAkB,EAAA;AAElB,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB;AAC/C,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe;IACrC,OAAO,CACL,IAIa,KAEb,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,SAAS,CAAC,EAAE;QAC7C;QACA,IAAI,UAAU,GAAG,KAAK;QACtB,MAAM,MAAM,GACV,CAAE,GAAW,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAC7B,GAAG,CAAC,CAAC,IAAI,KAAI;AACb,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpB,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE;YAC1B;AAAO,iBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,UAAU,GAAG,IAAI;AACjB,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE;YAC3B;YACA,MAAM,QAAQ,GAAG,IAAI;AACrB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACrD,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AACzD,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAa,CAAC;AAC/B,gBAAA,OAAO,MAAM;YACf;iBAAO,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzD,UAAU,GAAG,IAAI;AACjB,gBAAA,MAAM,QAAQ,GAAG,aAAa,CAAqB,IAAI,CAAE,EAAE,CAAC,IAAI,CAC9D,CAAC,KAAK,KAAI;AACR,oBAAA,MAAM,MAAM,GAAG;AACb,wBAAA,GAAG,QAAQ;AACX,wBAAA,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK;qBACrD;AACR,oBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACxB,oBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACpB,oBAAA,OAAO,MAAM;AACf,gBAAA,CAAC,CACF;AACD,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3B,gBAAA,OAAO,QAAQ;YACjB;iBAAO;AACL,gBAAA,OAAO,QAAQ;YACjB;AACF,QAAA,CAAC,CAAC;QACF,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,QAAQ,CAAoB;gBACjC,MAAM,EAAE,aAAa,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAQ;AAClE,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC;QACJ;aAAO;YACL,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAS,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAQ,CAAC;aACjE;QACH;AACF,IAAA,CAAC,CAAC;AACN;;AC/DM,MAAO,kBAAmB,SAAQ,WAA2B,CAAA;AACjE,IAAA,aAAa,GAAiB,MAAM,CAAC,oBAAoB,CAAQ;IACxD,kBAAkB,CACzB,SAAyB,EACzB,MAAiC,EAAA;QAEjC,MAAM,KAAK,GAAG,SAAS;AACvB,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;AAC3B,QAAA,IAAI,sBAA4D;AAChE,QAAA,IAAI,MAAM;AACV,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AACxB,aAAA,0BAAuD;QAE1D,IAAI,IAAI,EAAE;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC3C,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM;AACtB,YAAA,sBAAsB,GAAG,MAAM,CAAC,aAAa;QAC/C;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CACjC,CAAC,sBAAsB,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EACtD,IAAI,EACJ,aAAa,EAAE,UAAU,IAAI,gCAAgC,CAAC,UAAU,CACzE;QACD,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,UAAU,EAAE,UAAU;SACvB;IACH;AAEA,IAAA,iBAAiB,CAAC,IAAqD,EAAA;AACrE,QAAA,IAAI,MAAM;AACV,QAAA,IAAI,aAAa;;AAEjB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAA,CAAE,CAAC;YAC/B;YACA,aAAa,GAAG,MAAM;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC9B,gBAAA,MAAM,GAAG;AACP,oBAAA,GAAG,MAAM;iBACoB;YACjC;QACF;aAAO;;AAEL,YAAA,MAAM,GAAG,EAAE,IAAI,EAAgC;QACjD;QACA,OAAO;YACL,MAAM;YACN,aAAa;SACd;IACH;uGArDW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACVK,MAAO,cAAe,SAAQ,gBAGnC,CAAA;AAEC,IAAA,UAAU;AACX;;MCHY,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAoC,EAAK,EAAE,GAAG,IAAmB,EAAA;AACxE,QAAA,OAAO,EAAE,CAAC,GAAG,IAAI,CAAkB;IACrC;uGAHW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACqCD,MAAM,qBAAqB,GAAG;AAC5B,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,MAAM,EAAE,cAAqB;CAC9B;MAQY,UAAU,CAAA;AACrB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAEpB;AACH,IAAA,KAAK,GAAG,KAAK,CAAM,SAAS,CAAC;IAC7B,WAAW,GAAG,MAAM,EAAO;IAC3B,OAAO,GAAG,KAAK,EAKZ;AACH,IAAA,MAAM,GAAG,QAAQ,CACf,MACE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,OAEf,CAChB;AAED,IAAA,OAAO;AACP,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACxC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AAEA,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,CAAC,MAAM,EAAE;QACb,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,IAAA,mBAAmB;AACnB,IAAA,cAAc,GAAG,MAAM,CAAwC,SAAS,CAAC;AACzE,IAAA,cAAc;IAEd,YAAY,GAAA;QACV,IAAI,CAAC,MAAM,EAAE;;QAEb,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;AACpE,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;QACtC,MAAM,MAAM,GAAG,OAAO,CAA4B,IAAI,CAAC,MAAM,EAAS,EAAE;AACtE,YAAA,GAAG,qBAAqB;YACxB,GAAG,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,iBAAiB,EAAE,CAAC,EAAE,KAAI;gBACxB,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AACzC,oBAAA,EAAE,EAAE;AACN,gBAAA,CAAC,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,QAAA,OAAO,MAAM;IACf;IACA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;QACtC;IACF;AAEA,IAAA,YAAY,CAAC,KAAsC,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAG;AACrC,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;;AAEvB,YAAA,MAAM,GAAG,GAAG,UAAU,CACpB,IAAI,CAAC,KAAK,EAAE,EACZ,MAAO,CAAC,IAAI,CAAC,OAAO;;AAEpB,YAAA,IAAI,CAAC,SAAS,EACd,CAAC,KAAK,KAAI;gBACR,SAAS,CAAC,MAAK;oBACb,IAAI,MAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE;AAC1C,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CACF;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,MAAK;gBACzB,GAAG,CAAC,OAAO,EAAE;AACb,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AACjC,YAAA,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC;IACF;AAEA,IAAA,gBAAgB,GAAG,CACjB,MAA2C,EAE3C,gBAAkC,KAElC,QAAQ,CAAC,OAAO;AACd,QAAA,GAAG,MAAM,EAAE;QACX,gBAAgB;AACjB,KAAA,CAAC,CAAC;IAEL,iBAAiB,GAAG,gBAAgB,CAClC,IAAI,EACJ,IAAI,CAAC,SAAS,CACf;;IAED,eAAe,GAAG,gBAAgB,CAChC,KAAK,EACL,IAAI,CAAC,SAAS,CACf;AAED,IAAA,WAAW,GAAG,CAAC,KAAgC,KAC7C,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAA,YAAY,CAAC,KAAgC,EAAA;AAC3C,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;AAC1D,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,KAAK,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;iBAAO;AACL,gBAAA,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzE;QACF;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM;QACvD;IACF;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,IAAI;IACzB;uGAhIW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,igBCrDvB,qlDA0CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMY,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,6CAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAK5C,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd,CAAC,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAA,UAAA,EAE5C,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qlDAAA,EAAA;;;AEnC3C,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AACtD,IAAA,oBAAoB,GAAG,SAAS,CAAC,gBAAgB,EAAE;AACjD,QAAA,IAAI,EAAE,gBAAgB;AACvB,KAAA,CAAC;AACF,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAChD,IAAA,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC1C,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxB,eAAe,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAClC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,oBAAoB,EAAG,CAC7B;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;IACxB;uGApBW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,iJAExB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAFb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACZM,MAAM,SAAS,GAAGA;;ACOnB,SAAU,aAAa,CAAI,KAA0B,EAAA;AACzD,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,KAAK,CAAC,UAAU,GAAG,KAAK;AAC1B,IAAA,CAAC,CAAC;AACJ;AACM,SAAU,eAAe,CAAI,KAA0B,EAAA;AAC3D,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,KAAK,CAAC,UAAU,KAAK,EAAE;QACvB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACjC,IAAA,CAAC,CAAC;AACJ;AACM,SAAU,mBAAmB,CACjC,EAEyE,EAAA;AAEzE,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,YAAY,CACV;AACE,YAAA,aAAa,EAAE,CAAC,KAAK,KAAI;AACvB,gBAAA,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAC/B,gBAAA,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;AAC3B,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM;AAC/B,gBAAA,IAAI,OAAO,GAAG,MAAM,CAAsB,EAAE,CAAC;gBAC7C,IAAI,MAAM,EAAE;AACV,oBAAA,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,GAAG,KAAI;AACX,wBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AACpB,wBAAA,OAAO,GAAG;AACZ,oBAAA,CAAC,EACD,EAAyB,CAC1B,CACF;AACD,oBAAA,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC5C;AACA,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU;AACtC,gBAAA,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM;AACpC,oBAAA,GAAG,aAAa,EAAE;AAClB,oBAAA,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AAClC,iBAAA,CAAC;YACJ,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACtB,KAAK,CACN;AACH,IAAA,CAAC,CAAC;AACJ;;MCtDa,WAAW,CAAA;IACb,YAAY,GAAQ,SAAS;IACtC,MAAM,GAAG,MAAM,CAAI,IAAI,CAAC,YAAY,IAAK,SAAiB,CAAC;AAEjD,IAAA,SAAS;AACnB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IACnC;AACA,IAAA,QAAQ;AACR,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;IACA,aAAa,GAAA;QACX,IAAI,CAAC,QAAS,EAAE;IAClB;AACA,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC;AACD;;AC/BD;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -30,7 +30,6 @@ type DirectiveConfig<T = any> = {
30
30
  inputs?: Signal<Record<string, any>>;
31
31
  outputs?: CoreRawViewOutputs;
32
32
  model?: Record<string, WritableSignal<any>>;
33
- selector?: string;
34
33
  attributes?: Signal<CoreRawViewAttributes | undefined>;
35
34
  };
36
35
 
@@ -42,7 +41,6 @@ interface DynamicComponentConfig {
42
41
  type: Type<any>;
43
42
  module?: Type<any>;
44
43
  attributes: Signal<CoreRawViewAttributes | undefined>;
45
- selector?: string;
46
44
  inputs: Signal<CoreRawViewInputs | undefined>;
47
45
  directives?: DirectiveConfig[];
48
46
  outputs?: CoreRawViewOutputs;
@@ -72,12 +70,10 @@ type NgDirectiveConfig = Omit<DirectiveConfig, 'inputs' | 'outputs'> & {
72
70
  type PiDefaultRawViewFieldConfig = Pick<NgSchemaHandle, 'inputs' | 'outputs' | 'wrappers' | 'formConfig' | 'renderConfig' | 'props' | 'directives' | 'attributes'>;
73
71
  type NgRawComponentDefine = Omit<CoreRawComponentDefine, 'type'> & {
74
72
  type: string | Type<any> | LazyImport<Type<any>> | NgComponentDefine | LazyImport<NgComponentDefine> | LazyMarkType<Type<any>> | LazyMarkType<NgComponentDefine>;
75
- selector?: string;
76
73
  };
77
74
  /** 解析后但是未加载 */
78
75
  type NgResolvedComponentDefine1 = Omit<CoreResolvedComponentDefine, 'type'> & {
79
76
  type: Type<any> | LazyImport<Type<any>> | NgComponentDefine | LazyImport<NgComponentDefine> | LazyMarkType<Type<any>> | LazyMarkType<NgComponentDefine>;
80
- selector?: string;
81
77
  };
82
78
  type PiResolvedViewFieldConfig = PiResolvedCommonViewFieldConfig<() => PiResolvedViewFieldConfig, NgResolvedComponentDefine1> & {
83
79
  directives?: WritableSignal<NgDirectiveConfig[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piying/view-angular",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "Piying view For Angular;Valibot to Component",
5
5
  "homepage": "https://piying-org.github.io/website/docs/client/intro",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "valibot": "^1.1.0"
39
39
  },
40
40
  "dependencies": {
41
- "@piying/view-angular-core": "^1.6.0",
41
+ "@piying/view-angular-core": "^1.6.1",
42
42
  "tslib": "^2.3.0"
43
43
  },
44
44
  "sideEffects": false,