@libs-ui/components-inputs-multi-language 0.2.71 → 0.2.73

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.
@@ -0,0 +1,152 @@
1
+ import { ChangeDetectionStrategy, Component, effect, input, model, output, signal, untracked } from '@angular/core';
2
+ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
3
+ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';
4
+ import { cloneDeep, isNil, UtilsCache } from '@libs-ui/utils';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import { LibsUiComponentsInputsMultiLanguageComponent } from '../inputs-multi-language.component';
7
+ import { LibsUiComponentsInputsMultiLanguageGetItemPipe } from '../pipes/get-item.pipe';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngx-translate/core";
10
+ export class LibsUiComponentsInputsMultiLanguageItemsComponent {
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ dataMultiKey = signal([]);
13
+ langDefault = signal(UtilsCache.getLang());
14
+ configHeader = signal(undefined);
15
+ validRequired = signal({ isRequired: false });
16
+ validRequiredWhenInputHasValue = signal(undefined);
17
+ dataHeader = signal(undefined);
18
+ multiLanguageFunctionControl = signal([]);
19
+ inputValidFunctionControl = signal([]);
20
+ configItems = input([]);
21
+ dataMultiLanguage = model([{}]);
22
+ zIndex = input();
23
+ ignoreAdd = input();
24
+ labelAddItem = input();
25
+ singleLanguage = input();
26
+ acceptNegativeValue = input();
27
+ valueUpDownNumber = input();
28
+ maxValueNumber = input();
29
+ onlyAcceptNegativeValue = input();
30
+ outClick = output();
31
+ outFunctionControl = output();
32
+ outChangeValue = output();
33
+ constructor() {
34
+ effect(() => {
35
+ const configItems = this.configItems();
36
+ untracked(() => {
37
+ if (configItems && configItems.length) {
38
+ this.configHeader.set(configItems[0].header);
39
+ }
40
+ });
41
+ });
42
+ effect(() => {
43
+ const dataMultiLanguage = this.dataMultiLanguage();
44
+ untracked(() => {
45
+ if (!dataMultiLanguage || !dataMultiLanguage.length) {
46
+ this.dataMultiLanguage.set([{}]);
47
+ const configHeader = this.configHeader();
48
+ if (configHeader && configHeader.dataDefault) {
49
+ this.dataMultiLanguage.set([cloneDeep(configHeader.dataDefault)]);
50
+ }
51
+ }
52
+ this.handlerConfigMulti();
53
+ });
54
+ });
55
+ }
56
+ ngOnInit() {
57
+ this.outFunctionControl.emit({
58
+ checkIsValid: this.validate.bind(this),
59
+ getData: this.getData.bind(this)
60
+ });
61
+ const configItems = this.configItems();
62
+ if (configItems && configItems.length && configItems[0].validRequired) {
63
+ this.validRequired.set(configItems[0].validRequired);
64
+ }
65
+ }
66
+ async handlerConfigMulti() {
67
+ this.dataMultiKey.set([]);
68
+ this.dataMultiLanguage().forEach(() => {
69
+ const configItems = this.configItems();
70
+ if (configItems) {
71
+ this.dataMultiKey().push(configItems);
72
+ }
73
+ });
74
+ this.dataMultiKey.update(items => [...items]);
75
+ }
76
+ async handlerAdd() {
77
+ let dataLanguage = {};
78
+ const configHeader = this.configHeader();
79
+ if (configHeader) {
80
+ dataLanguage = cloneDeep(configHeader.dataDefault);
81
+ }
82
+ this.dataMultiLanguage.update(items => [...items, dataLanguage]);
83
+ this.dataMultiKey.update(items => [...items, this.configItems()]);
84
+ this.handlerChangeValue();
85
+ }
86
+ async handlerRemove(index) {
87
+ this.dataMultiLanguage.update(items => {
88
+ items.splice(index, 1);
89
+ return [...items];
90
+ });
91
+ this.handlerChangeValue();
92
+ }
93
+ async handlerClick(e) {
94
+ e.stopPropagation();
95
+ this.outClick.emit();
96
+ }
97
+ async handlerFunctionsControlInputLanguage(event) {
98
+ this.multiLanguageFunctionControl.update(items => [...items, event]);
99
+ }
100
+ async handlerFunctionsControlInputValid(event) {
101
+ this.inputValidFunctionControl.update(items => [...items, event]);
102
+ }
103
+ async validate() {
104
+ let valid = true;
105
+ this.checkValidRequiredWhenInputHasValue();
106
+ for (const control of this.inputValidFunctionControl()) {
107
+ if (!(await control.checkIsValid())) {
108
+ valid = false;
109
+ }
110
+ }
111
+ for (const control of this.multiLanguageFunctionControl()) {
112
+ if (!(await control.checkIsValid())) {
113
+ valid = false;
114
+ }
115
+ }
116
+ return valid;
117
+ }
118
+ async getData() {
119
+ const dataMultiLanguage = [];
120
+ for (const element of this.multiLanguageFunctionControl()) {
121
+ dataMultiLanguage.push(await element.getData() || {});
122
+ }
123
+ // this.dataMultiLanguage.update(items => [...items]);
124
+ return dataMultiLanguage;
125
+ }
126
+ async handlerChangeValue(value, type) {
127
+ if (type === 'input') {
128
+ this.dataHeader.set(value);
129
+ }
130
+ this.checkValidRequiredWhenInputHasValue();
131
+ this.outChangeValue.emit();
132
+ }
133
+ async checkValidRequiredWhenInputHasValue() {
134
+ this.validRequiredWhenInputHasValue.set(undefined);
135
+ if (!isNil(this.dataHeader())) {
136
+ this.validRequiredWhenInputHasValue.set({ isRequired: true });
137
+ }
138
+ }
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMultiLanguageItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsMultiLanguageItemsComponent, isStandalone: true, selector: "libs_ui-components-inputs-multi_language-items", inputs: { configItems: { classPropertyName: "configItems", publicName: "configItems", isSignal: true, isRequired: false, transformFunction: null }, dataMultiLanguage: { classPropertyName: "dataMultiLanguage", publicName: "dataMultiLanguage", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, ignoreAdd: { classPropertyName: "ignoreAdd", publicName: "ignoreAdd", isSignal: true, isRequired: false, transformFunction: null }, labelAddItem: { classPropertyName: "labelAddItem", publicName: "labelAddItem", isSignal: true, isRequired: false, transformFunction: null }, singleLanguage: { classPropertyName: "singleLanguage", publicName: "singleLanguage", isSignal: true, isRequired: false, transformFunction: null }, acceptNegativeValue: { classPropertyName: "acceptNegativeValue", publicName: "acceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null }, valueUpDownNumber: { classPropertyName: "valueUpDownNumber", publicName: "valueUpDownNumber", isSignal: true, isRequired: false, transformFunction: null }, maxValueNumber: { classPropertyName: "maxValueNumber", publicName: "maxValueNumber", isSignal: true, isRequired: false, transformFunction: null }, onlyAcceptNegativeValue: { classPropertyName: "onlyAcceptNegativeValue", publicName: "onlyAcceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataMultiLanguage: "dataMultiLanguageChange", outClick: "outClick", outFunctionControl: "outFunctionControl", outChangeValue: "outChangeValue" }, ngImport: i0, template: "<div class=\"mt-[4px]\">\n @for (item of dataMultiLanguage(); track item) {\n <div class=\"flex w-full\"\n [class.mt-[12px]]=\"!$first\">\n <div class=\"libs-ui-border-general\"\n [class.w-full]=\"dataMultiLanguage().length < 2\"\n [class.w-[calc(100%-28px)]]=\"dataMultiLanguage().length > 1\">\n @if (configHeader(); as configHeader) {\n <div class=\"flex bg-[#e6eef5] px-[12px] py-[4px]\">\n <div class=\"libs-ui-font-h6m h-[32px] flex items-center\">{{ (configHeader.title ?? ' ') | translate }}</div>\n <div (click)=\"handlerClick($event)\"\n class=\"pl-[8px]\">\n @if (configHeader.keyBindData | LibsUiComponentsInputsMultiLanguageGetItemPipe:item; as itemMap) {\n <libs_ui-components-inputs-valid [(item)]=\"itemMap\"\n [dataType]=\"(configHeader.type && configHeader.type === 'number') ? 'int' : 'string'\"\n [fieldNameBind]=\"langDefault()\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [validRequired]=\"{isRequired: configItems()[0].validRequired?.isRequired ?? false}\"\n [placeholder]=\"'i18n_enter_value'\"\n [acceptNegativeValue]=\"acceptNegativeValue() ?? true\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [maxValueNumber]=\"maxValueNumber()\"\n [fixedFloat]=\"15\"\n (outValueChange)=\"handlerChangeValue($event, 'input')\"\n (outFunctionsControl)=\"handlerFunctionsControlInputValid($event)\" />\n }\n </div>\n </div>\n <div class=\"px-[12px] pt-[8px] pb-[12px] flex w-full\">\n <libs_ui-components-inputs-multi_language class=\"w-full\"\n [singleLanguage]=\"singleLanguage() || false\"\n [multiLine]=\"false\"\n [titleField]=\"configItems()[0].titleField || ''\"\n [keyHeader]=\"configHeader.keyBindData ?? ''\"\n [placeholder]=\"'i18n_import_content'\"\n [classIncludeValue]=\"'libs-ui-font-h4r'\"\n [data]=\"dataMultiKey()[$index]\"\n [validRequired]=\"validRequiredWhenInputHasValue() || configItems()[0].validRequired\"\n [dataLanguage]=\"item\"\n [zIndex]=\"1203\"\n [acceptNegativeValue]=\"acceptNegativeValue() ?? true\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [maxValueNumber]=\"maxValueNumber()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [viewType]=\"configItems()[0].type ? (configItems()[0].type === 'number' ? 'number' : configItems()[0].type === 'float' ? 'float' : 'text') : 'text'\"\n (outEventMultiLanguage)=\"handlerChangeValue()\"\n (outChangeValueInput)=\"handlerChangeValue()\"\n (outFunctionsControl)=\"handlerFunctionsControlInputLanguage($event)\" />\n </div>\n }\n </div>\n @if (!$first) {\n <libs_ui-components-buttons-button [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631'\n },\n rootColor: '#071631'\n }\"\n [iconOnlyType]=\"true\"\n [popover]=\"{config: {content: 'i18n_delete', zIndex: 1205}}\"\n [classIconLeft]=\"'libs-ui-icon-remove'\"\n [classInclude]=\"'!p-0 ml-[8px] mt-[12px]'\"\n (outClick)=\"handlerRemove($index)\" />\n }\n </div>\n }\n @if (!ignoreAdd()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add mr-[8px]'\"\n [classLabel]=\"'libs-ui-font-h5r'\"\n [classInclude]=\"'!px-0 mt-[8px]'\"\n [label]=\"labelAddItem() || ''\"\n (outClick)=\"handlerAdd()\" />\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LibsUiComponentsInputsMultiLanguageGetItemPipe, name: "LibsUiComponentsInputsMultiLanguageGetItemPipe" }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "hiddenContent", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsInputsMultiLanguageComponent, selector: "libs_ui-components-inputs-multi_language", inputs: ["zIndex", "viewType", "singleLanguage", "data", "validRequired", "ignoreAdd", "titleField", "keyHeader", "textArea", "placeholder", "extendClass", "extendClassContent", "viewPosition", "ignoreRemove", "validMaxLength", "validMinLength", "countCharacters", "viewContent", "classIncludeKey", "classIncludeValue", "dataLanguage", "multiLine", "readonly", "acceptNegativeValue", "valueUpDownNumber", "maxValueNumber", "onlyAcceptNegativeValue"], outputs: ["dataChange", "ignoreAddChange", "extendClassChange", "dataLanguageChange", "outEventMultiLanguage", "outChangeTypeLanguage", "outFunctionsControl", "outChangeValueInput"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMultiLanguageItemsComponent, decorators: [{
143
+ type: Component,
144
+ args: [{ selector: 'libs_ui-components-inputs-multi_language-items', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
145
+ TranslateModule,
146
+ LibsUiComponentsInputsMultiLanguageGetItemPipe,
147
+ LibsUiComponentsInputsValidComponent,
148
+ LibsUiComponentsInputsMultiLanguageComponent,
149
+ LibsUiComponentsButtonsButtonComponent
150
+ ], template: "<div class=\"mt-[4px]\">\n @for (item of dataMultiLanguage(); track item) {\n <div class=\"flex w-full\"\n [class.mt-[12px]]=\"!$first\">\n <div class=\"libs-ui-border-general\"\n [class.w-full]=\"dataMultiLanguage().length < 2\"\n [class.w-[calc(100%-28px)]]=\"dataMultiLanguage().length > 1\">\n @if (configHeader(); as configHeader) {\n <div class=\"flex bg-[#e6eef5] px-[12px] py-[4px]\">\n <div class=\"libs-ui-font-h6m h-[32px] flex items-center\">{{ (configHeader.title ?? ' ') | translate }}</div>\n <div (click)=\"handlerClick($event)\"\n class=\"pl-[8px]\">\n @if (configHeader.keyBindData | LibsUiComponentsInputsMultiLanguageGetItemPipe:item; as itemMap) {\n <libs_ui-components-inputs-valid [(item)]=\"itemMap\"\n [dataType]=\"(configHeader.type && configHeader.type === 'number') ? 'int' : 'string'\"\n [fieldNameBind]=\"langDefault()\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [validRequired]=\"{isRequired: configItems()[0].validRequired?.isRequired ?? false}\"\n [placeholder]=\"'i18n_enter_value'\"\n [acceptNegativeValue]=\"acceptNegativeValue() ?? true\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [maxValueNumber]=\"maxValueNumber()\"\n [fixedFloat]=\"15\"\n (outValueChange)=\"handlerChangeValue($event, 'input')\"\n (outFunctionsControl)=\"handlerFunctionsControlInputValid($event)\" />\n }\n </div>\n </div>\n <div class=\"px-[12px] pt-[8px] pb-[12px] flex w-full\">\n <libs_ui-components-inputs-multi_language class=\"w-full\"\n [singleLanguage]=\"singleLanguage() || false\"\n [multiLine]=\"false\"\n [titleField]=\"configItems()[0].titleField || ''\"\n [keyHeader]=\"configHeader.keyBindData ?? ''\"\n [placeholder]=\"'i18n_import_content'\"\n [classIncludeValue]=\"'libs-ui-font-h4r'\"\n [data]=\"dataMultiKey()[$index]\"\n [validRequired]=\"validRequiredWhenInputHasValue() || configItems()[0].validRequired\"\n [dataLanguage]=\"item\"\n [zIndex]=\"1203\"\n [acceptNegativeValue]=\"acceptNegativeValue() ?? true\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [maxValueNumber]=\"maxValueNumber()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [viewType]=\"configItems()[0].type ? (configItems()[0].type === 'number' ? 'number' : configItems()[0].type === 'float' ? 'float' : 'text') : 'text'\"\n (outEventMultiLanguage)=\"handlerChangeValue()\"\n (outChangeValueInput)=\"handlerChangeValue()\"\n (outFunctionsControl)=\"handlerFunctionsControlInputLanguage($event)\" />\n </div>\n }\n </div>\n @if (!$first) {\n <libs_ui-components-buttons-button [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631'\n },\n rootColor: '#071631'\n }\"\n [iconOnlyType]=\"true\"\n [popover]=\"{config: {content: 'i18n_delete', zIndex: 1205}}\"\n [classIconLeft]=\"'libs-ui-icon-remove'\"\n [classInclude]=\"'!p-0 ml-[8px] mt-[12px]'\"\n (outClick)=\"handlerRemove($index)\" />\n }\n </div>\n }\n @if (!ignoreAdd()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add mr-[8px]'\"\n [classLabel]=\"'libs-ui-font-h5r'\"\n [classInclude]=\"'!px-0 mt-[8px]'\"\n [label]=\"labelAddItem() || ''\"\n (outClick)=\"handlerAdd()\" />\n }\n</div>\n" }]
151
+ }], ctorParameters: () => [] });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tdWx0aS1sYW5ndWFnZS9zcmMvaXRlbXMvaXRlbXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tdWx0aS1sYW5ndWFnZS9zcmMvaXRlbXMvaXRlbXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQW1ELG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekksT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxHLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFnQnhGLE1BQU0sT0FBTyxpREFBaUQ7SUFFNUQsOERBQThEO0lBQ3BELFlBQVksR0FBRyxNQUFNLENBQWEsRUFBRSxDQUFDLENBQUM7SUFDdEMsV0FBVyxHQUFHLE1BQU0sQ0FBUyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLEdBQUcsTUFBTSxDQUF5QyxTQUFTLENBQUMsQ0FBQztJQUN6RSxhQUFhLEdBQUcsTUFBTSxDQUFpQixFQUFFLFVBQVUsRUFBRSxL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LG9DQUFvQyxxekRBQ3BDLDRDQUE0Qywrc0JBQzVDLHNDQUFzQzs7NEZBRzdCLGlEQUFpRDtrQkFkN0QsU0FBUzsrQkFFRSxnREFBZ0QsY0FFOUMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGVBQWU7d0JBQ2YsOENBQThDO3dCQUM5QyxvQ0FBb0M7d0JBQ3BDLDRDQUE0Qzt3QkFDNUMsc0NBQXNDO3FCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsLCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJSW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJVmFsaWRSZXF1aXJlZCwgTGlic1VpQ29tcG9uZW50c0lucHV0c1ZhbGlkQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtdmFsaWQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc05pbCwgVXRpbHNDYWNoZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dHMtbXVsdGktbGFuZ3VhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IElDb25maWdNdWx0aUxhbmd1YWdlSGVhZGVyLCBJRGF0YUl0ZW0sIElEYXRhTXVsdGlMYW5ndWFnZSwgSUlucHV0TXVsdGlMYW5ndWFnZUZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tdWx0aS1sYW5ndWFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZSB9IGZyb20gJy4uL3BpcGVzL2dldC1pdGVtLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLW11bHRpX2xhbmd1YWdlLWl0ZW1zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW1zLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzSW5wdXRzVmFsaWRDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzTXVsdGlMYW5ndWFnZUl0ZW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwcm90ZWN0ZWQgZGF0YU11bHRpS2V5ID0gc2lnbmFsPEFycmF5PGFueT4+KFtdKTtcbiAgcHJvdGVjdGVkIGxhbmdEZWZhdWx0ID0gc2lnbmFsPHN0cmluZz4oVXRpbHNDYWNoZS5nZXRMYW5nKCkpO1xuICBwcm90ZWN0ZWQgY29uZmlnSGVhZGVyID0gc2lnbmFsPElDb25maWdNdWx0aUxhbmd1YWdlSGVhZGVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgdmFsaWRSZXF1aXJlZCA9IHNpZ25hbDxJVmFsaWRSZXF1aXJlZD4oeyBpc1JlcXVpcmVkOiBmYWxzZSB9KTtcbiAgcHJvdGVjdGVkIHZhbGlkUmVxdWlyZWRXaGVuSW5wdXRIYXNWYWx1ZSA9IHNpZ25hbDxJVmFsaWRSZXF1aXJlZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGRhdGFIZWFkZXIgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgbXVsdGlMYW5ndWFnZUZ1bmN0aW9uQ29udHJvbCA9IHNpZ25hbDxBcnJheTxJSW5wdXRNdWx0aUxhbmd1YWdlRnVuY3Rpb25Db250cm9sRXZlbnQ+PihbXSk7XG4gIHByb3RlY3RlZCBpbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sID0gc2lnbmFsPEFycmF5PElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQ+PihbXSk7XG5cbiAgcmVhZG9ubHkgY29uZmlnSXRlbXMgPSBpbnB1dDxBcnJheTxJRGF0YUl0ZW0+PihbXSk7XG4gIHJlYWRvbmx5IGRhdGFNdWx0aUxhbmd1YWdlID0gbW9kZWw8QXJyYXk8SURhdGFNdWx0aUxhbmd1YWdlPj4oW3t9XSk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlQWRkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbGFiZWxBZGRJdGVtID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBzaW5nbGVMYW5ndWFnZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGFjY2VwdE5lZ2F0aXZlVmFsdWUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB2YWx1ZVVwRG93bk51bWJlciA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgbWF4VmFsdWVOdW1iZXIgPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IG9ubHlBY2NlcHROZWdhdGl2ZVZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBvdXRDbGljayA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SUlucHV0TXVsdGlMYW5ndWFnZUZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRDaGFuZ2VWYWx1ZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWdJdGVtcyA9IHRoaXMuY29uZmlnSXRlbXMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChjb25maWdJdGVtcyAmJiBjb25maWdJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ0hlYWRlci5zZXQoY29uZmlnSXRlbXNbMF0uaGVhZGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YU11bHRpTGFuZ3VhZ2UgPSB0aGlzLmRhdGFNdWx0aUxhbmd1YWdlKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRhdGFNdWx0aUxhbmd1YWdlIHx8ICFkYXRhTXVsdGlMYW5ndWFnZS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRhdGFNdWx0aUxhbmd1YWdlLnNldChbe31dKTtcbiAgICAgICAgICBjb25zdCBjb25maWdIZWFkZXIgPSB0aGlzLmNvbmZpZ0hlYWRlcigpO1xuICAgICAgICAgIGlmIChjb25maWdIZWFkZXIgJiYgY29uZmlnSGVhZGVyLmRhdGFEZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFNdWx0aUxhbmd1YWdlLnNldChbY2xvbmVEZWVwKGNvbmZpZ0hlYWRlci5kYXRhRGVmYXVsdCldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVyQ29uZmlnTXVsdGkoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbkNvbnRyb2wuZW1pdCh7XG4gICAgICBjaGVja0lzVmFsaWQ6IHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKSxcbiAgICAgIGdldERhdGE6IHRoaXMuZ2V0RGF0YS5iaW5kKHRoaXMpXG4gICAgfSk7XG4gICAgY29uc3QgY29uZmlnSXRlbXMgPSB0aGlzLmNvbmZpZ0l0ZW1zKCk7XG4gICAgaWYgKGNvbmZpZ0l0ZW1zICYmIGNvbmZpZ0l0ZW1zLmxlbmd0aCAmJiBjb25maWdJdGVtc1swXS52YWxpZFJlcXVpcmVkKSB7XG4gICAgICB0aGlzLnZhbGlkUmVxdWlyZWQuc2V0KGNvbmZpZ0l0ZW1zWzBdLnZhbGlkUmVxdWlyZWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ29uZmlnTXVsdGkoKSB7XG4gICAgdGhpcy5kYXRhTXVsdGlLZXkuc2V0KFtdKTtcbiAgICB0aGlzLmRhdGFNdWx0aUxhbmd1YWdlKCkuZm9yRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWdJdGVtcyA9IHRoaXMuY29uZmlnSXRlbXMoKTtcbiAgICAgIGlmIChjb25maWdJdGVtcykge1xuICAgICAgICB0aGlzLmRhdGFNdWx0aUtleSgpLnB1c2goY29uZmlnSXRlbXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZGF0YU11bHRpS2V5LnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXNdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQWRkKCkge1xuICAgIGxldCBkYXRhTGFuZ3VhZ2U6IElEYXRhTXVsdGlMYW5ndWFnZSA9IHt9O1xuICAgIGNvbnN0IGNvbmZpZ0hlYWRlciA9IHRoaXMuY29uZmlnSGVhZGVyKCk7XG4gICAgaWYgKGNvbmZpZ0hlYWRlcikge1xuICAgICAgZGF0YUxhbmd1YWdlID0gY2xvbmVEZWVwKGNvbmZpZ0hlYWRlci5kYXRhRGVmYXVsdCk7XG4gICAgfVxuICAgIHRoaXMuZGF0YU11bHRpTGFuZ3VhZ2UudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgZGF0YUxhbmd1YWdlXSk7XG4gICAgdGhpcy5kYXRhTXVsdGlLZXkudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgdGhpcy5jb25maWdJdGVtcygpXSk7XG4gICAgdGhpcy5oYW5kbGVyQ2hhbmdlVmFsdWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUmVtb3ZlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRhdGFNdWx0aUxhbmd1YWdlLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgfSk7XG4gICAgdGhpcy5oYW5kbGVyQ2hhbmdlVmFsdWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ2xpY2soZTogRXZlbnQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMub3V0Q2xpY2suZW1pdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJGdW5jdGlvbnNDb250cm9sSW5wdXRMYW5ndWFnZShldmVudDogSUlucHV0TXVsdGlMYW5ndWFnZUZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5tdWx0aUxhbmd1YWdlRnVuY3Rpb25Db250cm9sLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXMsIGV2ZW50XSlcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyRnVuY3Rpb25zQ29udHJvbElucHV0VmFsaWQoZXZlbnQ6IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLmlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2wudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgZXZlbnRdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLmNoZWNrVmFsaWRSZXF1aXJlZFdoZW5JbnB1dEhhc1ZhbHVlKCk7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuaW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbCgpKSB7XG4gICAgICBpZiAoIShhd2FpdCBjb250cm9sLmNoZWNrSXNWYWxpZCgpKSkge1xuICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5tdWx0aUxhbmd1YWdlRnVuY3Rpb25Db250cm9sKCkpIHtcbiAgICAgIGlmICghKGF3YWl0IGNvbnRyb2wuY2hlY2tJc1ZhbGlkKCkpKSB7XG4gICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXREYXRhKCk6IFByb21pc2U8SURhdGFNdWx0aUxhbmd1YWdlW10+IHtcbiAgICBjb25zdCBkYXRhTXVsdGlMYW5ndWFnZTogSURhdGFNdWx0aUxhbmd1YWdlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5tdWx0aUxhbmd1YWdlRnVuY3Rpb25Db250cm9sKCkpIHtcbiAgICAgIGRhdGFNdWx0aUxhbmd1YWdlLnB1c2goYXdhaXQgZWxlbWVudC5nZXREYXRhKCkgYXMgSURhdGFNdWx0aUxhbmd1YWdlIHx8IHt9KTtcbiAgICB9XG4gICAgLy8gdGhpcy5kYXRhTXVsdGlMYW5ndWFnZS51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zXSk7XG4gICAgcmV0dXJuIGRhdGFNdWx0aUxhbmd1YWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJDaGFuZ2VWYWx1ZSh2YWx1ZT86IHN0cmluZyB8IG51bWJlciwgdHlwZT86IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSAnaW5wdXQnKSB7XG4gICAgICB0aGlzLmRhdGFIZWFkZXIuc2V0KHZhbHVlIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuY2hlY2tWYWxpZFJlcXVpcmVkV2hlbklucHV0SGFzVmFsdWUoKTtcbiAgICB0aGlzLm91dENoYW5nZVZhbHVlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja1ZhbGlkUmVxdWlyZWRXaGVuSW5wdXRIYXNWYWx1ZSgpIHtcbiAgICB0aGlzLnZhbGlkUmVxdWlyZWRXaGVuSW5wdXRIYXNWYWx1ZS5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoIWlzTmlsKHRoaXMuZGF0YUhlYWRlcigpKSkge1xuICAgICAgdGhpcy52YWxpZFJlcXVpcmVkV2hlbklucHV0SGFzVmFsdWUuc2V0KHsgaXNSZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtdC1bNHB4XVwiPlxuICBAZm9yIChpdGVtIG9mIGRhdGFNdWx0aUxhbmd1YWdlKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGxcIlxuICAgICAgW2NsYXNzLm10LVsxMnB4XV09XCIhJGZpcnN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1ib3JkZXItZ2VuZXJhbFwiXG4gICAgICAgIFtjbGFzcy53LWZ1bGxdPVwiZGF0YU11bHRpTGFuZ3VhZ2UoKS5sZW5ndGggPCAyXCJcbiAgICAgICAgW2NsYXNzLnctW2NhbGMoMTAwJS0yOHB4KV1dPVwiZGF0YU11bHRpTGFuZ3VhZ2UoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIEBpZiAoY29uZmlnSGVhZGVyKCk7IGFzIGNvbmZpZ0hlYWRlcikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGJnLVsjZTZlZWY1XSBweC1bMTJweF0gcHktWzRweF1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZtIGgtWzMycHhdIGZsZXggaXRlbXMtY2VudGVyXCI+e3sgKGNvbmZpZ0hlYWRlci50aXRsZSA/PyAnICcpIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJoYW5kbGVyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicGwtWzhweF1cIj5cbiAgICAgICAgICAgICAgQGlmIChjb25maWdIZWFkZXIua2V5QmluZERhdGEgfCBMaWJzVWlDb21wb25lbnRzSW5wdXRzTXVsdGlMYW5ndWFnZUdldEl0ZW1QaXBlOml0ZW07IGFzIGl0ZW1NYXApIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy12YWxpZCBbKGl0ZW0pXT1cIml0ZW1NYXBcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cIihjb25maWdIZWFkZXIudHlwZSAmJiBjb25maWdIZWFkZXIudHlwZSA9PT0gJ251bWJlcicpID8gJ2ludCcgOiAnc3RyaW5nJ1wiXG4gICAgICAgICAgICAgICAgICBbZmllbGROYW1lQmluZF09XCJsYW5nRGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgIFtlbWl0RW1wdHlJbkRhdGFUeXBlTnVtYmVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwie2lzUmVxdWlyZWQ6IGNvbmZpZ0l0ZW1zKClbMF0udmFsaWRSZXF1aXJlZD8uaXNSZXF1aXJlZCA/PyBmYWxzZX1cIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpMThuX2VudGVyX3ZhbHVlJ1wiXG4gICAgICAgICAgICAgICAgICBbYWNjZXB0TmVnYXRpdmVWYWx1ZV09XCJhY2NlcHROZWdhdGl2ZVZhbHVlKCkgPz8gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVVcERvd25OdW1iZXJdPVwidmFsdWVVcERvd25OdW1iZXIoKSB8fCAxXCJcbiAgICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCJtYXhWYWx1ZU51bWJlcigpXCJcbiAgICAgICAgICAgICAgICAgIFtmaXhlZEZsb2F0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgIChvdXRWYWx1ZUNoYW5nZSk9XCJoYW5kbGVyQ2hhbmdlVmFsdWUoJGV2ZW50LCAnaW5wdXQnKVwiXG4gICAgICAgICAgICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbElucHV0VmFsaWQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC1bMTJweF0gcHQtWzhweF0gcGItWzEycHhdIGZsZXggdy1mdWxsXCI+XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1tdWx0aV9sYW5ndWFnZSBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgICAgIFtzaW5nbGVMYW5ndWFnZV09XCJzaW5nbGVMYW5ndWFnZSgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgW211bHRpTGluZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFt0aXRsZUZpZWxkXT1cImNvbmZpZ0l0ZW1zKClbMF0udGl0bGVGaWVsZCB8fCAnJ1wiXG4gICAgICAgICAgICAgIFtrZXlIZWFkZXJdPVwiY29uZmlnSGVhZGVyLmtleUJpbmREYXRhID8/ICcnXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpMThuX2ltcG9ydF9jb250ZW50J1wiXG4gICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVWYWx1ZV09XCInbGlicy11aS1mb250LWg0cidcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJkYXRhTXVsdGlLZXkoKVskaW5kZXhdXCJcbiAgICAgICAgICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwidmFsaWRSZXF1aXJlZFdoZW5JbnB1dEhhc1ZhbHVlKCkgfHwgY29uZmlnSXRlbXMoKVswXS52YWxpZFJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgW2RhdGFMYW5ndWFnZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgW3pJbmRleF09XCIxMjAzXCJcbiAgICAgICAgICAgICAgW2FjY2VwdE5lZ2F0aXZlVmFsdWVdPVwiYWNjZXB0TmVnYXRpdmVWYWx1ZSgpID8/IHRydWVcIlxuICAgICAgICAgICAgICBbdmFsdWVVcERvd25OdW1iZXJdPVwidmFsdWVVcERvd25OdW1iZXIoKSB8fCAxXCJcbiAgICAgICAgICAgICAgW21heFZhbHVlTnVtYmVyXT1cIm1heFZhbHVlTnVtYmVyKClcIlxuICAgICAgICAgICAgICBbb25seUFjY2VwdE5lZ2F0aXZlVmFsdWVdPVwib25seUFjY2VwdE5lZ2F0aXZlVmFsdWUoKVwiXG4gICAgICAgICAgICAgIFt2aWV3VHlwZV09XCJjb25maWdJdGVtcygpWzBdLnR5cGUgPyAoY29uZmlnSXRlbXMoKVswXS50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogY29uZmlnSXRlbXMoKVswXS50eXBlID09PSAnZmxvYXQnID8gJ2Zsb2F0JyA6ICd0ZXh0JykgOiAndGV4dCdcIlxuICAgICAgICAgICAgICAob3V0RXZlbnRNdWx0aUxhbmd1YWdlKT1cImhhbmRsZXJDaGFuZ2VWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgKG91dENoYW5nZVZhbHVlSW5wdXQpPVwiaGFuZGxlckNoYW5nZVZhbHVlKClcIlxuICAgICAgICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbElucHV0TGFuZ3VhZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmICghJGZpcnN0KSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiJ2J1dHRvbi1saW5rLWN1c3RvbSdcIlxuICAgICAgICAgIFtidXR0b25DdXN0b21dPVwie1xuICAgICAgICAgIGNvbmZpZ1N0ZXBDb2xvcjoge1xuICAgICAgICAgICAgdGV4dDogJyMwNzE2MzEnLFxuICAgICAgICAgICAgdGV4dF9ob3ZlcjogJyNlZTJkNDEnLFxuICAgICAgICAgICAgdGV4dF9hY3RpdmU6ICcjZWUyZDQxJyxcbiAgICAgICAgICAgIHRleHRfZGlzYWJsZTogJzA3MTYzMSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJvb3RDb2xvcjogJyMwNzE2MzEnXG4gICAgICAgIH1cIlxuICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BvcG92ZXJdPVwie2NvbmZpZzoge2NvbnRlbnQ6ICdpMThuX2RlbGV0ZScsIHpJbmRleDogMTIwNX19XCJcbiAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLXJlbW92ZSdcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJyFwLTAgbWwtWzhweF0gbXQtWzEycHhdJ1wiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJSZW1vdmUoJGluZGV4KVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmICghaWdub3JlQWRkKCkpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLWFkZCBtci1bOHB4XSdcIlxuICAgICAgW2NsYXNzTGFiZWxdPVwiJ2xpYnMtdWktZm9udC1oNXInXCJcbiAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJyFweC0wIG10LVs4cHhdJ1wiXG4gICAgICBbbGFiZWxdPVwibGFiZWxBZGRJdGVtKCkgfHwgJydcIlxuICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJBZGQoKVwiIC8+XG4gIH1cbjwvZGl2PlxuIl19
@@ -1,8 +1,9 @@
1
1
  import { Pipe, signal } from '@angular/core';
