ngx-histaff-alpha 3.7.4 → 3.7.6
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.
- package/esm2022/lib/app/libraries/core-accordion/core-accordion/core-accordion.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-attachment/core-attachment/core-attachment.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-button-group-vns/core-button-group-vns/core-button-group-vns.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-button-group-vns/core-button-vns/core-button-vns.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-checkbox/core-checkbox/core-checkbox.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-checklist/core-checklist/core-checklist.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-control/core-control/core-control.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-date-picker/core-date-picker/core-date-picker.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-dropdown/core-dropdown/core-dropdown.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-list-lazy/core-list-lazy/core-list-lazy.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-mcc/core-mcc/core-mcc.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-org-param/core-org-param.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-org-tree/core-org-tree/core-org-tree.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-page-view/core-page-view/core-page-view.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-query-builder/core-query-builder/core-query-builder.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-root-menu-item-picker/module-item/module-item.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-shift-card/core-shift-card.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-shift-collection/core-shift-collection.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-shift-sticker/core-shift-sticker.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-status-sticker/core-status-sticker/core-status-sticker.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-topic-picker/core-topic-picker.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-topic-tree/core-topic-tree.component.mjs +1 -1
- package/esm2022/lib/app/libraries/navigator/navigator/item.component.mjs +26 -6
- package/esm2022/lib/app/libraries/navigator/navigator/menu-item-svg-edit/menu-item-svg-edit.component.mjs +134 -0
- package/esm2022/lib/app/libraries/navigator/navigator/navigator.component.mjs +58 -5
- package/esm2022/lib/app/libraries/tooltip/tooltip.component.mjs +7 -3
- package/esm2022/lib/app/libraries/tooltip/tooltip.directive.mjs +9 -3
- package/esm2022/lib/app/root/function-ignore/function-ignore/function-ignore.component.mjs +2 -1
- package/esm2022/lib/app/root/menu/menu-edit/menu-edit.component.mjs +1 -2
- package/esm2022/lib/app/root/sys-function-action/sys-function-action/sys-function-action.component.mjs +3 -2
- package/esm2022/lib/app/root/sys-module/sys-module/sys-module.component.mjs +3 -1
- package/esm2022/lib/app/services/navigator.service.mjs +65 -2
- package/fesm2022/ngx-histaff-alpha.mjs +305 -41
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/navigator/navigator/item.component.d.ts +4 -1
- package/lib/app/libraries/navigator/navigator/menu-item-svg-edit/menu-item-svg-edit.component.d.ts +26 -0
- package/lib/app/libraries/navigator/navigator/navigator.component.d.ts +15 -1
- package/lib/app/libraries/tooltip/tooltip.component.d.ts +2 -0
- package/lib/app/libraries/tooltip/tooltip.directive.d.ts +3 -1
- package/lib/app/services/navigator.service.d.ts +7 -1
- package/package.json +1 -1
package/esm2022/lib/app/libraries/core-accordion/core-accordion/core-accordion.component.mjs
CHANGED
|
@@ -68,7 +68,7 @@ export class CoreAccordionComponent extends BaseComponent {
|
|
|
68
68
|
console.log("clickEdit", e);
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreAccordionComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.CoreAccordionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreAccordionComponent, isStandalone: true, selector: "core-accordion", inputs: { sectors: "sectors", enableSwap: "enableSwap", refs: "refs", editDisabled: "editDisabled", manualHeightList: "manualHeightList", heightList: "heightList" }, outputs: { onItemClick: "onItemClick", onItemClickEdit: "onItemClickEdit" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-accordion-container\">\r\n <div class=\"core-accordion-sector\" *ngFor=\"let item of sectors; let index=index\" [class.open]=\"!!item.open\">\r\n <div class=\"sector-header pointer\" (click)=\"toggleOpen(item, index, $event)\">\r\n <div class=\"d-flex-between\">\r\n <div class=\"header-text\">\r\n {{ item.header | translate: lang }} <span *ngIf=\"!!item.required\" class=\"required\">*</span>\r\n </div>\r\n <div class=\"icon-group d-flex-between\">\r\n <div class=\"icon-wrapper\" [class.d-opacity-0]=\"!!!item.open || !!editDisabled\" (click)=\"clickEdit(item, $event)\" [appTooltip]=\"'UI_BUTTON_EDIT'| translate: lang\">\r\n <i class=\"edit d-flex custom-button-edit\"></i>\r\n </div>\r\n <div class=\"icon-wrapper\">\r\n <i class=\"toggler d-flex feather-chevron-down\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"line-divider\" [class.hidden]=\"!!!item.open\">\r\n <core-line></core-line>\r\n </div> -->\r\n\r\n <!--\r\n Until viewInitDone=true, we must allow the component to render its content height\r\n -->\r\n <div class=\"sector-content\" [class.open]=\"!!item.open\"\r\n [ngStyle]=\"{ height: !!manualHeightList ? (!!item.open ? heightList[index] + 'px' : '0px') : (!!viewInitDone ? (!!item.open ? heightList[index] + 'px' : '0px') : 'unset') }\">\r\n <div class=\"block-divider-horizontal\"></div>\r\n <ng-container *ngTemplateOutlet=\"refs[index]\"></ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"sector-content\" [class.open]=\"!!item.open\"\r\n [ngStyle]=\"{ height: !!viewInitDone ? (!!item.open ? heightList[index] + 'px' : '0px') : 'unset' }\">\r\n <div class=\"block-divider-horizontal\"></div>\r\n <ng-container *ngTemplateOutlet=\"refs[index]\"></ng-container>\r\n </div> -->\r\n\r\n </div>\r\n</div>", styles: [".core-accordion-container{--opacity: 1;opacity:var(--opacity);transition:opacity 1s ease-in;--opened-item-overflow: \"hidden\"}.core-accordion-container .d-opacity-0{opacity:0!important;transition:.5s ease-in!important}.core-accordion-container .core-accordion-sector.open{overflow:var(--opened-item-overflow)!important}.core-accordion-container .core-accordion-sector{overflow:hidden!important;background-color:#fff;padding:var(--size-layout-block-cell-spacing);margin:0px 0px var(--size-layout-block-cell-spacing) 0px;border-radius:var(--decoration-block-border-radius);border:1px solid #D1D1D1}.core-accordion-container .header-text{font-weight:400;font-size:15px;text-transform:uppercase}.core-accordion-container .line-divider{opacity:1;transform:translateY(10px);transition:.5s ease-in}.core-accordion-container .hidden{opacity:0!important;transition:.5s ease-in}.core-accordion-container .sector-content{overflow:hidden!important;opacity:0!important;transition:.5s ease-in}.core-accordion-container .sector-content.open{overflow:var(--opened-item-overflow)!important;opacity:1!important}.core-accordion-container .core-line-wrapper{padding-top:var(--size-layout-block-cell-spacing)}.core-accordion-container .required{color:red}.core-accordion-container .icon-group>*{width:30px;height:30px;border-radius:50%;font-size:20px;cursor:pointer}.core-accordion-container .icon-group .d-transparent{opacity:0;transition:opacity .5s ease-in}.core-accordion-container .icon-group .icon-wrapper{width:30px;height:30px;opacity:1;transition:opacity .5s ease-in}.core-accordion-container .icon-group .icon-wrapper:has(.edit){margin-right:10px}.core-accordion-container .icon-group .icon-wrapper:has(.edit):hover{border-radius:50%;background-color:#e7e7e7}.core-accordion-container .icon-group .icon-wrapper:has(.toggler){border-radius:50%;background-color:#f1f1f1;width:33px;height:33px}.core-accordion-container .icon-group .toggler{font-size:20px;color:#a7a7a7;transform:rotate(-90deg);transition:.5s ease-in}.core-accordion-container .core-accordion-sector.open .toggler{transform:rotate(0);transition:.5s ease-in}.custom-button-edit{width:15px;height:15px;display:inline-block;background-size:contain;background-repeat:no-repeat;background-image:url('data:image/svg+xml,<svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.5389 2.00805C12.8642 1.68275 13.3054 1.5 13.7654 1.5C13.9932 1.5 14.2188 1.54487 14.4292 1.63204C14.6397 1.71921 14.8309 1.84698 14.992 2.00805C15.153 2.16912 15.2808 2.36034 15.368 2.57079C15.4551 2.78124 15.5 3.0068 15.5 3.23459C15.5 3.46238 15.4551 3.68794 15.368 3.89839C15.2808 4.10884 15.153 4.30006 14.992 4.46113L4.77078 14.6823L1.5 15.5L2.31769 12.2292L12.5389 2.00805Z\" stroke=\"%23464646\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>')}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreAccordionComponent, isStandalone: true, selector: "core-accordion", inputs: { sectors: "sectors", enableSwap: "enableSwap", refs: "refs", editDisabled: "editDisabled", manualHeightList: "manualHeightList", heightList: "heightList" }, outputs: { onItemClick: "onItemClick", onItemClickEdit: "onItemClickEdit" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-accordion-container\">\r\n <div class=\"core-accordion-sector\" *ngFor=\"let item of sectors; let index=index\" [class.open]=\"!!item.open\">\r\n <div class=\"sector-header pointer\" (click)=\"toggleOpen(item, index, $event)\">\r\n <div class=\"d-flex-between\">\r\n <div class=\"header-text\">\r\n {{ item.header | translate: lang }} <span *ngIf=\"!!item.required\" class=\"required\">*</span>\r\n </div>\r\n <div class=\"icon-group d-flex-between\">\r\n <div class=\"icon-wrapper\" [class.d-opacity-0]=\"!!!item.open || !!editDisabled\" (click)=\"clickEdit(item, $event)\" [appTooltip]=\"'UI_BUTTON_EDIT'| translate: lang\">\r\n <i class=\"edit d-flex custom-button-edit\"></i>\r\n </div>\r\n <div class=\"icon-wrapper\">\r\n <i class=\"toggler d-flex feather-chevron-down\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"line-divider\" [class.hidden]=\"!!!item.open\">\r\n <core-line></core-line>\r\n </div> -->\r\n\r\n <!--\r\n Until viewInitDone=true, we must allow the component to render its content height\r\n -->\r\n <div class=\"sector-content\" [class.open]=\"!!item.open\"\r\n [ngStyle]=\"{ height: !!manualHeightList ? (!!item.open ? heightList[index] + 'px' : '0px') : (!!viewInitDone ? (!!item.open ? heightList[index] + 'px' : '0px') : 'unset') }\">\r\n <div class=\"block-divider-horizontal\"></div>\r\n <ng-container *ngTemplateOutlet=\"refs[index]\"></ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"sector-content\" [class.open]=\"!!item.open\"\r\n [ngStyle]=\"{ height: !!viewInitDone ? (!!item.open ? heightList[index] + 'px' : '0px') : 'unset' }\">\r\n <div class=\"block-divider-horizontal\"></div>\r\n <ng-container *ngTemplateOutlet=\"refs[index]\"></ng-container>\r\n </div> -->\r\n\r\n </div>\r\n</div>", styles: [".core-accordion-container{--opacity: 1;opacity:var(--opacity);transition:opacity 1s ease-in;--opened-item-overflow: \"hidden\"}.core-accordion-container .d-opacity-0{opacity:0!important;transition:.5s ease-in!important}.core-accordion-container .core-accordion-sector.open{overflow:var(--opened-item-overflow)!important}.core-accordion-container .core-accordion-sector{overflow:hidden!important;background-color:#fff;padding:var(--size-layout-block-cell-spacing);margin:0px 0px var(--size-layout-block-cell-spacing) 0px;border-radius:var(--decoration-block-border-radius);border:1px solid #D1D1D1}.core-accordion-container .header-text{font-weight:400;font-size:15px;text-transform:uppercase}.core-accordion-container .line-divider{opacity:1;transform:translateY(10px);transition:.5s ease-in}.core-accordion-container .hidden{opacity:0!important;transition:.5s ease-in}.core-accordion-container .sector-content{overflow:hidden!important;opacity:0!important;transition:.5s ease-in}.core-accordion-container .sector-content.open{overflow:var(--opened-item-overflow)!important;opacity:1!important}.core-accordion-container .core-line-wrapper{padding-top:var(--size-layout-block-cell-spacing)}.core-accordion-container .required{color:red}.core-accordion-container .icon-group>*{width:30px;height:30px;border-radius:50%;font-size:20px;cursor:pointer}.core-accordion-container .icon-group .d-transparent{opacity:0;transition:opacity .5s ease-in}.core-accordion-container .icon-group .icon-wrapper{width:30px;height:30px;opacity:1;transition:opacity .5s ease-in}.core-accordion-container .icon-group .icon-wrapper:has(.edit){margin-right:10px}.core-accordion-container .icon-group .icon-wrapper:has(.edit):hover{border-radius:50%;background-color:#e7e7e7}.core-accordion-container .icon-group .icon-wrapper:has(.toggler){border-radius:50%;background-color:#f1f1f1;width:33px;height:33px}.core-accordion-container .icon-group .toggler{font-size:20px;color:#a7a7a7;transform:rotate(-90deg);transition:.5s ease-in}.core-accordion-container .core-accordion-sector.open .toggler{transform:rotate(0);transition:.5s ease-in}.custom-button-edit{width:15px;height:15px;display:inline-block;background-size:contain;background-repeat:no-repeat;background-image:url('data:image/svg+xml,<svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.5389 2.00805C12.8642 1.68275 13.3054 1.5 13.7654 1.5C13.9932 1.5 14.2188 1.54487 14.4292 1.63204C14.6397 1.71921 14.8309 1.84698 14.992 2.00805C15.153 2.16912 15.2808 2.36034 15.368 2.57079C15.4551 2.78124 15.5 3.0068 15.5 3.23459C15.5 3.46238 15.4551 3.68794 15.368 3.89839C15.2808 4.10884 15.153 4.30006 14.992 4.46113L4.77078 14.6823L1.5 15.5L2.31769 12.2292L12.5389 2.00805Z\" stroke=\"%23464646\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>')}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreAccordionComponent, decorators: [{
|
|
74
74
|
type: Component,
|
package/esm2022/lib/app/libraries/core-attachment/core-attachment/core-attachment.component.mjs
CHANGED
|
@@ -162,7 +162,7 @@ export class CoreAttachmentComponent extends CoreFormControlBaseComponent {
|
|
|
162
162
|
multi: true,
|
|
163
163
|
useExisting: CoreAttachmentComponent,
|
|
164
164
|
}
|
|
165
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "rawInput", first: true, predicate: ["rawInput"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-attachment-container\">\r\n <input id=\"rawInput\" #rawInput type=\"file\" (change)=\"handleInputChange($event)\">\r\n <div class=\"form-control\" type=\"text\" ngDefaultControl [(ngModel)]=\"valueToShow\" readonly\r\n [class.form-control-disabled]=\"disabled\">\r\n <div class=\"text-to-show\" [appTooltip]=\"valueToShow | uploadedFilenameCutoff\" [ngStyle]=\"{\r\n transform: (!!valueToShow && !!!touched) ? 'translate(30px)' : 'translate(0px)'\r\n }\">\r\n {{ valueToShow | uploadedFilenameCutoff }}\r\n </div>\r\n @if (!!valueToShow) {\r\n <i class=\"feather-x\" (click)=\"clear()\"></i>\r\n }\r\n </div>\r\n <div class=\"upload-icon-wrapper\" (click)=\"onClickUpload()\" [class.opacity0]=\"readonly\">\r\n <div class=\"flex-wrapper\">\r\n <i class=\"feather-upload\"></i>\r\n </div>\r\n </div>\r\n @if (!!valueToShow && !!!touched) {\r\n <div class=\"download-icon-wrapper\" (click)=\"onClickDownload()\">\r\n <div class=\"flex-wrapper\">\r\n <i class=\"feather-download\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"dropdown\" [ngStyle]=\"{ height: dropdownHeight + 'px', padding: dropdownPadding + 'px', zIndex: dropdownZIndex }\">\r\n @if (previewable) {\r\n <img [src]=\"valueToShow | mapAttachmentToServer\" imageErrorResolver />\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-attachment-container{--height: 35px;display:block;position:relative;background-color:#fff;width:100%}.core-attachment-container .dropdown{box-sizing:border-box;display:block;position:absolute;width:100%;overflow:hidden;background-color:#fff;font-size:15px;box-shadow:0 1rem 3rem #0000002e;transition:height .25s linear;z-index:calc(var(--max-z-index) + 1)}.core-attachment-container .dropdown img{transform:none;max-width:100%;max-height:170px}.core-attachment-container .dropdown img:hover{transform:none}.core-attachment-container #rawInput{display:none}.core-attachment-container .text-to-show{width:calc(100% - 70px);height:calc(var(--height) - 12px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.core-attachment-container i.feather-x{display:block;position:absolute;right:35px;top:5px;z-index:1;font-size:24px;color:#d3d3d3;cursor:pointer}.core-attachment-container>.upload-icon-wrapper{right:3px;top:3px}.core-attachment-container>.download-icon-wrapper{left:3px;top:3px}.core-attachment-container>.upload-icon-wrapper,.core-attachment-container>.download-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);border-radius:.275rem;cursor:pointer}.core-attachment-container>.upload-icon-wrapper>.flex-wrapper,.core-attachment-container>.download-icon-wrapper>.flex-wrapper{width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);display:flex;align-items:center;justify-content:center}.core-attachment-container>.upload-icon-wrapper>.flex-wrapper>i,.core-attachment-container>.download-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-attachment-container .source-container{display:block;background-color:var(--color-bg-main);padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-attachment-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-attachment-container .source-container.d-none{display:none}.core-attachment-container .source-container>caption{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: UploadedFilenameCutoffPipe, name: "uploadedFilenameCutoff" }, { kind: "pipe", type: MapAttachmentToServerPipe, name: "mapAttachmentToServer" }] }); }
|
|
165
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "rawInput", first: true, predicate: ["rawInput"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-attachment-container\">\r\n <input id=\"rawInput\" #rawInput type=\"file\" (change)=\"handleInputChange($event)\">\r\n <div class=\"form-control\" type=\"text\" ngDefaultControl [(ngModel)]=\"valueToShow\" readonly\r\n [class.form-control-disabled]=\"disabled\">\r\n <div class=\"text-to-show\" [appTooltip]=\"valueToShow | uploadedFilenameCutoff\" [ngStyle]=\"{\r\n transform: (!!valueToShow && !!!touched) ? 'translate(30px)' : 'translate(0px)'\r\n }\">\r\n {{ valueToShow | uploadedFilenameCutoff }}\r\n </div>\r\n @if (!!valueToShow) {\r\n <i class=\"feather-x\" (click)=\"clear()\"></i>\r\n }\r\n </div>\r\n <div class=\"upload-icon-wrapper\" (click)=\"onClickUpload()\" [class.opacity0]=\"readonly\">\r\n <div class=\"flex-wrapper\">\r\n <i class=\"feather-upload\"></i>\r\n </div>\r\n </div>\r\n @if (!!valueToShow && !!!touched) {\r\n <div class=\"download-icon-wrapper\" (click)=\"onClickDownload()\">\r\n <div class=\"flex-wrapper\">\r\n <i class=\"feather-download\"></i>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"dropdown\" [ngStyle]=\"{ height: dropdownHeight + 'px', padding: dropdownPadding + 'px', zIndex: dropdownZIndex }\">\r\n @if (previewable) {\r\n <img [src]=\"valueToShow | mapAttachmentToServer\" imageErrorResolver />\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-attachment-container{--height: 35px;display:block;position:relative;background-color:#fff;width:100%}.core-attachment-container .dropdown{box-sizing:border-box;display:block;position:absolute;width:100%;overflow:hidden;background-color:#fff;font-size:15px;box-shadow:0 1rem 3rem #0000002e;transition:height .25s linear;z-index:calc(var(--max-z-index) + 1)}.core-attachment-container .dropdown img{transform:none;max-width:100%;max-height:170px}.core-attachment-container .dropdown img:hover{transform:none}.core-attachment-container #rawInput{display:none}.core-attachment-container .text-to-show{width:calc(100% - 70px);height:calc(var(--height) - 12px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.core-attachment-container i.feather-x{display:block;position:absolute;right:35px;top:5px;z-index:1;font-size:24px;color:#d3d3d3;cursor:pointer}.core-attachment-container>.upload-icon-wrapper{right:3px;top:3px}.core-attachment-container>.download-icon-wrapper{left:3px;top:3px}.core-attachment-container>.upload-icon-wrapper,.core-attachment-container>.download-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);border-radius:.275rem;cursor:pointer}.core-attachment-container>.upload-icon-wrapper>.flex-wrapper,.core-attachment-container>.download-icon-wrapper>.flex-wrapper{width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);display:flex;align-items:center;justify-content:center}.core-attachment-container>.upload-icon-wrapper>.flex-wrapper>i,.core-attachment-container>.download-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-attachment-container .source-container{display:block;background-color:var(--color-bg-main);padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-attachment-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-attachment-container .source-container.d-none{display:none}.core-attachment-container .source-container>caption{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: UploadedFilenameCutoffPipe, name: "uploadedFilenameCutoff" }, { kind: "pipe", type: MapAttachmentToServerPipe, name: "mapAttachmentToServer" }] }); }
|
|
166
166
|
}
|
|
167
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreAttachmentComponent, decorators: [{
|
|
168
168
|
type: Component,
|
|
@@ -193,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
193
193
|
type: ViewChild,
|
|
194
194
|
args: ['rawInput']
|
|
195
195
|
}] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1hdHRhY2htZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWF0dGFjaG1lbnQvY29yZS1hdHRhY2htZW50L2NvcmUtYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1hdHRhY2htZW50L2NvcmUtYXR0YWNobWVudC9jb3JlLWF0dGFjaG1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQW1DLEtBQUssRUFBb0MsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRyxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsMEJB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aEMsU0FBUzt1QkFBQyxXQUFXO2dCQWFDLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgYXR0YWNobWVudE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXR0YWNobWVudE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgYmxvYl90b19iYXNlNjRfc2NyaXB0IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXNzZXRzL2pzL2Jsb2IyYmFzZTY0X3drJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgY29yZUZpbGVVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9qcy9jb3JlRmlsZVV0aWxzJztcclxuXHJcbmltcG9ydCB7IFVwbG9hZGVkRmlsZW5hbWVDdXRvZmZQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3VwbG9hZGVkLWZpbGVuYW1lLWN1dG9mZi5waXBlJztcclxuaW1wb3J0IHsgVXBsb2FkZWRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VwbG9hZGVkLWZpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hcEF0dGFjaG1lbnRUb1NlcnZlclBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvbWFwLWF0dGFjaG1lbnQtdG8tc2VydmVyLnBpcGUnO1xyXG5pbXBvcnQgeyBJbWFnZUVycm9yUmVzb2x2ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ltYWdlLWVycm9yLXJlc29sdmVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlQXR0YWNobWVudCB7XHJcbiAgYXNzaWduVG86IHN0cmluZztcclxuICBzZXJ2ZXJGaWxlTmFtZT86IHN0cmluZztcclxuICBjbGllbnRGaWxlTmFtZTogc3RyaW5nO1xyXG4gIGNsaWVudEZpbGVUeXBlOiBzdHJpbmc7XHJcbiAgY2xpZW50RmlsZURhdGE6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWF0dGFjaG1lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVXBsb2FkZWRGaWxlbmFtZUN1dG9mZlBpcGUsXHJcbiAgICBNYXBBdHRhY2htZW50VG9TZXJ2ZXJQaXBlLFxyXG4gICAgSW1hZ2VFcnJvclJlc29sdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1hdHRhY2htZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWF0dGFjaG1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZUF0dGFjaG1lbnRDb21wb25lbnQsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUF0dGFjaG1lbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuXHJcbiAgQElucHV0KCkgYXNzaWduVG8hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcmVhZG9ubHkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHZhbHVlVG9TaG93ITogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcmV2aWV3YWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogSUNvcmVBdHRhY2htZW50IHwgbnVsbDtcclxuICBvdmVycmlkZSBvbkNoYW5nZSE6IChfOiBJQ29yZUF0dGFjaG1lbnQgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogSUNvcmVBdHRhY2htZW50IHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9IG9iaj8uc2VydmVyRmlsZU5hbWUgfHwgJydcclxuICB9XHJcblxyXG4gIHdvcmtlciE6IFdvcmtlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgncmF3SW5wdXQnKSByYXdJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBkcm9wZG93bkhlaWdodDogbnVtYmVyID0gMDtcclxuICBkcm9wZG93blBhZGRpbmc6IG51bWJlciA9IDA7XHJcbiAgZHJvcGRvd25aSW5kZXg6IG51bWJlciA9IDE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cGxvYWRlZEZpbGVTZXJ2aWNlOiBVcGxvYWRlZEZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlVG9TaG93J10pIHtcclxuICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IGNoYW5nZXNbJ3ZhbHVlVG9TaG93J10/LmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5wcmV2aWV3YWJsZSA9IHRoaXMudXBsb2FkZWRGaWxlU2VydmljZS5jYW5QcmV2aWV3QXNJbWFnZSh0aGlzLnZhbHVlVG9TaG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcclxuXHJcbiAgICBpZiAoISEhdGhpcy5hc3NpZ25UbyAmJiAhISF0aGlzLnJlYWRvbmx5ICYmIGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBcclxuICAgICAgQ29yZUF0dGFjaG1lbnRDb21wb25lbnQgcmVxdWlyZWQgaW5wdXQgJ2Fzc2lnblRvJ1xyXG4gICAgICBgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmICEhIXRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duSGVpZ2h0ID0gMDtcclxuICAgICAgICAgIHRoaXMuZHJvcGRvd25QYWRkaW5nID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duWkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpICsgMTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrVXBsb2FkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kcm9wZG93bkhlaWdodCA9IDA7XHJcbiAgICB0aGlzLmRyb3Bkb3duUGFkZGluZyA9IDA7XHJcbiAgICB0aGlzLnJhd0lucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrRG93bmxvYWQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlU2VydmljZS5jYW5QcmV2aWV3QXNJbWFnZSh0aGlzLnZhbHVlVG9TaG93KSkge1xyXG5cclxuICAgICAgdGhpcy5kcm9wZG93bkhlaWdodCA9IHRoaXMuZHJvcGRvd25IZWlnaHQgPT09IDAgPyAyMDAgOiAwO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duUGFkZGluZyA9IHRoaXMuZHJvcGRvd25QYWRkaW5nID09PSAwID8gMTUgOiAwO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciB1cmkgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkwgKyAnLycgKyB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU1RBVElDX0ZPTERFUiArICcvYXR0YWNobWVudHMvJyArIHRoaXMudmFsdWVUb1Nob3dcclxuICAgICAgZmV0Y2godXJpKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcclxuICAgICAgICAudGhlbihibG9iID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICBsaW5rLmRvd25sb2FkID0gdGhpcy52YWx1ZVRvU2hvdy5zdWJzdHJpbmcoNTIpO1xyXG4gICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzUHJldmlld2FibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3YWJsZVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRDaGFuZ2UoZTogYW55KSB7XHJcblxyXG4gICAgaWYgKCEhZS50YXJnZXQuZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBlLnRhcmdldC5maWxlc1swXTtcclxuXHJcbiAgICAgIGlmIChmaWxlLnNpemUgPiBhdHRhY2htZW50T3B0aW9ucy5tYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGAke3RoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9BVFRBQ0hNRU5UX01BWElNVU1fQVRUQUNITUVOVF9GSUxFX1NJWkVfRVJST1IpfSAoJHthdHRhY2htZW50T3B0aW9ucy5tYXhGaWxlU2l6ZX0gYnl0ZXMpYCwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZmlsZVwiLCBmaWxlKVxyXG4gICAgICBjb25zdCBjbGllbnRGaWxlTmFtZSA9IGZpbGUubmFtZVxyXG4gICAgICBjb25zdCBjbGllbnRGaWxlVHlwZSA9IGZpbGUudHlwZVxyXG4gICAgICBsZXQgY2xpZW50RmlsZURhdGEgPSBcIlwiXHJcblxyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdKTtcclxuICAgICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGhpcy53b3JrZXIgPSBuZXcgV29ya2VyKGJsb2JfdG9fYmFzZTY0X3NjcmlwdClcclxuICAgICAgICB0aGlzLndvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBlID0+IHtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIndvcmtlciBtZXNzYWdlXCIsIGUpXHJcbiAgICAgICAgICBjbGllbnRGaWxlRGF0YSA9IGUuZGF0YVxyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSAoY2xpZW50RmlsZURhdGEgYXMgc3RyaW5nKS5pbmRleE9mKCdiYXNlNjQsJyk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjbGllbnRGaWxlRGF0YSA9IChjbGllbnRGaWxlRGF0YSBhcyBzdHJpbmcpLnN1YnN0cmluZyhpbmRleCArIDcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh7XHJcbiAgICAgICAgICAgIGFzc2lnblRvOiB0aGlzLmFzc2lnblRvLFxyXG4gICAgICAgICAgICBzZXJ2ZXJGaWxlTmFtZTogdGhpcy52YWx1ZT8uc2VydmVyRmlsZU5hbWUsXHJcbiAgICAgICAgICAgIGNsaWVudEZpbGVOYW1lLFxyXG4gICAgICAgICAgICBjbGllbnRGaWxlVHlwZSxcclxuICAgICAgICAgICAgY2xpZW50RmlsZURhdGEsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSBjbGllbnRGaWxlTmFtZTtcclxuICAgICAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoYmxvYik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29yZUZpbGVVdGlscy5wcm90b3R5cGUuYmxvYlRvQmFzZTY0KGJsb2IpLnRoZW4oKGNsaWVudEZpbGVEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gKGNsaWVudEZpbGVEYXRhIGFzIHN0cmluZykuaW5kZXhPZignYmFzZTY0LCcpO1xyXG4gICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgY2xpZW50RmlsZURhdGEgPSAoY2xpZW50RmlsZURhdGEgYXMgc3RyaW5nKS5zdWJzdHJpbmcoaW5kZXggKyA3KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub25DaGFuZ2Uoe1xyXG4gICAgICAgICAgICBhc3NpZ25UbzogdGhpcy5hc3NpZ25UbyxcclxuICAgICAgICAgICAgc2VydmVyRmlsZU5hbWU6IHRoaXMudmFsdWU/LnNlcnZlckZpbGVOYW1lLFxyXG4gICAgICAgICAgICBjbGllbnRGaWxlTmFtZSxcclxuICAgICAgICAgICAgY2xpZW50RmlsZVR5cGUsXHJcbiAgICAgICAgICAgIGNsaWVudEZpbGVEYXRhLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gY2xpZW50RmlsZU5hbWU7XHJcbiAgICAgICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTp2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9ICcnO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIGNvbnN0IHNpYmxpbmcgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5wYXJlbnQ/LmdldCh0aGlzLmFzc2lnblRvKTtcclxuICAgIGlmICghc2libGluZykge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2jGsGEga2hhaSBiw6FvIGZpZWxkICcke3RoaXMuYXNzaWduVG99J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2libGluZy5wYXRjaFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLWF0dGFjaG1lbnQtY29udGFpbmVyXCI+XHJcbiAgICA8aW5wdXQgaWQ9XCJyYXdJbnB1dFwiICNyYXdJbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgbmdEZWZhdWx0Q29udHJvbCBbKG5nTW9kZWwpXT1cInZhbHVlVG9TaG93XCIgcmVhZG9ubHlcclxuICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdG8tc2hvd1wiIFthcHBUb29sdGlwXT1cInZhbHVlVG9TaG93IHwgdXBsb2FkZWRGaWxlbmFtZUN1dG9mZlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogKCEhdmFsdWVUb1Nob3cgJiYgISEhdG91Y2hlZCkgPyAndHJhbnNsYXRlKDMwcHgpJyA6ICd0cmFuc2xhdGUoMHB4KSdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICB7eyB2YWx1ZVRvU2hvdyB8IHVwbG9hZGVkRmlsZW5hbWVDdXRvZmYgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYgKCEhdmFsdWVUb1Nob3cpIHtcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwiY2xlYXIoKVwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cIm9uQ2xpY2tVcGxvYWQoKVwiIFtjbGFzcy5vcGFjaXR5MF09XCJyZWFkb25seVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXVwbG9hZFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmICghIXZhbHVlVG9TaG93ICYmICEhIXRvdWNoZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25DbGlja0Rvd25sb2FkKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1kb3dubG9hZFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBkcm9wZG93bkhlaWdodCArICdweCcsIHBhZGRpbmc6IGRyb3Bkb3duUGFkZGluZyArICdweCcsIHpJbmRleDogZHJvcGRvd25aSW5kZXggfVwiPlxyXG4gICAgICAgIEBpZiAocHJldmlld2FibGUpIHtcclxuICAgICAgICA8aW1nIFtzcmNdPVwidmFsdWVUb1Nob3cgfCBtYXBBdHRhY2htZW50VG9TZXJ2ZXJcIiBpbWFnZUVycm9yUmVzb2x2ZXIgLz5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1hdHRhY2htZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWF0dGFjaG1lbnQvY29yZS1hdHRhY2htZW50L2NvcmUtYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1hdHRhY2htZW50L2NvcmUtYXR0YWNobWVudC9jb3JlLWF0dGFjaG1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQW1DLEtBQUssRUFBb0MsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRyxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsMEJB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aEMsU0FBUzt1QkFBQyxXQUFXO2dCQWFDLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgYXR0YWNobWVudE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXR0YWNobWVudE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgYmxvYl90b19iYXNlNjRfc2NyaXB0IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXNzZXRzL2pzL2Jsb2IyYmFzZTY0X3drJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgY29yZUZpbGVVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9qcy9jb3JlRmlsZVV0aWxzJztcclxuXHJcbmltcG9ydCB7IFVwbG9hZGVkRmlsZW5hbWVDdXRvZmZQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3VwbG9hZGVkLWZpbGVuYW1lLWN1dG9mZi5waXBlJztcclxuaW1wb3J0IHsgVXBsb2FkZWRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VwbG9hZGVkLWZpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hcEF0dGFjaG1lbnRUb1NlcnZlclBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvbWFwLWF0dGFjaG1lbnQtdG8tc2VydmVyLnBpcGUnO1xyXG5pbXBvcnQgeyBJbWFnZUVycm9yUmVzb2x2ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ltYWdlLWVycm9yLXJlc29sdmVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlQXR0YWNobWVudCB7XHJcbiAgYXNzaWduVG86IHN0cmluZztcclxuICBzZXJ2ZXJGaWxlTmFtZT86IHN0cmluZztcclxuICBjbGllbnRGaWxlTmFtZTogc3RyaW5nO1xyXG4gIGNsaWVudEZpbGVUeXBlOiBzdHJpbmc7XHJcbiAgY2xpZW50RmlsZURhdGE6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWF0dGFjaG1lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVXBsb2FkZWRGaWxlbmFtZUN1dG9mZlBpcGUsXHJcbiAgICBNYXBBdHRhY2htZW50VG9TZXJ2ZXJQaXBlLFxyXG4gICAgSW1hZ2VFcnJvclJlc29sdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1hdHRhY2htZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWF0dGFjaG1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZUF0dGFjaG1lbnRDb21wb25lbnQsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUF0dGFjaG1lbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuXHJcbiAgQElucHV0KCkgYXNzaWduVG8hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcmVhZG9ubHkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHZhbHVlVG9TaG93ITogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcmV2aWV3YWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogSUNvcmVBdHRhY2htZW50IHwgbnVsbDtcclxuICBvdmVycmlkZSBvbkNoYW5nZSE6IChfOiBJQ29yZUF0dGFjaG1lbnQgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogSUNvcmVBdHRhY2htZW50IHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9IG9iaj8uc2VydmVyRmlsZU5hbWUgfHwgJydcclxuICB9XHJcblxyXG4gIHdvcmtlciE6IFdvcmtlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgncmF3SW5wdXQnKSByYXdJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBkcm9wZG93bkhlaWdodDogbnVtYmVyID0gMDtcclxuICBkcm9wZG93blBhZGRpbmc6IG51bWJlciA9IDA7XHJcbiAgZHJvcGRvd25aSW5kZXg6IG51bWJlciA9IDE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cGxvYWRlZEZpbGVTZXJ2aWNlOiBVcGxvYWRlZEZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlVG9TaG93J10pIHtcclxuICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IGNoYW5nZXNbJ3ZhbHVlVG9TaG93J10/LmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5wcmV2aWV3YWJsZSA9IHRoaXMudXBsb2FkZWRGaWxlU2VydmljZS5jYW5QcmV2aWV3QXNJbWFnZSh0aGlzLnZhbHVlVG9TaG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcclxuXHJcbiAgICBpZiAoISEhdGhpcy5hc3NpZ25UbyAmJiAhISF0aGlzLnJlYWRvbmx5ICYmIGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBcclxuICAgICAgQ29yZUF0dGFjaG1lbnRDb21wb25lbnQgcmVxdWlyZWQgaW5wdXQgJ2Fzc2lnblRvJ1xyXG4gICAgICBgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmICEhIXRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duSGVpZ2h0ID0gMDtcclxuICAgICAgICAgIHRoaXMuZHJvcGRvd25QYWRkaW5nID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duWkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpICsgMTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrVXBsb2FkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kcm9wZG93bkhlaWdodCA9IDA7XHJcbiAgICB0aGlzLmRyb3Bkb3duUGFkZGluZyA9IDA7XHJcbiAgICB0aGlzLnJhd0lucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrRG93bmxvYWQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlU2VydmljZS5jYW5QcmV2aWV3QXNJbWFnZSh0aGlzLnZhbHVlVG9TaG93KSkge1xyXG5cclxuICAgICAgdGhpcy5kcm9wZG93bkhlaWdodCA9IHRoaXMuZHJvcGRvd25IZWlnaHQgPT09IDAgPyAyMDAgOiAwO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duUGFkZGluZyA9IHRoaXMuZHJvcGRvd25QYWRkaW5nID09PSAwID8gMTUgOiAwO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciB1cmkgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkwgKyAnLycgKyB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU1RBVElDX0ZPTERFUiArICcvYXR0YWNobWVudHMvJyArIHRoaXMudmFsdWVUb1Nob3dcclxuICAgICAgZmV0Y2godXJpKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcclxuICAgICAgICAudGhlbihibG9iID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICBsaW5rLmRvd25sb2FkID0gdGhpcy52YWx1ZVRvU2hvdy5zdWJzdHJpbmcoNTIpO1xyXG4gICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzUHJldmlld2FibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3YWJsZVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRDaGFuZ2UoZTogYW55KSB7XHJcblxyXG4gICAgaWYgKCEhZS50YXJnZXQuZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBlLnRhcmdldC5maWxlc1swXTtcclxuXHJcbiAgICAgIGlmIChmaWxlLnNpemUgPiBhdHRhY2htZW50T3B0aW9ucy5tYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGAke3RoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9BVFRBQ0hNRU5UX01BWElNVU1fQVRUQUNITUVOVF9GSUxFX1NJWkVfRVJST1IpfSAoJHthdHRhY2htZW50T3B0aW9ucy5tYXhGaWxlU2l6ZX0gYnl0ZXMpYCwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZmlsZVwiLCBmaWxlKVxyXG4gICAgICBjb25zdCBjbGllbnRGaWxlTmFtZSA9IGZpbGUubmFtZVxyXG4gICAgICBjb25zdCBjbGllbnRGaWxlVHlwZSA9IGZpbGUudHlwZVxyXG4gICAgICBsZXQgY2xpZW50RmlsZURhdGEgPSBcIlwiXHJcblxyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdKTtcclxuICAgICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGhpcy53b3JrZXIgPSBuZXcgV29ya2VyKGJsb2JfdG9fYmFzZTY0X3NjcmlwdClcclxuICAgICAgICB0aGlzLndvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBlID0+IHtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIndvcmtlciBtZXNzYWdlXCIsIGUpXHJcbiAgICAgICAgICBjbGllbnRGaWxlRGF0YSA9IGUuZGF0YVxyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSAoY2xpZW50RmlsZURhdGEgYXMgc3RyaW5nKS5pbmRleE9mKCdiYXNlNjQsJyk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjbGllbnRGaWxlRGF0YSA9IChjbGllbnRGaWxlRGF0YSBhcyBzdHJpbmcpLnN1YnN0cmluZyhpbmRleCArIDcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh7XHJcbiAgICAgICAgICAgIGFzc2lnblRvOiB0aGlzLmFzc2lnblRvLFxyXG4gICAgICAgICAgICBzZXJ2ZXJGaWxlTmFtZTogdGhpcy52YWx1ZT8uc2VydmVyRmlsZU5hbWUsXHJcbiAgICAgICAgICAgIGNsaWVudEZpbGVOYW1lLFxyXG4gICAgICAgICAgICBjbGllbnRGaWxlVHlwZSxcclxuICAgICAgICAgICAgY2xpZW50RmlsZURhdGEsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSBjbGllbnRGaWxlTmFtZTtcclxuICAgICAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoYmxvYik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29yZUZpbGVVdGlscy5wcm90b3R5cGUuYmxvYlRvQmFzZTY0KGJsb2IpLnRoZW4oKGNsaWVudEZpbGVEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gKGNsaWVudEZpbGVEYXRhIGFzIHN0cmluZykuaW5kZXhPZignYmFzZTY0LCcpO1xyXG4gICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgY2xpZW50RmlsZURhdGEgPSAoY2xpZW50RmlsZURhdGEgYXMgc3RyaW5nKS5zdWJzdHJpbmcoaW5kZXggKyA3KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub25DaGFuZ2Uoe1xyXG4gICAgICAgICAgICBhc3NpZ25UbzogdGhpcy5hc3NpZ25UbyxcclxuICAgICAgICAgICAgc2VydmVyRmlsZU5hbWU6IHRoaXMudmFsdWU/LnNlcnZlckZpbGVOYW1lLFxyXG4gICAgICAgICAgICBjbGllbnRGaWxlTmFtZSxcclxuICAgICAgICAgICAgY2xpZW50RmlsZVR5cGUsXHJcbiAgICAgICAgICAgIGNsaWVudEZpbGVEYXRhLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gY2xpZW50RmlsZU5hbWU7XHJcbiAgICAgICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTp2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9ICcnO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIGNvbnN0IHNpYmxpbmcgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5wYXJlbnQ/LmdldCh0aGlzLmFzc2lnblRvKTtcclxuICAgIGlmICghc2libGluZykge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2jGsGEga2hhaSBiw6FvIGZpZWxkICcke3RoaXMuYXNzaWduVG99J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2libGluZy5wYXRjaFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLWF0dGFjaG1lbnQtY29udGFpbmVyXCI+XHJcbiAgICA8aW5wdXQgaWQ9XCJyYXdJbnB1dFwiICNyYXdJbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgbmdEZWZhdWx0Q29udHJvbCBbKG5nTW9kZWwpXT1cInZhbHVlVG9TaG93XCIgcmVhZG9ubHlcclxuICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdG8tc2hvd1wiIFthcHBUb29sdGlwXT1cInZhbHVlVG9TaG93IHwgdXBsb2FkZWRGaWxlbmFtZUN1dG9mZlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogKCEhdmFsdWVUb1Nob3cgJiYgISEhdG91Y2hlZCkgPyAndHJhbnNsYXRlKDMwcHgpJyA6ICd0cmFuc2xhdGUoMHB4KSdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICB7eyB2YWx1ZVRvU2hvdyB8IHVwbG9hZGVkRmlsZW5hbWVDdXRvZmYgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYgKCEhdmFsdWVUb1Nob3cpIHtcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwiY2xlYXIoKVwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cIm9uQ2xpY2tVcGxvYWQoKVwiIFtjbGFzcy5vcGFjaXR5MF09XCJyZWFkb25seVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXVwbG9hZFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmICghIXZhbHVlVG9TaG93ICYmICEhIXRvdWNoZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25DbGlja0Rvd25sb2FkKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1kb3dubG9hZFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBkcm9wZG93bkhlaWdodCArICdweCcsIHBhZGRpbmc6IGRyb3Bkb3duUGFkZGluZyArICdweCcsIHpJbmRleDogZHJvcGRvd25aSW5kZXggfVwiPlxyXG4gICAgICAgIEBpZiAocHJldmlld2FibGUpIHtcclxuICAgICAgICA8aW1nIFtzcmNdPVwidmFsdWVUb1Nob3cgfCBtYXBBdHRhY2htZW50VG9TZXJ2ZXJcIiBpbWFnZUVycm9yUmVzb2x2ZXIgLz5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|
|
@@ -132,7 +132,7 @@ export class CoreButtonGroupVnsComponent extends BaseComponent {
|
|
|
132
132
|
this.coreButtonGroupService.instances = newInstances;
|
|
133
133
|
}
|
|
134
134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonGroupVnsComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.RoutingService }, { token: i5.AlertService }, { token: i6.CoreButtonGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreButtonGroupVnsComponent, isStandalone: true, selector: "core-button-group-vns", inputs: { height: "height", instanceNumber: "instanceNumber", forHeader: "forHeader", fixedShow: "fixedShow", shownItems: "shownItems", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-button-group-vns-container\" [ngStyle]=\"{ height: height + 'px' }\">\r\n\r\n @if (!!isRootUser && !!forHeader) {\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"setting-trigger d-flex d-flex-center\" (click)=\"onMapperClick()\"\r\n [appTooltip]=\"'UI_BUTTON_GROUP_SETTING_ADD_REMOVE_ACTION_ITEM_FOR_THIS_SCREEN' | translate : lang\"\r\n position=\"left\">\r\n <i class=\"feather-settings\"></i>\r\n </div>\r\n\r\n }\r\n\r\n @if (!!isRootUser && !!forHeader) {\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"separator\"></div>\r\n }\r\n\r\n @for (button of buttons; track $index) {\r\n @if (!button.hidden) {\r\n <core-button-vns [showCaption]=\"showCaption\" [data]=\"button\" [instanceNumber]=\"instanceNumber\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-vns>\r\n }\r\n }\r\n\r\n @if (!!isRootUser && !!forHeader && !!!buttons.length) {\r\n <span>{{ currentFunctionAssigmentDone ? ('UI_BUTTON_GROUP_NO_ITEM_AVAILABLE_YET' | translate : lang) : '' }}</span>\r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreButtonVnsComponent, selector: "core-button-vns", inputs: ["height", "data", "instanceNumber", "disabled", "showCaption"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreButtonGroupVnsComponent, isStandalone: true, selector: "core-button-group-vns", inputs: { height: "height", instanceNumber: "instanceNumber", forHeader: "forHeader", fixedShow: "fixedShow", shownItems: "shownItems", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-button-group-vns-container\" [ngStyle]=\"{ height: height + 'px' }\">\r\n\r\n @if (!!isRootUser && !!forHeader) {\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"setting-trigger d-flex d-flex-center\" (click)=\"onMapperClick()\"\r\n [appTooltip]=\"'UI_BUTTON_GROUP_SETTING_ADD_REMOVE_ACTION_ITEM_FOR_THIS_SCREEN' | translate : lang\"\r\n position=\"left\">\r\n <i class=\"feather-settings\"></i>\r\n </div>\r\n\r\n }\r\n\r\n @if (!!isRootUser && !!forHeader) {\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"separator\"></div>\r\n }\r\n\r\n @for (button of buttons; track $index) {\r\n @if (!button.hidden) {\r\n <core-button-vns [showCaption]=\"showCaption\" [data]=\"button\" [instanceNumber]=\"instanceNumber\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-vns>\r\n }\r\n }\r\n\r\n @if (!!isRootUser && !!forHeader && !!!buttons.length) {\r\n <span>{{ currentFunctionAssigmentDone ? ('UI_BUTTON_GROUP_NO_ITEM_AVAILABLE_YET' | translate : lang) : '' }}</span>\r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreButtonVnsComponent, selector: "core-button-vns", inputs: ["height", "data", "instanceNumber", "disabled", "showCaption"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
136
136
|
}
|
|
137
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonGroupVnsComponent, decorators: [{
|
|
138
138
|
type: Component,
|
|
@@ -91,7 +91,7 @@ export class CoreButtonVnsComponent {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonVnsComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.CoreButtonGroupService }, { token: i3.AlertService }, { token: i0.Renderer2 }, { token: i4.DomService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreButtonVnsComponent, isStandalone: true, selector: "core-button-vns", inputs: { height: "height", data: "data", instanceNumber: "instanceNumber", disabled: "disabled", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container [ngStyle]=\"{ height: height + 'px' }\" [class.alpha-header-btn]=\"!!data.isHeader\"\r\n [class.alpha-non-header-btn]=\"!data.isHeader\" class=\"core-button-vns-container d-flex d-flex-center\"\r\n [appTooltip]=\"data.caption | translate: lang\" (click)=\"!hidden ? onButtonClick() : null\">\r\n <div [ngClass]=\"data.styleClass\" [class.disabled]=\"disabled\" [class.temporary-unavailable]=\"!!hidden\">\r\n <i src=\"\" [class]=\"data.iconClass\" [class.temporary-unavailable]=\"!!hidden\"></i>\r\n\r\n @if (!!showCaption || !!data.showCaption) {\r\n <span [class.temporary-unavailable]=\"!!hidden\" class=\"button-caption\">{{ data.caption | translate: lang\r\n }}</span>\r\n }\r\n\r\n @if (!!data.isDropdown) {\r\n <div #dropdown class=\"header-button-dropdown-wrapper\" [ngStyle]=\"{\r\n position: 'absolute',\r\n display: !!expandState ? 'block' : 'none',\r\n minWidth: '100px',\r\n zIndex: domService.getMaxZIndex() + 1\r\n }\">\r\n @for (item of data.dropdownOptions!; track item) {\r\n <div class=\"header-button-dropdown-line\" (click)=\"onChildClick(item, $event)\">\r\n <span [class]=\"item.childIconWrapperClass\">\r\n <i [class]=\"item.childIconClass\"></i>\r\n </span>\r\n <span [ngStyle]=\"{\r\n textOverflow: 'ellipsis'\r\n }\" [appTooltip]=\"item.childCaptionCode | translate: lang\">{{ item.childCaptionCode |\r\n translate: lang }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreButtonVnsComponent, isStandalone: true, selector: "core-button-vns", inputs: { height: "height", data: "data", instanceNumber: "instanceNumber", disabled: "disabled", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container [ngStyle]=\"{ height: height + 'px' }\" [class.alpha-header-btn]=\"!!data.isHeader\"\r\n [class.alpha-non-header-btn]=\"!data.isHeader\" class=\"core-button-vns-container d-flex d-flex-center\"\r\n [appTooltip]=\"data.caption | translate: lang\" (click)=\"!hidden ? onButtonClick() : null\">\r\n <div [ngClass]=\"data.styleClass\" [class.disabled]=\"disabled\" [class.temporary-unavailable]=\"!!hidden\">\r\n <i src=\"\" [class]=\"data.iconClass\" [class.temporary-unavailable]=\"!!hidden\"></i>\r\n\r\n @if (!!showCaption || !!data.showCaption) {\r\n <span [class.temporary-unavailable]=\"!!hidden\" class=\"button-caption\">{{ data.caption | translate: lang\r\n }}</span>\r\n }\r\n\r\n @if (!!data.isDropdown) {\r\n <div #dropdown class=\"header-button-dropdown-wrapper\" [ngStyle]=\"{\r\n position: 'absolute',\r\n display: !!expandState ? 'block' : 'none',\r\n minWidth: '100px',\r\n zIndex: domService.getMaxZIndex() + 1\r\n }\">\r\n @for (item of data.dropdownOptions!; track item) {\r\n <div class=\"header-button-dropdown-line\" (click)=\"onChildClick(item, $event)\">\r\n <span [class]=\"item.childIconWrapperClass\">\r\n <i [class]=\"item.childIconClass\"></i>\r\n </span>\r\n <span [ngStyle]=\"{\r\n textOverflow: 'ellipsis'\r\n }\" [appTooltip]=\"item.childCaptionCode | translate: lang\">{{ item.childCaptionCode |\r\n translate: lang }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
95
95
|
}
|
|
96
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonVnsComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
@@ -47,7 +47,7 @@ export class CoreCheckboxComponent extends CoreFormControlBaseComponent {
|
|
|
47
47
|
multi: true,
|
|
48
48
|
useExisting: CoreCheckboxComponent
|
|
49
49
|
}
|
|
50
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <div\r\n class=\"core-checkbox-container\"\r\n (click)=\"onLabelClick($event)\"\r\n [class.form-control-disabled]=\"disabled\"\r\n >\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n </div>\r\n</div>\r\n", styles: ["input{display:none}.core-checkbox-container{--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 3px;--font-size: 15px;--text-color: gray;display:inline-block;align-items:center;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-top:4%}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);margin-right:.5em;border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);padding-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:12px;height:6px;border-left:3px solid #464646;border-bottom:3px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
|
|
50
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <div\r\n class=\"core-checkbox-container\"\r\n (click)=\"onLabelClick($event)\"\r\n [class.form-control-disabled]=\"disabled\"\r\n >\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n </div>\r\n</div>\r\n", styles: ["input{display:none}.core-checkbox-container{--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 3px;--font-size: 15px;--text-color: gray;display:inline-block;align-items:center;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-top:4%}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);margin-right:.5em;border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);padding-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:12px;height:6px;border-left:3px solid #464646;border-bottom:3px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreCheckboxComponent, decorators: [{
|
|
53
53
|
type: Component,
|
package/esm2022/lib/app/libraries/core-checklist/core-checklist/core-checklist.component.mjs
CHANGED
|
@@ -164,7 +164,7 @@ export class CoreChecklistComponent extends CoreFormControlBaseComponent {
|
|
|
164
164
|
multi: true,
|
|
165
165
|
useExisting: CoreChecklistComponent,
|
|
166
166
|
},
|
|
167
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-checklist-container\">\r\n <input type=\"checkbox\" class=\"expand-state\" [(ngModel)]=\"expandState\">\r\n <input class=\"value\" [value]=\"value\">\r\n <label [appTooltip]=\"textStringify\" type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\" (click)=\"toggleExpanded()\">\r\n <span [appTooltip]=\"!!toggleAllValue ? (textCodeWhenAllSelected | translate: lang) : text\">{{ (!!toggleAllValue ? (textCodeWhenAllSelected | translate: lang) : text) || placeholder }}</span>\r\n <div class=\"icon\">\r\n <i class=\"feather-chevron-down\"></i>\r\n </div>\r\n </label>\r\n <div class=\"dropdown\" [class.form-control-disabled]=\"disabled\">\r\n <div class=\"toggle-all-wrapper\">\r\n <core-checkbox [text]=\"toggleAllText\" [(ngModel)]=\"toggleAllValue\"\r\n (ngModelChange)=\"onToggleAllValueChange($event)\" [disabled]=\"disabled\"></core-checkbox>\r\n </div>\r\n <input class=\"search\" type=\"text\" placeholder=\"Search here...\" [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchTextChange($event)\" autocomplete=\"false\" [class.form-control-disabled]=\"disabled\">\r\n <ul [class.form-control-disabled]=\"disabled\">\r\n <li *ngFor=\"let option of localOptions; let index = index\">\r\n <core-checkbox [text]=\"option.text\" [(ngModel)]=\"option.checked\"\r\n (ngModelChange)=\"onItemValueChange(option, $event)\" [disabled]=\"disabled\"></core-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n</div>", styles: [".core-checklist-container{font-size:13px;position:relative;display:block;--indicator-height: 0px;--search-bg-color: white;--search-border-color: #D1D1D1;--search-item-hover-bg: #358ccb;--search-item-hover-color: white;--dropdown-bg: lightyellow;--arrow-color: #358ccb;--height: var(--size-form-control-height);--max-z-index: 0}.core-checklist-container input.expand-state,.core-checklist-container .value{display:none}.core-checklist-container label.text{width:100%;height:var(--height);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;justify-content:space-between}.core-checklist-container label.text span{width:calc(100% - var(--height));overflow-x:hidden;text-overflow:ellipsis;color:inherit}.core-checklist-container label.text div.icon{display:flex;align-items:center;justify-content:center;position:absolute;right:3px;top:3px;width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);background-color:#e9e9e9;border-radius:3px;cursor:pointer}.core-checklist-container label.text div.icon i{width:28px;height:28px;font-size:28px;color:#848484}.core-checklist-container .dropdown{display:block;position:absolute;width:100%;max-height:0px;overflow-y:auto;overflow-x:hidden;background-color:#fff;font-size:13px;box-shadow:0 1rem 3rem #0000002e;transition:.25s linear;z-index:calc(var(--max-z-index) + 1)}.core-checklist-container .dropdown>.toggle-all-wrapper{margin-left:12px;background-color:var(--search-bg-color);position:sticky}.core-checklist-container .dropdown ul{padding-left:6px}.core-checklist-container .dropdown ul>li{cursor:pointer;padding:6px;transition:.25s linear}.core-checklist-container .dropdown ul>li>label{width:100%}.core-checklist-container .dropdown ul>li:hover{background-color:var(--search-item-hover-bg);color:var(--search-item-hover-color);transition:.25s linear}.core-checklist-container input.expand-state:checked~.dropdown{border:1px solid #ced4da;margin-top:2px;max-height:400px;border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;transition:.25s linear}.core-checklist-container input.search{margin:0;width:100%;border:0;border-bottom:1px solid var(--search-border-color);background-color:var(--search-bg-color);position:sticky;top:0;height:38px;padding:6px 12px;font-size:13px;z-index:calc(var(--max-z-index) + 1)}.core-checklist-container input.search:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
167
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-checklist-container\">\r\n <input type=\"checkbox\" class=\"expand-state\" [(ngModel)]=\"expandState\">\r\n <input class=\"value\" [value]=\"value\">\r\n <label [appTooltip]=\"textStringify\" type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\" (click)=\"toggleExpanded()\">\r\n <span [appTooltip]=\"!!toggleAllValue ? (textCodeWhenAllSelected | translate: lang) : text\">{{ (!!toggleAllValue ? (textCodeWhenAllSelected | translate: lang) : text) || placeholder }}</span>\r\n <div class=\"icon\">\r\n <i class=\"feather-chevron-down\"></i>\r\n </div>\r\n </label>\r\n <div class=\"dropdown\" [class.form-control-disabled]=\"disabled\">\r\n <div class=\"toggle-all-wrapper\">\r\n <core-checkbox [text]=\"toggleAllText\" [(ngModel)]=\"toggleAllValue\"\r\n (ngModelChange)=\"onToggleAllValueChange($event)\" [disabled]=\"disabled\"></core-checkbox>\r\n </div>\r\n <input class=\"search\" type=\"text\" placeholder=\"Search here...\" [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchTextChange($event)\" autocomplete=\"false\" [class.form-control-disabled]=\"disabled\">\r\n <ul [class.form-control-disabled]=\"disabled\">\r\n <li *ngFor=\"let option of localOptions; let index = index\">\r\n <core-checkbox [text]=\"option.text\" [(ngModel)]=\"option.checked\"\r\n (ngModelChange)=\"onItemValueChange(option, $event)\" [disabled]=\"disabled\"></core-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n</div>", styles: [".core-checklist-container{font-size:13px;position:relative;display:block;--indicator-height: 0px;--search-bg-color: white;--search-border-color: #D1D1D1;--search-item-hover-bg: #358ccb;--search-item-hover-color: white;--dropdown-bg: lightyellow;--arrow-color: #358ccb;--height: var(--size-form-control-height);--max-z-index: 0}.core-checklist-container input.expand-state,.core-checklist-container .value{display:none}.core-checklist-container label.text{width:100%;height:var(--height);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;justify-content:space-between}.core-checklist-container label.text span{width:calc(100% - var(--height));overflow-x:hidden;text-overflow:ellipsis;color:inherit}.core-checklist-container label.text div.icon{display:flex;align-items:center;justify-content:center;position:absolute;right:3px;top:3px;width:calc(var(--height) - 6px);height:calc(var(--height) - 6px);background-color:#e9e9e9;border-radius:3px;cursor:pointer}.core-checklist-container label.text div.icon i{width:28px;height:28px;font-size:28px;color:#848484}.core-checklist-container .dropdown{display:block;position:absolute;width:100%;max-height:0px;overflow-y:auto;overflow-x:hidden;background-color:#fff;font-size:13px;box-shadow:0 1rem 3rem #0000002e;transition:.25s linear;z-index:calc(var(--max-z-index) + 1)}.core-checklist-container .dropdown>.toggle-all-wrapper{margin-left:12px;background-color:var(--search-bg-color);position:sticky}.core-checklist-container .dropdown ul{padding-left:6px}.core-checklist-container .dropdown ul>li{cursor:pointer;padding:6px;transition:.25s linear}.core-checklist-container .dropdown ul>li>label{width:100%}.core-checklist-container .dropdown ul>li:hover{background-color:var(--search-item-hover-bg);color:var(--search-item-hover-color);transition:.25s linear}.core-checklist-container input.expand-state:checked~.dropdown{border:1px solid #ced4da;margin-top:2px;max-height:400px;border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;transition:.25s linear}.core-checklist-container input.search{margin:0;width:100%;border:0;border-bottom:1px solid var(--search-border-color);background-color:var(--search-bg-color);position:sticky;top:0;height:38px;padding:6px 12px;font-size:13px;z-index:calc(var(--max-z-index) + 1)}.core-checklist-container input.search:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
168
168
|
}
|
|
169
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreChecklistComponent, decorators: [{
|
|
170
170
|
type: Component,
|
|
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
204
204
|
type: ViewChild,
|
|
205
205
|
args: ['container']
|
|
206
206
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jaGVja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtY2hlY2tsaXN0L2NvcmUtY2hlY2tsaXN0L2NvcmUtY2hlY2tsaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULEtBQUssRUFNTCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFJN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQThCbEUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDRCQUE0QjtJQW1DdEUsWUFDVSxRQUFtQixFQUNuQixVQUFzQixF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ZCxhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjs0TEFJUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFNWSxRQUFRO3NCQUF6QixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7Z0JBRWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaXNEZXZNb2RlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVDaGVja2xpc3RPcHRpb24ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jaGVja2xpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtY2hlY2tsaXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVDaGVja2xpc3RDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ2hlY2tsaXN0Q29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuICBASW5wdXQoKSBwYXJhbU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGdldEJ5SWRPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcbiAgQElucHV0KCkgc2hvd25Gcm9tITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMkITogQmVoYXZpb3JTdWJqZWN0PElDb3JlQ2hlY2tsaXN0T3B0aW9uW10+O1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgdG9nZ2xlQWxsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0Q29kZVdoZW5BbGxTZWxlY3RlZDogRW51bVRyYW5zbGF0ZUtleSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DSEVDS0JPWF9URVhUX1dIRU5fQUxMX1NFTEVDVEVEXHJcblxyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdmVycmlkZSBkaXNhYmxlZCE6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBvcHRpb25zITogSUNvcmVDaGVja2xpc3RPcHRpb25bXTtcclxuXHJcbiAgbG9jYWxPcHRpb25zITogSUNvcmVDaGVja2xpc3RPcHRpb25bXTtcclxuICBvdmVycmlkZSB2YWx1ZSE6IGFueVtdO1xyXG5cclxuICB0ZXh0ITogc3RyaW5nO1xyXG4gIHRleHRTdHJpbmdpZnkhOiBzdHJpbmc7XHJcbiAgc2VhcmNoVGV4dCE6IHN0cmluZztcclxuICBleHBhbmRTdGF0ZSE6IGJvb2xlYW47XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHRvZ2dsZUFsbFRleHQ6IEVudW1UcmFuc2xhdGVLZXkgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09OVFJPTF9DSEVDS0xJU1RfVE9HR0xFX0NIRUNLX0FMTDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcblxyXG4gICAgLyogU1RBUlQ6IENIRUNLIElOUFVUIEVSUk9SICovXHJcbiAgICBpZiAoISEhdGhpcy5vcHRpb25zJCAmJiBpc0Rldk1vZGUoKSkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICBgXHJcbiAgICAgICAgQ29yZUNoZWNrbGlzdENvbXBvbmVudCByZXF1aXJlZCB0aGlzIGlucHV0OiBvcHRpb25zJCE6IEJlaGF2aW9yU3ViamVjdDxJQ29yZURyb3Bkb3duT3B0aW9uW10+O1xyXG4gICAgICAgIEFsc28sIGl0IG5lZWRzIHRvIHJlY2VpdmUgYSBuZXcgdmFsdWUgdGhhdCB1c3VhbGx5IGNvbWVzIGZyb20gYW5kIEFQSSBHZXRBbGwoKSBhY3Rpb25cclxuICAgICAgICBgLFxyXG4gICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghISF0aGlzLnBhcmFtTW9kZSkge1xyXG4gICAgICAvL2dldEJ5SWRPYmplY3QkXHJcbiAgICAgIGlmICghISF0aGlzLmdldEJ5SWRPYmplY3QkICYmIGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICBgQ29yZUNoZWNrbGlzdENvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgICAgZ2V0QnlJZE9iamVjdCQ6IEJlaGF2aW9yU3ViamVjdCZsdDthbnkmZ3Q7IChmb3IgJyR7dGhpcy5uZ0NvbnRyb2wubmFtZX0nKWAsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuc2hvd25Gcm9tICYmICghISF0aGlzLm9wdGlvbnMkLnZhbHVlIHx8ICEhIXRoaXMub3B0aW9ucyQudmFsdWUubGVuZ3RoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgYENvcmVEcm9wZG93bkNvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgIHNob3duRnJvbTogc3RyaW5nOyAoZm9yICcke3RoaXMubmdDb250cm9sLm5hbWV9JylgLFxyXG4gICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qIEVORDogQ0hFQ0sgSU5QVVQgRVJST1IgKi9cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5vcHRpb25zJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB4O1xyXG4gICAgICAgIHRoaXMubG9jYWxPcHRpb25zID0geDtcclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmdldEJ5SWRPYmplY3QkPy5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoeC5pZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy50ZXh0U3RyaW5naWZ5ID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZXZlbnRzIGdldCBjYWxsZWQgYnkgYWxsIGNsaWNrcyBvbiB0aGUgcGFnZVxyXG4gICAgICovXHJcbiAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgIC8qXHJcbiAgICAgICAqIGhhbmRsZSBjbGljayBvdXRzaWRlXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgISEhdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5sb2NhbE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMkLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtYXhaSW5kZXggPSB0aGlzLmRvbVNlcnZpY2UuZ2V0TWF4WkluZGV4KCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLW1heC16LWluZGV4JywgbWF4WkluZGV4ICsgMSk7XHJcbiAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICBsZXQgbmV3VGV4dCA9ICcnO1xyXG4gICAgdGhpcy5vcHRpb25zPy5tYXAoKHgpID0+IHtcclxuICAgICAgLy8gZmluZCBpdGVtIGZyb20gaW5wdXRcclxuICAgICAgY29uc3QgZmlsdGVyID0gb2JqPy5maWx0ZXIoKGkpID0+IHgudmFsdWUgPT09IGkpO1xyXG4gICAgICBpZiAoISFmaWx0ZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIHguY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHguY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGV4dCA9IG5ld1RleHQ7XHJcbiAgICB0aGlzLnRleHRTdHJpbmdpZnkgPSB0aGlzLnRleHQ7XHJcblxyXG4gICAgaWYgKCEhb2JqKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWxsVmFsdWUgPSBvYmoubGVuZ3RoID09PSB0aGlzLm9wdGlvbnM/Lmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWxsVmFsdWUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoVGV4dENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxvY2FsT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHgpID0+IHgudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSkgPj0gMCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kU3RhdGUgPSAhISF0aGlzLmV4cGFuZFN0YXRlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhIWNoYW5nZXNbJ29wdGlvbnMnXSkgcmV0dXJuO1xyXG4gICAgdGhpcy5sb2NhbE9wdGlvbnMgPSBjaGFuZ2VzWydvcHRpb25zJ10/LmN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlQWxsVmFsdWVDaGFuZ2UoZTogYm9vbGVhbikge1xyXG4gICAgbGV0IG5ld1RleHQgPSAnJztcclxuICAgIGxldCBuZXdWYWx1ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZiAoZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICAgIG5ld1ZhbHVlLnB1c2goeC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbVZhbHVlQ2hhbmdlKG9wdGlvbjogSUNvcmVDaGVja2xpc3RPcHRpb24sIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4KSA9PiB4LnZhbHVlID09PSBvcHRpb24udmFsdWUpO1xyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZmlsdGVyWzBdLmNoZWNrZWQgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgIGAke3RoaXMubmdDb250cm9sLm5hbWV9IGVycm9yOiBUaGUgdmFsdWUgJHtvcHRpb24udmFsdWV9IGlzIG5vdCB1bmlxdWUgb3Igbm90IGZvdW5kYCxcclxuICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyxcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGxldCBuZXdUZXh0ID0gJyc7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueVtdID0gW107XHJcbiAgICB0aGlzLm9wdGlvbnNcclxuICAgICAgPy5maWx0ZXIoKHgpID0+ICEheC5jaGVja2VkKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICAgIG5ld1ZhbHVlLnB1c2goeC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy50ZXh0ID0gbmV3VGV4dDtcclxuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLnRvZ2dsZUFsbFZhbHVlID0gbmV3VmFsdWUubGVuZ3RoID09PSB0aGlzLm9wdGlvbnM/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1jaGVja2xpc3QtY29udGFpbmVyXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJleHBhbmQtc3RhdGVcIiBbKG5nTW9kZWwpXT1cImV4cGFuZFN0YXRlXCI+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJ2YWx1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiPlxyXG4gICAgPGxhYmVsIFthcHBUb29sdGlwXT1cInRleHRTdHJpbmdpZnlcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwidGV4dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj5cclxuICAgICAgICA8c3BhbiBbYXBwVG9vbHRpcF09XCIhIXRvZ2dsZUFsbFZhbHVlID8gKHRleHRDb2RlV2hlbkFsbFNlbGVjdGVkIHwgdHJhbnNsYXRlOiBsYW5nKSA6IHRleHRcIj57eyAoISF0b2dnbGVBbGxWYWx1ZSA/ICh0ZXh0Q29kZVdoZW5BbGxTZWxlY3RlZCB8IHRyYW5zbGF0ZTogbGFuZykgOiB0ZXh0KSB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItY2hldnJvbi1kb3duXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWFsbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFt0ZXh0XT1cInRvZ2dsZUFsbFRleHRcIiBbKG5nTW9kZWwpXT1cInRvZ2dsZUFsbFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVG9nZ2xlQWxsVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2hcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGhlcmUuLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaFRleHRDaGFuZ2UoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cImZhbHNlXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDx1bCBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGxvY2FsT3B0aW9uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFt0ZXh0XT1cIm9wdGlvbi50ZXh0XCIgWyhuZ01vZGVsKV09XCJvcHRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JdGVtVmFsdWVDaGFuZ2Uob3B0aW9uLCAkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jaGVja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtY2hlY2tsaXN0L2NvcmUtY2hlY2tsaXN0L2NvcmUtY2hlY2tsaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULEtBQUssRUFNTCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFJN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQThCbEUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDRCQUE0QjtJQW1DdEUsWUFDVSxRQUFtQixFQUNuQixVQUFzQixF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ZCxhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjs0TEFJUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFNWSxRQUFRO3NCQUF6QixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7Z0JBRWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaXNEZXZNb2RlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVDaGVja2xpc3RPcHRpb24ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jaGVja2xpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtY2hlY2tsaXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVDaGVja2xpc3RDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ2hlY2tsaXN0Q29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuICBASW5wdXQoKSBwYXJhbU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGdldEJ5SWRPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcbiAgQElucHV0KCkgc2hvd25Gcm9tITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMkITogQmVoYXZpb3JTdWJqZWN0PElDb3JlQ2hlY2tsaXN0T3B0aW9uW10+O1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgdG9nZ2xlQWxsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0Q29kZVdoZW5BbGxTZWxlY3RlZDogRW51bVRyYW5zbGF0ZUtleSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DSEVDS0JPWF9URVhUX1dIRU5fQUxMX1NFTEVDVEVEXHJcblxyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdmVycmlkZSBkaXNhYmxlZCE6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBvcHRpb25zITogSUNvcmVDaGVja2xpc3RPcHRpb25bXTtcclxuXHJcbiAgbG9jYWxPcHRpb25zITogSUNvcmVDaGVja2xpc3RPcHRpb25bXTtcclxuICBvdmVycmlkZSB2YWx1ZSE6IGFueVtdO1xyXG5cclxuICB0ZXh0ITogc3RyaW5nO1xyXG4gIHRleHRTdHJpbmdpZnkhOiBzdHJpbmc7XHJcbiAgc2VhcmNoVGV4dCE6IHN0cmluZztcclxuICBleHBhbmRTdGF0ZSE6IGJvb2xlYW47XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHRvZ2dsZUFsbFRleHQ6IEVudW1UcmFuc2xhdGVLZXkgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09OVFJPTF9DSEVDS0xJU1RfVE9HR0xFX0NIRUNLX0FMTDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcblxyXG4gICAgLyogU1RBUlQ6IENIRUNLIElOUFVUIEVSUk9SICovXHJcbiAgICBpZiAoISEhdGhpcy5vcHRpb25zJCAmJiBpc0Rldk1vZGUoKSkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICBgXHJcbiAgICAgICAgQ29yZUNoZWNrbGlzdENvbXBvbmVudCByZXF1aXJlZCB0aGlzIGlucHV0OiBvcHRpb25zJCE6IEJlaGF2aW9yU3ViamVjdDxJQ29yZURyb3Bkb3duT3B0aW9uW10+O1xyXG4gICAgICAgIEFsc28sIGl0IG5lZWRzIHRvIHJlY2VpdmUgYSBuZXcgdmFsdWUgdGhhdCB1c3VhbGx5IGNvbWVzIGZyb20gYW5kIEFQSSBHZXRBbGwoKSBhY3Rpb25cclxuICAgICAgICBgLFxyXG4gICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghISF0aGlzLnBhcmFtTW9kZSkge1xyXG4gICAgICAvL2dldEJ5SWRPYmplY3QkXHJcbiAgICAgIGlmICghISF0aGlzLmdldEJ5SWRPYmplY3QkICYmIGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICBgQ29yZUNoZWNrbGlzdENvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgICAgZ2V0QnlJZE9iamVjdCQ6IEJlaGF2aW9yU3ViamVjdCZsdDthbnkmZ3Q7IChmb3IgJyR7dGhpcy5uZ0NvbnRyb2wubmFtZX0nKWAsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuc2hvd25Gcm9tICYmICghISF0aGlzLm9wdGlvbnMkLnZhbHVlIHx8ICEhIXRoaXMub3B0aW9ucyQudmFsdWUubGVuZ3RoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgYENvcmVEcm9wZG93bkNvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgIHNob3duRnJvbTogc3RyaW5nOyAoZm9yICcke3RoaXMubmdDb250cm9sLm5hbWV9JylgLFxyXG4gICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qIEVORDogQ0hFQ0sgSU5QVVQgRVJST1IgKi9cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5vcHRpb25zJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB4O1xyXG4gICAgICAgIHRoaXMubG9jYWxPcHRpb25zID0geDtcclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmdldEJ5SWRPYmplY3QkPy5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoeC5pZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy50ZXh0U3RyaW5naWZ5ID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZXZlbnRzIGdldCBjYWxsZWQgYnkgYWxsIGNsaWNrcyBvbiB0aGUgcGFnZVxyXG4gICAgICovXHJcbiAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgIC8qXHJcbiAgICAgICAqIGhhbmRsZSBjbGljayBvdXRzaWRlXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgISEhdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5sb2NhbE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMkLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtYXhaSW5kZXggPSB0aGlzLmRvbVNlcnZpY2UuZ2V0TWF4WkluZGV4KCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLW1heC16LWluZGV4JywgbWF4WkluZGV4ICsgMSk7XHJcbiAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICBsZXQgbmV3VGV4dCA9ICcnO1xyXG4gICAgdGhpcy5vcHRpb25zPy5tYXAoKHgpID0+IHtcclxuICAgICAgLy8gZmluZCBpdGVtIGZyb20gaW5wdXRcclxuICAgICAgY29uc3QgZmlsdGVyID0gb2JqPy5maWx0ZXIoKGkpID0+IHgudmFsdWUgPT09IGkpO1xyXG4gICAgICBpZiAoISFmaWx0ZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIHguY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHguY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGV4dCA9IG5ld1RleHQ7XHJcbiAgICB0aGlzLnRleHRTdHJpbmdpZnkgPSB0aGlzLnRleHQ7XHJcblxyXG4gICAgaWYgKCEhb2JqKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWxsVmFsdWUgPSBvYmoubGVuZ3RoID09PSB0aGlzLm9wdGlvbnM/Lmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWxsVmFsdWUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoVGV4dENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxvY2FsT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHgpID0+IHgudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSkgPj0gMCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kU3RhdGUgPSAhISF0aGlzLmV4cGFuZFN0YXRlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhIWNoYW5nZXNbJ29wdGlvbnMnXSkgcmV0dXJuO1xyXG4gICAgdGhpcy5sb2NhbE9wdGlvbnMgPSBjaGFuZ2VzWydvcHRpb25zJ10/LmN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlQWxsVmFsdWVDaGFuZ2UoZTogYm9vbGVhbikge1xyXG4gICAgbGV0IG5ld1RleHQgPSAnJztcclxuICAgIGxldCBuZXdWYWx1ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZiAoZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICAgIG5ld1ZhbHVlLnB1c2goeC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbVZhbHVlQ2hhbmdlKG9wdGlvbjogSUNvcmVDaGVja2xpc3RPcHRpb24sIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4KSA9PiB4LnZhbHVlID09PSBvcHRpb24udmFsdWUpO1xyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZmlsdGVyWzBdLmNoZWNrZWQgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgIGAke3RoaXMubmdDb250cm9sLm5hbWV9IGVycm9yOiBUaGUgdmFsdWUgJHtvcHRpb24udmFsdWV9IGlzIG5vdCB1bmlxdWUgb3Igbm90IGZvdW5kYCxcclxuICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyxcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGxldCBuZXdUZXh0ID0gJyc7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueVtdID0gW107XHJcbiAgICB0aGlzLm9wdGlvbnNcclxuICAgICAgPy5maWx0ZXIoKHgpID0+ICEheC5jaGVja2VkKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgbmV3VGV4dCArPSB4LnRleHQgKyAnOyAnO1xyXG4gICAgICAgIG5ld1ZhbHVlLnB1c2goeC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy50ZXh0ID0gbmV3VGV4dDtcclxuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLnRvZ2dsZUFsbFZhbHVlID0gbmV3VmFsdWUubGVuZ3RoID09PSB0aGlzLm9wdGlvbnM/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1jaGVja2xpc3QtY29udGFpbmVyXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJleHBhbmQtc3RhdGVcIiBbKG5nTW9kZWwpXT1cImV4cGFuZFN0YXRlXCI+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJ2YWx1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiPlxyXG4gICAgPGxhYmVsIFthcHBUb29sdGlwXT1cInRleHRTdHJpbmdpZnlcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwidGV4dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj5cclxuICAgICAgICA8c3BhbiBbYXBwVG9vbHRpcF09XCIhIXRvZ2dsZUFsbFZhbHVlID8gKHRleHRDb2RlV2hlbkFsbFNlbGVjdGVkIHwgdHJhbnNsYXRlOiBsYW5nKSA6IHRleHRcIj57eyAoISF0b2dnbGVBbGxWYWx1ZSA/ICh0ZXh0Q29kZVdoZW5BbGxTZWxlY3RlZCB8IHRyYW5zbGF0ZTogbGFuZykgOiB0ZXh0KSB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItY2hldnJvbi1kb3duXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWFsbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFt0ZXh0XT1cInRvZ2dsZUFsbFRleHRcIiBbKG5nTW9kZWwpXT1cInRvZ2dsZUFsbFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVG9nZ2xlQWxsVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2hcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGhlcmUuLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaFRleHRDaGFuZ2UoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cImZhbHNlXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDx1bCBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGxvY2FsT3B0aW9uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFt0ZXh0XT1cIm9wdGlvbi50ZXh0XCIgWyhuZ01vZGVsKV09XCJvcHRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JdGVtVmFsdWVDaGFuZ2Uob3B0aW9uLCAkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|