verben-ng-ui 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -209,11 +209,11 @@ export class DataViewComponent {
209
209
  this.searchValue = val;
210
210
  }
211
211
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataViewComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
212
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", extendCustomClass: "extendCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", importCustomClass: "importCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", importTemplate: "importTemplate", columnTemplate: "columnTemplate", extendTemplate: "extendTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", milliseconds: "milliseconds", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showImportChild: "showImportChild", showExportChild: "showExportChild", showExtendChild: "showExtendChild", create: "create", showSelected: "showSelected", useTwoWayBinding: "useTwoWayBinding", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, viewQueries: [{ propertyName: "filterContentWrapper", first: true, predicate: ["filterContentWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "styleType", "size", "block", "disable", "disabled", "isLoading", "spinnerSize", "spinnerColor", "svg", "svgPosition", "svgWidth", "svgHeight", "svgSize", "svgColor", "icon", "useIcon", "iconPosition", "iconColor", "variant", "weight", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: i4.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }, { 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.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", extendCustomClass: "extendCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", importCustomClass: "importCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", importTemplate: "importTemplate", columnTemplate: "columnTemplate", extendTemplate: "extendTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", milliseconds: "milliseconds", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showImportChild: "showImportChild", showExportChild: "showExportChild", showExtendChild: "showExtendChild", create: "create", showSelected: "showSelected", useTwoWayBinding: "useTwoWayBinding", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, viewQueries: [{ propertyName: "filterContentWrapper", first: true, predicate: ["filterContentWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('null')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "styleType", "size", "block", "disable", "disabled", "isLoading", "spinnerSize", "spinnerColor", "svg", "svgPosition", "svgWidth", "svgHeight", "svgSize", "svgColor", "icon", "useIcon", "iconPosition", "iconColor", "variant", "weight", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: i4.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }, { 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.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
213
213
  }