2
+ import { get } from '@libs-ui/utils';
2
3
  import * as i0 from "@angular/core";
3
4
  export class LibsUiComponentsInputsMultiLanguageGetItemPipe {
4
5
  transform(keyBindData, dataLanguageChange) {
5
- return (keyBindData ? signal(dataLanguageChange()[keyBindData]) : dataLanguageChange);
6
+ return (keyBindData ? signal(get(dataLanguageChange, keyBindData)) : dataLanguageChange);
6
7
  }
7
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMultiLanguageGetItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
8
9
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMultiLanguageGetItemPipe, isStandalone: true, name: "LibsUiComponentsInputsMultiLanguageGetItemPipe" });
@@ -14,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
14
15
  standalone: true
15
16
  }]
16
17
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWl0ZW0ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvbXVsdGktbGFuZ3VhZ2Uvc3JjL3BpcGVzL2dldC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLElBQUksRUFBaUIsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQzs7QUFNekYsTUFBTSxPQUFPLDhDQUE4QztJQUN6RCxTQUFTLENBQUMsV0FBK0IsRUFBRSxrQkFBc0Q7UUFDL0YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQW9DLENBQUM7SUFDM0gsQ0FBQzt3R0FIVSw4Q0FBOEM7c0dBQTlDLDhDQUE4Qzs7NEZBQTlDLDhDQUE4QztrQkFKMUQsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0RBQWdEO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFNpZ25hbCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGFNdWx0aUxhbmd1YWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tdWx0aS1sYW5ndWFnZS5pbnRlcmZhY2UnO1xuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oa2V5QmluZERhdGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgZGF0YUxhbmd1YWdlQ2hhbmdlOiBXcml0YWJsZVNpZ25hbDxJRGF0YU11bHRpTGFuZ3VhZ2U+KTogTW9kZWxTaWduYWw8SURhdGFNdWx0aUxhbmd1YWdlPiB7XG4gICAgcmV0dXJuIChrZXlCaW5kRGF0YSA/IHNpZ25hbChkYXRhTGFuZ3VhZ2VDaGFuZ2UoKVtrZXlCaW5kRGF0YV0pIDogZGF0YUxhbmd1YWdlQ2hhbmdlKSBhcyBNb2RlbFNpZ25hbDxJRGF0YU11bHRpTGFuZ3VhZ2U+O1xuICB9XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWl0ZW0ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvbXVsdGktbGFuZ3VhZ2Uvc3JjL3BpcGVzL2dldC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLElBQUksRUFBaUIsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXJDLE1BQU0sT0FBTyw4Q0FBOEM7SUFDekQsU0FBUyxDQUFDLFdBQStCLEVBQUUsa0JBQTJFO1FBQ3BILE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQW9DLENBQUM7SUFDOUgsQ0FBQzt3R0FIVSw4Q0FBOEM7c0dBQTlDLDhDQUE4Qzs7NEZBQTlDLDhDQUE4QztrQkFKMUQsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0RBQWdEO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFNpZ25hbCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgSURhdGFNdWx0aUxhbmd1YWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tdWx0aS1sYW5ndWFnZS5pbnRlcmZhY2UnO1xuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c011bHRpTGFuZ3VhZ2VHZXRJdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oa2V5QmluZERhdGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgZGF0YUxhbmd1YWdlQ2hhbmdlOiBXcml0YWJsZVNpZ25hbDxJRGF0YU11bHRpTGFuZ3VhZ2U+IHwgSURhdGFNdWx0aUxhbmd1YWdlKTogTW9kZWxTaWduYWw8SURhdGFNdWx0aUxhbmd1YWdlPiB7XG4gICAgcmV0dXJuIChrZXlCaW5kRGF0YSA/IHNpZ25hbChnZXQoZGF0YUxhbmd1YWdlQ2hhbmdlLCBrZXlCaW5kRGF0YSkpIDogZGF0YUxhbmd1YWdlQ2hhbmdlKSBhcyBNb2RlbFNpZ25hbDxJRGF0YU11bHRpTGFuZ3VhZ2U+O1xuICB9XG59XG4iXX0=