@libs-ui/components-buttons-dropdown 0.2.127 → 0.2.129
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.
|
@@ -8,9 +8,9 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@ngx-translate/core";
|
|
10
10
|
export class LibsUiComponentsButtonsDropdownComponent {
|
|
11
|
-
|
|
11
|
+
// #region PROPERTY
|
|
12
12
|
labelDisplay = computed(this.labelComputed.bind(this));
|
|
13
|
-
|
|
13
|
+
// #region INPUT
|
|
14
14
|
label = input();
|
|
15
15
|
fieldClass = input('class'); // change color label item of items
|
|
16
16
|
fieldClassIconLeft = input('classIconLeft'); // iconclass item of items
|
|
@@ -32,7 +32,7 @@ export class LibsUiComponentsButtonsDropdownComponent {
|
|
|
32
32
|
classInclude = input('');
|
|
33
33
|
modePopover = input('click-toggle');
|
|
34
34
|
classIncludeContainer = input();
|
|
35
|
-
|
|
35
|
+
// #region OUTPUT
|
|
36
36
|
outSelectItem = output();
|
|
37
37
|
outHover = output();
|
|
38
38
|
outApply = output(); // sử dụng cho bấm button left chế độ applyNow = false;
|
|
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
88
88
|
LibsUiComponentsPopoverComponent
|
|
89
89
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #buttonDropdownEl\n class=\"libs-ui-buttons-dropdown flex {{ classIncludeContainer() || '' }}\"\n [class.libs-ui-buttons-dropdown-un-apply-now]=\"!applyNow()\"\n [class.libs-ui-buttons-dropdown-apply-now-button-primary]=\"applyNow() && typeButton() === 'button-primary'\"\n [class.libs-ui-buttons-dropdown-apply-now-button-secondary]=\"applyNow() && typeButton() === 'button-secondary'\">\n <libs_ui-components-buttons-button [disable]=\"disable()\"\n [iconOnlyType]=\"iconOnlyType()\"\n [classIconLeft]=\"classIconLeft()\"\n [classIconRight]=\"!applyNow() ? '' : classIconRight()\"\n [type]=\"typeButton()\"\n [classLabel]=\"classLabel()\"\n [classInclude]=\"classInclude()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: modePopover(),\n ignoreShowPopover: !applyNow(),\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n animationConfig: {\n time: .5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n widthByParent: popupConfig().widthByParent ?? false,\n maxWidth: popupConfig().maxWidth,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n classInclude: 'rounded-[4px] ' + popupConfig().classInclude,\n direction: popupConfig().direction,\n timerDestroy: popupConfig().timeDestroy,\n directionDistance: 2,\n position: {\n mode: popupConfig().position?.mode || 'start',\n distance: popupConfig().position?.distance ?? 0\n }\n }\n }\"\n [label]=\"labelDisplay()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\"\n (outClick)=\"handlerApply()\" />\n @if (!applyNow()) {\n <div class=\"h-full w-[1px] bg-white\"></div>\n <libs_ui-components-buttons-button [type]=\"typeButton()\"\n [disable]=\"disable()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: ignoreHiddenPopoverContentWhenMouseLeave(),\n config:{\n animationConfig: {\n time:.5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n maxWidth: popupConfig().maxWidth,\n widthByParent: popupConfig().widthByParent ?? false,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n direction: popupConfig().direction,\n classInclude: popupConfig().classInclude,\n directionDistance:2,\n position: {\n mode: 'start',\n distance: 0\n }\n }\n }\"\n [iconOnlyType]=\"true\"\n [classIconRight]=\"classIconRight()\"\n [classInclude]=\"classInclude() || '!py-[9px]'\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\" />\n }\n</div>\n<ng-template #templateContentEl>\n <div>\n @if (items() && items().length) {\n <div class=\"m-0 p-0\">\n @for (item of items(); track item) {\n <div class=\"{{ item.classRow || '' }}\">\n <div LibsUiComponentsPopoverDirective\n [config]=\"{content: item.popoverContent, zIndex: popupConfig().zIndex, directionDistance: -2}\"\n [ignoreShowPopover]=\"!item.showPopover\"\n class=\"libs-ui-bg-list-hover relative cursor-pointer py-[8px] {{ item.classInclude || '' }} {{ showBorderBottom() ? 'libs-ui-border-bottom-general' : '' }}\"\n [class.flex]=\"!item.ignoreFlex\"\n [class.px-[16px]]=\"applyNow()\"\n [class.pl-[16px]]=\"!applyNow()\"\n [class.pr-[40px]]=\"!applyNow()\"\n [class.libs-ui-disable]=\"item.disable\"\n [class.pointer-events-none]=\"item.disable\"\n (click)=\"handlerSelectItem($event,item)\">\n @if (item[fieldClassIconLeft()]) {\n <i [class]=\"item[fieldClassIconLeft()]\"></i>\n }\n <span [class]=\"item[fieldClass()]\"\n [innerHtml]=\"item[fieldDisplay()] | translate\">\n </span>\n @if (item.buttonTemplateConfig) {\n <libs_ui-components-buttons-button [classIconLeft]=\"item.buttonTemplateConfig.iconLeft\"\n [classIconRight]=\"item.buttonTemplateConfig.icon\"\n [label]=\"item.buttonTemplateConfig.label\"\n [classLabel]=\"item.buttonTemplateConfig.label\"\n (outClick)=\"handlerClickButtonTemplate($event, item, items())\"\n [type]=\"item.buttonTemplateConfig.type\" />\n }\n <ng-container *ngTemplateOutlet=\"item?.subTemplate || null;context:{item:item}\"></ng-container>\n @if (item[keyField()] === keySelected() && !applyNow()) {\n <i class=\"libs-ui-icon-check absolute right-[16px] top-[8px]\"></i>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"p-[20px]\"\n [innerHtml]=\"'i18n_no_data' | translate\"></div>\n }\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .libs-ui-buttons-dropdown{max-width:max-content}:host ::ng-deep .libs-ui-buttons-dropdown .libs-ui-button{border-radius:0!important;height:100%}:host ::ng-deep .libs-ui-buttons-dropdown>:first-child libs_ui-components-popover .libs-ui-button{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important;padding-right:8px}:host ::ng-deep .libs-ui-buttons-dropdown>:last-child libs_ui-components-popover .libs-ui-button{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important;padding-left:0}:host ::ng-deep .libs-ui-buttons-dropdown:hover>:first-child .libs-ui-button-primary{background:var(--libs-ui-color-light-1, #4E8CF7)!important}:host ::ng-deep .libs-ui-buttons-dropdown:hover>:last-child .libs-ui-button-primary{background:var(--libs-ui-color-light-1, #4E8CF7)!important}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-un-apply-now>:first-child libs_ui-components-popover .libs-ui-button{padding-right:12px}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-un-apply-now>:last-child libs_ui-components-popover .libs-ui-button{border-left:1px solid transparent!important;padding:4px 12px}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-primary>:first-child libs_ui-components-popover .libs-ui-button{border-right:1px solid transparent}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-primary>:last-child libs_ui-components-popover .libs-ui-button{border-left:1px solid transparent}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-secondary>:first-child libs_ui-components-popover .libs-ui-button{border-right:none!important}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-secondary>:last-child libs_ui-components-popover .libs-ui-button{border-left:none!important}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-secondary:hover *>[class^=libs-ui-icon]:before{color:var(--libs-ui-color-light-1, #4E8CF7)}:host ::ng-deep .libs-ui-buttons-dropdown.libs-ui-buttons-dropdown-apply-now-button-secondary:hover .libs-ui-button{color:var(--libs-ui-color-light-1, #4E8CF7);background:var(--mo-button-other-color-background-hover, #E9F1FE)!important}\n"] }]
|
|
90
90
|
}] });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2J1dHRvbnMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9idXR0b25zL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUE4QixzQ0FBc0MsRUFBaUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2SixPQUFPLEVBQWdDLGdDQUFnQyxFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWV0RCxNQUFNLE9BQU8sd0NBQXdDO0lBRW5ELGNBQWM7SUFDSixZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFaEUsV0FBVztJQUNGLEtBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN4QixVQUFVLEdBQUcsS0FBSyxDQUFTLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUNBQW1DO0lBQ3hFLGtCQUFrQixHQUFHLEtBQUssQ0FBUyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtJQUMvRSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBeUIsRUFBRSxTQUFTLEVB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QztJQUN0QixDQUFDO3dHQS9FVSx3Q0FBd0M7NEZBQXhDLHdDQUF3Qyx3d0dDckJyRCxnMktBOEhBLGswRUQvR0ksZUFBZSw0RkFBRSxnQkFBZ0Isb0pBQ2pDLHNDQUFzQyxpaEJBQ3RDLGdDQUFnQzs7NEZBSXZCLHdDQUF3QztrQkFicEQsU0FBUzsrQkFFRSxxQ0FBcUMsY0FHbkMsSUFBSSxXQUNQO3dCQUNQLGVBQWUsRUFBRSxnQkFBZ0I7d0JBQ2pDLHNDQUFzQzt3QkFDdEMsZ0NBQWdDO3FCQUNqQyxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9wdXBDb25maWdCdXR0b25Ecm9wZG93biwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsIFRZUEVfQlVUVE9OLCBUWVBFX1NJWkVfQlVUVE9OIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5ULCBUWVBFX1BPUE9WRVJfTU9ERSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBlc2NhcGVIdG1sIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0Ryb3Bkb3duQ29tcG9uZW50IHtcblxuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgbGFiZWxEaXNwbGF5ID0gY29tcHV0ZWQodGhpcy5sYWJlbENvbXB1dGVkLmJpbmQodGhpcykpXG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZpZWxkQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCdjbGFzcycpOyAvLyBjaGFuZ2UgY29sb3IgbGFiZWwgaXRlbSBvZiBpdGVtc1xuICByZWFkb25seSBmaWVsZENsYXNzSWNvbkxlZnQgPSBpbnB1dDxzdHJpbmc+KCdjbGFzc0ljb25MZWZ0Jyk7IC8vIGljb25jbGFzcyBpdGVtIG9mIGl0ZW1zXG4gIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8YW55PiwgQXJyYXk8YW55Pj4oeyB0cmFuc2Zvcm06IGRhdGEgPT4gZGF0YS5tYXAoaXRlbSA9PiAoeyAuLi5pdGVtLCBbdGhpcy5maWVsZERpc3BsYXkoKV06IGVzY2FwZUh0bWwoaXRlbVt0aGlzLmZpZWxkRGlzcGxheSgpXSkgfSkpIH0pOyAvLyByZXF1cmllZFxuICByZWFkb25seSBmaWVsZERpc3BsYXkgPSBpbnB1dDxzdHJpbmc+KCdsYWJlbCcpOyAvLyByZXF1cmllZFxuICByZWFkb25seSBrZXlGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2tleScpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IG1vZGVsPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgYXBwbHlOb3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIGlmIG5vdCBhcHBseU5vdzoga2V5RmllbGQgaXMgcmVxdXJpZWRcbiAgcmVhZG9ubHkgc2hvd0JvcmRlckJvdHRvbSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2l6ZUJ1dHRvbiA9IGlucHV0PFRZUEVfU0laRV9CVVRUT04+KCdtZWRpdW0nKTtcbiAgcmVhZG9ubHkgY2xhc3NMYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpY29uT25seVR5cGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGNsYXNzSWNvblJpZ2h0ID0gaW5wdXQ8c3RyaW5nPignbGlicy11aS1pY29uLW1vdmUtcmlnaHQgcm90YXRlLVs5MGRlZ10nKTtcbiAgcmVhZG9ubHkgY2xhc3NJY29uTGVmdCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSB0eXBlQnV0dG9uID0gaW5wdXQ8VFlQRV9CVVRUT04+KCdidXR0b24tcHJpbWFyeScpO1xuICByZWFkb25seSBwb3B1cENvbmZpZyA9IGlucHV0PElQb3B1cENvbmZpZ0J1dHRvbkRyb3Bkb3duPih7IHdpZHRoOiAyMDUsIG1heFdpZHRoOiAyNTAsIG1heEhlaWdodDogMTQwLCB6SW5kZXg6IDEyMDAsIGRpcmVjdGlvbjogJ3RvcCcgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IG1vZGVQb3BvdmVyID0gaW5wdXQ8VFlQRV9QT1BPVkVSX01PREU+KCdjbGljay10b2dnbGUnKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlQ29udGFpbmVyID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRTZWxlY3RJdGVtID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgb3V0SG92ZXIgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0QXBwbHkgPSBvdXRwdXQ8YW55PigpOyAvLyBz4butIGThu6VuZyBjaG8gYuG6pW0gYnV0dG9uIGxlZnQgY2jhur8gxJHhu5kgYXBwbHlOb3cgPSBmYWxzZTtcbiAgcmVhZG9ubHkgb3V0UG9wb3ZlckV2ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRJY29uRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oKTtcblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJBcHBseSgpIHtcbiAgICBpZiAoIXRoaXMuYXBwbHlOb3coKSkge1xuICAgICAgdGhpcy5vdXRBcHBseS5lbWl0KHRoaXMuaXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLmtleUZpZWxkKCldID09PSB0aGlzLmtleVNlbGVjdGVkKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IEV2ZW50LCBkYXRhOiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZGF0YS5zdWJUZW1wbGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwbHlOb3coKSkge1xuICAgICAgdGhpcy5rZXlTZWxlY3RlZC5zZXQoZGF0YVt0aGlzLmtleUZpZWxkKCldKTtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RJdGVtLmVtaXQoZGF0YSk7XG4gICAgdGhpcy5vdXRIb3Zlci5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUG9wb3ZlckV2ZW50KGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICB0aGlzLm91dFBvcG92ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUG9wb3ZlckNvbnRyb2xFdmVudChjb250cm9sOiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQoY29udHJvbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNsaWNrQnV0dG9uVGVtcGxhdGUoZXZlbnQ6IEV2ZW50LCBkYXRhOiBhbnksIGl0ZW1zOiBBcnJheTxhbnk+KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZGF0YS5idXR0b25UZW1wbGF0ZUNvbmZpZy5hY3Rpb24oZGF0YSwgaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBsYWJlbENvbXB1dGVkKCkge1xuICAgIGlmICghdGhpcy5rZXlTZWxlY3RlZCgpIHx8ICF0aGlzLml0ZW1zKCkgfHwgIXRoaXMuaXRlbXMoKS5sZW5ndGggfHwgIXRoaXMua2V5RmllbGQoKSB8fCB0aGlzLmFwcGx5Tm93KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsKCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKCkpIHtcbiAgICAgIGlmIChpdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IHRoaXMua2V5U2VsZWN0ZWQoKSkge1xuICAgICAgICByZXR1cm4gaXRlbVt0aGlzLmZpZWxkRGlzcGxheSgpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYWJlbCgpO1xuICB9XG5cbn0iLCI8ZGl2ICNidXR0b25Ecm9wZG93bkVsXG4gIGNsYXNzPVwibGlicy11aS1idXR0b25zLWRyb3Bkb3duIGZsZXgge3sgY2xhc3NJbmNsdWRlQ29udGFpbmVyKCkgfHwgJycgfX1cIlxuICBbY2xhc3MubGlicy11aS1idXR0b25zLWRyb3Bkb3duLXVuLWFwcGx5LW5vd109XCIhYXBwbHlOb3coKVwiXG4gIFtjbGFzcy5saWJzLXVpLWJ1dHRvbnMtZHJvcGRvd24tYXBwbHktbm93LWJ1dHRvbi1wcmltYXJ5XT1cImFwcGx5Tm93KCkgJiYgdHlwZUJ1dHRvbigpID09PSAnYnV0dG9uLXByaW1hcnknXCJcbiAgW2NsYXNzLmxpYnMtdWktYnV0dG9ucy1kcm9wZG93bi1hcHBseS1ub3ctYnV0dG9uLXNlY29uZGFyeV09XCJhcHBseU5vdygpICYmIHR5cGVCdXR0b24oKSA9PT0gJ2J1dHRvbi1zZWNvbmRhcnknXCI+XG4gIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW2Rpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICBbaWNvbk9ubHlUeXBlXT1cImljb25Pbmx5VHlwZSgpXCJcbiAgICBbY2xhc3NJY29uTGVmdF09XCJjbGFzc0ljb25MZWZ0KClcIlxuICAgIFtjbGFzc0ljb25SaWdodF09XCIhYXBwbHlOb3coKSA/ICcnIDogY2xhc3NJY29uUmlnaHQoKVwiXG4gICAgW3R5cGVdPVwidHlwZUJ1dHRvbigpXCJcbiAgICBbY2xhc3NMYWJlbF09XCJjbGFzc0xhYmVsKClcIlxuICAgIFtjbGFzc0luY2x1ZGVdPVwiY2xhc3NJbmNsdWRlKClcIlxuICAgIFtzaXplQnV0dG9uXT1cInNpemVCdXR0b24oKVwiXG4gICAgW3BvcG92ZXJdPVwie1xuICAgICAgZWxlbWVudFJlZkN1c3RvbTogYnV0dG9uRHJvcGRvd25FbCxcbiAgICAgIG1vZGU6IG1vZGVQb3BvdmVyKCksXG4gICAgICBpZ25vcmVTaG93UG9wb3ZlcjogIWFwcGx5Tm93KCksXG4gICAgICBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgICAgICAgIHRpbWU6IC41XG4gICAgICAgIH0sXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZUNvbnRlbnRFbCxcbiAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgaWdub3JlQXJyb3c6IHRydWUsXG4gICAgICAgIHdpZHRoOiBwb3B1cENvbmZpZygpLndpZHRoLFxuICAgICAgICB3aWR0aEJ5UGFyZW50OiBwb3B1cENvbmZpZygpLndpZHRoQnlQYXJlbnQgPz8gZmFsc2UsXG4gICAgICAgIG1heFdpZHRoOiBwb3B1cENvbmZpZygpLm1heFdpZHRoLFxuICAgICAgICBtYXhIZWlnaHQ6IHBvcHVwQ29uZmlnKCkubWF4SGVpZ2h0LFxuICAgICAgICB6SW5kZXg6IHBvcHVwQ29uZmlnKCkuekluZGV4LFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdyb3VuZGVkLVs0cHhdICcgKyBwb3B1cENvbmZpZygpLmNsYXNzSW5jbHVkZSxcbiAgICAgICAgZGlyZWN0aW9uOiBwb3B1cENvbmZpZygpLmRpcmVjdGlvbixcbiAgICAgICAgdGltZXJEZXN0cm95OiBwb3B1cENvbmZpZygpLnRpbWVEZXN0cm95LFxuICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZTogMixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBtb2RlOiBwb3B1cENvbmZpZygpLnBvc2l0aW9uPy5tb2RlIHx8ICdzdGFydCcsXG4gICAgICAgICAgZGlzdGFuY2U6IHBvcHVwQ29uZmlnKCkucG9zaXRpb24/LmRpc3RhbmNlID8/IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cIlxuICAgIFtsYWJlbF09XCJsYWJlbERpc3BsYXkoKVwiXG4gICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlclBvcG92ZXJDb250cm9sRXZlbnQoJGV2ZW50KVwiXG4gICAgKG91dFBvcG92ZXJFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgIChvdXRDbGljayk9XCJoYW5kbGVyQXBwbHkoKVwiIC8+XG4gIEBpZiAoIWFwcGx5Tm93KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctWzFweF0gYmctd2hpdGVcIj48L2Rpdj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cInR5cGVCdXR0b24oKVwiXG4gICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgW3NpemVCdXR0b25dPVwic2l6ZUJ1dHRvbigpXCJcbiAgICAgIFtwb3BvdmVyXT1cIntcbiAgICAgICAgZWxlbWVudFJlZkN1c3RvbTogYnV0dG9uRHJvcGRvd25FbCxcbiAgICAgICAgbW9kZTogJ2NsaWNrLXRvZ2dsZScsXG4gICAgICAgIGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmU6IGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUoKSxcbiAgICAgICAgY29uZmlnOntcbiAgICAgICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgICAgIHRpbWU6LjVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZUNvbnRlbnRFbCxcbiAgICAgICAgICB3aGl0ZVRoZW1lOiB0cnVlLFxuICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgIHdpZHRoOiBwb3B1cENvbmZpZygpLndpZHRoLFxuICAgICAgICAgIG1heFdpZHRoOiBwb3B1cENvbmZpZygpLm1heFdpZHRoLFxuICAgICAgICAgIHdpZHRoQnlQYXJlbnQ6IHBvcHVwQ29uZmlnKCkud2lkdGhCeVBhcmVudCA/PyBmYWxzZSxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHBvcHVwQ29uZmlnKCkubWF4SGVpZ2h0LFxuICAgICAgICAgIHpJbmRleDogcG9wdXBDb25maWcoKS56SW5kZXgsXG4gICAgICAgICAgZGlyZWN0aW9uOiBwb3B1cENvbmZpZygpLmRpcmVjdGlvbixcbiAgICAgICAgICBjbGFzc0luY2x1ZGU6IHBvcHVwQ29uZmlnKCkuY2xhc3NJbmNsdWRlLFxuICAgICAgICAgIGRpcmVjdGlvbkRpc3RhbmNlOjIsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIG1vZGU6ICdzdGFydCcsXG4gICAgICAgICAgICBkaXN0YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVwiXG4gICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cImNsYXNzSWNvblJpZ2h0KClcIlxuICAgICAgW2NsYXNzSW5jbHVkZV09XCJjbGFzc0luY2x1ZGUoKSB8fCAnIXB5LVs5cHhdJ1wiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyUG9wb3ZlckNvbnRyb2xFdmVudCgkZXZlbnQpXCJcbiAgICAgIChvdXRQb3BvdmVyRXZlbnQpPVwiaGFuZGxlclBvcG92ZXJFdmVudCgkZXZlbnQpXCIgLz5cbiAgfVxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3RlbXBsYXRlQ29udGVudEVsPlxuICA8ZGl2PlxuICAgIEBpZiAoaXRlbXMoKSAmJiBpdGVtcygpLmxlbmd0aCkge1xuICAgICAgPGRpdiBjbGFzcz1cIm0tMCBwLTBcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInt7IGl0ZW0uY2xhc3NSb3cgfHwgJycgfX1cIj5cbiAgICAgICAgICAgIDxkaXYgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7Y29udGVudDogaXRlbS5wb3BvdmVyQ29udGVudCwgekluZGV4OiBwb3B1cENvbmZpZygpLnpJbmRleCwgZGlyZWN0aW9uRGlzdGFuY2U6IC0yfVwiXG4gICAgICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5zaG93UG9wb3ZlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1iZy1saXN0LWhvdmVyIHJlbGF0aXZlIGN1cnNvci1wb2ludGVyIHB5LVs4cHhdIHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19ICB7eyBzaG93Qm9yZGVyQm90dG9tKCkgPyAnbGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWwnIDogJycgfX1cIlxuICAgICAgICAgICAgICBbY2xhc3MuZmxleF09XCIhaXRlbS5pZ25vcmVGbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnB4LVsxNnB4XV09XCJhcHBseU5vdygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBsLVsxNnB4XV09XCIhYXBwbHlOb3coKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wci1bNDBweF1dPVwiIWFwcGx5Tm93KClcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cIml0ZW0uZGlzYWJsZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtW2ZpZWxkQ2xhc3NJY29uTGVmdCgpXSkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtW2ZpZWxkQ2xhc3NJY29uTGVmdCgpXVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiaXRlbVtmaWVsZENsYXNzKCldXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGREaXNwbGF5KCldIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbY2xhc3NJY29uTGVmdF09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLmljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0uYnV0dG9uVGVtcGxhdGVDb25maWcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiaXRlbS5idXR0b25UZW1wbGF0ZUNvbmZpZy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uVGVtcGxhdGUoJGV2ZW50LCBpdGVtLCBpdGVtcygpKVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLnR5cGVcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtPy5zdWJUZW1wbGF0ZSB8fCBudWxsO2NvbnRleHQ6e2l0ZW06aXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtW2tleUZpZWxkKCldID09PSBrZXlTZWxlY3RlZCgpICYmICFhcHBseU5vdygpKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hlY2sgYWJzb2x1dGUgcmlnaHQtWzE2cHhdIHRvcC1bOHB4XVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cInAtWzIwcHhdXCJcbiAgICAgICAgW2lubmVySHRtbF09XCInaTE4bl9ub19kYXRhJyB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2J1dHRvbnMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9idXR0b25zL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUE4QixzQ0FBc0MsRUFBaUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2SixPQUFPLEVBQWdDLGdDQUFnQyxFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWV0RCxNQUFNLE9BQU8sd0NBQXdDO0lBRW5ELG1CQUFtQjtJQUNULFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUVoRSxnQkFBZ0I7SUFDUCxLQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDeEIsVUFBVSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztJQUN4RSxrQkFBa0IsR0FBRyxLQUFLLENBQVMsZUFBZSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7SUFDL0UsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQXlCLEVBQUUsU0FB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QUUsQ0FBQztJQUN0QixDQUFDO3dHQS9FVSx3Q0FBd0M7NEZBQXhDLHdDQUF3Qyx3d0dDckJyRCxnMktBOEhBLGswRUQvR0ksZUFBZSw0RkFBRSxnQkFBZ0Isb0pBQ2pDLHNDQUFzQyxpaEJBQ3RDLGdDQUFnQzs7NEZBSXZCLHdDQUF3QztrQkFicEQsU0FBUzsrQkFFRSxxQ0FBcUMsY0FHbkMsSUFBSSxXQUNQO3dCQUNQLGVBQWUsRUFBRSxnQkFBZ0I7d0JBQ2pDLHNDQUFzQzt3QkFDdEMsZ0NBQWdDO3FCQUNqQyxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9wdXBDb25maWdCdXR0b25Ecm9wZG93biwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsIFRZUEVfQlVUVE9OLCBUWVBFX1NJWkVfQlVUVE9OIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5ULCBUWVBFX1BPUE9WRVJfTU9ERSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBlc2NhcGVIdG1sIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0Ryb3Bkb3duQ29tcG9uZW50IHtcblxuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBsYWJlbERpc3BsYXkgPSBjb21wdXRlZCh0aGlzLmxhYmVsQ29tcHV0ZWQuYmluZCh0aGlzKSlcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZENsYXNzID0gaW5wdXQ8c3RyaW5nPignY2xhc3MnKTsgLy8gY2hhbmdlIGNvbG9yIGxhYmVsIGl0ZW0gb2YgaXRlbXNcbiAgcmVhZG9ubHkgZmllbGRDbGFzc0ljb25MZWZ0ID0gaW5wdXQ8c3RyaW5nPignY2xhc3NJY29uTGVmdCcpOyAvLyBpY29uY2xhc3MgaXRlbSBvZiBpdGVtc1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0LnJlcXVpcmVkPEFycmF5PGFueT4sIEFycmF5PGFueT4+KHsgdHJhbnNmb3JtOiBkYXRhID0+IGRhdGEubWFwKGl0ZW0gPT4gKHsgLi4uaXRlbSwgW3RoaXMuZmllbGREaXNwbGF5KCldOiBlc2NhcGVIdG1sKGl0ZW1bdGhpcy5maWVsZERpc3BsYXkoKV0pIH0pKSB9KTsgLy8gcmVxdXJpZWRcbiAgcmVhZG9ubHkgZmllbGREaXNwbGF5ID0gaW5wdXQ8c3RyaW5nPignbGFiZWwnKTsgLy8gcmVxdXJpZWRcbiAgcmVhZG9ubHkga2V5RmllbGQgPSBpbnB1dDxzdHJpbmc+KCdrZXknKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGFwcGx5Tm93ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBpZiBub3QgYXBwbHlOb3c6IGtleUZpZWxkIGlzIHJlcXVyaWVkXG4gIHJlYWRvbmx5IHNob3dCb3JkZXJCb3R0b20gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNpemVCdXR0b24gPSBpbnB1dDxUWVBFX1NJWkVfQlVUVE9OPignbWVkaXVtJyk7XG4gIHJlYWRvbmx5IGNsYXNzTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgaWNvbk9ubHlUeXBlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0ljb25SaWdodCA9IGlucHV0PHN0cmluZz4oJ2xpYnMtdWktaWNvbi1tb3ZlLXJpZ2h0IHJvdGF0ZS1bOTBkZWddJyk7XG4gIHJlYWRvbmx5IGNsYXNzSWNvbkxlZnQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgdHlwZUJ1dHRvbiA9IGlucHV0PFRZUEVfQlVUVE9OPignYnV0dG9uLXByaW1hcnknKTtcbiAgcmVhZG9ubHkgcG9wdXBDb25maWcgPSBpbnB1dDxJUG9wdXBDb25maWdCdXR0b25Ecm9wZG93bj4oeyB3aWR0aDogMjA1LCBtYXhXaWR0aDogMjUwLCBtYXhIZWlnaHQ6IDE0MCwgekluZGV4OiAxMjAwLCBkaXJlY3Rpb246ICd0b3AnIH0pO1xuICByZWFkb25seSBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBtb2RlUG9wb3ZlciA9IGlucHV0PFRZUEVfUE9QT1ZFUl9NT0RFPignY2xpY2stdG9nZ2xlJyk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZUNvbnRhaW5lciA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRTZWxlY3RJdGVtID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgb3V0SG92ZXIgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0QXBwbHkgPSBvdXRwdXQ8YW55PigpOyAvLyBz4butIGThu6VuZyBjaG8gYuG6pW0gYnV0dG9uIGxlZnQgY2jhur8gxJHhu5kgYXBwbHlOb3cgPSBmYWxzZTtcbiAgcmVhZG9ubHkgb3V0UG9wb3ZlckV2ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRJY29uRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oKTtcblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJBcHBseSgpIHtcbiAgICBpZiAoIXRoaXMuYXBwbHlOb3coKSkge1xuICAgICAgdGhpcy5vdXRBcHBseS5lbWl0KHRoaXMuaXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLmtleUZpZWxkKCldID09PSB0aGlzLmtleVNlbGVjdGVkKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IEV2ZW50LCBkYXRhOiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZGF0YS5zdWJUZW1wbGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwbHlOb3coKSkge1xuICAgICAgdGhpcy5rZXlTZWxlY3RlZC5zZXQoZGF0YVt0aGlzLmtleUZpZWxkKCldKTtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RJdGVtLmVtaXQoZGF0YSk7XG4gICAgdGhpcy5vdXRIb3Zlci5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUG9wb3ZlckV2ZW50KGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICB0aGlzLm91dFBvcG92ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUG9wb3ZlckNvbnRyb2xFdmVudChjb250cm9sOiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQoY29udHJvbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNsaWNrQnV0dG9uVGVtcGxhdGUoZXZlbnQ6IEV2ZW50LCBkYXRhOiBhbnksIGl0ZW1zOiBBcnJheTxhbnk+KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZGF0YS5idXR0b25UZW1wbGF0ZUNvbmZpZy5hY3Rpb24oZGF0YSwgaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBsYWJlbENvbXB1dGVkKCkge1xuICAgIGlmICghdGhpcy5rZXlTZWxlY3RlZCgpIHx8ICF0aGlzLml0ZW1zKCkgfHwgIXRoaXMuaXRlbXMoKS5sZW5ndGggfHwgIXRoaXMua2V5RmllbGQoKSB8fCB0aGlzLmFwcGx5Tm93KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsKCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKCkpIHtcbiAgICAgIGlmIChpdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IHRoaXMua2V5U2VsZWN0ZWQoKSkge1xuICAgICAgICByZXR1cm4gaXRlbVt0aGlzLmZpZWxkRGlzcGxheSgpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYWJlbCgpO1xuICB9XG5cbn0iLCI8ZGl2ICNidXR0b25Ecm9wZG93bkVsXG4gIGNsYXNzPVwibGlicy11aS1idXR0b25zLWRyb3Bkb3duIGZsZXgge3sgY2xhc3NJbmNsdWRlQ29udGFpbmVyKCkgfHwgJycgfX1cIlxuICBbY2xhc3MubGlicy11aS1idXR0b25zLWRyb3Bkb3duLXVuLWFwcGx5LW5vd109XCIhYXBwbHlOb3coKVwiXG4gIFtjbGFzcy5saWJzLXVpLWJ1dHRvbnMtZHJvcGRvd24tYXBwbHktbm93LWJ1dHRvbi1wcmltYXJ5XT1cImFwcGx5Tm93KCkgJiYgdHlwZUJ1dHRvbigpID09PSAnYnV0dG9uLXByaW1hcnknXCJcbiAgW2NsYXNzLmxpYnMtdWktYnV0dG9ucy1kcm9wZG93bi1hcHBseS1ub3ctYnV0dG9uLXNlY29uZGFyeV09XCJhcHBseU5vdygpICYmIHR5cGVCdXR0b24oKSA9PT0gJ2J1dHRvbi1zZWNvbmRhcnknXCI+XG4gIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW2Rpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICBbaWNvbk9ubHlUeXBlXT1cImljb25Pbmx5VHlwZSgpXCJcbiAgICBbY2xhc3NJY29uTGVmdF09XCJjbGFzc0ljb25MZWZ0KClcIlxuICAgIFtjbGFzc0ljb25SaWdodF09XCIhYXBwbHlOb3coKSA/ICcnIDogY2xhc3NJY29uUmlnaHQoKVwiXG4gICAgW3R5cGVdPVwidHlwZUJ1dHRvbigpXCJcbiAgICBbY2xhc3NMYWJlbF09XCJjbGFzc0xhYmVsKClcIlxuICAgIFtjbGFzc0luY2x1ZGVdPVwiY2xhc3NJbmNsdWRlKClcIlxuICAgIFtzaXplQnV0dG9uXT1cInNpemVCdXR0b24oKVwiXG4gICAgW3BvcG92ZXJdPVwie1xuICAgICAgZWxlbWVudFJlZkN1c3RvbTogYnV0dG9uRHJvcGRvd25FbCxcbiAgICAgIG1vZGU6IG1vZGVQb3BvdmVyKCksXG4gICAgICBpZ25vcmVTaG93UG9wb3ZlcjogIWFwcGx5Tm93KCksXG4gICAgICBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgICAgICAgIHRpbWU6IC41XG4gICAgICAgIH0sXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZUNvbnRlbnRFbCxcbiAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgaWdub3JlQXJyb3c6IHRydWUsXG4gICAgICAgIHdpZHRoOiBwb3B1cENvbmZpZygpLndpZHRoLFxuICAgICAgICB3aWR0aEJ5UGFyZW50OiBwb3B1cENvbmZpZygpLndpZHRoQnlQYXJlbnQgPz8gZmFsc2UsXG4gICAgICAgIG1heFdpZHRoOiBwb3B1cENvbmZpZygpLm1heFdpZHRoLFxuICAgICAgICBtYXhIZWlnaHQ6IHBvcHVwQ29uZmlnKCkubWF4SGVpZ2h0LFxuICAgICAgICB6SW5kZXg6IHBvcHVwQ29uZmlnKCkuekluZGV4LFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdyb3VuZGVkLVs0cHhdICcgKyBwb3B1cENvbmZpZygpLmNsYXNzSW5jbHVkZSxcbiAgICAgICAgZGlyZWN0aW9uOiBwb3B1cENvbmZpZygpLmRpcmVjdGlvbixcbiAgICAgICAgdGltZXJEZXN0cm95OiBwb3B1cENvbmZpZygpLnRpbWVEZXN0cm95LFxuICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZTogMixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBtb2RlOiBwb3B1cENvbmZpZygpLnBvc2l0aW9uPy5tb2RlIHx8ICdzdGFydCcsXG4gICAgICAgICAgZGlzdGFuY2U6IHBvcHVwQ29uZmlnKCkucG9zaXRpb24/LmRpc3RhbmNlID8/IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cIlxuICAgIFtsYWJlbF09XCJsYWJlbERpc3BsYXkoKVwiXG4gICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlclBvcG92ZXJDb250cm9sRXZlbnQoJGV2ZW50KVwiXG4gICAgKG91dFBvcG92ZXJFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgIChvdXRDbGljayk9XCJoYW5kbGVyQXBwbHkoKVwiIC8+XG4gIEBpZiAoIWFwcGx5Tm93KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctWzFweF0gYmctd2hpdGVcIj48L2Rpdj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cInR5cGVCdXR0b24oKVwiXG4gICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgW3NpemVCdXR0b25dPVwic2l6ZUJ1dHRvbigpXCJcbiAgICAgIFtwb3BvdmVyXT1cIntcbiAgICAgICAgZWxlbWVudFJlZkN1c3RvbTogYnV0dG9uRHJvcGRvd25FbCxcbiAgICAgICAgbW9kZTogJ2NsaWNrLXRvZ2dsZScsXG4gICAgICAgIGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmU6IGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUoKSxcbiAgICAgICAgY29uZmlnOntcbiAgICAgICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgICAgIHRpbWU6LjVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZUNvbnRlbnRFbCxcbiAgICAgICAgICB3aGl0ZVRoZW1lOiB0cnVlLFxuICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgIHdpZHRoOiBwb3B1cENvbmZpZygpLndpZHRoLFxuICAgICAgICAgIG1heFdpZHRoOiBwb3B1cENvbmZpZygpLm1heFdpZHRoLFxuICAgICAgICAgIHdpZHRoQnlQYXJlbnQ6IHBvcHVwQ29uZmlnKCkud2lkdGhCeVBhcmVudCA/PyBmYWxzZSxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHBvcHVwQ29uZmlnKCkubWF4SGVpZ2h0LFxuICAgICAgICAgIHpJbmRleDogcG9wdXBDb25maWcoKS56SW5kZXgsXG4gICAgICAgICAgZGlyZWN0aW9uOiBwb3B1cENvbmZpZygpLmRpcmVjdGlvbixcbiAgICAgICAgICBjbGFzc0luY2x1ZGU6IHBvcHVwQ29uZmlnKCkuY2xhc3NJbmNsdWRlLFxuICAgICAgICAgIGRpcmVjdGlvbkRpc3RhbmNlOjIsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIG1vZGU6ICdzdGFydCcsXG4gICAgICAgICAgICBkaXN0YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVwiXG4gICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cImNsYXNzSWNvblJpZ2h0KClcIlxuICAgICAgW2NsYXNzSW5jbHVkZV09XCJjbGFzc0luY2x1ZGUoKSB8fCAnIXB5LVs5cHhdJ1wiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyUG9wb3ZlckNvbnRyb2xFdmVudCgkZXZlbnQpXCJcbiAgICAgIChvdXRQb3BvdmVyRXZlbnQpPVwiaGFuZGxlclBvcG92ZXJFdmVudCgkZXZlbnQpXCIgLz5cbiAgfVxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3RlbXBsYXRlQ29udGVudEVsPlxuICA8ZGl2PlxuICAgIEBpZiAoaXRlbXMoKSAmJiBpdGVtcygpLmxlbmd0aCkge1xuICAgICAgPGRpdiBjbGFzcz1cIm0tMCBwLTBcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInt7IGl0ZW0uY2xhc3NSb3cgfHwgJycgfX1cIj5cbiAgICAgICAgICAgIDxkaXYgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7Y29udGVudDogaXRlbS5wb3BvdmVyQ29udGVudCwgekluZGV4OiBwb3B1cENvbmZpZygpLnpJbmRleCwgZGlyZWN0aW9uRGlzdGFuY2U6IC0yfVwiXG4gICAgICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5zaG93UG9wb3ZlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1iZy1saXN0LWhvdmVyIHJlbGF0aXZlIGN1cnNvci1wb2ludGVyIHB5LVs4cHhdIHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19ICB7eyBzaG93Qm9yZGVyQm90dG9tKCkgPyAnbGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWwnIDogJycgfX1cIlxuICAgICAgICAgICAgICBbY2xhc3MuZmxleF09XCIhaXRlbS5pZ25vcmVGbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnB4LVsxNnB4XV09XCJhcHBseU5vdygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBsLVsxNnB4XV09XCIhYXBwbHlOb3coKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wci1bNDBweF1dPVwiIWFwcGx5Tm93KClcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cIml0ZW0uZGlzYWJsZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtW2ZpZWxkQ2xhc3NJY29uTGVmdCgpXSkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtW2ZpZWxkQ2xhc3NJY29uTGVmdCgpXVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiaXRlbVtmaWVsZENsYXNzKCldXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGREaXNwbGF5KCldIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbY2xhc3NJY29uTGVmdF09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLmljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0uYnV0dG9uVGVtcGxhdGVDb25maWcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiaXRlbS5idXR0b25UZW1wbGF0ZUNvbmZpZy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uVGVtcGxhdGUoJGV2ZW50LCBpdGVtLCBpdGVtcygpKVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLmJ1dHRvblRlbXBsYXRlQ29uZmlnLnR5cGVcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtPy5zdWJUZW1wbGF0ZSB8fCBudWxsO2NvbnRleHQ6e2l0ZW06aXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtW2tleUZpZWxkKCldID09PSBrZXlTZWxlY3RlZCgpICYmICFhcHBseU5vdygpKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hlY2sgYWJzb2x1dGUgcmlnaHQtWzE2cHhdIHRvcC1bOHB4XVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cInAtWzIwcHhdXCJcbiAgICAgICAgW2lubmVySHRtbF09XCInaTE4bl9ub19kYXRhJyB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -9,9 +9,9 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
9
9
|
|
|
10
10
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
11
|
class LibsUiComponentsButtonsDropdownComponent {
|
|
12
|
-
|
|
12
|
+
// #region PROPERTY
|
|
13
13
|
labelDisplay = computed(this.labelComputed.bind(this));
|
|
14
|
-
|
|
14
|
+
// #region INPUT
|
|
15
15
|
label = input();
|
|
16
16
|
fieldClass = input('class'); // change color label item of items
|
|
17
17
|
fieldClassIconLeft = input('classIconLeft'); // iconclass item of items
|
|
@@ -33,7 +33,7 @@ class LibsUiComponentsButtonsDropdownComponent {
|
|
|
33
33
|
classInclude = input('');
|
|
34
34
|
modePopover = input('click-toggle');
|
|
35
35
|
classIncludeContainer = input();
|
|
36
|
-
|
|
36
|
+
// #region OUTPUT
|
|
37
37
|
outSelectItem = output();
|
|
38
38
|
outHover = output();
|
|
39
39
|
outApply = output(); // sử dụng cho bấm button left chế độ applyNow = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-buttons-dropdown.mjs","sources":["../../../../../../libs-ui/components/buttons/dropdown/src/dropdown.component.ts","../../../../../../libs-ui/components/buttons/dropdown/src/dropdown.component.html","../../../../../../libs-ui/components/buttons/dropdown/src/libs-ui-components-buttons-dropdown.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { IPopupConfigButtonDropdown, LibsUiComponentsButtonsButtonComponent, TYPE_BUTTON, TYPE_SIZE_BUTTON } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE } from '@libs-ui/components-popover';\nimport { escapeHtml } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-buttons-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n standalone: true,\n imports: [\n TranslateModule, NgTemplateOutlet,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsButtonsDropdownComponent {\n\n /* PROPERTY */\n protected labelDisplay = computed(this.labelComputed.bind(this))\n\n /* INPUT */\n readonly label = input<string>();\n readonly fieldClass = input<string>('class'); // change color label item of items\n readonly fieldClassIconLeft = input<string>('classIconLeft'); // iconclass item of items\n readonly items = input.required<Array<any>, Array<any>>({ transform: data => data.map(item => ({ ...item, [this.fieldDisplay()]: escapeHtml(item[this.fieldDisplay()]) })) }); // requried\n readonly fieldDisplay = input<string>('label'); // requried\n readonly keyField = input<string>('key');\n readonly keySelected = model<string>();\n readonly applyNow = input<boolean>(false); // if not applyNow: keyField is requried\n readonly showBorderBottom = input<boolean>(false);\n readonly disable = input<boolean>(false);\n readonly sizeButton = input<TYPE_SIZE_BUTTON>('medium');\n readonly classLabel = input<string>('');\n readonly iconOnlyType = input<boolean>(false);\n readonly classIconRight = input<string>('libs-ui-icon-move-right rotate-[90deg]');\n readonly classIconLeft = input<string>('');\n readonly typeButton = input<TYPE_BUTTON>('button-primary');\n readonly popupConfig = input<IPopupConfigButtonDropdown>({ width: 205, maxWidth: 250, maxHeight: 140, zIndex: 1200, direction: 'top' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>(true);\n readonly classInclude = input<string>('');\n readonly modePopover = input<TYPE_POPOVER_MODE>('click-toggle');\n readonly classIncludeContainer = input<string>();\n\n /* OUTPUT */\n readonly outSelectItem = output<any>();\n readonly outHover = output<boolean>();\n readonly outApply = output<any>(); // sử dụng cho bấm button left chế độ applyNow = false;\n readonly outPopoverEvent = output<TYPE_POPOVER_EVENT>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n readonly outIconEvent = output<MouseEvent>();\n\n /* FUNCTIONS */\n protected async handlerApply() {\n if (!this.applyNow()) {\n this.outApply.emit(this.items().find(item => item[this.keyField()] === this.keySelected()));\n }\n }\n\n protected async handlerSelectItem(event: Event, data: any) {\n event.stopPropagation();\n if (data.subTemplate) {\n return;\n }\n if (!this.applyNow()) {\n this.keySelected.set(data[this.keyField()]);\n }\n this.outSelectItem.emit(data);\n this.outHover.emit(false);\n }\n\n protected async handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n this.outPopoverEvent.emit(event);\n }\n\n protected async handlerPopoverControlEvent(control: IPopoverFunctionControlEvent) {\n this.outFunctionsControl.emit(control);\n }\n\n protected async handlerClickButtonTemplate(event: Event, data: any, items: Array<any>) {\n event.stopPropagation();\n data.buttonTemplateConfig.action(data, items);\n }\n\n private labelComputed() {\n if (!this.keySelected() || !this.items() || !this.items().length || !this.keyField() || this.applyNow()) {\n return this.label();\n }\n for (const item of this.items()) {\n if (item[this.keyField()] === this.keySelected()) {\n return item[this.fieldDisplay()];\n }\n }\n\n return this.label();\n }\n\n}","<div #buttonDropdownEl\n class=\"libs-ui-buttons-dropdown flex {{ classIncludeContainer() || '' }}\"\n [class.libs-ui-buttons-dropdown-un-apply-now]=\"!applyNow()\"\n [class.libs-ui-buttons-dropdown-apply-now-button-primary]=\"applyNow() && typeButton() === 'button-primary'\"\n [class.libs-ui-buttons-dropdown-apply-now-button-secondary]=\"applyNow() && typeButton() === 'button-secondary'\">\n <libs_ui-components-buttons-button [disable]=\"disable()\"\n [iconOnlyType]=\"iconOnlyType()\"\n [classIconLeft]=\"classIconLeft()\"\n [classIconRight]=\"!applyNow() ? '' : classIconRight()\"\n [type]=\"typeButton()\"\n [classLabel]=\"classLabel()\"\n [classInclude]=\"classInclude()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: modePopover(),\n ignoreShowPopover: !applyNow(),\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n animationConfig: {\n time: .5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n widthByParent: popupConfig().widthByParent ?? false,\n maxWidth: popupConfig().maxWidth,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n classInclude: 'rounded-[4px] ' + popupConfig().classInclude,\n direction: popupConfig().direction,\n timerDestroy: popupConfig().timeDestroy,\n directionDistance: 2,\n position: {\n mode: popupConfig().position?.mode || 'start',\n distance: popupConfig().position?.distance ?? 0\n }\n }\n }\"\n [label]=\"labelDisplay()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\"\n (outClick)=\"handlerApply()\" />\n @if (!applyNow()) {\n <div class=\"h-full w-[1px] bg-white\"></div>\n <libs_ui-components-buttons-button [type]=\"typeButton()\"\n [disable]=\"disable()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: ignoreHiddenPopoverContentWhenMouseLeave(),\n config:{\n animationConfig: {\n time:.5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n maxWidth: popupConfig().maxWidth,\n widthByParent: popupConfig().widthByParent ?? false,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n direction: popupConfig().direction,\n classInclude: popupConfig().classInclude,\n directionDistance:2,\n position: {\n mode: 'start',\n distance: 0\n }\n }\n }\"\n [iconOnlyType]=\"true\"\n [classIconRight]=\"classIconRight()\"\n [classInclude]=\"classInclude() || '!py-[9px]'\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\" />\n }\n</div>\n<ng-template #templateContentEl>\n <div>\n @if (items() && items().length) {\n <div class=\"m-0 p-0\">\n @for (item of items(); track item) {\n <div class=\"{{ item.classRow || '' }}\">\n <div LibsUiComponentsPopoverDirective\n [config]=\"{content: item.popoverContent, zIndex: popupConfig().zIndex, directionDistance: -2}\"\n [ignoreShowPopover]=\"!item.showPopover\"\n class=\"libs-ui-bg-list-hover relative cursor-pointer py-[8px] {{ item.classInclude || '' }} {{ showBorderBottom() ? 'libs-ui-border-bottom-general' : '' }}\"\n [class.flex]=\"!item.ignoreFlex\"\n [class.px-[16px]]=\"applyNow()\"\n [class.pl-[16px]]=\"!applyNow()\"\n [class.pr-[40px]]=\"!applyNow()\"\n [class.libs-ui-disable]=\"item.disable\"\n [class.pointer-events-none]=\"item.disable\"\n (click)=\"handlerSelectItem($event,item)\">\n @if (item[fieldClassIconLeft()]) {\n <i [class]=\"item[fieldClassIconLeft()]\"></i>\n }\n <span [class]=\"item[fieldClass()]\"\n [innerHtml]=\"item[fieldDisplay()] | translate\">\n </span>\n @if (item.buttonTemplateConfig) {\n <libs_ui-components-buttons-button [classIconLeft]=\"item.buttonTemplateConfig.iconLeft\"\n [classIconRight]=\"item.buttonTemplateConfig.icon\"\n [label]=\"item.buttonTemplateConfig.label\"\n [classLabel]=\"item.buttonTemplateConfig.label\"\n (outClick)=\"handlerClickButtonTemplate($event, item, items())\"\n [type]=\"item.buttonTemplateConfig.type\" />\n }\n <ng-container *ngTemplateOutlet=\"item?.subTemplate || null;context:{item:item}\"></ng-container>\n @if (item[keyField()] === keySelected() && !applyNow()) {\n <i class=\"libs-ui-icon-check absolute right-[16px] top-[8px]\"></i>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"p-[20px]\"\n [innerHtml]=\"'i18n_no_data' | translate\"></div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-buttons-dropdown.mjs","sources":["../../../../../../libs-ui/components/buttons/dropdown/src/dropdown.component.ts","../../../../../../libs-ui/components/buttons/dropdown/src/dropdown.component.html","../../../../../../libs-ui/components/buttons/dropdown/src/libs-ui-components-buttons-dropdown.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { IPopupConfigButtonDropdown, LibsUiComponentsButtonsButtonComponent, TYPE_BUTTON, TYPE_SIZE_BUTTON } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE } from '@libs-ui/components-popover';\nimport { escapeHtml } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-buttons-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n standalone: true,\n imports: [\n TranslateModule, NgTemplateOutlet,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsButtonsDropdownComponent {\n\n // #region PROPERTY\n protected labelDisplay = computed(this.labelComputed.bind(this))\n\n // #region INPUT\n readonly label = input<string>();\n readonly fieldClass = input<string>('class'); // change color label item of items\n readonly fieldClassIconLeft = input<string>('classIconLeft'); // iconclass item of items\n readonly items = input.required<Array<any>, Array<any>>({ transform: data => data.map(item => ({ ...item, [this.fieldDisplay()]: escapeHtml(item[this.fieldDisplay()]) })) }); // requried\n readonly fieldDisplay = input<string>('label'); // requried\n readonly keyField = input<string>('key');\n readonly keySelected = model<string>();\n readonly applyNow = input<boolean>(false); // if not applyNow: keyField is requried\n readonly showBorderBottom = input<boolean>(false);\n readonly disable = input<boolean>(false);\n readonly sizeButton = input<TYPE_SIZE_BUTTON>('medium');\n readonly classLabel = input<string>('');\n readonly iconOnlyType = input<boolean>(false);\n readonly classIconRight = input<string>('libs-ui-icon-move-right rotate-[90deg]');\n readonly classIconLeft = input<string>('');\n readonly typeButton = input<TYPE_BUTTON>('button-primary');\n readonly popupConfig = input<IPopupConfigButtonDropdown>({ width: 205, maxWidth: 250, maxHeight: 140, zIndex: 1200, direction: 'top' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>(true);\n readonly classInclude = input<string>('');\n readonly modePopover = input<TYPE_POPOVER_MODE>('click-toggle');\n readonly classIncludeContainer = input<string>();\n\n // #region OUTPUT\n readonly outSelectItem = output<any>();\n readonly outHover = output<boolean>();\n readonly outApply = output<any>(); // sử dụng cho bấm button left chế độ applyNow = false;\n readonly outPopoverEvent = output<TYPE_POPOVER_EVENT>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n readonly outIconEvent = output<MouseEvent>();\n\n /* FUNCTIONS */\n protected async handlerApply() {\n if (!this.applyNow()) {\n this.outApply.emit(this.items().find(item => item[this.keyField()] === this.keySelected()));\n }\n }\n\n protected async handlerSelectItem(event: Event, data: any) {\n event.stopPropagation();\n if (data.subTemplate) {\n return;\n }\n if (!this.applyNow()) {\n this.keySelected.set(data[this.keyField()]);\n }\n this.outSelectItem.emit(data);\n this.outHover.emit(false);\n }\n\n protected async handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n this.outPopoverEvent.emit(event);\n }\n\n protected async handlerPopoverControlEvent(control: IPopoverFunctionControlEvent) {\n this.outFunctionsControl.emit(control);\n }\n\n protected async handlerClickButtonTemplate(event: Event, data: any, items: Array<any>) {\n event.stopPropagation();\n data.buttonTemplateConfig.action(data, items);\n }\n\n private labelComputed() {\n if (!this.keySelected() || !this.items() || !this.items().length || !this.keyField() || this.applyNow()) {\n return this.label();\n }\n for (const item of this.items()) {\n if (item[this.keyField()] === this.keySelected()) {\n return item[this.fieldDisplay()];\n }\n }\n\n return this.label();\n }\n\n}","<div #buttonDropdownEl\n class=\"libs-ui-buttons-dropdown flex {{ classIncludeContainer() || '' }}\"\n [class.libs-ui-buttons-dropdown-un-apply-now]=\"!applyNow()\"\n [class.libs-ui-buttons-dropdown-apply-now-button-primary]=\"applyNow() && typeButton() === 'button-primary'\"\n [class.libs-ui-buttons-dropdown-apply-now-button-secondary]=\"applyNow() && typeButton() === 'button-secondary'\">\n <libs_ui-components-buttons-button [disable]=\"disable()\"\n [iconOnlyType]=\"iconOnlyType()\"\n [classIconLeft]=\"classIconLeft()\"\n [classIconRight]=\"!applyNow() ? '' : classIconRight()\"\n [type]=\"typeButton()\"\n [classLabel]=\"classLabel()\"\n [classInclude]=\"classInclude()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: modePopover(),\n ignoreShowPopover: !applyNow(),\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n animationConfig: {\n time: .5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n widthByParent: popupConfig().widthByParent ?? false,\n maxWidth: popupConfig().maxWidth,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n classInclude: 'rounded-[4px] ' + popupConfig().classInclude,\n direction: popupConfig().direction,\n timerDestroy: popupConfig().timeDestroy,\n directionDistance: 2,\n position: {\n mode: popupConfig().position?.mode || 'start',\n distance: popupConfig().position?.distance ?? 0\n }\n }\n }\"\n [label]=\"labelDisplay()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\"\n (outClick)=\"handlerApply()\" />\n @if (!applyNow()) {\n <div class=\"h-full w-[1px] bg-white\"></div>\n <libs_ui-components-buttons-button [type]=\"typeButton()\"\n [disable]=\"disable()\"\n [sizeButton]=\"sizeButton()\"\n [popover]=\"{\n elementRefCustom: buttonDropdownEl,\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: ignoreHiddenPopoverContentWhenMouseLeave(),\n config:{\n animationConfig: {\n time:.5\n },\n template: templateContentEl,\n whiteTheme: true,\n ignoreArrow: true,\n width: popupConfig().width,\n maxWidth: popupConfig().maxWidth,\n widthByParent: popupConfig().widthByParent ?? false,\n maxHeight: popupConfig().maxHeight,\n zIndex: popupConfig().zIndex,\n direction: popupConfig().direction,\n classInclude: popupConfig().classInclude,\n directionDistance:2,\n position: {\n mode: 'start',\n distance: 0\n }\n }\n }\"\n [iconOnlyType]=\"true\"\n [classIconRight]=\"classIconRight()\"\n [classInclude]=\"classInclude() || '!py-[9px]'\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outPopoverEvent)=\"handlerPopoverEvent($event)\" />\n }\n</div>\n<ng-template #templateContentEl>\n <div>\n @if (items() && items().length) {\n <div class=\"m-0 p-0\">\n @for (item of items(); track item) {\n <div class=\"{{ item.classRow || '' }}\">\n <div LibsUiComponentsPopoverDirective\n [config]=\"{content: item.popoverContent, zIndex: popupConfig().zIndex, directionDistance: -2}\"\n [ignoreShowPopover]=\"!item.showPopover\"\n class=\"libs-ui-bg-list-hover relative cursor-pointer py-[8px] {{ item.classInclude || '' }} {{ showBorderBottom() ? 'libs-ui-border-bottom-general' : '' }}\"\n [class.flex]=\"!item.ignoreFlex\"\n [class.px-[16px]]=\"applyNow()\"\n [class.pl-[16px]]=\"!applyNow()\"\n [class.pr-[40px]]=\"!applyNow()\"\n [class.libs-ui-disable]=\"item.disable\"\n [class.pointer-events-none]=\"item.disable\"\n (click)=\"handlerSelectItem($event,item)\">\n @if (item[fieldClassIconLeft()]) {\n <i [class]=\"item[fieldClassIconLeft()]\"></i>\n }\n <span [class]=\"item[fieldClass()]\"\n [innerHtml]=\"item[fieldDisplay()] | translate\">\n </span>\n @if (item.buttonTemplateConfig) {\n <libs_ui-components-buttons-button [classIconLeft]=\"item.buttonTemplateConfig.iconLeft\"\n [classIconRight]=\"item.buttonTemplateConfig.icon\"\n [label]=\"item.buttonTemplateConfig.label\"\n [classLabel]=\"item.buttonTemplateConfig.label\"\n (outClick)=\"handlerClickButtonTemplate($event, item, items())\"\n [type]=\"item.buttonTemplateConfig.type\" />\n }\n <ng-container *ngTemplateOutlet=\"item?.subTemplate || null;context:{item:item}\"></ng-container>\n @if (item[keyField()] === keySelected() && !applyNow()) {\n <i class=\"libs-ui-icon-check absolute right-[16px] top-[8px]\"></i>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"p-[20px]\"\n [innerHtml]=\"'i18n_no_data' | translate\"></div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|