214
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataViewComponent, decorators: [{
215
215
  type: Component,
216
- args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"] }]
216
+ args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('null')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"] }]
217
217
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { buttonClass: [{
218
218
  type: Input
219
219
  }], iconClass: [{
@@ -310,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
310
310
  type: ViewChild,
311
311
  args: ['filterContentWrapper']
312
312
  }] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8saUJBQWlCO0lBZ0VSO0lBL0RYLFdBQVcsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDbkIsZUFBZSxHQUFZLEVBQUUsQ0FBQztJQUM5QixpQkFBaUIsR0FBWSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLGVBQWUsR0FBWSxFQUFFLENBQUM7SUFDOUIsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFZLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUIsR0FBWSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBWSxDQUFDLENBQUM7SUFDcEIsaUJBQWlCLEdBQVcsRUFBRSxDQUFDO0lBQy9CLFNBQVMsR0FBVyxRQUFRLENBQUM7SUFDN0IsUUFBUSxHQUFXLFdBQVcsQ0FBQztJQUMvQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUs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SztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQzRCLG9CQUFvQjtzQkFBdEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW50ZXJmYWNlIFZpZXdTdGF0ZSB7XG4gIGlzU2VhcmNoPzogYm9vbGVhbjtcbiAgaXNDb2x1bW4/OiBib29sZWFuO1xuICBpc0ZpbHRlcj86IGJvb2xlYW47XG4gIGlzU29ydD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgaXNTZWxlY3Q/OiBib29sZWFuO1xuICBpc0NyZWF0ZT86IGJvb2xlYW47XG4gIGlzVG9nZ2xlPzogYm9vbGVhbjtcbiAgaXNJbXBvcnQ/OiBib29sZWFuO1xuICBpc0V4dGVuZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi1kYXRhLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb25DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgYWN0aXZlSWNvbkNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNvbHVtbkN1c3RvbUNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGZpbHRlckN1c3RvbUNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBleHRlbmRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBleHBvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbXBvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB6SW5kZXg/OiBudW1iZXIgPSA1O1xuICBASW5wdXQoKSBjcmVhdGVDdXN0b21DbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRhYmxlSWNvbjogc3RyaW5nID0gJ2dyaWQtMyc7XG4gIEBJbnB1dCgpIGNhcmRJY29uOiBzdHJpbmcgPSAnbGlzdC12aWV3JztcbiAgQElucHV0KCkgY2FyZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGFibGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaEtleTogc3RyaW5nID0gJ3NlYXJjaCc7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2aWV3U3RhdGU6IFZpZXdTdGF0ZSA9IHtcbiAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICBpc0NvbHVtbjogdHJ1ZSxcbiAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICBpc1NvcnQ6IHRydWUsXG4gICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgaXNDcmVhdGU6IHRydWUsXG4gICAgaXNUb2dnbGU6IHRydWUsXG4gICAgaXNFeHRlbmQ6IHRydWUsXG4gICAgaXNJbXBvcnQ6IHRydWUsXG4gIH07XG5cbiAgQElucHV0KCkgc2VhcmNoVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBpbXBvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNvbHVtblRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgZXh0ZW5kVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBmaWx0ZXJUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNoaWxkcmVuPzogTm9kZTtcbiAgQElucHV0KCkgZXhwb3J0VGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjcmVhdGVUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sdW1uQ291bnQ/OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZFNvcnRDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIG1pbGxpc2Vjb25kczogbnVtYmVyID0gNDAwO1xuICBASW5wdXQoKSBzaG93Q29sdW1uQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ltcG9ydENoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RXh0ZW5kQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VUd29XYXlCaW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaXNUYWJsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHZpZXdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlckNvbnRlbnRXcmFwcGVyJykgZmlsdGVyQ29udGVudFdyYXBwZXIhOiBFbGVtZW50UmVmO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5taWxsaXNlY29uZHMpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHsga2V5OiB0aGlzLnNlYXJjaEtleSwgdmFsdWUgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5pc1RhYmxlVmlldyA9ICF0aGlzLmlzVGFibGVWaWV3O1xuICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHRoaXMuaXNUYWJsZVZpZXcpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0Lm5leHQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgb25DbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHsga2V5OiB0aGlzLnNlYXJjaEtleSwgdmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUgfSk7XG4gIH1cbiAgdG9nZ2xlQ2hpbGRWaWV3KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICB0aGlzLnNob3dDb2x1bW5DaGlsZCA9ICF0aGlzLnNob3dDb2x1bW5DaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NvbHVtbicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZpbHRlcic6XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gIXRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnZmlsdGVyJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHRoaXMuc2hvd1NvcnRDaGlsZCA9ICF0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdzb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0ZWQgPSAhdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdzZWxlY3QnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICB0aGlzLnNob3dFeHBvcnRDaGlsZCA9ICF0aGlzLnNob3dFeHBvcnRDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2V4cG9ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgIHRoaXMuc2hvd0ltcG9ydENoaWxkID0gIXRoaXMuc2hvd0ltcG9ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnaW1wb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXh0ZW5kJzpcbiAgICAgICAgdGhpcy5zaG93RXh0ZW5kQ2hpbGQgPSAhdGhpcy5zaG93RXh0ZW5kQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdleHRlbmQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICB0aGlzLmNyZWF0ZSA9ICF0aGlzLmNyZWF0ZTtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NyZWF0ZScpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgIGtleTogdmlld1R5cGUsXG4gICAgICB2YWx1ZTogdGhpcy5nZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZSksXG4gICAgfSk7XG4gIH1cbiAgcmVzZXRDaGlsZFZpZXdzRXhjZXB0KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjb2x1bW4nKSB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2ZpbHRlcicpIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc29ydCcpIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ3NlbGVjdCcpIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZXhwb3J0JykgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdpbXBvcnQnKSB0aGlzLnNob3dJbXBvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2V4dGVuZCcpIHRoaXMuc2hvd0V4dGVuZENoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnY3JlYXRlJykgdGhpcy5jcmVhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGNsb3NlQ2hpbGRWaWV3KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZpbHRlcic6XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgICB0aGlzLnNob3dJbXBvcnRDaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dGVuZCc6XG4gICAgICAgIHRoaXMuc2hvd0V4dGVuZENoaWxkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgdGhpcy5jcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7XG4gICAgICBrZXk6IHZpZXdUeXBlLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWMgY2hpbGQgdmlld1xuICBnZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93SW1wb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdleHRlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXh0ZW5kQ2hpbGQ7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VhcmNoVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdmFsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICA8ZGl2IGNsYXNzPVwiZHYtc2VhcmNoLWdyb3VwXCI+XG4gICAgPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1RvZ2dsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaWV3KClcIiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIFtpY29uXT1cInRhYmxlSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpc1RhYmxlVmlldyA/IGFjdGl2ZUljb25DbGFzcyA6IGljb25DbGFzc1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwiY2FyZEljb25cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLndpZHRoXT1cImlucHV0V2lkdGhcIlxuICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWFyY2hcIlxuICAgID5cbiAgICAgIDx2ZXJiZW4tc3ZnIFtpY29uXT1cIidzZWFyY2gyJ1wiIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIj48L3ZlcmJlbi1zdmc+XG4gICAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCIhdXNlVHdvV2F5QmluZGluZ1wiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VhcmNoJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMCdcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICAqbmdJZj1cInVzZVR3b1dheUJpbmRpbmdcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCdcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJzAnXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXG4gICAgICAvPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgKm5nSWY9XCJzZWFyY2hWYWx1ZS5sZW5ndGggPiAwXCJcbiAgICAgICAgW2ljb25dPVwiJ2Nsb3NlJ1wiXG4gICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyU2VhcmNoKClcIlxuICAgICAgICBjbGFzcz1cImNsb3NlLWljb24tY2xhc3NcIlxuICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZHYtYWN0aW9uc1wiPlxuICAgIDwhLS0gQ29sdW1uIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93Q29sdW1uQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnY29sdW1uJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDb2x1bW4gJiYgaXNUYWJsZVZpZXdcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBjb2x1bW5DdXN0b21DbGFzcyA/IGNvbHVtbkN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93Q29sdW1uQ2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NvbHVtbicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidjb2x1bW4nXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPkNvbHVtbnM8L3NwYW5cbiAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJkdi1jb3VudFwiPnt7IHNlbGVjdGVkQ29sdW1uQ291bnQgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2hvd0NvbHVtbkNoaWxkID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIEtlcHQgaW4gdGhlIERPTSAoaGlkZGVuIHZpYSBkaXNwbGF5KSByYXRoZXIgdGhhbiAqbmdJZiBzbyB0aGVcbiAgICAgICAgICAgICAgcHJvamVjdGVkIHBhbmVsIHN0YXlzIGNoYW5nZS1kZXRlY3RlZCBhbmQgcmVmbGVjdHMgaG9zdCBzdGF0ZVxuICAgICAgICAgICAgICB1cGRhdGVzIChlLmcuIHJlc3RvcmVkIGNvbHVtbiBhcnJhbmdlbWVudCkgZXZlbiB3aGlsZSBjb2xsYXBzZWQuIC0tPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb2x1bW4tY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmlsdGVyIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnZmlsdGVyJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNGaWx0ZXJcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RmlsdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWx0ZXI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBmaWx0ZXJDdXN0b21DbGFzcyA/IGZpbHRlckN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2ZpbHRlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidmaWx0ZXInXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPkZpbHRlcjwvc3BhblxuICAgICAgICAgID48c3BhbiBjbGFzcz1cImR2LWNvdW50XCI+e3sgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50IH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIlxuICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInNob3dGaWx0ZXJDaGlsZCA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBLZXB0IGluIHRoZSBET00gKGhpZGRlbiB2aWEgZGlzcGxheSkgcmF0aGVyIHRoYW4gKm5nSWYgc28gdGhlXG4gICAgICAgICAgICAgICBwcm9qZWN0ZWQgcGFuZWwgc3RheXMgY2hhbmdlLWRldGVjdGVkIGFuZCByZWZsZWN0cyBob3N0IHN0YXRlXG4gICAgICAgICAgICAgICB1cGRhdGVzIChlLmcuIHJlc3RvcmVkIGZpbHRlcnMpIGV2ZW4gd2hpbGUgY29sbGFwc2VkLiAtLT5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmlsdGVyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLWltcG9ydCBTZWN0aW9uLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnaW1wb3J0JylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNJbXBvcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbXBvcnRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0SW1wb3J0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbXBvcnQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBpbXBvcnRDdXN0b21DbGFzcyA/IGltcG9ydEN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2ltcG9ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidmaWxlJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3Bhbj5JbXBvcnQ8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW2ltcG9ydC1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gU29ydCBTZWN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwic2hvd1NvcnRDaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cImNsb3NlQ2hpbGRWaWV3KCdzb3J0JylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTb3J0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRTb3J0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTb3J0PlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnZHYtYWN0aW9uJywgc29ydEN1c3RvbUNsYXNzID8gc29ydEN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93U29ydENoaWxkXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdzb3J0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ3NvcnQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPlNvcnQ8L3NwYW4+PHNwYW4gY2xhc3M9XCJkdi1jb3VudFwiPnt7IHNlbGVjdGVkU29ydENvdW50IH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW3NvcnQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tRXh0ZW5kIFNlY3Rpb24tLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dFeHRlbmRDaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cImNsb3NlQ2hpbGRWaWV3KCdleHRlbmQnKVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc0V4dGVuZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVuZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFeHRlbmRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEV4dGVuZD5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbbmdDbGFzc109XCJbJ2R2LWFjdGlvbicsIGltcG9ydEN1c3RvbUNsYXNzID8gZXh0ZW5kQ3VzdG9tQ2xhc3MgOiAnJ11cIlxuICAgICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cInNob3dFeHRlbmRDaGlsZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnZXh0ZW5kJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ2V4dGVuZCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHNwYW4+RXh0ZW5kPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0ltcG9ydENoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltleHRlbmQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEV4cG9ydCBTZWN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwic2hvd0V4cG9ydENoaWxkXCJcbiAgICAgIChvdXRTaWRlQ2xpY2spPVwiY2xvc2VDaGlsZFZpZXcoJ2V4cG9ydCcpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzRXhwb3J0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEV4cG9ydFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhwb3J0PlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnZHYtYWN0aW9uJywgZXhwb3J0Q3VzdG9tQ2xhc3MgPyBleHBvcnRDdXN0b21DbGFzcyA6ICcnXVwiXG4gICAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwic2hvd0V4cG9ydENoaWxkXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdleHBvcnQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInZXhwb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICBFeHBvcnRcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW2V4cG9ydC1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBTZWxlY3QgU2VjdGlvbiAtLT5cbiAgICA8IS0tIDxkaXYgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWxlY3RcIj5cbiAgICAgPHNwYW5cbiAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICBzZWxlY3RDdXN0b21DbGFzcyA/IHNlbGVjdEN1c3RvbUNsYXNzIDogJydcbiAgICAgICBdXCJcbiAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UtYWx0KSdcIlxuICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ3NlbGVjdCcpXCJcbiAgICAgPlxuICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzZWxlY3QnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgIDxzcGFuPlNlbGVjdDwvc3Bhbj5cbiAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiNlwiIFtpY29uXT1cIidjaGV2cm9uLWRvd24nXCI+PC92ZXJiZW4tc3ZnPlxuICAgICA8L3NwYW4+XG4gICA8L2Rpdj4gLS0+XG5cbiAgICA8IS0tIENyZWF0ZSBCdXR0b24gamotLT5cblxuICAgIDxkaXZcbiAgICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwiY3JlYXRlXCJcbiAgICAgIChvdXRTaWRlQ2xpY2spPVwiY2xvc2VDaGlsZFZpZXcoJ2NyZWF0ZScpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzQ3JlYXRlXCJcbiAgICA+XG4gICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgW2JnQ29sb3JdPVwiJ3ZhcigtLXZibi1jb2xvci1wcmltYXJ5KSdcIlxuICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY3JlYXRlQ3VzdG9tQ2xhc3NcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itb24tcHJpbWFyeSknXCJcbiAgICAgICAgW3N2Z109XCInYWRkJ1wiXG4gICAgICAgIFtzdmdQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgW3RleHRdPVwiJ0NyZWF0ZSBOZXcnXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnY3JlYXRlJylcIlxuICAgICAgPlxuICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q3JlYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDcmVhdGU+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiY3JlYXRlXCIgc2VsZWN0PVwiW2NyZWF0ZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGlsZHJlbiAvIEN1c3RvbSBhY3Rpb24gYnV0dG9ucyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRyZW47IGVsc2UgZGVmYXVsdENoaWxkcmVuXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiJGFueShjaGlsZHJlbilcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGlsZHJlbj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjaGlsZHJlbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBHcmlkIGFuZCBMaXN0IFZpZXcgSGFuZGxpbmcgLS0+XG48ZGl2ICpuZ0lmPVwiaXNUYWJsZVZpZXc7IGVsc2UgbGlzdFZpZXdUZW1wbGF0ZVwiPlxuICA8ZGl2IFtzdHlsZS5vdmVyZmxvd109XCInYXV0bydcIiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXdUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3NdPVwiY2FyZENsYXNzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8saUJBQWlCO0lBZ0VSO0lBL0RYLFdBQVcsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDbkIsZUFBZSxHQUFZLEVBQUUsQ0FBQztJQUM5QixpQkFBaUIsR0FBWSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLGVBQWUsR0FBWSxFQUFFLENBQUM7SUFDOUIsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFZLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUIsR0FBWSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQVksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBWSxDQUFDLENBQUM7SUFDcEIsaUJBQWlCLEdBQVcsRUFBRSxDQUFDO0lBQy9CLFNBQVMsR0FBVyxRQUFRLENBQUM7SUFDN0IsUUFBUSxHQUFXLFdBQVcsQ0FBQztJQUMvQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3JDLFNBQVMsR0FBYztRQUM5QixRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsSUFBSTtRQUNaLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUM7SUFFTyxjQUFjLENBQVE7SUFDdEIsY0FBYyxDQUFRO0lBQ3RCLGNBQWMsQ0FBUTtJQUN0QixjQUFjLENBQVE7SUFDdEIsY0FBYyxDQUFRO0lBQ3RCLFlBQVksQ0FBUTtJQUNwQixRQUFRLENBQVE7SUFDaEIsY0FBYyxDQUFRO0lBQ3RCLGNBQWMsQ0FBUTtJQUN0QixtQkFBbUIsR0FBWSxDQUFDLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBQzlCLHdCQUF3QixHQUFXLENBQUMsQ0FBQztJQUNyQyxVQUFVLEdBQVcsTUFBTSxDQUFDO0lBQzVCLFlBQVksR0FBVyxHQUFHLENBQUM7SUFDM0IsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9CLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUVsQyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3pDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztJQUNsRSxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWtDLENBQUM7SUFDM0Msb0JBQW9CLENBQWM7SUFFckUsUUFBUSxLQUFVLENBQUM7SUFDbkIsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQyxJQUFJLENBQUMsYUFBYTthQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQVk7UUFDMUIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELGVBQWUsQ0FBQyxRQUFnQjtRQUM5QixRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsR0FBRyxFQUFFLFFBQVE7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsUUFBZ0I7UUFDcEMsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hELElBQUksUUFBUSxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN4RCxJQUFJLFFBQVEsS0FBSyxNQUFNO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDcEQsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JELElBQUksUUFBUSxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN4RCxJQUFJLFFBQVEsS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEQsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hELElBQUksUUFBUSxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEdBQUcsRUFBRSxRQUFRO1lBQ2IsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMERBQTBEO0lBQzFELGlCQUFpQixDQUFDLFFBQWdCO1FBQ2hDLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzlCLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDNUIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzlCLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO3dHQXZNVSxpQkFBaUI7NEZBQWpCLGlCQUFpQixtcURDaEM5Qiwwa1RBOFFBOzs0RkQ5T2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzhFQUd0QyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFhRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQzRCLG9CQUFvQjtzQkFBdEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW50ZXJmYWNlIFZpZXdTdGF0ZSB7XG4gIGlzU2VhcmNoPzogYm9vbGVhbjtcbiAgaXNDb2x1bW4/OiBib29sZWFuO1xuICBpc0ZpbHRlcj86IGJvb2xlYW47XG4gIGlzU29ydD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgaXNTZWxlY3Q/OiBib29sZWFuO1xuICBpc0NyZWF0ZT86IGJvb2xlYW47XG4gIGlzVG9nZ2xlPzogYm9vbGVhbjtcbiAgaXNJbXBvcnQ/OiBib29sZWFuO1xuICBpc0V4dGVuZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi1kYXRhLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYnV0dG9uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb25DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgYWN0aXZlSWNvbkNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNvbHVtbkN1c3RvbUNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGZpbHRlckN1c3RvbUNsYXNzPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBleHRlbmRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBleHBvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbXBvcnRDdXN0b21DbGFzcz86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB6SW5kZXg/OiBudW1iZXIgPSA1O1xuICBASW5wdXQoKSBjcmVhdGVDdXN0b21DbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRhYmxlSWNvbjogc3RyaW5nID0gJ2dyaWQtMyc7XG4gIEBJbnB1dCgpIGNhcmRJY29uOiBzdHJpbmcgPSAnbGlzdC12aWV3JztcbiAgQElucHV0KCkgY2FyZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGFibGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaEtleTogc3RyaW5nID0gJ3NlYXJjaCc7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2aWV3U3RhdGU6IFZpZXdTdGF0ZSA9IHtcbiAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICBpc0NvbHVtbjogdHJ1ZSxcbiAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICBpc1NvcnQ6IHRydWUsXG4gICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgaXNDcmVhdGU6IHRydWUsXG4gICAgaXNUb2dnbGU6IHRydWUsXG4gICAgaXNFeHRlbmQ6IHRydWUsXG4gICAgaXNJbXBvcnQ6IHRydWUsXG4gIH07XG5cbiAgQElucHV0KCkgc2VhcmNoVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBpbXBvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNvbHVtblRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgZXh0ZW5kVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBmaWx0ZXJUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNoaWxkcmVuPzogTm9kZTtcbiAgQElucHV0KCkgZXhwb3J0VGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjcmVhdGVUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sdW1uQ291bnQ/OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZFNvcnRDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIG1pbGxpc2Vjb25kczogbnVtYmVyID0gNDAwO1xuICBASW5wdXQoKSBzaG93Q29sdW1uQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ltcG9ydENoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RXh0ZW5kQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VUd29XYXlCaW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaXNUYWJsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHZpZXdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlckNvbnRlbnRXcmFwcGVyJykgZmlsdGVyQ29udGVudFdyYXBwZXIhOiBFbGVtZW50UmVmO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5taWxsaXNlY29uZHMpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHsga2V5OiB0aGlzLnNlYXJjaEtleSwgdmFsdWUgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5pc1RhYmxlVmlldyA9ICF0aGlzLmlzVGFibGVWaWV3O1xuICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHRoaXMuaXNUYWJsZVZpZXcpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0Lm5leHQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgb25DbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHsga2V5OiB0aGlzLnNlYXJjaEtleSwgdmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUgfSk7XG4gIH1cbiAgdG9nZ2xlQ2hpbGRWaWV3KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICB0aGlzLnNob3dDb2x1bW5DaGlsZCA9ICF0aGlzLnNob3dDb2x1bW5DaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NvbHVtbicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZpbHRlcic6XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gIXRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnZmlsdGVyJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHRoaXMuc2hvd1NvcnRDaGlsZCA9ICF0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdzb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0ZWQgPSAhdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdzZWxlY3QnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICB0aGlzLnNob3dFeHBvcnRDaGlsZCA9ICF0aGlzLnNob3dFeHBvcnRDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2V4cG9ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgIHRoaXMuc2hvd0ltcG9ydENoaWxkID0gIXRoaXMuc2hvd0ltcG9ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnaW1wb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXh0ZW5kJzpcbiAgICAgICAgdGhpcy5zaG93RXh0ZW5kQ2hpbGQgPSAhdGhpcy5zaG93RXh0ZW5kQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdleHRlbmQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICB0aGlzLmNyZWF0ZSA9ICF0aGlzLmNyZWF0ZTtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NyZWF0ZScpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgIGtleTogdmlld1R5cGUsXG4gICAgICB2YWx1ZTogdGhpcy5nZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZSksXG4gICAgfSk7XG4gIH1cbiAgcmVzZXRDaGlsZFZpZXdzRXhjZXB0KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjb2x1bW4nKSB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2ZpbHRlcicpIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc29ydCcpIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ3NlbGVjdCcpIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZXhwb3J0JykgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdpbXBvcnQnKSB0aGlzLnNob3dJbXBvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2V4dGVuZCcpIHRoaXMuc2hvd0V4dGVuZENoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnY3JlYXRlJykgdGhpcy5jcmVhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGNsb3NlQ2hpbGRWaWV3KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZpbHRlcic6XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgICB0aGlzLnNob3dJbXBvcnRDaGlsZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dGVuZCc6XG4gICAgICAgIHRoaXMuc2hvd0V4dGVuZENoaWxkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgdGhpcy5jcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7XG4gICAgICBrZXk6IHZpZXdUeXBlLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWMgY2hpbGQgdmlld1xuICBnZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93SW1wb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdleHRlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXh0ZW5kQ2hpbGQ7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VhcmNoVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdmFsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICA8ZGl2IGNsYXNzPVwiZHYtc2VhcmNoLWdyb3VwXCI+XG4gICAgPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1RvZ2dsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaWV3KClcIiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIFtpY29uXT1cInRhYmxlSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpc1RhYmxlVmlldyA/IGFjdGl2ZUljb25DbGFzcyA6IGljb25DbGFzc1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwiY2FyZEljb25cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLndpZHRoXT1cImlucHV0V2lkdGhcIlxuICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWFyY2hcIlxuICAgID5cbiAgICAgIDx2ZXJiZW4tc3ZnIFtpY29uXT1cIidzZWFyY2gyJ1wiIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIj48L3ZlcmJlbi1zdmc+XG4gICAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCIhdXNlVHdvV2F5QmluZGluZ1wiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VhcmNoJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMCdcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICAqbmdJZj1cInVzZVR3b1dheUJpbmRpbmdcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCdcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJzAnXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXG4gICAgICAvPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgKm5nSWY9XCJzZWFyY2hWYWx1ZS5sZW5ndGggPiAwXCJcbiAgICAgICAgW2ljb25dPVwiJ2Nsb3NlJ1wiXG4gICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyU2VhcmNoKClcIlxuICAgICAgICBjbGFzcz1cImNsb3NlLWljb24tY2xhc3NcIlxuICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZHYtYWN0aW9uc1wiPlxuICAgIDwhLS0gQ29sdW1uIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93Q29sdW1uQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnY29sdW1uJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDb2x1bW4gJiYgaXNUYWJsZVZpZXdcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBjb2x1bW5DdXN0b21DbGFzcyA/IGNvbHVtbkN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93Q29sdW1uQ2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NvbHVtbicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidjb2x1bW4nXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPkNvbHVtbnM8L3NwYW5cbiAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJkdi1jb3VudFwiPnt7IHNlbGVjdGVkQ29sdW1uQ291bnQgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2hvd0NvbHVtbkNoaWxkID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIEtlcHQgaW4gdGhlIERPTSAoaGlkZGVuIHZpYSBkaXNwbGF5KSByYXRoZXIgdGhhbiAqbmdJZiBzbyB0aGVcbiAgICAgICAgICAgICAgcHJvamVjdGVkIHBhbmVsIHN0YXlzIGNoYW5nZS1kZXRlY3RlZCBhbmQgcmVmbGVjdHMgaG9zdCBzdGF0ZVxuICAgICAgICAgICAgICB1cGRhdGVzIChlLmcuIHJlc3RvcmVkIGNvbHVtbiBhcnJhbmdlbWVudCkgZXZlbiB3aGlsZSBjb2xsYXBzZWQuIC0tPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb2x1bW4tY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmlsdGVyIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnZmlsdGVyJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNGaWx0ZXJcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RmlsdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWx0ZXI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBmaWx0ZXJDdXN0b21DbGFzcyA/IGZpbHRlckN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2ZpbHRlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidmaWx0ZXInXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPkZpbHRlcjwvc3BhblxuICAgICAgICAgID48c3BhbiBjbGFzcz1cImR2LWNvdW50XCI+e3sgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50IH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIlxuICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInNob3dGaWx0ZXJDaGlsZCA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBLZXB0IGluIHRoZSBET00gKGhpZGRlbiB2aWEgZGlzcGxheSkgcmF0aGVyIHRoYW4gKm5nSWYgc28gdGhlXG4gICAgICAgICAgICAgICBwcm9qZWN0ZWQgcGFuZWwgc3RheXMgY2hhbmdlLWRldGVjdGVkIGFuZCByZWZsZWN0cyBob3N0IHN0YXRlXG4gICAgICAgICAgICAgICB1cGRhdGVzIChlLmcuIHJlc3RvcmVkIGZpbHRlcnMpIGV2ZW4gd2hpbGUgY29sbGFwc2VkLiAtLT5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmlsdGVyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLWltcG9ydCBTZWN0aW9uLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnaW1wb3J0JylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNJbXBvcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbXBvcnRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0SW1wb3J0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbXBvcnQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBpbXBvcnRDdXN0b21DbGFzcyA/IGltcG9ydEN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2ltcG9ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidmaWxlJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3Bhbj5JbXBvcnQ8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0ltcG9ydENoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltpbXBvcnQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIFNvcnQgU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnc29ydCcpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzU29ydFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0U29ydFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U29ydD5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbbmdDbGFzc109XCJbJ2R2LWFjdGlvbicsIHNvcnRDdXN0b21DbGFzcyA/IHNvcnRDdXN0b21DbGFzcyA6ICcnXVwiXG4gICAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwic2hvd1NvcnRDaGlsZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnc29ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3Bhbj5Tb3J0PC9zcGFuPjxzcGFuIGNsYXNzPVwiZHYtY291bnRcIj57eyBzZWxlY3RlZFNvcnRDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U29ydENoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltzb3J0LWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLUV4dGVuZCBTZWN0aW9uLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RXh0ZW5kQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnZXh0ZW5kJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNFeHRlbmRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlbmRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RXh0ZW5kXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFeHRlbmQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBpbXBvcnRDdXN0b21DbGFzcyA/IGV4dGVuZEN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93RXh0ZW5kQ2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2V4dGVuZCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidleHRlbmQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuPkV4dGVuZDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93SW1wb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW2V4dGVuZC1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gRXhwb3J0IFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnZXhwb3J0JylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNFeHBvcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBvcnRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RXhwb3J0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFeHBvcnQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiWydkdi1hY3Rpb24nLCBleHBvcnRDdXN0b21DbGFzcyA/IGV4cG9ydEN1c3RvbUNsYXNzIDogJyddXCJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2V4cG9ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidleHBvcnQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIEV4cG9ydFxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dFeHBvcnRDaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbZXhwb3J0LWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFNlbGVjdCBTZWN0aW9uIC0tPlxuICAgIDwhLS0gPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1NlbGVjdFwiPlxuICAgICA8c3BhblxuICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgIHNlbGVjdEN1c3RvbUNsYXNzID8gc2VsZWN0Q3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgIF1cIlxuICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itc3VyZmFjZS1hbHQpJ1wiXG4gICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnc2VsZWN0JylcIlxuICAgICA+XG4gICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ3NlbGVjdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgPHNwYW4+U2VsZWN0PC9zcGFuPlxuICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCI2XCIgW2ljb25dPVwiJ2NoZXZyb24tZG93bidcIj48L3ZlcmJlbi1zdmc+XG4gICAgIDwvc3Bhbj5cbiAgIDwvZGl2PiAtLT5cblxuICAgIDwhLS0gQ3JlYXRlIEJ1dHRvbiBqai0tPlxuXG4gICAgPGRpdlxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJjcmVhdGVcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJjbG9zZUNoaWxkVmlldygnbnVsbCcpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzQ3JlYXRlXCJcbiAgICA+XG4gICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgW2JnQ29sb3JdPVwiJ3ZhcigtLXZibi1jb2xvci1wcmltYXJ5KSdcIlxuICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY3JlYXRlQ3VzdG9tQ2xhc3NcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itb24tcHJpbWFyeSknXCJcbiAgICAgICAgW3N2Z109XCInYWRkJ1wiXG4gICAgICAgIFtzdmdQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgW3RleHRdPVwiJ0NyZWF0ZSBOZXcnXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnY3JlYXRlJylcIlxuICAgICAgPlxuICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q3JlYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDcmVhdGU+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiY3JlYXRlXCIgc2VsZWN0PVwiW2NyZWF0ZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGlsZHJlbiAvIEN1c3RvbSBhY3Rpb24gYnV0dG9ucyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRyZW47IGVsc2UgZGVmYXVsdENoaWxkcmVuXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiJGFueShjaGlsZHJlbilcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGlsZHJlbj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjaGlsZHJlbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBHcmlkIGFuZCBMaXN0IFZpZXcgSGFuZGxpbmcgLS0+XG48ZGl2ICpuZ0lmPVwiaXNUYWJsZVZpZXc7IGVsc2UgbGlzdFZpZXdUZW1wbGF0ZVwiPlxuICA8ZGl2IFtzdHlsZS5vdmVyZmxvd109XCInYXV0bydcIiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXdUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3NdPVwiY2FyZENsYXNzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -268,11 +268,11 @@ class DataViewComponent {
268
268
  this.searchValue = val;
269
269
  }
270
270
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataViewComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
271
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", extendCustomClass: "extendCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", importCustomClass: "importCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", importTemplate: "importTemplate", columnTemplate: "columnTemplate", extendTemplate: "extendTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", milliseconds: "milliseconds", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showImportChild: "showImportChild", showExportChild: "showExportChild", showExtendChild: "showExtendChild", create: "create", showSelected: "showSelected", useTwoWayBinding: "useTwoWayBinding", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, viewQueries: [{ propertyName: "filterContentWrapper", first: true, predicate: ["filterContentWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "styleType", "size", "block", "disable", "disabled", "isLoading", "spinnerSize", "spinnerColor", "svg", "svgPosition", "svgWidth", "svgHeight", "svgSize", "svgColor", "icon", "useIcon", "iconPosition", "iconColor", "variant", "weight", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }, { 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.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", extendCustomClass: "extendCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", importCustomClass: "importCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", importTemplate: "importTemplate", columnTemplate: "columnTemplate", extendTemplate: "extendTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", milliseconds: "milliseconds", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showImportChild: "showImportChild", showExportChild: "showExportChild", showExtendChild: "showExtendChild", create: "create", showSelected: "showSelected", useTwoWayBinding: "useTwoWayBinding", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, viewQueries: [{ propertyName: "filterContentWrapper", first: true, predicate: ["filterContentWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('null')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "styleType", "size", "block", "disable", "disabled", "isLoading", "spinnerSize", "spinnerColor", "svg", "svgPosition", "svgWidth", "svgHeight", "svgSize", "svgColor", "icon", "useIcon", "iconPosition", "iconColor", "variant", "weight", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }, { 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.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
272
272
  }
273
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataViewComponent, decorators: [{
274
274
  type: Component,
275
- args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"] }]
275
+ args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('null')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:inline-flex;align-items:center;gap:2px;height:36px;padding:3px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);cursor:pointer}.toggle-button-container button:focus-visible{outline:2px solid var(--vbn-color-border-focus);outline-offset:1px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{display:inline-grid;place-items:center;width:28px;height:28px;box-sizing:border-box;padding:4px;border-radius:6px;transition:background-color .15s ease}.toggle-button-container verben-svg.active{background-color:var(--vbn-color-surface-alt);box-shadow:0 1px 2px #0000001a}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:85px;max-width:100%;height:36px;box-sizing:border-box;padding:0 32px 0 10px;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text-muted);transition:border-color .15s ease,box-shadow .15s ease}.search-input:focus-within{border-color:var(--vbn-color-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--vbn-color-border-focus) 18%,transparent)}.search-input input{display:block;width:100%;min-width:0;padding:0;outline:0;background-color:transparent;color:var(--vbn-color-text);font:inherit;font-size:14px}.search-input input::placeholder{color:var(--vbn-color-text-muted);font-size:14px}sup{color:var(--vbn-color-border-focus);font-weight:500}.data-view-element{position:absolute;top:calc(100% + 6px);right:0;max-width:100%;text-align:left}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;top:50%;right:8px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;transform:translateY(-50%);cursor:pointer}.close-icon-class:hover{background-color:var(--vbn-color-surface-alt)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dv-search-group{display:flex;align-items:center;gap:8px;flex:1 1 155px;min-width:0}.dv-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.dv-action{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;box-sizing:border-box;border:1px solid var(--vbn-color-border);border-radius:8px;background-color:var(--vbn-color-surface);color:var(--vbn-color-text);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease}.dv-action:hover{background-color:var(--vbn-color-surface-alt)}.dv-action.is-open{border-color:var(--vbn-color-text-muted);background-color:var(--vbn-color-surface-alt)}.dv-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background-color:var(--vbn-color-surface-alt);box-shadow:inset 0 0 0 1px var(--vbn-color-border);color:var(--vbn-color-text-muted);font-size:11px;font-weight:600}\n"] }]
276
276
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { buttonClass: [{
277
277
  type: Input
278
278
  }], iconClass: [{
@@ -1 +1 @@
1
- {"version":3,"file":"verben-ng-ui-src-lib-components-data-view.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-view/data-view-click-outside.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.ts"],"sourcesContent":["// directives/outside-click.directive.ts\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appOutSideClick]',\n standalone: true,\n})\nexport class OutSideClickDirective implements OnInit, OnDestroy {\n @Input() appOutSideClick!: boolean;\n @Output() outSideClick: EventEmitter<void> = new EventEmitter();\n constructor(\n private element: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n private listener: (() => void) | undefined;\n\n onDocumentClick = (event: Event) => {\n if (!this.appOutSideClick) {\n return;\n }\n\n const path = event.composedPath();\n\n const parent = this.element?.nativeElement?.parentElement;\n const isInsideElement =\n parent &&\n (path.includes(parent) || parent.contains(event.target as Node));\n\n const isOverlay = path.some(\n (node) =>\n node instanceof HTMLElement &&\n (node.classList.contains('cdk-overlay-pane') ||\n node.classList.contains('cdk-overlay-backdrop') ||\n node.classList.contains('cdk-overlay-container')),\n );\n\n if (!isInsideElement && !isOverlay) {\n this.outSideClick.emit();\n }\n };\n\n ngOnInit(): void {\n this.listener = this.renderer.listen(\n 'document',\n 'click',\n this.onDocumentClick,\n );\n }\n\n ngOnDestroy(): void {\n if (this.listener) {\n this.listener();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\ninterface ViewState {\n isSearch?: boolean;\n isColumn?: boolean;\n isFilter?: boolean;\n isSort?: boolean;\n isExport?: boolean;\n isSelect?: boolean;\n isCreate?: boolean;\n isToggle?: boolean;\n isImport?: boolean;\n isExtend?: boolean;\n}\n\n@Component({\n selector: 'verben-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataViewComponent implements OnInit {\n @Input() buttonClass?: string;\n @Input() iconClass?: string;\n @Input() activeIconClass?: string = '';\n @Input() columnCustomClass?: string = '';\n @Input() filterCustomClass?: string = '';\n @Input() sortCustomClass?: string = '';\n @Input() extendCustomClass?: string = '';\n @Input() exportCustomClass?: string = '';\n @Input() selectCustomClass?: string = '';\n @Input() importCustomClass?: string = '';\n @Input() zIndex?: number = 5;\n @Input() createCustomClass: string = '';\n @Input() tableIcon: string = 'grid-3';\n @Input() cardIcon: string = 'list-view';\n @Input() cardClass: string = '';\n @Input() tableClass: string = '';\n @Input() searchKey: string = 'search';\n @Input() searchValue: string = '';\n private searchSubject = new Subject<string>();\n @Input() viewState: ViewState = {\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n isExtend: true,\n isImport: true,\n };\n\n @Input() searchTemplate?: Node;\n @Input() importTemplate?: Node;\n @Input() columnTemplate?: Node;\n @Input() extendTemplate?: Node;\n @Input() filterTemplate?: Node;\n @Input() sortTemplate?: Node;\n @Input() children?: Node;\n @Input() exportTemplate?: Node;\n @Input() createTemplate?: Node;\n @Input() selectedColumnCount?: number = 0;\n @Input() selectedSortCount: number = 0;\n @Input() selectedFilterTableCount: number = 0;\n @Input() inputWidth: string = '100%';\n @Input() milliseconds: number = 400;\n @Input() showColumnChild: boolean = false;\n @Input() showSortChild: boolean = false;\n @Input() showFilterChild: boolean = false;\n @Input() showImportChild: boolean = false;\n @Input() showExportChild: boolean = false;\n @Input() showExtendChild: boolean = false;\n @Input() create: boolean = false;\n @Input() showSelected: boolean = false;\n @Input() useTwoWayBinding: boolean = false;\n\n @Input() isTableView: boolean = false;\n @Output() viewChange = new EventEmitter<boolean>();\n @Output() stateChange = new EventEmitter<{ key: string; value: boolean }>();\n @Output() onSearchChange = new EventEmitter<{ key: string; value: string }>();\n @ViewChild('filterContentWrapper') filterContentWrapper!: ElementRef;\n\n ngOnInit(): void {}\n constructor(private renderer: Renderer2) {\n this.searchSubject\n .pipe(debounceTime(this.milliseconds))\n .subscribe((value) => {\n this.onSearchChange.emit({ key: this.searchKey, value });\n });\n }\n\n toggleView(): void {\n this.isTableView = !this.isTableView;\n this.viewChange.emit(this.isTableView);\n }\n\n onSearch(event: any): void {\n this.searchValue = event.target.value;\n this.searchSubject.next(this.searchValue);\n }\n stopPropagation(event: Event) {\n event.stopPropagation();\n }\n\n onClearSearch() {\n this.searchValue = '';\n this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });\n }\n toggleChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = !this.showColumnChild;\n this.resetChildViewsExcept('column');\n break;\n case 'filter':\n this.showFilterChild = !this.showFilterChild;\n this.resetChildViewsExcept('filter');\n break;\n case 'sort':\n this.showSortChild = !this.showSortChild;\n this.resetChildViewsExcept('sort');\n break;\n case 'select':\n this.showSelected = !this.showSelected;\n this.resetChildViewsExcept('select');\n break;\n case 'export':\n this.showExportChild = !this.showExportChild;\n this.resetChildViewsExcept('export');\n break;\n case 'import':\n this.showImportChild = !this.showImportChild;\n this.resetChildViewsExcept('import');\n break;\n case 'extend':\n this.showExtendChild = !this.showExtendChild;\n this.resetChildViewsExcept('extend');\n break;\n case 'create':\n this.create = !this.create;\n this.resetChildViewsExcept('create');\n break;\n }\n this.stateChange.emit({\n key: viewType,\n value: this.getChildViewState(viewType),\n });\n }\n resetChildViewsExcept(viewType: string): void {\n if (viewType !== 'column') this.showColumnChild = false;\n if (viewType !== 'filter') this.showFilterChild = false;\n if (viewType !== 'sort') this.showSortChild = false;\n if (viewType !== 'select') this.showSelected = false;\n if (viewType !== 'export') this.showExportChild = false;\n if (viewType !== 'import') this.showImportChild = false;\n if (viewType !== 'extend') this.showExtendChild = false;\n if (viewType !== 'create') this.create = false;\n }\n\n closeChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = false;\n break;\n case 'filter':\n this.showFilterChild = false;\n break;\n case 'sort':\n this.showSortChild = false;\n break;\n case 'select':\n this.showSelected = false;\n break;\n case 'export':\n this.showExportChild = false;\n break;\n case 'import':\n this.showImportChild = false;\n break;\n case 'extend':\n this.showExtendChild = false;\n break;\n case 'create':\n this.create = false;\n break;\n }\n this.stateChange.emit({\n key: viewType,\n value: false,\n });\n }\n\n // Helper method to get the state of a specific child view\n getChildViewState(viewType: string): boolean {\n switch (viewType) {\n case 'column':\n return this.showColumnChild;\n case 'filter':\n return this.showFilterChild;\n case 'sort':\n return this.showSortChild;\n case 'select':\n return this.showSelected;\n case 'export':\n return this.showExportChild;\n case 'import':\n return this.showImportChild;\n case 'extend':\n return this.showExtendChild;\n case 'create':\n return this.create;\n default:\n return false;\n }\n }\n\n updateSearchValue(val: string) {\n this.searchValue = val;\n }\n}\n","<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n >\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataViewComponent } from './data-view.component';\nimport { CardDataViewModule } from 'verben-ng-ui/src/lib/components/card-data-view';\n\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { OutSideClickDirective } from './data-view-click-outside.directive';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { VerbenaButtonModule } from 'verben-ng-ui/src/lib/verbena-button';\nimport { VisibleColumnModule } from 'verben-ng-ui/src/lib/components/visible-column';\nimport { VerbenPopUpModule } from 'verben-ng-ui/src/lib/components/pop-up';\nimport { FormsModule } from '@angular/forms';\n@NgModule({\n declarations: [DataViewComponent],\n imports: [\n CommonModule,\n CardDataViewModule,\n DataTableModule,\n SvgModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n OutSideClickDirective,\n VisibleColumnModule,\n VerbenPopUpModule,\n FormsModule,\n ],\n exports: [DataViewComponent],\n})\nexport class DataViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.OutSideClickDirective"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;MAiBa,qBAAqB,CAAA;AAItB,IAAA,OAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAJD,IAAA,eAAe,CAAW;AACzB,IAAA,YAAY,GAAuB,IAAI,YAAY,EAAE,CAAC;IAChE,WACU,CAAA,OAAmB,EACnB,QAAmB,EAAA;QADnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KACzB;AAEI,IAAA,QAAQ,CAA2B;AAE3C,IAAA,eAAe,GAAG,CAAC,KAAY,KAAI;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO;SACR;AAED,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;QAC1D,MAAM,eAAe,GACnB,MAAM;AACN,aAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,CAAC;AAEnE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,CAAC,IAAI,KACH,IAAI,YAAY,WAAW;AAC3B,aAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CACtD,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;AACH,KAAC,CAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAClC,UAAU,EACV,OAAO,EACP,IAAI,CAAC,eAAe,CACrB,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;wGA/CU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;uGAEU,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MCaI,iBAAiB,CAAA;AAgER,IAAA,QAAA,CAAA;AA/DX,IAAA,WAAW,CAAU;AACrB,IAAA,SAAS,CAAU;IACnB,eAAe,GAAY,EAAE,CAAC;IAC9B,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,eAAe,GAAY,EAAE,CAAC;IAC9B,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,MAAM,GAAY,CAAC,CAAC;IACpB,iBAAiB,GAAW,EAAE,CAAC;IAC/B,SAAS,GAAW,QAAQ,CAAC;IAC7B,QAAQ,GAAW,WAAW,CAAC;IAC/B,SAAS,GAAW,EAAE,CAAC;IACvB,UAAU,GAAW,EAAE,CAAC;IACxB,SAAS,GAAW,QAAQ,CAAC;IAC7B,WAAW,GAAW,EAAE,CAAC;AAC1B,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AACrC,IAAA,SAAS,GAAc;AAC9B,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;KACf,CAAC;AAEO,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,YAAY,CAAQ;AACpB,IAAA,QAAQ,CAAQ;AAChB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;IACtB,mBAAmB,GAAY,CAAC,CAAC;IACjC,iBAAiB,GAAW,CAAC,CAAC;IAC9B,wBAAwB,GAAW,CAAC,CAAC;IACrC,UAAU,GAAW,MAAM,CAAC;IAC5B,YAAY,GAAW,GAAG,CAAC;IAC3B,eAAe,GAAY,KAAK,CAAC;IACjC,aAAa,GAAY,KAAK,CAAC;IAC/B,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,MAAM,GAAY,KAAK,CAAC;IACxB,YAAY,GAAY,KAAK,CAAC;IAC9B,gBAAgB,GAAY,KAAK,CAAC;IAElC,WAAW,GAAY,KAAK,CAAC;AAC5B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW,CAAC;AACzC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAmC,CAAC;AAClE,IAAA,cAAc,GAAG,IAAI,YAAY,EAAkC,CAAC;AAC3C,IAAA,oBAAoB,CAAc;AAErE,IAAA,QAAQ,MAAW;AACnB,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACrC,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxC;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC3C;AACD,IAAA,eAAe,CAAC,KAAY,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5E;AACD,IAAA,eAAe,CAAC,QAAgB,EAAA;QAC9B,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AACzC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;SACT;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACxC,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,qBAAqB,CAAC,QAAgB,EAAA;QACpC,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QACpD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QACrD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KAChD;AAED,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM;SACT;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;KACJ;;AAGD,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;AAED,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;KACxB;wGAvMU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mqDChC9B,4oTAoRA,EAAA,MAAA,EAAA,CAAA,24GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,KAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDpPa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4oTAAA,EAAA,MAAA,EAAA,CAAA,24GAAA,CAAA,EAAA,CAAA;8EAGtC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAaG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAC4B,oBAAoB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,sBAAsB,CAAA;;;MEhEtB,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,YAAA,EAAA,CAfV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,SAAS;YACT,kBAAkB;YAClB,mBAAmB;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,iBAAiB;AACjB,YAAA,WAAW,aAEH,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAbvB,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,SAAS;YACT,kBAAkB;YAClB,mBAAmB;YAEnB,mBAAmB;YACnB,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA;;4FAIF,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,eAAe;wBACf,SAAS;wBACT,kBAAkB;wBAClB,mBAAmB;wBACnB,qBAAqB;wBACrB,mBAAmB;wBACnB,iBAAiB;wBACjB,WAAW;AACZ,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;AC5BD;;AAEG;;;;"}
1
+ {"version":3,"file":"verben-ng-ui-src-lib-components-data-view.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-view/data-view-click-outside.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.ts"],"sourcesContent":["// directives/outside-click.directive.ts\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appOutSideClick]',\n standalone: true,\n})\nexport class OutSideClickDirective implements OnInit, OnDestroy {\n @Input() appOutSideClick!: boolean;\n @Output() outSideClick: EventEmitter<void> = new EventEmitter();\n constructor(\n private element: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n private listener: (() => void) | undefined;\n\n onDocumentClick = (event: Event) => {\n if (!this.appOutSideClick) {\n return;\n }\n\n const path = event.composedPath();\n\n const parent = this.element?.nativeElement?.parentElement;\n const isInsideElement =\n parent &&\n (path.includes(parent) || parent.contains(event.target as Node));\n\n const isOverlay = path.some(\n (node) =>\n node instanceof HTMLElement &&\n (node.classList.contains('cdk-overlay-pane') ||\n node.classList.contains('cdk-overlay-backdrop') ||\n node.classList.contains('cdk-overlay-container')),\n );\n\n if (!isInsideElement && !isOverlay) {\n this.outSideClick.emit();\n }\n };\n\n ngOnInit(): void {\n this.listener = this.renderer.listen(\n 'document',\n 'click',\n this.onDocumentClick,\n );\n }\n\n ngOnDestroy(): void {\n if (this.listener) {\n this.listener();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\ninterface ViewState {\n isSearch?: boolean;\n isColumn?: boolean;\n isFilter?: boolean;\n isSort?: boolean;\n isExport?: boolean;\n isSelect?: boolean;\n isCreate?: boolean;\n isToggle?: boolean;\n isImport?: boolean;\n isExtend?: boolean;\n}\n\n@Component({\n selector: 'verben-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataViewComponent implements OnInit {\n @Input() buttonClass?: string;\n @Input() iconClass?: string;\n @Input() activeIconClass?: string = '';\n @Input() columnCustomClass?: string = '';\n @Input() filterCustomClass?: string = '';\n @Input() sortCustomClass?: string = '';\n @Input() extendCustomClass?: string = '';\n @Input() exportCustomClass?: string = '';\n @Input() selectCustomClass?: string = '';\n @Input() importCustomClass?: string = '';\n @Input() zIndex?: number = 5;\n @Input() createCustomClass: string = '';\n @Input() tableIcon: string = 'grid-3';\n @Input() cardIcon: string = 'list-view';\n @Input() cardClass: string = '';\n @Input() tableClass: string = '';\n @Input() searchKey: string = 'search';\n @Input() searchValue: string = '';\n private searchSubject = new Subject<string>();\n @Input() viewState: ViewState = {\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n isExtend: true,\n isImport: true,\n };\n\n @Input() searchTemplate?: Node;\n @Input() importTemplate?: Node;\n @Input() columnTemplate?: Node;\n @Input() extendTemplate?: Node;\n @Input() filterTemplate?: Node;\n @Input() sortTemplate?: Node;\n @Input() children?: Node;\n @Input() exportTemplate?: Node;\n @Input() createTemplate?: Node;\n @Input() selectedColumnCount?: number = 0;\n @Input() selectedSortCount: number = 0;\n @Input() selectedFilterTableCount: number = 0;\n @Input() inputWidth: string = '100%';\n @Input() milliseconds: number = 400;\n @Input() showColumnChild: boolean = false;\n @Input() showSortChild: boolean = false;\n @Input() showFilterChild: boolean = false;\n @Input() showImportChild: boolean = false;\n @Input() showExportChild: boolean = false;\n @Input() showExtendChild: boolean = false;\n @Input() create: boolean = false;\n @Input() showSelected: boolean = false;\n @Input() useTwoWayBinding: boolean = false;\n\n @Input() isTableView: boolean = false;\n @Output() viewChange = new EventEmitter<boolean>();\n @Output() stateChange = new EventEmitter<{ key: string; value: boolean }>();\n @Output() onSearchChange = new EventEmitter<{ key: string; value: string }>();\n @ViewChild('filterContentWrapper') filterContentWrapper!: ElementRef;\n\n ngOnInit(): void {}\n constructor(private renderer: Renderer2) {\n this.searchSubject\n .pipe(debounceTime(this.milliseconds))\n .subscribe((value) => {\n this.onSearchChange.emit({ key: this.searchKey, value });\n });\n }\n\n toggleView(): void {\n this.isTableView = !this.isTableView;\n this.viewChange.emit(this.isTableView);\n }\n\n onSearch(event: any): void {\n this.searchValue = event.target.value;\n this.searchSubject.next(this.searchValue);\n }\n stopPropagation(event: Event) {\n event.stopPropagation();\n }\n\n onClearSearch() {\n this.searchValue = '';\n this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });\n }\n toggleChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = !this.showColumnChild;\n this.resetChildViewsExcept('column');\n break;\n case 'filter':\n this.showFilterChild = !this.showFilterChild;\n this.resetChildViewsExcept('filter');\n break;\n case 'sort':\n this.showSortChild = !this.showSortChild;\n this.resetChildViewsExcept('sort');\n break;\n case 'select':\n this.showSelected = !this.showSelected;\n this.resetChildViewsExcept('select');\n break;\n case 'export':\n this.showExportChild = !this.showExportChild;\n this.resetChildViewsExcept('export');\n break;\n case 'import':\n this.showImportChild = !this.showImportChild;\n this.resetChildViewsExcept('import');\n break;\n case 'extend':\n this.showExtendChild = !this.showExtendChild;\n this.resetChildViewsExcept('extend');\n break;\n case 'create':\n this.create = !this.create;\n this.resetChildViewsExcept('create');\n break;\n }\n this.stateChange.emit({\n key: viewType,\n value: this.getChildViewState(viewType),\n });\n }\n resetChildViewsExcept(viewType: string): void {\n if (viewType !== 'column') this.showColumnChild = false;\n if (viewType !== 'filter') this.showFilterChild = false;\n if (viewType !== 'sort') this.showSortChild = false;\n if (viewType !== 'select') this.showSelected = false;\n if (viewType !== 'export') this.showExportChild = false;\n if (viewType !== 'import') this.showImportChild = false;\n if (viewType !== 'extend') this.showExtendChild = false;\n if (viewType !== 'create') this.create = false;\n }\n\n closeChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = false;\n break;\n case 'filter':\n this.showFilterChild = false;\n break;\n case 'sort':\n this.showSortChild = false;\n break;\n case 'select':\n this.showSelected = false;\n break;\n case 'export':\n this.showExportChild = false;\n break;\n case 'import':\n this.showImportChild = false;\n break;\n case 'extend':\n this.showExtendChild = false;\n break;\n case 'create':\n this.create = false;\n break;\n }\n this.stateChange.emit({\n key: viewType,\n value: false,\n });\n }\n\n // Helper method to get the state of a specific child view\n getChildViewState(viewType: string): boolean {\n switch (viewType) {\n case 'column':\n return this.showColumnChild;\n case 'filter':\n return this.showFilterChild;\n case 'sort':\n return this.showSortChild;\n case 'select':\n return this.showSelected;\n case 'export':\n return this.showExportChild;\n case 'import':\n return this.showImportChild;\n case 'extend':\n return this.showExtendChild;\n case 'create':\n return this.create;\n default:\n return false;\n }\n }\n\n updateSearchValue(val: string) {\n this.searchValue = val;\n }\n}\n","<div class=\"toolbar\">\n <div class=\"dv-search-group\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg [icon]=\"'search2'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n <input\n *ngIf=\"!useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <input\n *ngIf=\"useTwoWayBinding\"\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [(ngModel)]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n <div class=\"relative dv-actions\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"closeChildView('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"['dv-action', columnCustomClass ? columnCustomClass : '']\"\n [class.is-open]=\"showColumnChild\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span>Columns</span\n ><span class=\"dv-count\">{{ selectedColumnCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showColumnChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored column arrangement) even while collapsed. -->\n <ng-content select=\"[column-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"closeChildView('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"['dv-action', filterCustomClass ? filterCustomClass : '']\"\n [class.is-open]=\"showFilterChild\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span>Filter</span\n ><span class=\"dv-count\">{{ selectedFilterTableCount }}</span>\n </span>\n <div\n [style.z-index]=\"zIndex\"\n class=\"data-view-element\"\n [style.display]=\"showFilterChild ? 'block' : 'none'\"\n >\n <!-- Kept in the DOM (hidden via display) rather than *ngIf so the\n projected panel stays change-detected and reflects host state\n updates (e.g. restored filters) even while collapsed. -->\n <ng-content select=\"[filter-content]\"></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"closeChildView('import')\"\n *ngIf=\"viewState.isImport\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? importCustomClass : '']\"\n [class.is-open]=\"showImportChild\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span>Import</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[import-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"closeChildView('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"['dv-action', sortCustomClass ? sortCustomClass : '']\"\n [class.is-open]=\"showSortChild\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span>Sort</span><span class=\"dv-count\">{{ selectedSortCount }}</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!--Extend Section-->\n <ng-container\n [appOutSideClick]=\"showExtendChild\"\n (outSideClick)=\"closeChildView('extend')\"\n *ngIf=\"viewState.isExtend\"\n >\n <ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n <ng-template #defaultExtend>\n <span\n [ngClass]=\"['dv-action', importCustomClass ? extendCustomClass : '']\"\n [class.is-open]=\"showExtendChild\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span>Extend</span>\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showImportChild\"\n select=\"[extend-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"closeChildView('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"['dv-action', exportCustomClass ? exportCustomClass : '']\"\n [class.is-open]=\"showExportChild\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'var(--vbn-color-surface-alt)'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"closeChildView('null')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n [bgColor]=\"'var(--vbn-color-primary)'\"\n [buttonClass]=\"createCustomClass\"\n [textColor]=\"'var(--vbn-color-on-primary)'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n\n <!-- Children / Custom action buttons -->\n <ng-container *ngIf=\"children; else defaultChildren\">\n <ng-container *ngTemplateOutlet=\"$any(children)\"></ng-container>\n </ng-container>\n <ng-template #defaultChildren>\n <ng-content select=\"[children]\"></ng-content>\n </ng-template>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataViewComponent } from './data-view.component';\nimport { CardDataViewModule } from 'verben-ng-ui/src/lib/components/card-data-view';\n\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { OutSideClickDirective } from './data-view-click-outside.directive';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { VerbenaButtonModule } from 'verben-ng-ui/src/lib/verbena-button';\nimport { VisibleColumnModule } from 'verben-ng-ui/src/lib/components/visible-column';\nimport { VerbenPopUpModule } from 'verben-ng-ui/src/lib/components/pop-up';\nimport { FormsModule } from '@angular/forms';\n@NgModule({\n declarations: [DataViewComponent],\n imports: [\n CommonModule,\n CardDataViewModule,\n DataTableModule,\n SvgModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n OutSideClickDirective,\n VisibleColumnModule,\n VerbenPopUpModule,\n FormsModule,\n ],\n exports: [DataViewComponent],\n})\nexport class DataViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.OutSideClickDirective"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;MAiBa,qBAAqB,CAAA;AAItB,IAAA,OAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAJD,IAAA,eAAe,CAAW;AACzB,IAAA,YAAY,GAAuB,IAAI,YAAY,EAAE,CAAC;IAChE,WACU,CAAA,OAAmB,EACnB,QAAmB,EAAA;QADnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KACzB;AAEI,IAAA,QAAQ,CAA2B;AAE3C,IAAA,eAAe,GAAG,CAAC,KAAY,KAAI;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO;SACR;AAED,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;QAC1D,MAAM,eAAe,GACnB,MAAM;AACN,aAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,CAAC;AAEnE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,CAAC,IAAI,KACH,IAAI,YAAY,WAAW;AAC3B,aAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CACtD,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;AACH,KAAC,CAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAClC,UAAU,EACV,OAAO,EACP,IAAI,CAAC,eAAe,CACrB,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;wGA/CU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;uGAEU,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MCaI,iBAAiB,CAAA;AAgER,IAAA,QAAA,CAAA;AA/DX,IAAA,WAAW,CAAU;AACrB,IAAA,SAAS,CAAU;IACnB,eAAe,GAAY,EAAE,CAAC;IAC9B,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,eAAe,GAAY,EAAE,CAAC;IAC9B,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,iBAAiB,GAAY,EAAE,CAAC;IAChC,MAAM,GAAY,CAAC,CAAC;IACpB,iBAAiB,GAAW,EAAE,CAAC;IAC/B,SAAS,GAAW,QAAQ,CAAC;IAC7B,QAAQ,GAAW,WAAW,CAAC;IAC/B,SAAS,GAAW,EAAE,CAAC;IACvB,UAAU,GAAW,EAAE,CAAC;IACxB,SAAS,GAAW,QAAQ,CAAC;IAC7B,WAAW,GAAW,EAAE,CAAC;AAC1B,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AACrC,IAAA,SAAS,GAAc;AAC9B,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;KACf,CAAC;AAEO,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;AACtB,IAAA,YAAY,CAAQ;AACpB,IAAA,QAAQ,CAAQ;AAChB,IAAA,cAAc,CAAQ;AACtB,IAAA,cAAc,CAAQ;IACtB,mBAAmB,GAAY,CAAC,CAAC;IACjC,iBAAiB,GAAW,CAAC,CAAC;IAC9B,wBAAwB,GAAW,CAAC,CAAC;IACrC,UAAU,GAAW,MAAM,CAAC;IAC5B,YAAY,GAAW,GAAG,CAAC;IAC3B,eAAe,GAAY,KAAK,CAAC;IACjC,aAAa,GAAY,KAAK,CAAC;IAC/B,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,eAAe,GAAY,KAAK,CAAC;IACjC,MAAM,GAAY,KAAK,CAAC;IACxB,YAAY,GAAY,KAAK,CAAC;IAC9B,gBAAgB,GAAY,KAAK,CAAC;IAElC,WAAW,GAAY,KAAK,CAAC;AAC5B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW,CAAC;AACzC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAmC,CAAC;AAClE,IAAA,cAAc,GAAG,IAAI,YAAY,EAAkC,CAAC;AAC3C,IAAA,oBAAoB,CAAc;AAErE,IAAA,QAAQ,MAAW;AACnB,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACrC,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxC;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC3C;AACD,IAAA,eAAe,CAAC,KAAY,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5E;AACD,IAAA,eAAe,CAAC,QAAgB,EAAA;QAC9B,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AACzC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM;SACT;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACxC,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,qBAAqB,CAAC,QAAgB,EAAA;QACpC,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QACpD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QACrD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxD,IAAI,QAAQ,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KAChD;AAED,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM;SACT;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;KACJ;;AAGD,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;AAED,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;KACxB;wGAvMU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mqDChC9B,0kTA8QA,EAAA,MAAA,EAAA,CAAA,24GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,KAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD9Oa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0kTAAA,EAAA,MAAA,EAAA,CAAA,24GAAA,CAAA,EAAA,CAAA;8EAGtC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAaG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAC4B,oBAAoB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,sBAAsB,CAAA;;;MEhEtB,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,YAAA,EAAA,CAfV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,SAAS;YACT,kBAAkB;YAClB,mBAAmB;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,iBAAiB;AACjB,YAAA,WAAW,aAEH,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAbvB,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,SAAS;YACT,kBAAkB;YAClB,mBAAmB;YAEnB,mBAAmB;YACnB,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA;;4FAIF,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,eAAe;wBACf,SAAS;wBACT,kBAAkB;wBAClB,mBAAmB;wBACnB,qBAAqB;wBACrB,mBAAmB;wBACnB,iBAAiB;wBACjB,WAAW;AACZ,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;AC5BD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verben-ng-ui",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "author": "Verbena Logic",
5
5
  "repository": {
6
6
  "type": "git",
@@ -45,18 +45,18 @@
45
45
  "esm": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
46
46
  "default": "./fesm2022/verben-ng-ui-src-lib-control-options.mjs"
47
47
  },
48
- "./src/lib/convert-to-number": {
49
- "types": "./src/lib/convert-to-number/index.d.ts",
50
- "esm2022": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
51
- "esm": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
52
- "default": "./fesm2022/verben-ng-ui-src-lib-convert-to-number.mjs"
53
- },
54
48
  "./src/lib/convert-to-integer": {
55
49
  "types": "./src/lib/convert-to-integer/index.d.ts",
56
50
  "esm2022": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
57
51
  "esm": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
58
52
  "default": "./fesm2022/verben-ng-ui-src-lib-convert-to-integer.mjs"
59
53
  },
54
+ "./src/lib/convert-to-number": {
55
+ "types": "./src/lib/convert-to-number/index.d.ts",
56
+ "esm2022": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
57
+ "esm": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
58
+ "default": "./fesm2022/verben-ng-ui-src-lib-convert-to-number.mjs"
59
+ },
60
60
  "./src/lib/email-validator": {
61
61
  "types": "./src/lib/email-validator/index.d.ts",
62
62
  "esm2022": "./esm2022/src/lib/email-validator/verben-ng-ui-src-lib-email-validator.mjs",
@@ -87,53 +87,47 @@
87
87
  "esm": "./esm2022/src/lib/required-input/verben-ng-ui-src-lib-required-input.mjs",
88
88
  "default": "./fesm2022/verben-ng-ui-src-lib-required-input.mjs"
89
89
  },
90
- "./src/lib/services": {
91
- "types": "./src/lib/services/index.d.ts",
92
- "esm2022": "./esm2022/src/lib/services/verben-ng-ui-src-lib-services.mjs",
93
- "esm": "./esm2022/src/lib/services/verben-ng-ui-src-lib-services.mjs",
94
- "default": "./fesm2022/verben-ng-ui-src-lib-services.mjs"
95
- },
96
90
  "./src/lib/theme": {
97
91
  "types": "./src/lib/theme/index.d.ts",
98
92
  "esm2022": "./esm2022/src/lib/theme/verben-ng-ui-src-lib-theme.mjs",
99
93
  "esm": "./esm2022/src/lib/theme/verben-ng-ui-src-lib-theme.mjs",
100
94
  "default": "./fesm2022/verben-ng-ui-src-lib-theme.mjs"
101
95
  },
102
- "./src/lib/theme-switcher": {
103
- "types": "./src/lib/theme-switcher/index.d.ts",
104
- "esm2022": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
105
- "esm": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
106
- "default": "./fesm2022/verben-ng-ui-src-lib-theme-switcher.mjs"
107
- },
108
96
  "./src/lib/validate": {
109
97
  "types": "./src/lib/validate/index.d.ts",
110
98
  "esm2022": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
111
99
  "esm": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
112
100
  "default": "./fesm2022/verben-ng-ui-src-lib-validate.mjs"
113
101
  },
102
+ "./src/lib/services": {
103
+ "types": "./src/lib/services/index.d.ts",
104
+ "esm2022": "./esm2022/src/lib/services/verben-ng-ui-src-lib-services.mjs",
105
+ "esm": "./esm2022/src/lib/services/verben-ng-ui-src-lib-services.mjs",
106
+ "default": "./fesm2022/verben-ng-ui-src-lib-services.mjs"
107
+ },
108
+ "./src/lib/theme-switcher": {
109
+ "types": "./src/lib/theme-switcher/index.d.ts",
110
+ "esm2022": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
111
+ "esm": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
112
+ "default": "./fesm2022/verben-ng-ui-src-lib-theme-switcher.mjs"
113
+ },
114
114
  "./src/lib/validate-input": {
115
115
  "types": "./src/lib/validate-input/index.d.ts",
116
116
  "esm2022": "./esm2022/src/lib/validate-input/verben-ng-ui-src-lib-validate-input.mjs",
117
117
  "esm": "./esm2022/src/lib/validate-input/verben-ng-ui-src-lib-validate-input.mjs",
118
118
  "default": "./fesm2022/verben-ng-ui-src-lib-validate-input.mjs"
119
119
  },
120
- "./src/lib/verbena-badge": {
121
- "types": "./src/lib/verbena-badge/index.d.ts",
122
- "esm2022": "./esm2022/src/lib/verbena-badge/verben-ng-ui-src-lib-verbena-badge.mjs",
123
- "esm": "./esm2022/src/lib/verbena-badge/verben-ng-ui-src-lib-verbena-badge.mjs",
124
- "default": "./fesm2022/verben-ng-ui-src-lib-verbena-badge.mjs"
125
- },
126
120
  "./src/lib/verbena-button": {
127
121
  "types": "./src/lib/verbena-button/index.d.ts",
128
122
  "esm2022": "./esm2022/src/lib/verbena-button/verben-ng-ui-src-lib-verbena-button.mjs",
129
123
  "esm": "./esm2022/src/lib/verbena-button/verben-ng-ui-src-lib-verbena-button.mjs",
130
124
  "default": "./fesm2022/verben-ng-ui-src-lib-verbena-button.mjs"
131
125
  },
132
- "./src/lib/verbena-input": {
133
- "types": "./src/lib/verbena-input/index.d.ts",
134
- "esm2022": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
135
- "esm": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
136
- "default": "./fesm2022/verben-ng-ui-src-lib-verbena-input.mjs"
126
+ "./src/lib/verbena-badge": {
127
+ "types": "./src/lib/verbena-badge/index.d.ts",
128
+ "esm2022": "./esm2022/src/lib/verbena-badge/verben-ng-ui-src-lib-verbena-badge.mjs",
129
+ "esm": "./esm2022/src/lib/verbena-badge/verben-ng-ui-src-lib-verbena-badge.mjs",
130
+ "default": "./fesm2022/verben-ng-ui-src-lib-verbena-badge.mjs"
137
131
  },
138
132
  "./src/lib/verbena-switch": {
139
133
  "types": "./src/lib/verbena-switch/index.d.ts",
@@ -147,6 +141,12 @@
147
141
  "esm": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
148
142
  "default": "./fesm2022/verben-ng-ui-src-lib-verbena-textarea.mjs"
149
143
  },
144
+ "./src/lib/components/card-data-view": {
145
+ "types": "./src/lib/components/card-data-view/index.d.ts",
146
+ "esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
147
+ "esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
148
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
149
+ },
150
150
  "./src/lib/components/card": {
151
151
  "types": "./src/lib/components/card/index.d.ts",
152
152
  "esm2022": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
@@ -159,11 +159,11 @@
159
159
  "esm": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
160
160
  "default": "./fesm2022/verben-ng-ui-src-lib-components-chip.mjs"
161
161
  },
162
- "./src/lib/components/card-data-view": {
163
- "types": "./src/lib/components/card-data-view/index.d.ts",
164
- "esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
165
- "esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
166
- "default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
162
+ "./src/lib/verbena-input": {
163
+ "types": "./src/lib/verbena-input/index.d.ts",
164
+ "esm2022": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
165
+ "esm": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
166
+ "default": "./fesm2022/verben-ng-ui-src-lib-verbena-input.mjs"
167
167
  },
168
168
  "./src/lib/components/data-columns": {
169
169
  "types": "./src/lib/components/data-columns/index.d.ts",
@@ -171,29 +171,17 @@
171
171
  "esm": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
172
172
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-columns.mjs"
173
173
  },
174
- "./src/lib/components/data-export": {
175
- "types": "./src/lib/components/data-export/index.d.ts",
176
- "esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
177
- "esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
178
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
179
- },
180
- "./src/lib/components/data-extend": {
181
- "types": "./src/lib/components/data-extend/index.d.ts",
182
- "esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
183
- "esm": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
184
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs"
185
- },
186
174
  "./src/lib/components/data-filter": {
187
175
  "types": "./src/lib/components/data-filter/index.d.ts",
188
176
  "esm2022": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
189
177
  "esm": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
190
178
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-filter.mjs"
191
179
  },
192
- "./src/lib/components/data-import": {
193
- "types": "./src/lib/components/data-import/index.d.ts",
194
- "esm2022": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
195
- "esm": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
196
- "default": "./fesm2022/verben-ng-ui-src-lib-components-data-import.mjs"
180
+ "./src/lib/components/data-export": {
181
+ "types": "./src/lib/components/data-export/index.d.ts",
182
+ "esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
183
+ "esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
184
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
197
185
  },
198
186
  "./src/lib/components/data-sort": {
199
187
  "types": "./src/lib/components/data-sort/index.d.ts",
@@ -201,6 +189,12 @@
201
189
  "esm": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
202
190
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-sort.mjs"
203
191
  },
192
+ "./src/lib/components/data-import": {
193
+ "types": "./src/lib/components/data-import/index.d.ts",
194
+ "esm2022": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
195
+ "esm": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
196
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-import.mjs"
197
+ },
204
198
  "./src/lib/components/data-table": {
205
199
  "types": "./src/lib/components/data-table/index.d.ts",
206
200
  "esm2022": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
@@ -213,29 +207,29 @@
213
207
  "esm": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
214
208
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-view.mjs"
215
209
  },
210
+ "./src/lib/components/data-extend": {
211
+ "types": "./src/lib/components/data-extend/index.d.ts",
212
+ "esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
213
+ "esm": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
214
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs"
215
+ },
216
216
  "./src/lib/components/data-xport": {
217
217
  "types": "./src/lib/components/data-xport/index.d.ts",
218
218
  "esm2022": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
219
219
  "esm": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
220
220
  "default": "./fesm2022/verben-ng-ui-src-lib-components-data-xport.mjs"
221
221
  },
222
- "./src/lib/components/drop-down": {
223
- "types": "./src/lib/components/drop-down/index.d.ts",
224
- "esm2022": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
225
- "esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
226
- "default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
227
- },
228
222
  "./src/lib/components/date-picker": {
229
223
  "types": "./src/lib/components/date-picker/index.d.ts",
230
224
  "esm2022": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
231
225
  "esm": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
232
226
  "default": "./fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs"
233
227
  },
234
- "./src/lib/components/image": {
235
- "types": "./src/lib/components/image/index.d.ts",
236
- "esm2022": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
237
- "esm": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
238
- "default": "./fesm2022/verben-ng-ui-src-lib-components-image.mjs"
228
+ "./src/lib/components/drop-down": {
229
+ "types": "./src/lib/components/drop-down/index.d.ts",
230
+ "esm2022": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
231
+ "esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
232
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
239
233
  },
240
234
  "./src/lib/components/icons": {
241
235
  "types": "./src/lib/components/icons/index.d.ts",
@@ -243,24 +237,18 @@
243
237
  "esm": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
244
238
  "default": "./fesm2022/verben-ng-ui-src-lib-components-icons.mjs"
245
239
  },
240
+ "./src/lib/components/image": {
241
+ "types": "./src/lib/components/image/index.d.ts",
242
+ "esm2022": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
243
+ "esm": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
244
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-image.mjs"
245
+ },
246
246
  "./src/lib/components/notification": {
247
247
  "types": "./src/lib/components/notification/index.d.ts",
248
248
  "esm2022": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
249
249
  "esm": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
250
250
  "default": "./fesm2022/verben-ng-ui-src-lib-components-notification.mjs"
251
251
  },
252
- "./src/lib/components/number-input": {
253
- "types": "./src/lib/components/number-input/index.d.ts",
254
- "esm2022": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
255
- "esm": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
256
- "default": "./fesm2022/verben-ng-ui-src-lib-components-number-input.mjs"
257
- },
258
- "./src/lib/components/pop-up": {
259
- "types": "./src/lib/components/pop-up/index.d.ts",
260
- "esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
261
- "esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
262
- "default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
263
- },
264
252
  "./src/lib/components/shared": {
265
253
  "types": "./src/lib/components/shared/index.d.ts",
266
254
  "esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
@@ -273,11 +261,17 @@
273
261
  "esm": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
274
262
  "default": "./fesm2022/verben-ng-ui-src-lib-components-sort-table.mjs"
275
263
  },
276
- "./src/lib/components/svg": {
277
- "types": "./src/lib/components/svg/index.d.ts",
278
- "esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
279
- "esm": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
280
- "default": "./fesm2022/verben-ng-ui-src-lib-components-svg.mjs"
264
+ "./src/lib/components/pop-up": {
265
+ "types": "./src/lib/components/pop-up/index.d.ts",
266
+ "esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
267
+ "esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
268
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
269
+ },
270
+ "./src/lib/components/number-input": {
271
+ "types": "./src/lib/components/number-input/index.d.ts",
272
+ "esm2022": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
273
+ "esm": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
274
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-number-input.mjs"
281
275
  },
282
276
  "./src/lib/components/tooltip": {
283
277
  "types": "./src/lib/components/tooltip/index.d.ts",
@@ -285,17 +279,23 @@
285
279
  "esm": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
286
280
  "default": "./fesm2022/verben-ng-ui-src-lib-components-tooltip.mjs"
287
281
  },
282
+ "./src/lib/components/verben-dialogue": {
283
+ "types": "./src/lib/components/verben-dialogue/index.d.ts",
284
+ "esm2022": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
285
+ "esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
286
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
287
+ },
288
288
  "./src/lib/components/table-filter": {
289
289
  "types": "./src/lib/components/table-filter/index.d.ts",
290
290
  "esm2022": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
291
291
  "esm": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
292
292
  "default": "./fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs"
293
293
  },
294
- "./src/lib/components/verben-dialogue": {
295
- "types": "./src/lib/components/verben-dialogue/index.d.ts",
296
- "esm2022": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
297
- "esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
298
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
294
+ "./src/lib/components/svg": {
295
+ "types": "./src/lib/components/svg/index.d.ts",
296
+ "esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
297
+ "esm": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
298
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-svg.mjs"
299
299
  },
300
300
  "./src/lib/components/verben-mail": {
301
301
  "types": "./src/lib/components/verben-mail/index.d.ts",
@@ -303,18 +303,6 @@
303
303
  "esm": "./esm2022/src/lib/components/verben-mail/verben-ng-ui-src-lib-components-verben-mail.mjs",
304
304
  "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-mail.mjs"
305
305
  },
306
- "./src/lib/components/verben-time-picker": {
307
- "types": "./src/lib/components/verben-time-picker/index.d.ts",
308
- "esm2022": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
309
- "esm": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
310
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-time-picker.mjs"
311
- },
312
- "./src/lib/components/verbena-icon": {
313
- "types": "./src/lib/components/verbena-icon/index.d.ts",
314
- "esm2022": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
315
- "esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
316
- "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
317
- },
318
306
  "./src/lib/components/verbena-tab": {
319
307
  "types": "./src/lib/components/verbena-tab/index.d.ts",
320
308
  "esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
@@ -326,6 +314,18 @@
326
314
  "esm2022": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
327
315
  "esm": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
328
316
  "default": "./fesm2022/verben-ng-ui-src-lib-components-visible-column.mjs"
317
+ },
318
+ "./src/lib/components/verben-time-picker": {
319
+ "types": "./src/lib/components/verben-time-picker/index.d.ts",
320
+ "esm2022": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
321
+ "esm": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
322
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verben-time-picker.mjs"
323
+ },
324
+ "./src/lib/components/verbena-icon": {
325
+ "types": "./src/lib/components/verbena-icon/index.d.ts",
326
+ "esm2022": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
327
+ "esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
328
+ "default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
329
329
  }
330
330
  }
331
331
  }