xt-plugin-default 0.6.3 → 0.6.4
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, computed, ChangeDetectionStrategy, Component, Injector, signal, runInInjectionContext, output, linkedSignal } from '@angular/core';
|
|
2
|
+
import { inject, computed, ChangeDetectionStrategy, Component, Injector, signal, runInInjectionContext, output, linkedSignal, effect, untracked } from '@angular/core';
|
|
3
3
|
import { XtCompositeComponent, XtResolverService, XtRenderSubComponent, XtSimpleComponent, XtBaseContext, XtPluginRegistry } from 'xt-components';
|
|
4
4
|
import { Panel } from 'primeng/panel';
|
|
5
5
|
import * as i1 from 'primeng/table';
|
|
@@ -222,31 +222,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
222
222
|
|
|
223
223
|
class ManyToOneRefComponent extends XtSimpleComponent {
|
|
224
224
|
constructor() {
|
|
225
|
-
super(
|
|
225
|
+
super();
|
|
226
226
|
this.resolver = inject(XtResolverService);
|
|
227
227
|
this.filteredReferences = signal([], ...(ngDevMode ? [{ debugName: "filteredReferences" }] : []));
|
|
228
228
|
this.allReferences = [];
|
|
229
229
|
this.allSourceReferences = [];
|
|
230
230
|
this.allReferencesLoaded = false;
|
|
231
231
|
this.typeHandler = null;
|
|
232
|
+
this.formSubscription = null;
|
|
233
|
+
this.formControlValue = signal(null, ...(ngDevMode ? [{ debugName: "formControlValue" }] : []));
|
|
234
|
+
this.contextChangeEffect = effect(() => {
|
|
235
|
+
// Whenever the context changes, we need to update the values displayed
|
|
236
|
+
const context = this.context();
|
|
237
|
+
const value = context.formControlValue();
|
|
238
|
+
untracked(() => {
|
|
239
|
+
this.typeHandler = this.resolver.findTypeHandlerOf(context, undefined, value)?.handler ?? null;
|
|
240
|
+
firstValueFrom(this.resolver.findPossibleReferences(context)).then((references) => {
|
|
241
|
+
this.allReferences = references.map((item) => {
|
|
242
|
+
this.allSourceReferences.push(item); // Store the original value
|
|
243
|
+
return this.withDisplayLabel(item);
|
|
244
|
+
});
|
|
245
|
+
this.formControlValue.set(value);
|
|
246
|
+
this.allReferencesLoaded = true;
|
|
247
|
+
});
|
|
248
|
+
// Now listen to changes in the form and update the selectedReference accordingly
|
|
249
|
+
const form = this.formGroup();
|
|
250
|
+
if (form != null) {
|
|
251
|
+
if (this.formSubscription != null) {
|
|
252
|
+
this.formSubscription.unsubscribe();
|
|
253
|
+
}
|
|
254
|
+
this.formSubscription = (context.formGroup().valueChanges.subscribe({
|
|
255
|
+
next: (newValue) => {
|
|
256
|
+
const context = this.context();
|
|
257
|
+
this.formControlValue.set(context.formControlValue());
|
|
258
|
+
}
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}, ...(ngDevMode ? [{ debugName: "contextChangeEffect" }] : []));
|
|
232
263
|
/**
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this.selectedReference =
|
|
264
|
+
* We have to go through a ngModel for the selection as we need to calculate the displayedLabel
|
|
265
|
+
*/
|
|
266
|
+
this.selectedReference = linkedSignal(() => {
|
|
267
|
+
const toSet = this.formControlValue();
|
|
268
|
+
return this.findReferenceOf(toSet);
|
|
269
|
+
}, ...(ngDevMode ? [{ debugName: "selectedReference" }] : []));
|
|
236
270
|
}
|
|
237
271
|
ngOnInit() {
|
|
238
272
|
super.ngOnInit();
|
|
239
|
-
const context = this.context();
|
|
240
|
-
const value = context.formControlValue();
|
|
241
|
-
this.typeHandler = this.resolver.findTypeHandlerOf(context, undefined, value)?.handler ?? null;
|
|
242
|
-
firstValueFrom(this.resolver.findPossibleReferences(context)).then((references) => {
|
|
243
|
-
this.allReferences = references.map((item) => {
|
|
244
|
-
this.allSourceReferences.push(item); // Store the original value
|
|
245
|
-
return this.withDisplayLabel(item);
|
|
246
|
-
});
|
|
247
|
-
this.allReferencesLoaded = true;
|
|
248
|
-
});
|
|
249
|
-
this.selectedReference.set(this.withDisplayLabel(value));
|
|
250
273
|
}
|
|
251
274
|
withDisplayLabel(item) {
|
|
252
275
|
if (item == null)
|
|
@@ -292,7 +315,6 @@ class ManyToOneRefComponent extends XtSimpleComponent {
|
|
|
292
315
|
return ret;
|
|
293
316
|
}
|
|
294
317
|
changeSelection($event) {
|
|
295
|
-
this.selectedReference.set($event);
|
|
296
318
|
if ($event == null) {
|
|
297
319
|
this.context().setFormValue($event, true);
|
|
298
320
|
}
|
|
@@ -300,9 +322,19 @@ class ManyToOneRefComponent extends XtSimpleComponent {
|
|
|
300
322
|
const ref = this.allSourceReferences.find((ref) => ref._id == $event._id);
|
|
301
323
|
this.context().setFormValue(ref, true);
|
|
302
324
|
}
|
|
325
|
+
this.selectedReference.set($event);
|
|
326
|
+
}
|
|
327
|
+
ngOnDestroy() {
|
|
328
|
+
this.formSubscription?.unsubscribe();
|
|
329
|
+
}
|
|
330
|
+
findReferenceOf(value) {
|
|
331
|
+
if (value == null)
|
|
332
|
+
return null;
|
|
333
|
+
const ref = this.allReferences.find((ref) => ref._id == value._id);
|
|
334
|
+
return ref;
|
|
303
335
|
}
|
|
304
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ManyToOneRefComponent, deps:
|
|
305
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: ManyToOneRefComponent, isStandalone: true, selector: "xt-many-to-one-ref", usesInheritance: true, ngImport: i0, template: "@if (isInForm()) {\n <ng-container
|
|
336
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ManyToOneRefComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
337
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: ManyToOneRefComponent, isStandalone: true, selector: "xt-many-to-one-ref", usesInheritance: true, ngImport: i0, template: "@if (isInForm()) {\n <ng-container>\n <p-autocomplete [ngModel]=\"selectedReference()\" (ngModelChange)=\"changeSelection ($event)\" [suggestions]=\"filteredReferences()\" (completeMethod)=\"filterReferences($event)\" [dropdown]=\"true\" [fluid]=\"true\" optionLabel=\"displayLabel\">\n <ng-template let-ref #item>\n <div class=\"flex items-center gap-2\">\n <div><xt-render-sub [context]=\"contextForReference(ref)\"></xt-render-sub></div>\n </div>\n </ng-template>\n <ng-template #header>\n <div class=\"font-medium px-3 py-2\">Available {{formControlName()}}</div>\n </ng-template>\n </p-autocomplete>\n </ng-container>\n} @else {\n <span class=\"text-red-800\">Only uses ManyToOne component when editing reference.</span>\n}\n", styles: [""], dependencies: [{ kind: "component", type: AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: XtRenderSubComponent, selector: "xt-render-sub", inputs: ["context", "componentType", "inputs"], outputs: ["outputs"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
306
338
|
}
|
|
307
339
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ManyToOneRefComponent, decorators: [{
|
|
308
340
|
type: Component,
|
|
@@ -311,8 +343,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
311
343
|
ReactiveFormsModule,
|
|
312
344
|
XtRenderSubComponent,
|
|
313
345
|
FormsModule
|
|
314
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isInForm()) {\n <ng-container
|
|
315
|
-
}] });
|
|
346
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isInForm()) {\n <ng-container>\n <p-autocomplete [ngModel]=\"selectedReference()\" (ngModelChange)=\"changeSelection ($event)\" [suggestions]=\"filteredReferences()\" (completeMethod)=\"filterReferences($event)\" [dropdown]=\"true\" [fluid]=\"true\" optionLabel=\"displayLabel\">\n <ng-template let-ref #item>\n <div class=\"flex items-center gap-2\">\n <div><xt-render-sub [context]=\"contextForReference(ref)\"></xt-render-sub></div>\n </div>\n </ng-template>\n <ng-template #header>\n <div class=\"font-medium px-3 py-2\">Available {{formControlName()}}</div>\n </ng-template>\n </p-autocomplete>\n </ng-container>\n} @else {\n <span class=\"text-red-800\">Only uses ManyToOne component when editing reference.</span>\n}\n" }]
|
|
347
|
+
}], ctorParameters: () => [] });
|
|
316
348
|
|
|
317
349
|
function registerDefaultPlugin(resolverService) {
|
|
318
350
|
const pluginName = "Plugin Default";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xt-plugin-default.mjs","sources":["../../../projects/default/src/lib/object/default-object.component.ts","../../../projects/default/src/lib/object/default-object.component.html","../../../projects/default/src/lib/primitive/default-primitive.component.ts","../../../projects/default/src/lib/primitive/default-primitive.component.html","../../../projects/default/src/lib/object-set/default-object-set.component.ts","../../../projects/default/src/lib/object-set/default-object-set.component.html","../../../projects/default/src/lib/reference/many-to-one-ref.component.ts","../../../projects/default/src/lib/reference/many-to-one-ref.component.html","../../../projects/default/src/lib/register.ts","../../../projects/default/src/public-api.ts","../../../projects/default/src/xt-plugin-default.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { XtCompositeComponent, XtContext, XtRenderSubComponent, XtResolverService } from 'xt-components';\nimport { Panel } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'xt-default-object',\n imports: [XtRenderSubComponent, Panel, TableModule],\n templateUrl: './default-object.component.html',\n styleUrl: './default-object.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultObjectComponent extends XtCompositeComponent {\n\n resolver = inject(XtResolverService);\n\n subNames() :string[]\n {\n const value = this.context().value();\n const ret= this.resolver.listSubNamesOf(this.context(), value);\n return ret;\n }\n\n override subContext (subName:string): XtContext<any> {\n return super.subContext(subName);\n }\n\n displayInline= computed (() => {\n const display = this.context().displayMode;\n\n return display=='INLINE_VIEW' || display=='LIST_VIEW';\n });\n\n canCalculateDisplayString = computed(() => {\n return this.resolver.findTypeHandlerOf(this.context())?.handler?.isDisplayTemplateSet() ?? false;\n });\n\n displayString = computed(() => {\n return this.resolver.findTypeHandlerOf(this.context())?.handler?.stringToDisplay(this.context().value());\n });\n}\n","@let allSubNames=subNames();\n\n@if (displayInline()) {\n @if (canCalculateDisplayString()) {\n {{displayString()}}\n }@else {\n <p-table [columns]=\"allSubNames\" [value]=\"[{}]\">\n <ng-template #header>\n <tr>\n @for (subName of allSubNames; track subName) {\n <th>{{subName}}</th>\n }\n </tr>\n </ng-template>\n <ng-template #body>\n <tr>\n @for (subName of allSubNames; track subName) {\n <td><xt-render-sub [context]=\"subContext(subName)\"></xt-render-sub></td>\n }\n </tr>\n </ng-template>\n </p-table>\n }\n} @else {\n <p-panel>\n @for (subName of allSubNames; track subName) {\n <div class=\"flex flex-nowrap gap-3\">\n <div class=\"flex-none\">{{subName}}</div>\n <div class=\"flex-auto\"><xt-render-sub [context]=\"subContext(subName)\"></xt-render-sub></div>\n </div>\n }\n </p-panel>\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Injector,\n OnDestroy,\n runInInjectionContext,\n signal\n} from '@angular/core';\nimport { XtSimpleComponent } from 'xt-components';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputText } from 'primeng/inputtext';\nimport { Checkbox } from 'primeng/checkbox';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { DatePicker } from 'primeng/datepicker';\nimport { Subscription } from 'rxjs';\nimport { DatePipe, DecimalPipe } from '@angular/common';\n\n/**\n * Displays / edits primitive types (string, numeric) using text inputs to ensure at least something is managed.\n */\n@Component({\n selector: 'xt-default-primitive',\n imports: [\n ReactiveFormsModule,\n InputText,\n Checkbox,\n InputNumber,\n DatePicker,\n DecimalPipe,\n FormsModule,\n DatePipe\n ],\n templateUrl: './default-primitive.component.html',\n styleUrl: './default-primitive.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultPrimitiveComponent extends XtSimpleComponent implements OnDestroy{\n\n injector = inject(Injector);\n\n recalculate = signal<boolean> (false);\n valueSubscription: Subscription|null = null;\n\n /**\n * This function tries to guess the type of value to be handled\n */\n typeOf = computed (() => {\n this.recalculate(); // In case recompute is forced\n if(this.context().valueType == null) {\n // The type has not been set, so let's see if we can guess it from the value\n const val = this.context().value(); // We don't use this.getValue(), as it returns a cached value\n if (val == null) { // We really can't know the type\n if (this.valueSubscription==null) {\n // Let's make sure a change of the value is taken into account\n runInInjectionContext(this.injector, () => {\n this.valueSubscription=this.formControl().valueChanges.subscribe({\n next: () => {\n this.recalculate.update((val) => !val);\n }\n });\n });\n }\n return val;\n } else {\n const ret= typeof val;\n if (ret != 'object') {\n this.context().valueType = typeof val;\n return ret;\n }else if (val instanceof Date) {\n this.context().valueType = 'date';\n return 'date';\n } else {\n throw new Error('Primitive Component used to display a non primitive type '+ret);\n }\n }\n } else {\n return this.context().valueType;\n }\n });\n\n ngOnDestroy(): void {\n if (this.valueSubscription!=null) {\n this.valueSubscription.unsubscribe();\n }\n }\n}\n","@if (isInForm() ) {\n <ng-container [formGroup]=\"formGroup()\">\n @switch (typeOf ()) {\n @case (\"number\") {\n <p-inputnumber mode=\"decimal\" [minFractionDigits]=\"0\" [maxFractionDigits]=\"2\" [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\"></p-inputnumber>\n }\n @case (\"bigint\") {\n <p-inputnumber [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\"></p-inputnumber>\n }\n @case (\"boolean\") {\n <p-checkbox [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [binary]=\"true\" />\n }\n @case (\"time\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [timeOnly]=\"true\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\" />\n }\n @case (\"date\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [showTime]=\"false\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\"/>\n }\n @case (\"date-time\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [showTime]=\"true\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\" />\n }\n @default {\n <input type=\"text\" pInputText [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\" />\n }\n }\n </ng-container>\n} @else {\n @let value=displayValue();\n @switch (typeOf ()) {\n @case (\"number\") {\n {{value | number}}\n }\n @case (\"bigint\") {\n {{value | number}}\n }\n @case (\"boolean\") {\n <p-checkbox [binary]=\"true\" [readonly]=\"true\" [disabled]=\"true\" [ngModel]=\"value\" />\n }\n @case (\"time\") {\n {{ value | date: 'mediumTime'}}\n }\n @case (\"date\") {\n {{ value | date: 'mediumDate'}}\n }\n @case (\"date-time\") {\n {{ value | date: 'medium'}}\n }\n @default {\n {{ value }}\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, linkedSignal, output, Signal } from '@angular/core';\nimport { StoreSupport, XtCompositeComponent, XtContext, XtRenderSubComponent } from 'xt-components';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'lib-default-object-set',\n imports: [XtRenderSubComponent, TableModule],\n templateUrl: './default-object-set.component.html',\n styleUrl: './default-object-set.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultObjectSetComponent<T> extends XtCompositeComponent<T[]> {\n selected= output<T>();\n\n debugValue=false;\n debugSelectedElement:Signal<boolean> = computed<boolean>(() => {\n console.debug(\"Selected element\", this.selectedElement());\n this.debugValue=!this.debugValue;\n return this.debugValue;\n });\n\n valueSet = computed(() => {\n const ret = this.context().value();\n if (Array.isArray(ret)) {\n return ret as T[];\n } else if (ret!=null) {\n return [ret] as T[];\n } else return [];\n });\n\n selectedElement = linkedSignal<T[]|null, T|null> ({\n source: this.valueSet,\n computation: (source, previous) => {\n // console.log(\"Triggering select with current \"+source?.length+\" and previous \"+previous?.source?.length);\n if ((source!=null) && (previous?.source!=null)) {\n // console.log(\"Recalculating selection\");\n if( previous?.value!=null) {\n // console.log(\"Trying to reselect existing element\");\n // Otherwise reselect the element if still there\n return source.find((toCheck) => {\n if ((toCheck as any)._id!=null) {\n const ret= (toCheck as any)._id==(previous.value as any)._id;\n // if (ret) console.log(\"Found existing element to reselect\");\n return ret;\n } else {\n // Without identity key, just compare the elements\n const ret= toCheck===previous.value;\n return ret;\n }\n })??null;\n }\n }\n// console.log(\"No selection\");\n return null;\n }\n });\n\n subNames = computed(() => {\n const ret = this.resolverService.listSubNamesOf(this.context(), this.valueSet());\n return ret;\n });\n\n elementSetContext(elementIndex: number): XtContext<any> {\n this.formGroupIfAny();\n\n const ret= this.context().elementSetContext(elementIndex);\n /* this.resolverService.loadAllReferencesForContext(ret, StoreSupport.getStoreManager()).then(() => {\n console.debug(\"Resolved all references for element \"+elementIndex+ ' of type '+this.context().valueType);\n } );*/\n return ret;\n }\n\n subElementContextForName(subElementContext: XtContext<any>, subName: string, subType?: string): XtContext<any> {\n return subElementContext.subContext(subName, subType, this.resolverService?.typeResolver);\n }\n\n selectionChange(newElement: any) {\n this.selectedElement.set(newElement);\n this.selected.emit(newElement );\n }\n\n override setupInputOutput () {\n this.outputsObject.valueSelected=this.selected;\n }\n}\n","@let allSubNames=subNames();\n<p-table [columns]=\"allSubNames\" [scrollable]=\"true\" scrollHeight=\"flex\" [value]=\"valueSet()\" selectionMode=\"single\" [selection]=\"selectedElement()\" (selectionChange)=\"selectionChange($event)\">\n <ng-template #header>\n <tr>\n @for (subName of allSubNames; track subName) {\n <th>{{subName}}</th>\n }\n </tr>\n </ng-template>\n <ng-template #body let-element let-eltIndex='rowIndex'>\n @let eltContext=elementSetContext(eltIndex);\n <tr [pSelectableRow]=\"element\">\n @for (subName of allSubNames; track subName) {\n @let subEltContext=subElementContextForName(eltContext, subName);\n <td><xt-render-sub [context]=\"subEltContext\"></xt-render-sub></td>\n }\n </tr>\n </ng-template>\n</p-table>\n","import { ChangeDetectionStrategy, Component, inject, OnInit, signal } from '@angular/core';\nimport { XtBaseContext, XtContext, XtRenderSubComponent, XtResolverService, XtSimpleComponent } from 'xt-components';\nimport { AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { XtTypeHandler, XtTypeReference } from 'xt-type';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'xt-many-to-one-ref',\n imports: [\n AutoComplete,\n ReactiveFormsModule,\n XtRenderSubComponent,\n FormsModule\n ],\n templateUrl: './many-to-one-ref.component.html',\n styleUrl: './many-to-one-ref.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManyToOneRefComponent extends XtSimpleComponent implements OnInit{\n resolver = inject(XtResolverService);\n filteredReferences=signal<any[]>([]);\n\n allReferences: any[] = [];\n allSourceReferences: any[] = [];\n allReferencesLoaded = false;\n\n typeHandler:XtTypeHandler<any>|null=null;\n\n /**\n * We have to go through a ngModel for the selection as we need to calculate the displayedLabel\n */\n selectedReference= signal<any>(null);\n\n override ngOnInit(): void {\n super.ngOnInit();\n const context=this.context();\n const value=context.formControlValue();\n\n this.typeHandler =this.resolver.findTypeHandlerOf(context, undefined, value)?.handler??null;\n firstValueFrom(this.resolver.findPossibleReferences(context)).then((references: any[]) => {\n this.allReferences = references.map((item) => {\n this.allSourceReferences.push(item); // Store the original value\n return this.withDisplayLabel(item);\n });\n this.allReferencesLoaded=true;\n });\n this.selectedReference.set(this.withDisplayLabel(value));\n }\n\n withDisplayLabel(item:any):any {\n if (item==null) return item;\n let displayLabel=this.typeHandler?.stringToDisplay(item);\n if( displayLabel==null) {\n displayLabel=item._id;\n }\n return { displayLabel, ...item};\n }\n\n filterReferences($event:AutoCompleteCompleteEvent):void {\n const filterValue = $event.query;\n const refInfo = this.context().reference;\n if( refInfo!=null) {\n if (this.allReferencesLoaded) {\n this.filteredReferences.set(this.filterPossibleReferences(refInfo, filterValue));\n }\n }\n }\n\n protected filterPossibleReferences (refInfo:XtTypeReference, toSearch:string ): any[] {\n if ((toSearch==null) || (toSearch.length==0)) {\n return new Array(...this.allReferences);\n } else {\n const lowerSearch=toSearch.toLowerCase();\n return this.allReferences.filter((entity) => {\n const targetText=entity[refInfo.field];\n if (typeof targetText=='string') {\n return targetText.toLowerCase().includes(lowerSearch);\n } else {\n // Todo: Support filtering of anything else than string\n return true;\n }\n });\n }\n }\n\n contextForReference(ref:any):XtContext<any> {\n const thisContext=this.context() as XtBaseContext<any>;\n const ret = new XtBaseContext('INLINE_VIEW');\n ret.setDisplayValue(ref);\n ret.valueType=thisContext.reference?.toType;\n return ret;\n }\n\n changeSelection($event: any) {\n this.selectedReference.set($event);\n if( $event == null) {\n this.context().setFormValue($event,true);\n }else {\n const ref=this.allSourceReferences.find((ref) => ref._id==$event._id);\n this.context().setFormValue(ref,true);\n }\n }\n\n}\n","@if (isInForm()) {\n <ng-container [formGroup]=\"formGroup()\">\n <p-autocomplete [ngModel]=\"selectedReference()\" (ngModelChange)=\"changeSelection ($event)\" [ngModelOptions]=\"{standalone:true}\" [suggestions]=\"filteredReferences()\" (completeMethod)=\"filterReferences($event)\" [dropdown]=\"true\" [fluid]=\"true\" optionLabel=\"displayLabel\">\n <ng-template let-ref #item>\n <div class=\"flex items-center gap-2\">\n <div><xt-render-sub [context]=\"contextForReference(ref)\"></xt-render-sub></div>\n </div>\n </ng-template>\n <ng-template #header>\n <div class=\"font-medium px-3 py-2\">Available {{formControlName()}}</div>\n </ng-template>\n </p-autocomplete>\n </ng-container>\n} @else {\n <span class=\"text-red-800\">Only uses ManyToOne component when editing reference.</span>\n}\n","import { XtPluginRegistry, XtResolverService } from 'xt-components';\nimport { DefaultPrimitiveComponent } from './primitive/default-primitive.component';\nimport { DefaultObjectComponent } from './object/default-object.component';\nimport { DefaultObjectSetComponent } from './object-set/default-object-set.component';\nimport { ManyToOneRefComponent } from './reference/many-to-one-ref.component';\n\nexport function registerDefaultPlugin (resolverService:XtResolverService):boolean {\n const pluginName = \"Plugin Default\";\n console.info ('Registering ' +pluginName);\n resolverService.registerPlugin ({\n name:'PluginDefault',\n components: [\n {\n componentName:'DefaultPrimitive',\n componentClass:DefaultPrimitiveComponent,\n typesHandled: [XtPluginRegistry.ANY_PRIMITIVE_TYPE, 'string', 'number', 'boolean', 'date', 'time', 'date-time'],\n },{\n componentName:'DefaultObject',\n componentClass:DefaultObjectComponent,\n typesHandled: [XtPluginRegistry.ANY_OBJECT_TYPE]\n },{\n componentName:'DefaultObjectSet',\n componentClass:DefaultObjectSetComponent,\n typesHandled: [XtPluginRegistry.ANY_OBJECT_SET],\n outputs: ['valueSelected']\n },{\n componentName:'ManyToOneReference',\n componentClass:ManyToOneRefComponent,\n typesHandled: [XtPluginRegistry.ANY_SINGLE_REFERENCE]\n }\n ]\n });\n return true;\n}\n","/*\n * Public API Surface of default\n */\n\nexport * from './lib/object/default-object.component';\nexport * from './lib/primitive/default-primitive.component';\nexport * from './lib/object-set/default-object-set.component';\nexport * from './lib/register';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xt-plugin-default.mjs","sources":["../../../projects/default/src/lib/object/default-object.component.ts","../../../projects/default/src/lib/object/default-object.component.html","../../../projects/default/src/lib/primitive/default-primitive.component.ts","../../../projects/default/src/lib/primitive/default-primitive.component.html","../../../projects/default/src/lib/object-set/default-object-set.component.ts","../../../projects/default/src/lib/object-set/default-object-set.component.html","../../../projects/default/src/lib/reference/many-to-one-ref.component.ts","../../../projects/default/src/lib/reference/many-to-one-ref.component.html","../../../projects/default/src/lib/register.ts","../../../projects/default/src/public-api.ts","../../../projects/default/src/xt-plugin-default.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { XtCompositeComponent, XtContext, XtRenderSubComponent, XtResolverService } from 'xt-components';\nimport { Panel } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'xt-default-object',\n imports: [XtRenderSubComponent, Panel, TableModule],\n templateUrl: './default-object.component.html',\n styleUrl: './default-object.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultObjectComponent extends XtCompositeComponent {\n\n resolver = inject(XtResolverService);\n\n subNames() :string[]\n {\n const value = this.context().value();\n const ret= this.resolver.listSubNamesOf(this.context(), value);\n return ret;\n }\n\n override subContext (subName:string): XtContext<any> {\n return super.subContext(subName);\n }\n\n displayInline= computed (() => {\n const display = this.context().displayMode;\n\n return display=='INLINE_VIEW' || display=='LIST_VIEW';\n });\n\n canCalculateDisplayString = computed(() => {\n return this.resolver.findTypeHandlerOf(this.context())?.handler?.isDisplayTemplateSet() ?? false;\n });\n\n displayString = computed(() => {\n return this.resolver.findTypeHandlerOf(this.context())?.handler?.stringToDisplay(this.context().value());\n });\n}\n","@let allSubNames=subNames();\n\n@if (displayInline()) {\n @if (canCalculateDisplayString()) {\n {{displayString()}}\n }@else {\n <p-table [columns]=\"allSubNames\" [value]=\"[{}]\">\n <ng-template #header>\n <tr>\n @for (subName of allSubNames; track subName) {\n <th>{{subName}}</th>\n }\n </tr>\n </ng-template>\n <ng-template #body>\n <tr>\n @for (subName of allSubNames; track subName) {\n <td><xt-render-sub [context]=\"subContext(subName)\"></xt-render-sub></td>\n }\n </tr>\n </ng-template>\n </p-table>\n }\n} @else {\n <p-panel>\n @for (subName of allSubNames; track subName) {\n <div class=\"flex flex-nowrap gap-3\">\n <div class=\"flex-none\">{{subName}}</div>\n <div class=\"flex-auto\"><xt-render-sub [context]=\"subContext(subName)\"></xt-render-sub></div>\n </div>\n }\n </p-panel>\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Injector,\n OnDestroy,\n runInInjectionContext,\n signal\n} from '@angular/core';\nimport { XtSimpleComponent } from 'xt-components';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputText } from 'primeng/inputtext';\nimport { Checkbox } from 'primeng/checkbox';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { DatePicker } from 'primeng/datepicker';\nimport { Subscription } from 'rxjs';\nimport { DatePipe, DecimalPipe } from '@angular/common';\n\n/**\n * Displays / edits primitive types (string, numeric) using text inputs to ensure at least something is managed.\n */\n@Component({\n selector: 'xt-default-primitive',\n imports: [\n ReactiveFormsModule,\n InputText,\n Checkbox,\n InputNumber,\n DatePicker,\n DecimalPipe,\n FormsModule,\n DatePipe\n ],\n templateUrl: './default-primitive.component.html',\n styleUrl: './default-primitive.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultPrimitiveComponent extends XtSimpleComponent implements OnDestroy{\n\n injector = inject(Injector);\n\n recalculate = signal<boolean> (false);\n valueSubscription: Subscription|null = null;\n\n /**\n * This function tries to guess the type of value to be handled\n */\n typeOf = computed (() => {\n this.recalculate(); // In case recompute is forced\n if(this.context().valueType == null) {\n // The type has not been set, so let's see if we can guess it from the value\n const val = this.context().value(); // We don't use this.getValue(), as it returns a cached value\n if (val == null) { // We really can't know the type\n if (this.valueSubscription==null) {\n // Let's make sure a change of the value is taken into account\n runInInjectionContext(this.injector, () => {\n this.valueSubscription=this.formControl().valueChanges.subscribe({\n next: () => {\n this.recalculate.update((val) => !val);\n }\n });\n });\n }\n return val;\n } else {\n const ret= typeof val;\n if (ret != 'object') {\n this.context().valueType = typeof val;\n return ret;\n }else if (val instanceof Date) {\n this.context().valueType = 'date';\n return 'date';\n } else {\n throw new Error('Primitive Component used to display a non primitive type '+ret);\n }\n }\n } else {\n return this.context().valueType;\n }\n });\n\n ngOnDestroy(): void {\n if (this.valueSubscription!=null) {\n this.valueSubscription.unsubscribe();\n }\n }\n}\n","@if (isInForm() ) {\n <ng-container [formGroup]=\"formGroup()\">\n @switch (typeOf ()) {\n @case (\"number\") {\n <p-inputnumber mode=\"decimal\" [minFractionDigits]=\"0\" [maxFractionDigits]=\"2\" [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\"></p-inputnumber>\n }\n @case (\"bigint\") {\n <p-inputnumber [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\"></p-inputnumber>\n }\n @case (\"boolean\") {\n <p-checkbox [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [binary]=\"true\" />\n }\n @case (\"time\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [timeOnly]=\"true\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\" />\n }\n @case (\"date\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [showTime]=\"false\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\"/>\n }\n @case (\"date-time\") {\n <p-datepicker [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [showTime]=\"true\" [iconDisplay]=\"'input'\" [showIcon]=\"true\" [inline]=\"false\" inputId=\"icondisplay\" />\n }\n @default {\n <input type=\"text\" pInputText [name]=\"componentNameInForm ()\" [formControlName]=\"formControlName()\" [fluid]=\"true\" />\n }\n }\n </ng-container>\n} @else {\n @let value=displayValue();\n @switch (typeOf ()) {\n @case (\"number\") {\n {{value | number}}\n }\n @case (\"bigint\") {\n {{value | number}}\n }\n @case (\"boolean\") {\n <p-checkbox [binary]=\"true\" [readonly]=\"true\" [disabled]=\"true\" [ngModel]=\"value\" />\n }\n @case (\"time\") {\n {{ value | date: 'mediumTime'}}\n }\n @case (\"date\") {\n {{ value | date: 'mediumDate'}}\n }\n @case (\"date-time\") {\n {{ value | date: 'medium'}}\n }\n @default {\n {{ value }}\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, linkedSignal, output, Signal } from '@angular/core';\nimport { StoreSupport, XtCompositeComponent, XtContext, XtRenderSubComponent } from 'xt-components';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'lib-default-object-set',\n imports: [XtRenderSubComponent, TableModule],\n templateUrl: './default-object-set.component.html',\n styleUrl: './default-object-set.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultObjectSetComponent<T> extends XtCompositeComponent<T[]> {\n selected= output<T>();\n\n debugValue=false;\n debugSelectedElement:Signal<boolean> = computed<boolean>(() => {\n console.debug(\"Selected element\", this.selectedElement());\n this.debugValue=!this.debugValue;\n return this.debugValue;\n });\n\n valueSet = computed(() => {\n const ret = this.context().value();\n if (Array.isArray(ret)) {\n return ret as T[];\n } else if (ret!=null) {\n return [ret] as T[];\n } else return [];\n });\n\n selectedElement = linkedSignal<T[]|null, T|null> ({\n source: this.valueSet,\n computation: (source, previous) => {\n // console.log(\"Triggering select with current \"+source?.length+\" and previous \"+previous?.source?.length);\n if ((source!=null) && (previous?.source!=null)) {\n // console.log(\"Recalculating selection\");\n if( previous?.value!=null) {\n // console.log(\"Trying to reselect existing element\");\n // Otherwise reselect the element if still there\n return source.find((toCheck) => {\n if ((toCheck as any)._id!=null) {\n const ret= (toCheck as any)._id==(previous.value as any)._id;\n // if (ret) console.log(\"Found existing element to reselect\");\n return ret;\n } else {\n // Without identity key, just compare the elements\n const ret= toCheck===previous.value;\n return ret;\n }\n })??null;\n }\n }\n// console.log(\"No selection\");\n return null;\n }\n });\n\n subNames = computed(() => {\n const ret = this.resolverService.listSubNamesOf(this.context(), this.valueSet());\n return ret;\n });\n\n elementSetContext(elementIndex: number): XtContext<any> {\n this.formGroupIfAny();\n\n const ret= this.context().elementSetContext(elementIndex);\n /* this.resolverService.loadAllReferencesForContext(ret, StoreSupport.getStoreManager()).then(() => {\n console.debug(\"Resolved all references for element \"+elementIndex+ ' of type '+this.context().valueType);\n } );*/\n return ret;\n }\n\n subElementContextForName(subElementContext: XtContext<any>, subName: string, subType?: string): XtContext<any> {\n return subElementContext.subContext(subName, subType, this.resolverService?.typeResolver);\n }\n\n selectionChange(newElement: any) {\n this.selectedElement.set(newElement);\n this.selected.emit(newElement );\n }\n\n override setupInputOutput () {\n this.outputsObject.valueSelected=this.selected;\n }\n}\n","@let allSubNames=subNames();\n<p-table [columns]=\"allSubNames\" [scrollable]=\"true\" scrollHeight=\"flex\" [value]=\"valueSet()\" selectionMode=\"single\" [selection]=\"selectedElement()\" (selectionChange)=\"selectionChange($event)\">\n <ng-template #header>\n <tr>\n @for (subName of allSubNames; track subName) {\n <th>{{subName}}</th>\n }\n </tr>\n </ng-template>\n <ng-template #body let-element let-eltIndex='rowIndex'>\n @let eltContext=elementSetContext(eltIndex);\n <tr [pSelectableRow]=\"element\">\n @for (subName of allSubNames; track subName) {\n @let subEltContext=subElementContextForName(eltContext, subName);\n <td><xt-render-sub [context]=\"subEltContext\"></xt-render-sub></td>\n }\n </tr>\n </ng-template>\n</p-table>\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n linkedSignal,\n OnDestroy,\n OnInit,\n signal,\n untracked\n} from '@angular/core';\nimport { XtBaseContext, XtContext, XtRenderSubComponent, XtResolverService, XtSimpleComponent } from 'xt-components';\nimport { AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { XtTypeHandler, XtTypeReference } from 'xt-type';\nimport { firstValueFrom, Subscription } from 'rxjs';\n\n@Component({\n selector: 'xt-many-to-one-ref',\n imports: [\n AutoComplete,\n ReactiveFormsModule,\n XtRenderSubComponent,\n FormsModule\n ],\n templateUrl: './many-to-one-ref.component.html',\n styleUrl: './many-to-one-ref.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManyToOneRefComponent extends XtSimpleComponent implements OnInit, OnDestroy{\n resolver = inject(XtResolverService);\n filteredReferences=signal<any[]>([]);\n\n allReferences: any[] = [];\n allSourceReferences: any[] = [];\n allReferencesLoaded = false;\n\n typeHandler:XtTypeHandler<any>|null=null;\n\n formSubscription:Subscription |null= null;\n\n formControlValue=signal<any>(null);\n\n\n contextChangeEffect=effect(() => {\n // Whenever the context changes, we need to update the values displayed\n const context=this.context();\n const value=context.formControlValue();\n\n untracked(() => {\n this.typeHandler =this.resolver.findTypeHandlerOf(context, undefined, value)?.handler??null;\n firstValueFrom(this.resolver.findPossibleReferences(context)).then((references: any[]) => {\n this.allReferences = references.map((item) => {\n this.allSourceReferences.push(item); // Store the original value\n return this.withDisplayLabel(item);\n });\n this.formControlValue.set(value);\n this.allReferencesLoaded=true;\n });\n\n // Now listen to changes in the form and update the selectedReference accordingly\n const form = this.formGroup();\n if( form!=null) {\n if (this.formSubscription!=null) {\n this.formSubscription.unsubscribe();\n }\n this.formSubscription = (context.formGroup()!.valueChanges.subscribe({\n next: (newValue) => {\n const context=this.context();\n this.formControlValue.set(context.formControlValue());\n }\n }));\n }\n\n });\n});\n\n/**\n * We have to go through a ngModel for the selection as we need to calculate the displayedLabel\n */\n selectedReference= linkedSignal<any>(() => {\n const toSet=this.formControlValue();\n return this.findReferenceOf(toSet);\n });\n\n constructor() {\n super();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n withDisplayLabel(item:any):any {\n if (item==null) return item;\n let displayLabel=this.typeHandler?.stringToDisplay(item);\n if( displayLabel==null) {\n displayLabel=item._id;\n }\n return { displayLabel, ...item};\n }\n\n filterReferences($event:AutoCompleteCompleteEvent):void {\n const filterValue = $event.query;\n const refInfo = this.context().reference;\n if( refInfo!=null) {\n if (this.allReferencesLoaded) {\n this.filteredReferences.set(this.filterPossibleReferences(refInfo, filterValue));\n }\n }\n }\n\n protected filterPossibleReferences (refInfo:XtTypeReference, toSearch:string ): any[] {\n if ((toSearch==null) || (toSearch.length==0)) {\n return new Array(...this.allReferences);\n } else {\n const lowerSearch=toSearch.toLowerCase();\n return this.allReferences.filter((entity) => {\n const targetText=entity[refInfo.field];\n if (typeof targetText=='string') {\n return targetText.toLowerCase().includes(lowerSearch);\n } else {\n // Todo: Support filtering of anything else than string\n return true;\n }\n });\n }\n }\n\n contextForReference(ref:any):XtContext<any> {\n const thisContext=this.context() as XtBaseContext<any>;\n const ret = new XtBaseContext('INLINE_VIEW');\n ret.setDisplayValue(ref);\n ret.valueType=thisContext.reference?.toType;\n return ret;\n }\n\n changeSelection($event: any) {\n if( $event == null) {\n this.context().setFormValue($event,true);\n }else {\n const ref=this.allSourceReferences.find((ref) => ref._id==$event._id);\n this.context().setFormValue(ref,true);\n }\n this.selectedReference.set($event);\n }\n\n ngOnDestroy(): void {\n this.formSubscription?.unsubscribe();\n }\n\n protected findReferenceOf(value: any):any {\n if( value==null) return null;\n const ref=this.allReferences.find((ref) => ref._id==value._id);\n return ref;\n }\n}\n","@if (isInForm()) {\n <ng-container>\n <p-autocomplete [ngModel]=\"selectedReference()\" (ngModelChange)=\"changeSelection ($event)\" [suggestions]=\"filteredReferences()\" (completeMethod)=\"filterReferences($event)\" [dropdown]=\"true\" [fluid]=\"true\" optionLabel=\"displayLabel\">\n <ng-template let-ref #item>\n <div class=\"flex items-center gap-2\">\n <div><xt-render-sub [context]=\"contextForReference(ref)\"></xt-render-sub></div>\n </div>\n </ng-template>\n <ng-template #header>\n <div class=\"font-medium px-3 py-2\">Available {{formControlName()}}</div>\n </ng-template>\n </p-autocomplete>\n </ng-container>\n} @else {\n <span class=\"text-red-800\">Only uses ManyToOne component when editing reference.</span>\n}\n","import { XtPluginRegistry, XtResolverService } from 'xt-components';\nimport { DefaultPrimitiveComponent } from './primitive/default-primitive.component';\nimport { DefaultObjectComponent } from './object/default-object.component';\nimport { DefaultObjectSetComponent } from './object-set/default-object-set.component';\nimport { ManyToOneRefComponent } from './reference/many-to-one-ref.component';\n\nexport function registerDefaultPlugin (resolverService:XtResolverService):boolean {\n const pluginName = \"Plugin Default\";\n console.info ('Registering ' +pluginName);\n resolverService.registerPlugin ({\n name:'PluginDefault',\n components: [\n {\n componentName:'DefaultPrimitive',\n componentClass:DefaultPrimitiveComponent,\n typesHandled: [XtPluginRegistry.ANY_PRIMITIVE_TYPE, 'string', 'number', 'boolean', 'date', 'time', 'date-time'],\n },{\n componentName:'DefaultObject',\n componentClass:DefaultObjectComponent,\n typesHandled: [XtPluginRegistry.ANY_OBJECT_TYPE]\n },{\n componentName:'DefaultObjectSet',\n componentClass:DefaultObjectSetComponent,\n typesHandled: [XtPluginRegistry.ANY_OBJECT_SET],\n outputs: ['valueSelected']\n },{\n componentName:'ManyToOneReference',\n componentClass:ManyToOneRefComponent,\n typesHandled: [XtPluginRegistry.ANY_SINGLE_REFERENCE]\n }\n ]\n });\n return true;\n}\n","/*\n * Public API Surface of default\n */\n\nexport * from './lib/object/default-object.component';\nexport * from './lib/primitive/default-primitive.component';\nexport * from './lib/object-set/default-object-set.component';\nexport * from './lib/register';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;AAYM,MAAO,sBAAuB,SAAQ,oBAAoB,CAAA;AAPhE,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAapC,QAAA,IAAA,CAAA,aAAa,GAAE,QAAQ,CAAE,MAAK;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW;AAE1C,YAAA,OAAO,OAAO,IAAE,aAAa,IAAI,OAAO,IAAE,WAAW;AACvD,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,KAAK;AAClG,QAAA,CAAC,qEAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAC1G,QAAA,CAAC,yDAAC;AACH,IAAA;IAxBC,QAAQ,GAAA;QAEN,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;AACpC,QAAA,MAAM,GAAG,GAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;AAC9D,QAAA,OAAO,GAAG;IACZ;AAES,IAAA,UAAU,CAAE,OAAc,EAAA;AACjC,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IAClC;8GAbW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,oGCZnC,s7BAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3BY,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,qQAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKvC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,CAAC,oBAAoB,EAAE,KAAK,EAAE,WAAW,CAAC,EAAA,eAAA,EAGlC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s7BAAA,EAAA;;;AESjD;;AAEG;AAiBG,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;AAhBhE,IAAA,WAAA,GAAA;;AAkBE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAW,KAAK,uDAAC;QACrC,IAAA,CAAA,iBAAiB,GAAsB,IAAI;AAE3C;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAE,MAAK;AACtB,YAAA,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,IAAI,IAAI,EAAE;;gBAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AACnC,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,oBAAA,IAAI,IAAI,CAAC,iBAAiB,IAAE,IAAI,EAAE;;AAEhC,wBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;4BACxC,IAAI,CAAC,iBAAiB,GAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;gCAC/D,IAAI,EAAE,MAAK;AACT,oCAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;gCACxC;AACD,6BAAA,CAAC;AACJ,wBAAA,CAAC,CAAC;oBACJ;AACA,oBAAA,OAAO,GAAG;gBACZ;qBAAO;AACL,oBAAA,MAAM,GAAG,GAAE,OAAO,GAAG;AACrB,oBAAA,IAAI,GAAG,IAAI,QAAQ,EAAE;wBACnB,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,OAAO,GAAG;AACrC,wBAAA,OAAO,GAAG;oBACZ;AAAM,yBAAA,IAAI,GAAG,YAAY,IAAI,EAAE;AAC7B,wBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,MAAM;AACjC,wBAAA,OAAO,MAAM;oBACf;yBAAO;AACL,wBAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,GAAC,GAAG,CAAC;oBAClF;gBACF;YACF;iBAAO;AACL,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS;YACjC;AACF,QAAA,CAAC,kDAAC;AAOH,IAAA;IALC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAE,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;QACtC;IACF;8GAhDW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uGCtCtC,mnEAqDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5BI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,WAAW,gqBACX,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADX,WAAW,0CAEX,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,mBAAmB;wBACnB,SAAS;wBACT,QAAQ;wBACR,WAAW;wBACX,UAAU;wBACV,WAAW;wBACX,WAAW;wBACX;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mnEAAA,EAAA;;;AEzB3C,MAAO,yBAA6B,SAAQ,oBAAyB,CAAA;AAP3E,IAAA,WAAA,GAAA;;QAQE,IAAA,CAAA,QAAQ,GAAE,MAAM,EAAK;QAErB,IAAA,CAAA,UAAU,GAAC,KAAK;AAChB,QAAA,IAAA,CAAA,oBAAoB,GAAmB,QAAQ,CAAU,MAAK;YAC5D,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,GAAC,CAAC,IAAI,CAAC,UAAU;YAChC,OAAO,IAAI,CAAC,UAAU;AACxB,QAAA,CAAC,gEAAC;AAEF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,gBAAA,OAAO,GAAU;YACnB;AAAO,iBAAA,IAAI,GAAG,IAAE,IAAI,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAQ;YACrB;;AAAO,gBAAA,OAAO,EAAE;AAClB,QAAA,CAAC,oDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,gBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;;AAEhC,oBAAA,IAAI,CAAC,MAAM,IAAE,IAAI,MAAM,QAAQ,EAAE,MAAM,IAAE,IAAI,CAAC,EAAE;;AAE9C,wBAAA,IAAI,QAAQ,EAAE,KAAK,IAAE,IAAI,EAAE;;;AAGzB,4BAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC7B,gCAAA,IAAM,OAAe,CAAC,GAAG,IAAE,IAAI,EAAE;oCAC/B,MAAM,GAAG,GAAG,OAAe,CAAC,GAAG,IAAG,QAAQ,CAAC,KAAa,CAAC,GAAG;;AAE5D,oCAAA,OAAO,GAAG;gCACZ;qCAAO;;AAEL,oCAAA,MAAM,GAAG,GAAE,OAAO,KAAG,QAAQ,CAAC,KAAK;AACnC,oCAAA,OAAO,GAAG;gCACZ;4BACF,CAAC,CAAC,IAAE,IAAI;wBACV;oBACF;;AAEA,oBAAA,OAAO,IAAI;AACb,gBAAA,CAAC,EAAA,CAAA,GAAA,CAxB+C;gBAChD,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,gBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;;AAEhC,oBAAA,IAAI,CAAC,MAAM,IAAE,IAAI,MAAM,QAAQ,EAAE,MAAM,IAAE,IAAI,CAAC,EAAE;;AAE9C,wBAAA,IAAI,QAAQ,EAAE,KAAK,IAAE,IAAI,EAAE;;;AAGzB,4BAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC7B,gCAAA,IAAM,OAAe,CAAC,GAAG,IAAE,IAAI,EAAE;oCAC/B,MAAM,GAAG,GAAG,OAAe,CAAC,GAAG,IAAG,QAAQ,CAAC,KAAa,CAAC,GAAG;;AAE5D,oCAAA,OAAO,GAAG;gCACZ;qCAAO;;AAEL,oCAAA,MAAM,GAAG,GAAE,OAAO,KAAG,QAAQ,CAAC,KAAK;AACnC,oCAAA,OAAO,GAAG;gCACZ;4BACF,CAAC,CAAC,IAAE,IAAI;wBACV;oBACF;;AAEA,oBAAA,OAAO,IAAI;gBACb;AACD,aAAA,CAAA,CAAA,CAAC;AAEF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChF,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,oDAAC;AAwBH,IAAA;AAtBC,IAAA,iBAAiB,CAAC,YAAoB,EAAA;QACpC,IAAI,CAAC,cAAc,EAAE;QAErB,MAAM,GAAG,GAAE,IAAI,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAC3D;;AAEQ;AACN,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,wBAAwB,CAAC,iBAAiC,EAAE,OAAe,EAAE,OAAgB,EAAA;AAC3F,QAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;IAC3F;AAEA,IAAA,eAAe,CAAC,UAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAE;IACjC;IAES,gBAAgB,GAAA;QACvB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAC,IAAI,CAAC,QAAQ;IAChD;8GAxEW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXtC,uyBAmBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,oBAAoB,+HAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,wBAAwB,EAAA,OAAA,EACzB,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uyBAAA,EAAA;;;AEoB3C,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAwD1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAxDT,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAC,MAAM,CAAQ,EAAE,8DAAC;QAEpC,IAAA,CAAA,aAAa,GAAU,EAAE;QACzB,IAAA,CAAA,mBAAmB,GAAU,EAAE;QAC/B,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAE3B,IAAA,CAAA,WAAW,GAAyB,IAAI;QAExC,IAAA,CAAA,gBAAgB,GAAqB,IAAI;AAEzC,QAAA,IAAA,CAAA,gBAAgB,GAAC,MAAM,CAAM,IAAI,4DAAC;AAGlC,QAAA,IAAA,CAAA,mBAAmB,GAAC,MAAM,CAAC,MAAK;;AAE5B,YAAA,MAAM,OAAO,GAAC,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAC,OAAO,CAAC,gBAAgB,EAAE;YAEtC,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,WAAW,GAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,IAAE,IAAI;AAC3F,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAiB,KAAI;oBACzF,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;wBAC3C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,wBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpC,oBAAA,CAAC,CAAC;AACF,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,oBAAA,IAAI,CAAC,mBAAmB,GAAC,IAAI;AAC/B,gBAAA,CAAC,CAAC;;AAGJ,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,gBAAA,IAAI,IAAI,IAAE,IAAI,EAAE;AACd,oBAAA,IAAI,IAAI,CAAC,gBAAgB,IAAE,IAAI,EAAE;AAC/B,wBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;oBACrC;AACA,oBAAA,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,EAAG,CAAC,YAAY,CAAC,SAAS,CAAC;AACnE,wBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,4BAAA,MAAM,OAAO,GAAC,IAAI,CAAC,OAAO,EAAE;4BAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;wBACvD;AACD,qBAAA,CAAC,CAAC;gBACL;AAEA,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,+DAAC;AAEF;;AAEK;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAE,YAAY,CAAM,MAAK;AACxC,YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACpC,QAAA,CAAC,6DAAC;IAIF;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,IAAQ,EAAA;QACvB,IAAI,IAAI,IAAE,IAAI;AAAE,YAAA,OAAO,IAAI;QAC3B,IAAI,YAAY,GAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC;AACxD,QAAA,IAAI,YAAY,IAAE,IAAI,EAAE;AACtB,YAAA,YAAY,GAAC,IAAI,CAAC,GAAG;QACvB;AACA,QAAA,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,EAAC;IACjC;AAEA,IAAA,gBAAgB,CAAC,MAAgC,EAAA;AAC/C,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS;AACxC,QAAA,IAAI,OAAO,IAAE,IAAI,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClF;QACF;IACF;IAEU,wBAAwB,CAAE,OAAuB,EAAE,QAAe,EAAA;AAC1E,QAAA,IAAI,CAAC,QAAQ,IAAE,IAAI,MAAM,QAAQ,CAAC,MAAM,IAAE,CAAC,CAAC,EAAE;YAC5C,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC;aAAO;AACL,YAAA,MAAM,WAAW,GAAC,QAAQ,CAAC,WAAW,EAAE;YACxC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;gBAC1C,MAAM,UAAU,GAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,gBAAA,IAAI,OAAO,UAAU,IAAE,QAAQ,EAAE;oBAC/B,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACvD;qBAAO;;AAEL,oBAAA,OAAO,IAAI;gBACb;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,mBAAmB,CAAC,GAAO,EAAA;AACzB,QAAA,MAAM,WAAW,GAAC,IAAI,CAAC,OAAO,EAAwB;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC;AAC5C,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;QACxB,GAAG,CAAC,SAAS,GAAC,WAAW,CAAC,SAAS,EAAE,MAAM;AAC3C,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;AACzB,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,EAAC,IAAI,CAAC;QAC1C;aAAM;YACJ,MAAM,GAAG,GAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAE,MAAM,CAAC,GAAG,CAAC;YACrE,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAC,IAAI,CAAC;QACvC;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;IACtC;AAEU,IAAA,eAAe,CAAC,KAAU,EAAA;QAClC,IAAI,KAAK,IAAE,IAAI;AAAE,YAAA,OAAO,IAAI;QAC5B,MAAM,GAAG,GAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAE,KAAK,CAAC,GAAG,CAAC;AAC9D,QAAA,OAAO,GAAG;IACZ;8GA9HW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BlC,uxBAgBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDII,YAAY,ksCACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,oBAAoB;wBACpB;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uxBAAA,EAAA;;;AErB3C,SAAU,qBAAqB,CAAE,eAAiC,EAAA;IACtE,MAAM,UAAU,GAAG,gBAAgB;AACnC,IAAA,OAAO,CAAC,IAAI,CAAE,cAAc,GAAE,UAAU,CAAC;IACvC,eAAe,CAAC,cAAc,CAAE;AAC5B,QAAA,IAAI,EAAC,eAAe;AACpB,QAAA,UAAU,EAAE;AACR,YAAA;AACE,gBAAA,aAAa,EAAC,kBAAkB;AAChC,gBAAA,cAAc,EAAC,yBAAyB;AACxC,gBAAA,YAAY,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;aAChH,EAAC;AACF,gBAAA,aAAa,EAAC,eAAe;AAC7B,gBAAA,cAAc,EAAC,sBAAsB;AACrC,gBAAA,YAAY,EAAE,CAAC,gBAAgB,CAAC,eAAe;aAChD,EAAC;AACA,gBAAA,aAAa,EAAC,kBAAkB;AAChC,gBAAA,cAAc,EAAC,yBAAyB;AACxC,gBAAA,YAAY,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC;gBAC/C,OAAO,EAAE,CAAC,eAAe;aAC1B,EAAC;AACA,gBAAA,aAAa,EAAC,oBAAoB;AAClC,gBAAA,cAAc,EAAC,qBAAqB;AACpC,gBAAA,YAAY,EAAE,CAAC,gBAAgB,CAAC,oBAAoB;AACrD;AACF;AACJ,KAAA,CAAC;AACF,IAAA,OAAO,IAAI;AACf;;ACjCA;;AAEG;;ACFH;;AAEG;;;;"}
|