@acorex/platform 20.6.0-next.15 → 20.6.0-next.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-layout-components.mjs +13 -13
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +1617 -31
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +14 -2
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-xtWnr98z.mjs +136 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-xtWnr98z.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-pBT9C2n8.mjs → acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs} +207 -145
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +4 -4
- package/layout/components/index.d.ts +4 -4
- package/layout/entity/index.d.ts +241 -7
- package/layout/widgets/index.d.ts +4 -0
- package/package.json +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-WbPPqDON.mjs +0 -115
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-WbPPqDON.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-pBT9C2n8.mjs.map +0 -1
package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs","sources":["../tmp-esm2022/themes/default/lib/layouts/entity-layouts/entity-category/entity-category.component.js","../tmp-esm2022/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.js","../tmp-esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.js"],"sourcesContent":["import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, Component, computed, inject, input, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTreeViewComponent, AXTreeViewModule, } from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutToolbarComponent, } from '@acorex/platform/layout/components';\nimport { AXPCategoryTreeService, AXPEntityResolver, } from '@acorex/platform/layout/entity';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/search-box\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/dropdown\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"@acorex/core/translation\";\nexport class AXPEntityCategoryComponent {\n //#endregion\n constructor() {\n //#region ---- Services & Dependencies ----\n this.entityResolver = inject(AXPEntityResolver);\n this.translate = inject(AXTranslationService);\n this.workflow = inject(AXPWorkflowService);\n this.categoryTreeService = inject(AXPCategoryTreeService);\n //#endregion\n //#region ---- Component Inputs & View Queries ----\n this.vm = input.required(...(ngDevMode ? [{ debugName: \"vm\" }] : []));\n this.tree = viewChild('tree', ...(ngDevMode ? [{ debugName: \"tree\" }] : []));\n this.searchValue = input('', ...(ngDevMode ? [{ debugName: \"searchValue\" }] : []));\n //#endregion\n //#region ---- Component State ----\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n //#endregion\n //#region ---- Private Properties ----\n this.loadingTimeoutId = null;\n this.LOADING_DELAY = 300; // Show skeleton only if loading takes more than 300ms\n this.treeData = null;\n this.treeConfig = null;\n this.searchResults = null;\n // Computed values for field names to avoid repeated calculations\n this.textField = computed(() => this.vm().entityDef.category?.textField || 'title', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.valueField = computed(() => this.vm().entityDef.category?.valueField || 'id', ...(ngDevMode ? [{ debugName: \"valueField\" }] : []));\n this.categoryEntityKey = computed(() => {\n const key = this.vm().entityDef.category?.entity;\n if (!key) {\n throw new Error('Category entity is not configured');\n }\n return key;\n }, ...(ngDevMode ? [{ debugName: \"categoryEntityKey\" }] : []));\n //#region ---- Utility Methods ----\n /** Datasource callback for tree-view component. */\n this.datasource = async (id) => {\n if (!this.treeData || !this.treeConfig) {\n return [];\n }\n // If no id provided, return root nodes (or search results if available)\n if (!id) {\n // If we have search results, use them\n if (this.searchResults) {\n const rootNode = await this.categoryTreeService.createRootNode(this.searchResults, this.treeConfig);\n return [rootNode];\n }\n // Otherwise load root categories\n const items = await this.categoryTreeService.loadRootCategories(this.treeData, this.treeConfig);\n if (!items) {\n return [];\n }\n const rootNode = await this.categoryTreeService.createRootNode(items, this.treeConfig);\n return [rootNode];\n }\n // Create a minimal node object with just the id (loadChildren only needs node.id)\n const targetNode = {\n id,\n label: '',\n data: {},\n };\n return await this.categoryTreeService.loadChildren(targetNode, this.treeData, this.treeConfig);\n };\n afterNextRender(() => {\n this.getCategories();\n });\n }\n async handleCategorySearchChange(e) {\n if (!this.treeData || !this.treeConfig) {\n return;\n }\n this.setLoadingWithDelay(true);\n try {\n const items = await this.categoryTreeService.searchCategories(e.value, this.treeData, this.treeConfig);\n if (!items) {\n this.clearLoadingState();\n return;\n }\n // Store search results for datasource callback\n this.searchResults = items;\n // Trigger tree refresh\n const treeComponent = this.tree();\n if (treeComponent) {\n treeComponent.refresh?.();\n }\n }\n catch (error) {\n console.error('Error searching categories:', error);\n }\n finally {\n this.clearLoadingState();\n }\n }\n async getCategories() {\n this.setLoadingWithDelay(true);\n try {\n const entityKey = this.categoryEntityKey();\n this.treeConfig = {\n entityKey,\n textField: this.textField(),\n valueField: this.valueField(),\n };\n this.treeData = await this.categoryTreeService.initializeCategoryTree(this.treeConfig);\n if (!this.treeData) {\n this.clearLoadingState();\n return;\n }\n // Get parentKey from entity definition\n if (this.treeData.categoryEntityDef?.parentKey) {\n this.treeConfig.parentKey = this.treeData.categoryEntityDef.parentKey;\n }\n // Tree will be loaded via datasource callback\n // Clear any previous search results\n this.searchResults = null;\n }\n catch (error) {\n console.error('Error loading categories:', error);\n }\n finally {\n this.clearLoadingState();\n }\n }\n async onNodeToggle(event) {\n // Tree component handles lazy loading via datasource callback\n }\n handleNodeClick(node) {\n const nodeData = (node.data || node);\n const applyConditions = this.vm().entityDef.category?.applyConditions || [];\n const filters = applyConditions\n .map((f) => {\n const value = nodeData[f.value];\n return value !== 'all' && value != null\n ? {\n field: f.name,\n value,\n operator: f.operator,\n }\n : null;\n })\n .filter((item) => item != null);\n const viewFilters = this.vm()\n .view()\n .conditions.map((i) => ({ ...i, field: i.name }));\n this.vm().dataSource.filter({\n filters: [...viewFilters, ...filters],\n logic: 'and',\n });\n this.vm().dataSource.refresh();\n }\n /** Loads children for a given node id. Used for refresh operations. */\n async loadChildrenAtNode(targetId) {\n // With the new datasource callback API, the tree component will automatically\n // reload data when needed. For manual refresh, we may need to trigger\n // the tree component's refresh mechanism if available.\n // For now, the tree should handle refresh automatically via the datasource callback.\n }\n /** Returns the module.entity key for the configured category entity. */\n getCategoryEntityKey() {\n return this.categoryEntityKey();\n }\n /** Refresh tree after CRUD operations. */\n async refreshAfterChange(parentId) {\n // Clear search results to show all categories\n this.searchResults = null;\n // Trigger tree refresh\n const treeComponent = this.tree();\n if (treeComponent) {\n treeComponent.refresh?.();\n }\n }\n //#endregion\n //#region ---- UI Handlers ----\n /** Create a new root category node. */\n async handleCreateRootClick(e) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n try {\n await this.workflow.execute('create-entity', {\n entity: this.getCategoryEntityKey(),\n options: { process: { redirect: false } },\n });\n await this.refreshAfterChange();\n }\n catch (error) {\n console.error('Error creating root category:', error);\n }\n }\n /** Create a new child under the given node. */\n async handleCreateChildClick(node, e) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n try {\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n const data = {};\n if (parentKey) {\n data[parentKey] = node.id;\n }\n await this.workflow.execute('create-entity', {\n entity: this.getCategoryEntityKey(),\n data,\n options: { process: { redirect: false, canCreateNewOne: true } },\n });\n await this.refreshAfterChange(node.id);\n }\n catch (error) {\n console.error('Error creating child category:', error);\n }\n }\n /** Update the given node. */\n async handleEditNodeClick(node, e) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n try {\n const nodeData = (node.data || node);\n await this.workflow.execute('quick-modify-entity', {\n entity: this.getCategoryEntityKey(),\n data: nodeData,\n options: { layout: { size: 'md' } },\n });\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n if (parentKey && nodeData[parentKey]) {\n await this.refreshAfterChange(nodeData[parentKey]);\n }\n else {\n await this.refreshAfterChange();\n }\n }\n catch (error) {\n console.error('Error editing category:', error);\n }\n }\n /** Delete the given node. */\n async handleDeleteNodeClick(node, e) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n try {\n const nodeData = (node.data || node);\n await this.workflow.execute('delete-entity', {\n entity: this.getCategoryEntityKey(),\n data: nodeData,\n options: { process: { showResult: true } },\n });\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n if (parentKey && nodeData[parentKey]) {\n await this.refreshAfterChange(nodeData[parentKey]);\n }\n else {\n await this.refreshAfterChange();\n }\n }\n catch (error) {\n console.error('Error deleting category:', error);\n }\n }\n //#endregion\n //#region ---- Loading State Management ----\n /**\n * Set loading state with delay to avoid flickering for fast responses\n */\n setLoadingWithDelay(loading) {\n if (loading) {\n // Clear any existing timeout\n if (this.loadingTimeoutId) {\n clearTimeout(this.loadingTimeoutId);\n }\n // Only show skeleton if loading takes more than LOADING_DELAY ms\n this.loadingTimeoutId = setTimeout(() => {\n this.isLoading.set(true);\n this.loadingTimeoutId = null;\n }, this.LOADING_DELAY);\n }\n }\n /**\n * Clear loading state and cancel any pending timeout\n */\n clearLoadingState() {\n // Cancel the delayed loading state if it hasn't been set yet\n if (this.loadingTimeoutId) {\n clearTimeout(this.loadingTimeoutId);\n this.loadingTimeoutId = null;\n }\n // Clear the loading state\n this.isLoading.set(false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityCategoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPEntityCategoryComponent, isStandalone: true, selector: \"axp-entity-category\", inputs: { vm: { classPropertyName: \"vm\", publicName: \"vm\", isSignal: true, isRequired: true, transformFunction: null }, searchValue: { classPropertyName: \"searchValue\", publicName: \"searchValue\", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: \"tree\", first: true, predicate: [\"tree\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<axp-layout-header>\\n <axp-layout-title>{{\\n vm().entityDef.category?.title || '@general:terms.classification.category' | translate | async\\n }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n (onValueChanged)=\\\"handleCategorySearchChange($event)\\\"\\n [delayTime]=\\\"300\\\"\\n [placeholder]=\\\"'@general:terms.interface.category.search.placeholder' | translate | async\\\"\\n >\\n </ax-search-box>\\n </axp-layout-toolbar>\\n</axp-layout-header>\\n<axp-layout-content>\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-flex ax-flex-col ax-gap-3\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n } @else if (treeData) {\\n <div class=\\\"ax-px-4 ax-max-h-[calc(100vh-250px)] ax-overflow-auto\\\">\\n <ax-tree-view\\n [datasource]=\\\"datasource\\\"\\n [showCheckbox]=\\\"false\\\"\\n [showIcons]=\\\"true\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n (onNodeToggle)=\\\"onNodeToggle($event)\\\"\\n #tree\\n >\\n </ax-tree-view>\\n </div>\\n } @else {\\n <axp-state-message\\n icon=\\\"fa-light fa-folder-open\\\"\\n [title]=\\\"'@general:terms.interface.category.search.no-records.title'\\\"\\n [description]=\\\"'@general:terms.interface.category.search.no-records.description'\\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n (onClick)=\\\"handleCreateRootClick($event)\\\"\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@general:actions.add-new.title' | translate | async\\\"\\n >\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button>\\n </axp-state-message>\\n }\\n\\n <ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let item = node.data || node;\\n @let textField = vm().entityDef.category?.textField || 'title';\\n @let valueField = vm().entityDef.category?.valueField || 'id';\\n @let itemId = item[valueField] || node.id;\\n @let itemTitle = item[textField] || node.label;\\n <div\\n class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full ax-gap-2 ax-overflow-hidden\\\"\\n (click)=\\\"handleNodeClick(node)\\\"\\n >\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-min-w-0\\\">\\n <ax-icon\\n class=\\\"fas fa-folder\\\"\\n [style.color]=\\\"item.color ?? 'rgba(var(--ax-sys-color-warning-500), 1)'\\\"\\n ></ax-icon>\\n <span class=\\\"ax-truncate\\\">{{ itemTitle }}</span>\\n </div>\\n @if (itemId && itemId !== 'all') {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-button class=\\\"ax-xs\\\" color=\\\"default\\\" look=\\\"blank\\\" (onClick)=\\\"$event.nativeEvent.stopPropagation()\\\">\\n <ax-icon class=\\\"fas fa-ellipsis-v\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n (onClick)=\\\"handleCreateChildClick(node, $event)\\\"\\n look=\\\"blank\\\"\\n color=\\\"default\\\"\\n text=\\\"Add New Child\\\"\\n >\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button-item>\\n <ax-button-item (onClick)=\\\"handleEditNodeClick(node, $event)\\\" look=\\\"blank\\\" text=\\\"Edit\\\">\\n <ax-icon class=\\\"fas fa-pen\\\"></ax-icon>\\n </ax-button-item>\\n <ax-button-item\\n (onClick)=\\\"handleDeleteNodeClick(node, $event)\\\"\\n color=\\\"danger\\\"\\n look=\\\"blank\\\"\\n text=\\\"Delete\\\"\\n >\\n <ax-icon class=\\\"fas fa-trash\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n } @else if (itemId === 'all') {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-button class=\\\"ax-xs\\\" (onClick)=\\\"handleCreateRootClick($event)\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </ng-template>\\n</axp-layout-content>\\n\", styles: [\"ax-tree-view-item .ax-tree-view-items{width:100%;min-width:0px}ax-tree-view-item .ax-tree-view-items>div{width:100%}ax-tree-view-item .ax-state-tree-view-active{background-color:rgb(var(--ax-sys-color-light-surface))!important;color:rgb(var(--ax-sys-color-on-light-surface))!important;border-color:rgb(var(--ax-sys-color-border-light-surface))!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXTreeViewModule }, { kind: \"component\", type: AXTreeViewComponent, selector: \"ax-tree-view\", inputs: [\"datasource\", \"selectMode\", \"showCheckbox\", \"checkChildrenOnSelect\", \"intermediateState\", \"checkOnClick\", \"dragMode\", \"dragOperationType\", \"showIcons\", \"showChildrenBadge\", \"expandedIcon\", \"collapsedIcon\", \"indentSize\", \"nodeHeight\", \"look\", \"itemTemplate\"], outputs: [\"datasourceChange\", \"onBeforeDrop\", \"onNodeToggle\", \"onNodeSelect\", \"onOrderChange\", \"onMoveChange\", \"onItemsChange\"] }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i3.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutToolbarComponent, selector: \"axp-layout-toolbar\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i4.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i4.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i6.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i7.AXTranslatorPipe, name: \"translate\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityCategoryComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-entity-category', standalone: true, encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXDecoratorModule,\n AXTreeViewModule,\n AXTreeViewComponent,\n AXSkeletonModule,\n AXPThemeLayoutBlockComponent,\n AXSearchBoxModule,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n AXTranslationModule,\n AXButtonModule,\n AXDropdownModule,\n AXPStateMessageComponent,\n ], template: \"<axp-layout-header>\\n <axp-layout-title>{{\\n vm().entityDef.category?.title || '@general:terms.classification.category' | translate | async\\n }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n (onValueChanged)=\\\"handleCategorySearchChange($event)\\\"\\n [delayTime]=\\\"300\\\"\\n [placeholder]=\\\"'@general:terms.interface.category.search.placeholder' | translate | async\\\"\\n >\\n </ax-search-box>\\n </axp-layout-toolbar>\\n</axp-layout-header>\\n<axp-layout-content>\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-flex ax-flex-col ax-gap-3\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n } @else if (treeData) {\\n <div class=\\\"ax-px-4 ax-max-h-[calc(100vh-250px)] ax-overflow-auto\\\">\\n <ax-tree-view\\n [datasource]=\\\"datasource\\\"\\n [showCheckbox]=\\\"false\\\"\\n [showIcons]=\\\"true\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n (onNodeToggle)=\\\"onNodeToggle($event)\\\"\\n #tree\\n >\\n </ax-tree-view>\\n </div>\\n } @else {\\n <axp-state-message\\n icon=\\\"fa-light fa-folder-open\\\"\\n [title]=\\\"'@general:terms.interface.category.search.no-records.title'\\\"\\n [description]=\\\"'@general:terms.interface.category.search.no-records.description'\\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n (onClick)=\\\"handleCreateRootClick($event)\\\"\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@general:actions.add-new.title' | translate | async\\\"\\n >\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button>\\n </axp-state-message>\\n }\\n\\n <ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let item = node.data || node;\\n @let textField = vm().entityDef.category?.textField || 'title';\\n @let valueField = vm().entityDef.category?.valueField || 'id';\\n @let itemId = item[valueField] || node.id;\\n @let itemTitle = item[textField] || node.label;\\n <div\\n class=\\\"ax-flex ax-items-center ax-justify-between ax-w-full ax-gap-2 ax-overflow-hidden\\\"\\n (click)=\\\"handleNodeClick(node)\\\"\\n >\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-min-w-0\\\">\\n <ax-icon\\n class=\\\"fas fa-folder\\\"\\n [style.color]=\\\"item.color ?? 'rgba(var(--ax-sys-color-warning-500), 1)'\\\"\\n ></ax-icon>\\n <span class=\\\"ax-truncate\\\">{{ itemTitle }}</span>\\n </div>\\n @if (itemId && itemId !== 'all') {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-button class=\\\"ax-xs\\\" color=\\\"default\\\" look=\\\"blank\\\" (onClick)=\\\"$event.nativeEvent.stopPropagation()\\\">\\n <ax-icon class=\\\"fas fa-ellipsis-v\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n (onClick)=\\\"handleCreateChildClick(node, $event)\\\"\\n look=\\\"blank\\\"\\n color=\\\"default\\\"\\n text=\\\"Add New Child\\\"\\n >\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button-item>\\n <ax-button-item (onClick)=\\\"handleEditNodeClick(node, $event)\\\" look=\\\"blank\\\" text=\\\"Edit\\\">\\n <ax-icon class=\\\"fas fa-pen\\\"></ax-icon>\\n </ax-button-item>\\n <ax-button-item\\n (onClick)=\\\"handleDeleteNodeClick(node, $event)\\\"\\n color=\\\"danger\\\"\\n look=\\\"blank\\\"\\n text=\\\"Delete\\\"\\n >\\n <ax-icon class=\\\"fas fa-trash\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n } @else if (itemId === 'all') {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <ax-button class=\\\"ax-xs\\\" (onClick)=\\\"handleCreateRootClick($event)\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"fas fa-plus\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </ng-template>\\n</axp-layout-content>\\n\", styles: [\"ax-tree-view-item .ax-tree-view-items{width:100%;min-width:0px}ax-tree-view-item .ax-tree-view-items>div{width:100%}ax-tree-view-item .ax-state-tree-view-active{background-color:rgb(var(--ax-sys-color-light-surface))!important;color:rgb(var(--ax-sys-color-on-light-surface))!important;border-color:rgb(var(--ax-sys-color-border-light-surface))!important}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { vm: [{ type: i0.Input, args: [{ isSignal: true, alias: \"vm\", required: true }] }], tree: [{ type: i0.ViewChild, args: ['tree', { isSignal: true }] }], searchValue: [{ type: i0.Input, args: [{ isSignal: true, alias: \"searchValue\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNhdGVnb3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL2VudGl0eS1sYXlvdXRzL2VudGl0eS1jYXRlZ29yeS9lbnRpdHktY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LWNhdGVnb3J5L2VudGl0eS1jYXRlZ29yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBR2pCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckYsT0FBTyxFQUNMLHdCQUF3QixFQUN4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QThCO3dCQUM5QixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQix3QkFBd0I7cUJBQ3pCOytLQWlCcUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhDbGlja0V2ZW50LCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQge1xuICBBWFRyZWVWaWV3Q29tcG9uZW50LFxuICBBWFRyZWVWaWV3TW9kdWxlLFxuICBBWFRyZWVWaWV3Tm9kZSxcbiAgQVhUcmVlVmlld05vZGVUb2dnbGVFdmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RyZWUtdmlldyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQge1xuICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQVhQQ2F0ZWdvcnlUcmVlU2VydmljZSxcbiAgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbCxcbiAgQVhQRW50aXR5UmVzb2x2ZXIsXG4gIENhdGVnb3J5VHJlZUNvbmZpZyxcbiAgQ2F0ZWdvcnlUcmVlTm9kZURhdGEsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWVudGl0eS1jYXRlZ29yeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUcmVlVmlld01vZHVsZSxcbiAgICBBWFRyZWVWaWV3Q29tcG9uZW50LFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgICBBWFBUaGVtZUxheW91dEhlYWRlckNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1jYXRlZ29yeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lbnRpdHktY2F0ZWdvcnkuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlDYXRlZ29yeUNvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVudGl0eVJlc29sdmVyID0gaW5qZWN0KEFYUEVudGl0eVJlc29sdmVyKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnlUcmVlU2VydmljZSA9IGluamVjdChBWFBDYXRlZ29yeVRyZWVTZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBJbnB1dHMgJiBWaWV3IFF1ZXJpZXMgICAtLS0tXG5cbiAgdm0gPSBpbnB1dC5yZXF1aXJlZDxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsPigpO1xuICB0cmVlID0gdmlld0NoaWxkPEFYVHJlZVZpZXdDb21wb25lbnQ+KCd0cmVlJyk7XG4gIHNlYXJjaFZhbHVlID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wb25lbnQgU3RhdGUgICAtLS0tXG5cbiAgaXNMb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByaXZhdGUgbG9hZGluZ1RpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBMT0FESU5HX0RFTEFZID0gMzAwOyAvLyBTaG93IHNrZWxldG9uIG9ubHkgaWYgbG9hZGluZyB0YWtlcyBtb3JlIHRoYW4gMzAwbXNcblxuICBwcm90ZWN0ZWQgdHJlZURhdGE6IENhdGVnb3J5VHJlZU5vZGVEYXRhIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCB0cmVlQ29uZmlnOiBDYXRlZ29yeVRyZWVDb25maWcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzZWFyY2hSZXN1bHRzOiBhbnlbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlcyBmb3IgZmllbGQgbmFtZXMgdG8gYXZvaWQgcmVwZWF0ZWQgY2FsY3VsYXRpb25zXG4gIHByaXZhdGUgcmVhZG9ubHkgdGV4dEZpZWxkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52bSgpLmVudGl0eURlZi5jYXRlZ29yeT8udGV4dEZpZWxkIHx8ICd0aXRsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlRmllbGQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZtKCkuZW50aXR5RGVmLmNhdGVnb3J5Py52YWx1ZUZpZWxkIHx8ICdpZCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5RW50aXR5S2V5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMudm0oKS5lbnRpdHlEZWYuY2F0ZWdvcnk/LmVudGl0eTtcbiAgICBpZiAoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXRlZ29yeSBlbnRpdHkgaXMgbm90IGNvbmZpZ3VyZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlQ2F0ZWdvcnlTZWFyY2hDaGFuZ2UoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy50cmVlRGF0YSB8fCAhdGhpcy50cmVlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRMb2FkaW5nV2l0aERlbGF5KHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5jYXRlZ29yeVRyZWVTZXJ2aWNlLnNlYXJjaENhdGVnb3JpZXMoZS52YWx1ZSwgdGhpcy50cmVlRGF0YSwgdGhpcy50cmVlQ29uZmlnKTtcbiAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgdGhpcy5jbGVhckxvYWRpbmdTdGF0ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3JlIHNlYXJjaCByZXN1bHRzIGZvciBkYXRhc291cmNlIGNhbGxiYWNrXG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPSBpdGVtcztcblxuICAgICAgLy8gVHJpZ2dlciB0cmVlIHJlZnJlc2hcbiAgICAgIGNvbnN0IHRyZWVDb21wb25lbnQgPSB0aGlzLnRyZWUoKTtcbiAgICAgIGlmICh0cmVlQ29tcG9uZW50KSB7XG4gICAgICAgIHRyZWVDb21wb25lbnQucmVmcmVzaD8uKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNlYXJjaGluZyBjYXRlZ29yaWVzOicsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jbGVhckxvYWRpbmdTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRDYXRlZ29yaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2V0TG9hZGluZ1dpdGhEZWxheSh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRpdHlLZXkgPSB0aGlzLmNhdGVnb3J5RW50aXR5S2V5KCk7XG4gICAgICB0aGlzLnRyZWVDb25maWcgPSB7XG4gICAgICAgIGVudGl0eUtleSxcbiAgICAgICAgdGV4dEZpZWxkOiB0aGlzLnRleHRGaWVsZCgpLFxuICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLnZhbHVlRmllbGQoKSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudHJlZURhdGEgPSBhd2FpdCB0aGlzLmNhdGVnb3J5VHJlZVNlcnZpY2UuaW5pdGlhbGl6ZUNhdGVnb3J5VHJlZSh0aGlzLnRyZWVDb25maWcpO1xuICAgICAgaWYgKCF0aGlzLnRyZWVEYXRhKSB7XG4gICAgICAgIHRoaXMuY2xlYXJMb2FkaW5nU3RhdGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgcGFyZW50S2V5IGZyb20gZW50aXR5IGRlZmluaXRpb25cbiAgICAgIGlmICh0aGlzLnRyZWVEYXRhLmNhdGVnb3J5RW50aXR5RGVmPy5wYXJlbnRLZXkpIHtcbiAgICAgICAgdGhpcy50cmVlQ29uZmlnLnBhcmVudEtleSA9IHRoaXMudHJlZURhdGEuY2F0ZWdvcnlFbnRpdHlEZWYucGFyZW50S2V5O1xuICAgICAgfVxuXG4gICAgICAvLyBUcmVlIHdpbGwgYmUgbG9hZGVkIHZpYSBkYXRhc291cmNlIGNhbGxiYWNrXG4gICAgICAvLyBDbGVhciBhbnkgcHJldmlvdXMgc2VhcmNoIHJlc3VsdHNcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IG51bGw7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2F0ZWdvcmllczonLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuY2xlYXJMb2FkaW5nU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25Ob2RlVG9nZ2xlKGV2ZW50OiBBWFRyZWVWaWV3Tm9kZVRvZ2dsZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVHJlZSBjb21wb25lbnQgaGFuZGxlcyBsYXp5IGxvYWRpbmcgdmlhIGRhdGFzb3VyY2UgY2FsbGJhY2tcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOb2RlQ2xpY2sobm9kZTogQVhUcmVlVmlld05vZGUpOiB2b2lkIHtcbiAgICBjb25zdCBub2RlRGF0YSA9IChub2RlLmRhdGEgfHwgbm9kZSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgYXBwbHlDb25kaXRpb25zID0gdGhpcy52bSgpLmVudGl0eURlZi5jYXRlZ29yeT8uYXBwbHlDb25kaXRpb25zIHx8IFtdO1xuXG4gICAgY29uc3QgZmlsdGVycyA9IGFwcGx5Q29uZGl0aW9uc1xuICAgICAgLm1hcCgoZikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG5vZGVEYXRhW2YudmFsdWUgYXMgc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSAnYWxsJyAmJiB2YWx1ZSAhPSBudWxsXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGZpZWxkOiBmLm5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBvcGVyYXRvcjogZi5vcGVyYXRvcixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgTm9uTnVsbGFibGU8dHlwZW9mIGl0ZW0+ID0+IGl0ZW0gIT0gbnVsbCk7XG5cbiAgICBjb25zdCB2aWV3RmlsdGVycyA9IHRoaXMudm0oKVxuICAgICAgLnZpZXcoKVxuICAgICAgLmNvbmRpdGlvbnMubWFwKChpKSA9PiAoeyAuLi5pLCBmaWVsZDogaS5uYW1lIH0pKTtcblxuICAgIHRoaXMudm0oKS5kYXRhU291cmNlLmZpbHRlcih7XG4gICAgICBmaWx0ZXJzOiBbLi4udmlld0ZpbHRlcnMsIC4uLmZpbHRlcnNdLFxuICAgICAgbG9naWM6ICdhbmQnLFxuICAgIH0pO1xuICAgIHRoaXMudm0oKS5kYXRhU291cmNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVXRpbGl0eSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKiBEYXRhc291cmNlIGNhbGxiYWNrIGZvciB0cmVlLXZpZXcgY29tcG9uZW50LiAqL1xuICBwcm90ZWN0ZWQgZGF0YXNvdXJjZSA9IGFzeW5jIChpZD86IHN0cmluZyk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4gPT4ge1xuICAgIGlmICghdGhpcy50cmVlRGF0YSB8fCAhdGhpcy50cmVlQ29uZmlnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gaWQgcHJvdmlkZWQsIHJldHVybiByb290IG5vZGVzIChvciBzZWFyY2ggcmVzdWx0cyBpZiBhdmFpbGFibGUpXG4gICAgaWYgKCFpZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBzZWFyY2ggcmVzdWx0cywgdXNlIHRoZW1cbiAgICAgIGlmICh0aGlzLnNlYXJjaFJlc3VsdHMpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSBhd2FpdCB0aGlzLmNhdGVnb3J5VHJlZVNlcnZpY2UuY3JlYXRlUm9vdE5vZGUodGhpcy5zZWFyY2hSZXN1bHRzLCB0aGlzLnRyZWVDb25maWcpO1xuICAgICAgICByZXR1cm4gW3Jvb3ROb2RlXTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlIGxvYWQgcm9vdCBjYXRlZ29yaWVzXG4gICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlUcmVlU2VydmljZS5sb2FkUm9vdENhdGVnb3JpZXModGhpcy50cmVlRGF0YSwgdGhpcy50cmVlQ29uZmlnKTtcbiAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBhd2FpdCB0aGlzLmNhdGVnb3J5VHJlZVNlcnZpY2UuY3JlYXRlUm9vdE5vZGUoaXRlbXMsIHRoaXMudHJlZUNvbmZpZyk7XG4gICAgICByZXR1cm4gW3Jvb3ROb2RlXTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBtaW5pbWFsIG5vZGUgb2JqZWN0IHdpdGgganVzdCB0aGUgaWQgKGxvYWRDaGlsZHJlbiBvbmx5IG5lZWRzIG5vZGUuaWQpXG4gICAgY29uc3QgdGFyZ2V0Tm9kZTogQVhUcmVlVmlld05vZGUgPSB7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIGRhdGE6IHt9LFxuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jYXRlZ29yeVRyZWVTZXJ2aWNlLmxvYWRDaGlsZHJlbih0YXJnZXROb2RlLCB0aGlzLnRyZWVEYXRhLCB0aGlzLnRyZWVDb25maWcpO1xuICB9O1xuXG4gIC8qKiBMb2FkcyBjaGlsZHJlbiBmb3IgYSBnaXZlbiBub2RlIGlkLiBVc2VkIGZvciByZWZyZXNoIG9wZXJhdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgbG9hZENoaWxkcmVuQXROb2RlKHRhcmdldElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXaXRoIHRoZSBuZXcgZGF0YXNvdXJjZSBjYWxsYmFjayBBUEksIHRoZSB0cmVlIGNvbXBvbmVudCB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICAvLyByZWxvYWQgZGF0YSB3aGVuIG5lZWRlZC4gRm9yIG1hbnVhbCByZWZyZXNoLCB3ZSBtYXkgbmVlZCB0byB0cmlnZ2VyXG4gICAgLy8gdGhlIHRyZWUgY29tcG9uZW50J3MgcmVmcmVzaCBtZWNoYW5pc20gaWYgYXZhaWxhYmxlLlxuICAgIC8vIEZvciBub3csIHRoZSB0cmVlIHNob3VsZCBoYW5kbGUgcmVmcmVzaCBhdXRvbWF0aWNhbGx5IHZpYSB0aGUgZGF0YXNvdXJjZSBjYWxsYmFjay5cbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBtb2R1bGUuZW50aXR5IGtleSBmb3IgdGhlIGNvbmZpZ3VyZWQgY2F0ZWdvcnkgZW50aXR5LiAqL1xuICBwcml2YXRlIGdldENhdGVnb3J5RW50aXR5S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlFbnRpdHlLZXkoKTtcbiAgfVxuXG4gIC8qKiBSZWZyZXNoIHRyZWUgYWZ0ZXIgQ1JVRCBvcGVyYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hBZnRlckNoYW5nZShwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIENsZWFyIHNlYXJjaCByZXN1bHRzIHRvIHNob3cgYWxsIGNhdGVnb3JpZXNcbiAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPSBudWxsO1xuXG4gICAgLy8gVHJpZ2dlciB0cmVlIHJlZnJlc2hcbiAgICBjb25zdCB0cmVlQ29tcG9uZW50ID0gdGhpcy50cmVlKCk7XG4gICAgaWYgKHRyZWVDb21wb25lbnQpIHtcbiAgICAgIHRyZWVDb21wb25lbnQucmVmcmVzaD8uKCk7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBVSSBIYW5kbGVycyAgIC0tLS1cblxuICAvKiogQ3JlYXRlIGEgbmV3IHJvb3QgY2F0ZWdvcnkgbm9kZS4gKi9cbiAgYXN5bmMgaGFuZGxlQ3JlYXRlUm9vdENsaWNrKGU6IEFYQ2xpY2tFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGUubmF0aXZlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBlLm5hdGl2ZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnY3JlYXRlLWVudGl0eScsIHtcbiAgICAgICAgZW50aXR5OiB0aGlzLmdldENhdGVnb3J5RW50aXR5S2V5KCksXG4gICAgICAgIG9wdGlvbnM6IHsgcHJvY2VzczogeyByZWRpcmVjdDogZmFsc2UgfSB9LFxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hBZnRlckNoYW5nZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjcmVhdGluZyByb290IGNhdGVnb3J5OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ3JlYXRlIGEgbmV3IGNoaWxkIHVuZGVyIHRoZSBnaXZlbiBub2RlLiAqL1xuICBhc3luYyBoYW5kbGVDcmVhdGVDaGlsZENsaWNrKG5vZGU6IEFYVHJlZVZpZXdOb2RlLCBlOiBBWENsaWNrRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBlLm5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5uYXRpdmVFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJlbnRLZXkgPSB0aGlzLnRyZWVEYXRhPy5jYXRlZ29yeUVudGl0eURlZj8ucGFyZW50S2V5O1xuICAgICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgIGlmIChwYXJlbnRLZXkpIHtcbiAgICAgICAgZGF0YVtwYXJlbnRLZXldID0gbm9kZS5pZDtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdjcmVhdGUtZW50aXR5Jywge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZ2V0Q2F0ZWdvcnlFbnRpdHlLZXkoKSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgb3B0aW9uczogeyBwcm9jZXNzOiB7IHJlZGlyZWN0OiBmYWxzZSwgY2FuQ3JlYXRlTmV3T25lOiB0cnVlIH0gfSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQWZ0ZXJDaGFuZ2Uobm9kZS5pZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGNoaWxkIGNhdGVnb3J5OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKiogVXBkYXRlIHRoZSBnaXZlbiBub2RlLiAqL1xuICBhc3luYyBoYW5kbGVFZGl0Tm9kZUNsaWNrKG5vZGU6IEFYVHJlZVZpZXdOb2RlLCBlOiBBWENsaWNrRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBlLm5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5uYXRpdmVFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBub2RlRGF0YSA9IChub2RlLmRhdGEgfHwgbm9kZSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ3F1aWNrLW1vZGlmeS1lbnRpdHknLCB7XG4gICAgICAgIGVudGl0eTogdGhpcy5nZXRDYXRlZ29yeUVudGl0eUtleSgpLFxuICAgICAgICBkYXRhOiBub2RlRGF0YSxcbiAgICAgICAgb3B0aW9uczogeyBsYXlvdXQ6IHsgc2l6ZTogJ21kJyB9IH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcGFyZW50S2V5ID0gdGhpcy50cmVlRGF0YT8uY2F0ZWdvcnlFbnRpdHlEZWY/LnBhcmVudEtleTtcbiAgICAgIGlmIChwYXJlbnRLZXkgJiYgbm9kZURhdGFbcGFyZW50S2V5XSkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hBZnRlckNoYW5nZShub2RlRGF0YVtwYXJlbnRLZXldIGFzIHN0cmluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hBZnRlckNoYW5nZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlZGl0aW5nIGNhdGVnb3J5OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKiogRGVsZXRlIHRoZSBnaXZlbiBub2RlLiAqL1xuICBhc3luYyBoYW5kbGVEZWxldGVOb2RlQ2xpY2sobm9kZTogQVhUcmVlVmlld05vZGUsIGU6IEFYQ2xpY2tFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGUubmF0aXZlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBlLm5hdGl2ZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gKG5vZGUuZGF0YSB8fCBub2RlKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnZGVsZXRlLWVudGl0eScsIHtcbiAgICAgICAgZW50aXR5OiB0aGlzLmdldENhdGVnb3J5RW50aXR5S2V5KCksXG4gICAgICAgIGRhdGE6IG5vZGVEYXRhLFxuICAgICAgICBvcHRpb25zOiB7IHByb2Nlc3M6IHsgc2hvd1Jlc3VsdDogdHJ1ZSB9IH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcGFyZW50S2V5ID0gdGhpcy50cmVlRGF0YT8uY2F0ZWdvcnlFbnRpdHlEZWY/LnBhcmVudEtleTtcbiAgICAgIGlmIChwYXJlbnRLZXkgJiYgbm9kZURhdGFbcGFyZW50S2V5XSkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hBZnRlckNoYW5nZShub2RlRGF0YVtwYXJlbnRLZXldIGFzIHN0cmluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hBZnRlckNoYW5nZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWxldGluZyBjYXRlZ29yeTonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMb2FkaW5nIFN0YXRlIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgLyoqXG4gICAqIFNldCBsb2FkaW5nIHN0YXRlIHdpdGggZGVsYXkgdG8gYXZvaWQgZmxpY2tlcmluZyBmb3IgZmFzdCByZXNwb25zZXNcbiAgICovXG4gIHByaXZhdGUgc2V0TG9hZGluZ1dpdGhEZWxheShsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lb3V0XG4gICAgICBpZiAodGhpcy5sb2FkaW5nVGltZW91dElkKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxvYWRpbmdUaW1lb3V0SWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBPbmx5IHNob3cgc2tlbGV0b24gaWYgbG9hZGluZyB0YWtlcyBtb3JlIHRoYW4gTE9BRElOR19ERUxBWSBtc1xuICAgICAgdGhpcy5sb2FkaW5nVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nVGltZW91dElkID0gbnVsbDtcbiAgICAgIH0sIHRoaXMuTE9BRElOR19ERUxBWSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGxvYWRpbmcgc3RhdGUgYW5kIGNhbmNlbCBhbnkgcGVuZGluZyB0aW1lb3V0XG4gICAqL1xuICBwcml2YXRlIGNsZWFyTG9hZGluZ1N0YXRlKCk6IHZvaWQge1xuICAgIC8vIENhbmNlbCB0aGUgZGVsYXllZCBsb2FkaW5nIHN0YXRlIGlmIGl0IGhhc24ndCBiZWVuIHNldCB5ZXRcbiAgICBpZiAodGhpcy5sb2FkaW5nVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZW91dElkKTtcbiAgICAgIHRoaXMubG9hZGluZ1RpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgdGhlIGxvYWRpbmcgc3RhdGVcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8YXhwLWxheW91dC1oZWFkZXI+XG4gIDxheHAtbGF5b3V0LXRpdGxlPnt7XG4gICAgdm0oKS5lbnRpdHlEZWYuY2F0ZWdvcnk/LnRpdGxlIHx8ICdAZ2VuZXJhbDp0ZXJtcy5jbGFzc2lmaWNhdGlvbi5jYXRlZ29yeScgfCB0cmFuc2xhdGUgfCBhc3luY1xuICB9fTwvYXhwLWxheW91dC10aXRsZT5cbiAgPGF4cC1sYXlvdXQtdG9vbGJhcj5cbiAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUNhdGVnb3J5U2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgW2RlbGF5VGltZV09XCIzMDBcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidAZ2VuZXJhbDp0ZXJtcy5pbnRlcmZhY2UuY2F0ZWdvcnkuc2VhcmNoLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICA+XG4gICAgPC9heC1zZWFyY2gtYm94PlxuICA8L2F4cC1sYXlvdXQtdG9vbGJhcj5cbjwvYXhwLWxheW91dC1oZWFkZXI+XG48YXhwLWxheW91dC1jb250ZW50PlxuICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0zXCI+XG4gICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC02IGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTYgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC02IGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTYgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHRyZWVEYXRhKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LXB4LTQgYXgtbWF4LWgtW2NhbGMoMTAwdmgtMjUwcHgpXSBheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgICA8YXgtdHJlZS12aWV3XG4gICAgICAgIFtkYXRhc291cmNlXT1cImRhdGFzb3VyY2VcIlxuICAgICAgICBbc2hvd0NoZWNrYm94XT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dJY29uc109XCJ0cnVlXCJcbiAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAob25Ob2RlVG9nZ2xlKT1cIm9uTm9kZVRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgI3RyZWVcbiAgICAgID5cbiAgICAgIDwvYXgtdHJlZS12aWV3PlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgIGljb249XCJmYS1saWdodCBmYS1mb2xkZXItb3BlblwiXG4gICAgICBbdGl0bGVdPVwiJ0BnZW5lcmFsOnRlcm1zLmludGVyZmFjZS5jYXRlZ29yeS5zZWFyY2gubm8tcmVjb3Jkcy50aXRsZSdcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidAZ2VuZXJhbDp0ZXJtcy5pbnRlcmZhY2UuY2F0ZWdvcnkuc2VhcmNoLm5vLXJlY29yZHMuZGVzY3JpcHRpb24nXCJcbiAgICA+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIHNsb3Q9XCJhY3Rpb25zXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ3JlYXRlUm9vdENsaWNrKCRldmVudClcIlxuICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5hZGQtbmV3LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgID5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH1cblxuICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtbm9kZT1cIm5vZGVcIiBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxuICAgIEBsZXQgaXRlbSA9IG5vZGUuZGF0YSB8fCBub2RlO1xuICAgIEBsZXQgdGV4dEZpZWxkID0gdm0oKS5lbnRpdHlEZWYuY2F0ZWdvcnk/LnRleHRGaWVsZCB8fCAndGl0bGUnO1xuICAgIEBsZXQgdmFsdWVGaWVsZCA9IHZtKCkuZW50aXR5RGVmLmNhdGVnb3J5Py52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgQGxldCBpdGVtSWQgPSBpdGVtW3ZhbHVlRmllbGRdIHx8IG5vZGUuaWQ7XG4gICAgQGxldCBpdGVtVGl0bGUgPSBpdGVtW3RleHRGaWVsZF0gfHwgbm9kZS5sYWJlbDtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC13LWZ1bGwgYXgtZ2FwLTIgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2sobm9kZSlcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC1taW4tdy0wXCI+XG4gICAgICAgIDxheC1pY29uXG4gICAgICAgICAgY2xhc3M9XCJmYXMgZmEtZm9sZGVyXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXRlbS5jb2xvciA/PyAncmdiYSh2YXIoLS1heC1zeXMtY29sb3Itd2FybmluZy01MDApLCAxKSdcIlxuICAgICAgICA+PC9heC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRydW5jYXRlXCI+e3sgaXRlbVRpdGxlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGl0ZW1JZCAmJiBpdGVtSWQgIT09ICdhbGwnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC14c1wiIGNvbG9yPVwiZGVmYXVsdFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIiRldmVudC5uYXRpdmVFdmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtZWxsaXBzaXMtdlwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVDcmVhdGVDaGlsZENsaWNrKG5vZGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgbG9vaz1cImJsYW5rXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICB0ZXh0PVwiQWRkIE5ldyBDaGlsZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAob25DbGljayk9XCJoYW5kbGVFZGl0Tm9kZUNsaWNrKG5vZGUsICRldmVudClcIiBsb29rPVwiYmxhbmtcIiB0ZXh0PVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtcGVuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVEZWxldGVOb2RlQ2xpY2sobm9kZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICBsb29rPVwiYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgdGV4dD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtdHJhc2hcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChpdGVtSWQgPT09ICdhbGwnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC14c1wiIChvbkNsaWNrKT1cImhhbmRsZUNyZWF0ZVJvb3RDbGljaygkZXZlbnQpXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYXhwLWxheW91dC1jb250ZW50PlxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDeviceService, } from '@acorex/platform/core';\nimport { AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, } from '@acorex/platform/layout/components';\nimport { AXPEntityListViewColumnViewModel, AXPEntityMasterListViewModel } from '@acorex/platform/layout/entity';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, Input, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXPCommonSettings, AXPSettingService } from '@acorex/platform/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { AXPEntityMasterListViewComponent } from '../entity-master-list-view/entity-master-list-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/popover\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@acorex/core/translation\";\nexport class AXPEntityMasterToolbarViewComponent {\n constructor() {\n this.layoutService = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.parent = inject(AXPEntityMasterListViewComponent);\n this.router = inject(Router);\n this.activeRoute = inject(ActivatedRoute);\n this.settingsService = inject(AXPSettingService);\n this.isInitializing = false;\n this.pendingInitialFilters = true;\n this.pendingInitialSorts = true;\n this.filterTriggerMode = 'manual';\n this.previousFilterQueries = signal([], ...(ngDevMode ? [{ debugName: \"previousFilterQueries\" }] : []));\n this.initialFilters = signal([], ...(ngDevMode ? [{ debugName: \"initialFilters\" }] : []));\n this.filtersDefinitions = signal([], ...(ngDevMode ? [{ debugName: \"filtersDefinitions\" }] : []));\n this.viewQueries = computed(() => this.vm.views().map((v) => ({\n name: v.name,\n fixed: false,\n title: v.title,\n columns: v.columns,\n conditions: v.conditions.map((c) => ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n })),\n sorts: v.sorts,\n })), ...(ngDevMode ? [{ debugName: \"viewQueries\" }] : []));\n this.selectedViewQuery = computed(() => ({\n name: this.vm.view().name,\n fixed: false,\n title: this.vm.view().title,\n columns: this.vm.view().columns,\n conditions: this.vm.view().conditions.map((c) => ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n })),\n sorts: this.vm.view().sorts,\n }), ...(ngDevMode ? [{ debugName: \"selectedViewQuery\" }] : []));\n this.isFiltersDirty = computed(() => !isEqual(this.vm.filterQueries(), this.previousFilterQueries()), ...(ngDevMode ? [{ debugName: \"isFiltersDirty\" }] : []));\n // Debounced apply to coalesce multiple UI changes (filters/sorts/columns)\n this.applyTimer = null;\n this.#effect = effect(() => {\n // Keep definitions up to date; initial filters are set explicitly from settings or view\n this.filtersDefinitions.set(this.vm.filtersDef);\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n this.sortQueries = computed(() => this.vm\n .sortedFields()\n .filter((s) => !!s.dir)\n .map((s) => ({ name: s.name, dir: s.dir })), ...(ngDevMode ? [{ debugName: \"sortQueries\" }] : []));\n this.sortDefinitions = computed(() => this.vm.sortableFields().map((s) => ({\n name: s.name,\n title: s.title,\n dir: s.dir,\n })), ...(ngDevMode ? [{ debugName: \"sortDefinitions\" }] : []));\n }\n async ngOnInit() {\n // Prefer saved settings (view/columns/sorts/filters) if available, then apply\n await this.loadSettings();\n await this.vm.setView();\n this.filtersDefinitions.set(this.vm.filtersDef);\n this.isInitializing = true;\n // this.pendingInitialFilters = true;\n // this.pendingInitialSorts = true;\n this.setInitialFiltersFromSettingsOrView();\n // Ensure initial load even when filters/sorts are absent\n setTimeout(() => {\n this.isInitializing = false;\n this.scheduleApply();\n }, 0);\n }\n async loadSettings() {\n const filterTriggerMode = await this.settingsService.get(AXPCommonSettings.EntityFilterApplyMode);\n this.filterTriggerMode = (filterTriggerMode?.value ?? 'auto');\n }\n scheduleApply() {\n clearTimeout(this.applyTimer);\n this.applyTimer = setTimeout(() => {\n this.vm.applyFilterAndSort();\n }, 50);\n }\n async onViewChanged(view) {\n await this.vm.setView(view.name);\n // Sync query param immediately on tab change\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: view.name },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n this.isInitializing = true;\n this.pendingInitialFilters = true;\n this.pendingInitialSorts = true;\n this.setInitialFiltersFromSettingsOrView();\n // Ensure initial load after view change\n setTimeout(() => {\n this.isInitializing = false;\n this.scheduleApply();\n }, 0);\n }\n #effect;\n setInitialFiltersFromSettingsOrView() {\n const saved = this.vm.filterQueries();\n this.previousFilterQueries.set(saved);\n const viewConditions = this.vm.view().conditions.map((c) => c.name);\n if (saved && saved.length) {\n this.initialFilters.set(saved.map((s) => ({ ...s, hidden: viewConditions.includes(s.field) })));\n return;\n }\n this.initialFilters.set(this.vm.view().conditions.map((c) => ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n hidden: true,\n })));\n }\n onFiltersChanged(filters) {\n if (this.isInitializing || this.pendingInitialFilters) {\n this.pendingInitialFilters = false;\n return;\n }\n this.vm.filterQueries.set(filters);\n if (this.filterTriggerMode === 'auto') {\n this.applyFilters();\n }\n }\n applyFilters() {\n this.previousFilterQueries.set(this.vm.filterQueries());\n this.vm.saveSettings('filters', this.vm.filterQueries());\n this.scheduleApply();\n }\n onSortQueriesChange(e) {\n if (this.isInitializing || this.pendingInitialSorts) {\n this.pendingInitialSorts = false;\n return;\n }\n this.vm.sortedFields.set(e.map((s) => ({\n name: s.name,\n title: s.name,\n dir: s.dir,\n })));\n // Persist sorts per module/entity/view\n this.vm.saveSettings('sorts', e);\n this.scheduleApply();\n }\n onColumnsChange(columns) {\n const keyOf = (c) => c.column?.options?.dataPath ?? c.name;\n this.vm.columns.update((prev) => {\n const byKey = new Map(prev.map((c) => [keyOf(c), c]));\n return columns.map((newColumn) => {\n const existing = byKey.get(keyOf(newColumn));\n return new AXPEntityListViewColumnViewModel(existing.property, {\n ...existing.column,\n options: {\n ...existing.column.options,\n visible: newColumn.visible,\n },\n });\n });\n });\n // Persist column order/visibility\n this.vm.onColumnsChanged(this.vm.columns());\n // Use debounced apply to avoid triple refresh when combined with sorts/filters\n // this.scheduleApply();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityMasterToolbarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPEntityMasterToolbarViewComponent, isStandalone: true, selector: \"axp-entity-master-toolbar-view\", inputs: { vm: [\"viewModel\", \"vm\"] }, host: { classAttribute: \"ax-w-full\" }, ngImport: i0, template: \"<!-- <axp-entity-view-toolbar [viewModel]=\\\"vm\\\"></axp-entity-view-toolbar> -->\\n<axp-query-views\\n id=\\\"axp-toolbar-view-selector\\\"\\n [views]=\\\"viewQueries()\\\"\\n [selectedView]=\\\"selectedViewQuery()\\\"\\n (selectedViewChange)=\\\"onViewChanged($event)\\\"\\n></axp-query-views>\\n<div class=\\\"ax-flex ax-items-center ax-gap-2 ax-border-b ax-border-light w-full\\\">\\n <!-- <axp-entity-filter-toolbar [viewModel]=\\\"vm\\\"></axp-entity-filter-toolbar> -->\\n <axp-query-filters\\n id=\\\"axp-toolbar-filters\\\"\\n [filtersDefinitions]=\\\"filtersDefinitions()\\\"\\n [initialFilters]=\\\"initialFilters()\\\"\\n (onFiltersChanged)=\\\"onFiltersChanged($event)\\\"\\n ></axp-query-filters>\\n\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 md:ax-gap-2\\\">\\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\\n <ax-button\\n id=\\\"axp-toolbar-btn-filter\\\"\\n [title]=\\\"'@general:actions.apply.title'\\\"\\n [iconOnly]=\\\"true\\\"\\n #filterButton\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"applyFilters()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-search\\\"></i>\\n </ax-prefix>\\n </ax-button>\\n }\\n <div>\\n <ax-button id=\\\"axp-toolbar-btn-columns\\\" [iconOnly]=\\\"true\\\" #columnButton [color]=\\\"'default'\\\">\\n <i class=\\\"fa-light fa-table-columns\\\"></i>\\n </ax-button>\\n <ax-popover\\n id=\\\"axp-popover-columns\\\"\\n [adaptivityEnabled]=\\\"true\\\"\\n [offsetY]=\\\"30\\\"\\n [target]=\\\"columnButton\\\"\\n [openOn]=\\\"'toggle'\\\"\\n [closeOn]=\\\"'clickOut'\\\"\\n #popover\\n >\\n <div class=\\\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\\\">\\n <ax-header class=\\\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\\\">\\n {{ '@general:terms.common.columns' | translate | async }}\\n </ax-header>\\n <div class=\\\"ax-py-2 ax-px-4\\\">\\n <axp-query-columns [columns]=\\\"vm.columns()\\\" (columnsChange)=\\\"onColumnsChange($event)\\\"></axp-query-columns>\\n <!-- <axp-list-view-option-columns [viewModel]=\\\"vm\\\"></axp-list-view-option-columns> -->\\n </div>\\n </div>\\n </ax-popover>\\n </div>\\n\\n @if (vm.canSort()) {\\n <div>\\n <ax-button id=\\\"axp-toolbar-btn-sort\\\" [iconOnly]=\\\"true\\\" [text]=\\\"'Sorts'\\\" #sortButton [color]=\\\"'default'\\\">\\n <i class=\\\"fa-light fa-sort-amount-up\\\"></i>\\n </ax-button>\\n <ax-popover\\n id=\\\"axp-popover-sort\\\"\\n [adaptivityEnabled]=\\\"true\\\"\\n [offsetY]=\\\"10\\\"\\n [target]=\\\"sortButton\\\"\\n [openOn]=\\\"'toggle'\\\"\\n [closeOn]=\\\"'clickOut'\\\"\\n #popover\\n >\\n <div class=\\\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\\\">\\n <ax-header class=\\\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\\\">\\n {{ '@general:terms.common.sorts' | translate | async }}\\n </ax-header>\\n <div class=\\\"ax-py-2 ax-px-4\\\">\\n <!-- <axp-list-view-option-sorting [viewModel]=\\\"vm\\\"></axp-list-view-option-sorting> -->\\n <axp-query-sorts\\n [sortDefinitions]=\\\"sortDefinitions()\\\"\\n (sortQueriesChange)=\\\"onSortQueriesChange($event)\\\"\\n [initialSortQueries]=\\\"sortQueries()\\\"\\n ></axp-query-sorts>\\n </div>\\n </div>\\n </ax-popover>\\n </div>\\n }\\n @if (deviceService.isSmall()) {\\n <ax-button\\n id=\\\"axp-toolbar-btn-category\\\"\\n (onClick)=\\\"parent.toggleCategoryDrawer()\\\"\\n [iconOnly]=\\\"true\\\"\\n [color]=\\\"'default'\\\"\\n >\\n <i class=\\\"fa-light fa-bars\\\"></i>\\n </ax-button>\\n }\\n </div>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPQueryFiltersComponent, selector: \"axp-query-filters\", inputs: [\"filtersDefinitions\", \"initialFilters\"], outputs: [\"onFiltersChanged\"] }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"component\", type: i3.AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXPQuerySortsComponent, selector: \"axp-query-sorts\", inputs: [\"sortDefinitions\", \"initialSortQueries\"], outputs: [\"sortDefinitionsChange\", \"sortQueriesChange\"] }, { kind: \"component\", type: AXPQueryViewsComponent, selector: \"axp-query-views\", inputs: [\"views\", \"selectedView\"], outputs: [\"viewsChange\", \"selectedViewChange\"] }, { kind: \"component\", type: AXPQueryColumnsComponent, selector: \"axp-query-columns\", inputs: [\"columns\"], outputs: [\"columnsChange\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityMasterToolbarViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-entity-master-toolbar-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPQueryFiltersComponent,\n AXPopoverModule,\n AXPQuerySortsComponent,\n AXPQueryViewsComponent,\n AXPQueryColumnsComponent,\n ], host: {\n class: 'ax-w-full',\n }, template: \"<!-- <axp-entity-view-toolbar [viewModel]=\\\"vm\\\"></axp-entity-view-toolbar> -->\\n<axp-query-views\\n id=\\\"axp-toolbar-view-selector\\\"\\n [views]=\\\"viewQueries()\\\"\\n [selectedView]=\\\"selectedViewQuery()\\\"\\n (selectedViewChange)=\\\"onViewChanged($event)\\\"\\n></axp-query-views>\\n<div class=\\\"ax-flex ax-items-center ax-gap-2 ax-border-b ax-border-light w-full\\\">\\n <!-- <axp-entity-filter-toolbar [viewModel]=\\\"vm\\\"></axp-entity-filter-toolbar> -->\\n <axp-query-filters\\n id=\\\"axp-toolbar-filters\\\"\\n [filtersDefinitions]=\\\"filtersDefinitions()\\\"\\n [initialFilters]=\\\"initialFilters()\\\"\\n (onFiltersChanged)=\\\"onFiltersChanged($event)\\\"\\n ></axp-query-filters>\\n\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 md:ax-gap-2\\\">\\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\\n <ax-button\\n id=\\\"axp-toolbar-btn-filter\\\"\\n [title]=\\\"'@general:actions.apply.title'\\\"\\n [iconOnly]=\\\"true\\\"\\n #filterButton\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"applyFilters()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-search\\\"></i>\\n </ax-prefix>\\n </ax-button>\\n }\\n <div>\\n <ax-button id=\\\"axp-toolbar-btn-columns\\\" [iconOnly]=\\\"true\\\" #columnButton [color]=\\\"'default'\\\">\\n <i class=\\\"fa-light fa-table-columns\\\"></i>\\n </ax-button>\\n <ax-popover\\n id=\\\"axp-popover-columns\\\"\\n [adaptivityEnabled]=\\\"true\\\"\\n [offsetY]=\\\"30\\\"\\n [target]=\\\"columnButton\\\"\\n [openOn]=\\\"'toggle'\\\"\\n [closeOn]=\\\"'clickOut'\\\"\\n #popover\\n >\\n <div class=\\\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\\\">\\n <ax-header class=\\\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\\\">\\n {{ '@general:terms.common.columns' | translate | async }}\\n </ax-header>\\n <div class=\\\"ax-py-2 ax-px-4\\\">\\n <axp-query-columns [columns]=\\\"vm.columns()\\\" (columnsChange)=\\\"onColumnsChange($event)\\\"></axp-query-columns>\\n <!-- <axp-list-view-option-columns [viewModel]=\\\"vm\\\"></axp-list-view-option-columns> -->\\n </div>\\n </div>\\n </ax-popover>\\n </div>\\n\\n @if (vm.canSort()) {\\n <div>\\n <ax-button id=\\\"axp-toolbar-btn-sort\\\" [iconOnly]=\\\"true\\\" [text]=\\\"'Sorts'\\\" #sortButton [color]=\\\"'default'\\\">\\n <i class=\\\"fa-light fa-sort-amount-up\\\"></i>\\n </ax-button>\\n <ax-popover\\n id=\\\"axp-popover-sort\\\"\\n [adaptivityEnabled]=\\\"true\\\"\\n [offsetY]=\\\"10\\\"\\n [target]=\\\"sortButton\\\"\\n [openOn]=\\\"'toggle'\\\"\\n [closeOn]=\\\"'clickOut'\\\"\\n #popover\\n >\\n <div class=\\\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\\\">\\n <ax-header class=\\\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\\\">\\n {{ '@general:terms.common.sorts' | translate | async }}\\n </ax-header>\\n <div class=\\\"ax-py-2 ax-px-4\\\">\\n <!-- <axp-list-view-option-sorting [viewModel]=\\\"vm\\\"></axp-list-view-option-sorting> -->\\n <axp-query-sorts\\n [sortDefinitions]=\\\"sortDefinitions()\\\"\\n (sortQueriesChange)=\\\"onSortQueriesChange($event)\\\"\\n [initialSortQueries]=\\\"sortQueries()\\\"\\n ></axp-query-sorts>\\n </div>\\n </div>\\n </ax-popover>\\n </div>\\n }\\n @if (deviceService.isSmall()) {\\n <ax-button\\n id=\\\"axp-toolbar-btn-category\\\"\\n (onClick)=\\\"parent.toggleCategoryDrawer()\\\"\\n [iconOnly]=\\\"true\\\"\\n [color]=\\\"'default'\\\"\\n >\\n <i class=\\\"fa-light fa-bars\\\"></i>\\n </ax-button>\\n }\\n </div>\\n</div>\\n\" }]\n }], propDecorators: { vm: [{\n type: Input,\n args: ['viewModel']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcvZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcvZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBRUwsZ0JBQWdCLEdBTWpCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3RCLHNCQUFzQixHQUN2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7QUF1QmhILE1BQU0sT0FBTyxtQ0FBbUM7SUFyQmhEO1FBc0JZLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDOUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6QyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUM3Qix3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFFekIsc0JBQWlCLEdBQXNCLFFBQVEsQ0FBQztRQUVoRCwwQkFBcUIsR0FBRyxNQUFNLENBQW1CLEVBQUUsaUVBQUMsQ0FBQztRQTBCckQsbUJBQWMsR0FBRyxNQUFNLENBQW1CLEVBQUUsMERBQUMsQ0FBQztRQUM5Qyx1QkFBa0IsR0FBRyxNQUFNLENBQXdCLEVBQUUsOERBQUMsQ0FBQztRQUV2RCxnQkFBVyxHQUFHLFFBQVEsQ0FBaUIsR0FBRyxFQUFFLENBQ3BELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ2YsQ0FBQyxDQUFDLHVEQUNKLENBQUM7UUFDUSxzQkFBaUIsR0FBRyxRQUFRLENBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJO1lBQ3pCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPO1lBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDYixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzthQUNmLENBQUMsQ0FBQztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7U0FDNUIsQ0FBQyw2REFBQyxDQUFDO1FBRU0sbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQywwREFBQyxDQUFDO1FBRTNHLDBFQUEwRTtRQUNsRSxlQUFVLEdBQVEsSUFBSSxDQUFDO1FBNEIvQixZQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNwQix3RkFBd0Y7WUFDeEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUMsbURBQUMsQ0FBQztRQXlDTyxnQkFBVyxHQUFHLFFBQVEsQ0FBaUIsR0FBRyxFQUFFLENBQ3BELElBQUksQ0FBQyxFQUFFO2FBQ0osWUFBWSxFQUFFO2FBQ2QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQzthQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQXFCLEVBQUUsQ0FBQyxDQUFDLHVEQUNoRSxDQUFDO1FBRVEsb0JBQWUsR0FBRyxRQUFRLENBQXNCLEdBQUcsRUFBRSxDQUM3RCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7WUFDZCxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQWlDO1NBQ3pDLENBQUMsQ0FBQywyREFDSixDQUFDO0tBeUNIO0lBdkxDLEtBQUssQ0FBQyxRQUFRO1FBQ1osOEVBQThFO1FBQzlFLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IscUNBQXFDO1FBQ3JDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztRQUMzQyx5REFBeUQ7UUFDekQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVk7UUFDeEIsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBc0IsQ0FBQztJQUNyRixDQUFDO0lBdUNPLGFBQWE7UUFDbkIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQWtCO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hDLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1FBQzNDLHdDQUF3QztRQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxPQUFPLENBR0o7SUFFSyxtQ0FBbUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEcsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUMzQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQztZQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNiLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7WUFDZCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQVEsQ0FDWixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBeUI7UUFDeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBaUJTLG1CQUFtQixDQUFDLENBQWlCO1FBQzdDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUN0QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO1NBQ1gsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxlQUFlLENBQUMsT0FBeUI7UUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzRixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFFLENBQUM7Z0JBQzlDLE9BQU8sSUFBSSxnQ0FBZ0MsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO29CQUM3RCxHQUFHLFFBQVEsQ0FBQyxNQUFNO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQzFCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztxQkFDM0I7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILGtDQUFrQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM1QywrRUFBK0U7UUFDL0Usd0JBQXdCO0lBQzFCLENBQUM7K0dBdE1VLG1DQUFtQzttR0FBbkMsbUNBQW1DLHNLQzNEaEQsbXZIQWtHQSwyQ0RyREksWUFBWSw4QkFDWixjQUFjLDZYQUNkLGlCQUFpQixxUEFDakIsbUJBQW1CLCtCQUNuQix3QkFBd0IsOElBQ3hCLGVBQWUsd1ZBQ2Ysc0JBQXNCLHdLQUN0QixzQkFBc0IsK0lBQ3RCLHdCQUF3Qjs7NEZBTWYsbUNBQW1DO2tCQXJCL0MsU0FBUzsrQkFDRSxnQ0FBZ0MsaUJBRTNCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCLFFBQ0s7d0JBQ0osS0FBSyxFQUFFLFdBQVc7cUJBQ25COztzQkF1Q0EsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQge1xuICBBWFBDb2x1bW5RdWVyeSxcbiAgQVhQRGV2aWNlU2VydmljZSxcbiAgQVhQRmlsdGVyRGVmaW5pdGlvbixcbiAgQVhQRmlsdGVyUXVlcnksXG4gIEFYUFNvcnREZWZpbml0aW9uLFxuICBBWFBTb3J0UXVlcnksXG4gIEFYUFZpZXdRdWVyeSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7XG4gIEFYUFF1ZXJ5Q29sdW1uc0NvbXBvbmVudCxcbiAgQVhQUXVlcnlGaWx0ZXJzQ29tcG9uZW50LFxuICBBWFBRdWVyeVNvcnRzQ29tcG9uZW50LFxuICBBWFBRdWVyeVZpZXdzQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsLCBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYUENvbW1vblNldHRpbmdzLCBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2VudGl0eS1tYXN0ZXItbGlzdC12aWV3L2VudGl0eS1tYXN0ZXItbGlzdC12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1lbnRpdHktbWFzdGVyLXRvb2xiYXItdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktbWFzdGVyLXRvb2xiYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQUXVlcnlGaWx0ZXJzQ29tcG9uZW50LFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWFBRdWVyeVNvcnRzQ29tcG9uZW50LFxuICAgIEFYUFF1ZXJ5Vmlld3NDb21wb25lbnQsXG4gICAgQVhQUXVlcnlDb2x1bW5zQ29tcG9uZW50LFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdheC13LWZ1bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJUb29sYmFyVmlld0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gIHByb3RlY3RlZCBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KEFYUERldmljZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcGFyZW50ID0gaW5qZWN0KEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3Q29tcG9uZW50KTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBhY3RpdmVSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdTZXJ2aWNlKTtcblxuICBwcml2YXRlIGlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcGVuZGluZ0luaXRpYWxGaWx0ZXJzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBwZW5kaW5nSW5pdGlhbFNvcnRzID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgZmlsdGVyVHJpZ2dlck1vZGU6ICdhdXRvJyB8ICdtYW51YWwnID0gJ21hbnVhbCc7XG5cbiAgcHJvdGVjdGVkIHByZXZpb3VzRmlsdGVyUXVlcmllcyA9IHNpZ25hbDxBWFBGaWx0ZXJRdWVyeVtdPihbXSk7XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUHJlZmVyIHNhdmVkIHNldHRpbmdzICh2aWV3L2NvbHVtbnMvc29ydHMvZmlsdGVycykgaWYgYXZhaWxhYmxlLCB0aGVuIGFwcGx5XG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcbiAgICBhd2FpdCB0aGlzLnZtLnNldFZpZXcoKTtcbiAgICB0aGlzLmZpbHRlcnNEZWZpbml0aW9ucy5zZXQodGhpcy52bS5maWx0ZXJzRGVmKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICAvLyB0aGlzLnBlbmRpbmdJbml0aWFsRmlsdGVycyA9IHRydWU7XG4gICAgLy8gdGhpcy5wZW5kaW5nSW5pdGlhbFNvcnRzID0gdHJ1ZTtcbiAgICB0aGlzLnNldEluaXRpYWxGaWx0ZXJzRnJvbVNldHRpbmdzT3JWaWV3KCk7XG4gICAgLy8gRW5zdXJlIGluaXRpYWwgbG9hZCBldmVuIHdoZW4gZmlsdGVycy9zb3J0cyBhcmUgYWJzZW50XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNjaGVkdWxlQXBwbHkoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xuICAgIGNvbnN0IGZpbHRlclRyaWdnZXJNb2RlID0gYXdhaXQgdGhpcy5zZXR0aW5nc1NlcnZpY2UuZ2V0KEFYUENvbW1vblNldHRpbmdzLkVudGl0eUZpbHRlckFwcGx5TW9kZSk7XG4gICAgdGhpcy5maWx0ZXJUcmlnZ2VyTW9kZSA9IChmaWx0ZXJUcmlnZ2VyTW9kZT8udmFsdWUgPz8gJ2F1dG8nKSBhcyAnYXV0bycgfCAnbWFudWFsJztcbiAgfVxuXG4gIEBJbnB1dCgndmlld01vZGVsJylcbiAgcHVibGljIHZtITogQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbDtcblxuICBwcm90ZWN0ZWQgaW5pdGlhbEZpbHRlcnMgPSBzaWduYWw8QVhQRmlsdGVyUXVlcnlbXT4oW10pO1xuICBwcm90ZWN0ZWQgZmlsdGVyc0RlZmluaXRpb25zID0gc2lnbmFsPEFYUEZpbHRlckRlZmluaXRpb25bXT4oW10pO1xuXG4gIHByb3RlY3RlZCB2aWV3UXVlcmllcyA9IGNvbXB1dGVkPEFYUFZpZXdRdWVyeVtdPigoKSA9PlxuICAgIHRoaXMudm0udmlld3MoKS5tYXAoKHYpID0+ICh7XG4gICAgICBuYW1lOiB2Lm5hbWUsXG4gICAgICBmaXhlZDogZmFsc2UsXG4gICAgICB0aXRsZTogdi50aXRsZSxcbiAgICAgIGNvbHVtbnM6IHYuY29sdW1ucyxcbiAgICAgIGNvbmRpdGlvbnM6IHYuY29uZGl0aW9ucy5tYXAoKGMpID0+ICh7XG4gICAgICAgIGZpZWxkOiBjLm5hbWUsXG4gICAgICAgIG9wZXJhdG9yOiBjLm9wZXJhdG9yLFxuICAgICAgICB2YWx1ZTogYy52YWx1ZSxcbiAgICAgIH0pKSxcbiAgICAgIHNvcnRzOiB2LnNvcnRzLFxuICAgIH0pKSxcbiAgKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkVmlld1F1ZXJ5ID0gY29tcHV0ZWQ8QVhQVmlld1F1ZXJ5PigoKSA9PiAoe1xuICAgIG5hbWU6IHRoaXMudm0udmlldygpLm5hbWUsXG4gICAgZml4ZWQ6IGZhbHNlLFxuICAgIHRpdGxlOiB0aGlzLnZtLnZpZXcoKS50aXRsZSxcbiAgICBjb2x1bW5zOiB0aGlzLnZtLnZpZXcoKS5jb2x1bW5zLFxuICAgIGNvbmRpdGlvbnM6IHRoaXMudm0udmlldygpLmNvbmRpdGlvbnMubWFwKChjKSA9PiAoe1xuICAgICAgZmllbGQ6IGMubmFtZSxcbiAgICAgIG9wZXJhdG9yOiBjLm9wZXJhdG9yLFxuICAgICAgdmFsdWU6IGMudmFsdWUsXG4gICAgfSkpLFxuICAgIHNvcnRzOiB0aGlzLnZtLnZpZXcoKS5zb3J0cyxcbiAgfSkpO1xuXG4gIHByb3RlY3RlZCBpc0ZpbHRlcnNEaXJ0eSA9IGNvbXB1dGVkKCgpID0+ICFpc0VxdWFsKHRoaXMudm0uZmlsdGVyUXVlcmllcygpLCB0aGlzLnByZXZpb3VzRmlsdGVyUXVlcmllcygpKSk7XG5cbiAgLy8gRGVib3VuY2VkIGFwcGx5IHRvIGNvYWxlc2NlIG11bHRpcGxlIFVJIGNoYW5nZXMgKGZpbHRlcnMvc29ydHMvY29sdW1ucylcbiAgcHJpdmF0ZSBhcHBseVRpbWVyOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHNjaGVkdWxlQXBwbHkoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYXBwbHlUaW1lcik7XG4gICAgdGhpcy5hcHBseVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZtLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIGFzeW5jIG9uVmlld0NoYW5nZWQodmlldzogQVhQVmlld1F1ZXJ5KSB7XG4gICAgYXdhaXQgdGhpcy52bS5zZXRWaWV3KHZpZXcubmFtZSk7XG4gICAgLy8gU3luYyBxdWVyeSBwYXJhbSBpbW1lZGlhdGVseSBvbiB0YWIgY2hhbmdlXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZlUm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogeyB2aWV3OiB2aWV3Lm5hbWUgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuaXNJbml0aWFsaXppbmcgPSB0cnVlO1xuICAgIHRoaXMucGVuZGluZ0luaXRpYWxGaWx0ZXJzID0gdHJ1ZTtcbiAgICB0aGlzLnBlbmRpbmdJbml0aWFsU29ydHMgPSB0cnVlO1xuICAgIHRoaXMuc2V0SW5pdGlhbEZpbHRlcnNGcm9tU2V0dGluZ3NPclZpZXcoKTtcbiAgICAvLyBFbnN1cmUgaW5pdGlhbCBsb2FkIGFmdGVyIHZpZXcgY2hhbmdlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNjaGVkdWxlQXBwbHkoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gICNlZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIC8vIEtlZXAgZGVmaW5pdGlvbnMgdXAgdG8gZGF0ZTsgaW5pdGlhbCBmaWx0ZXJzIGFyZSBzZXQgZXhwbGljaXRseSBmcm9tIHNldHRpbmdzIG9yIHZpZXdcbiAgICB0aGlzLmZpbHRlcnNEZWZpbml0aW9ucy5zZXQodGhpcy52bS5maWx0ZXJzRGVmKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsRmlsdGVyc0Zyb21TZXR0aW5nc09yVmlldygpIHtcbiAgICBjb25zdCBzYXZlZCA9IHRoaXMudm0uZmlsdGVyUXVlcmllcygpO1xuICAgIHRoaXMucHJldmlvdXNGaWx0ZXJRdWVyaWVzLnNldChzYXZlZCk7XG4gICAgY29uc3Qgdmlld0NvbmRpdGlvbnMgPSB0aGlzLnZtLnZpZXcoKS5jb25kaXRpb25zLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICBpZiAoc2F2ZWQgJiYgc2F2ZWQubGVuZ3RoKSB7XG4gICAgICB0aGlzLmluaXRpYWxGaWx0ZXJzLnNldChzYXZlZC5tYXAoKHMpID0+ICh7IC4uLnMsIGhpZGRlbjogdmlld0NvbmRpdGlvbnMuaW5jbHVkZXMocy5maWVsZCkgfSkpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsRmlsdGVycy5zZXQoXG4gICAgICB0aGlzLnZtLnZpZXcoKS5jb25kaXRpb25zLm1hcChcbiAgICAgICAgKGMpID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGZpZWxkOiBjLm5hbWUsXG4gICAgICAgICAgICBvcGVyYXRvcjogYy5vcGVyYXRvcixcbiAgICAgICAgICAgIHZhbHVlOiBjLnZhbHVlLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIH0pIGFzIGFueSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIG9uRmlsdGVyc0NoYW5nZWQoZmlsdGVyczogQVhQRmlsdGVyUXVlcnlbXSkge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6aW5nIHx8IHRoaXMucGVuZGluZ0luaXRpYWxGaWx0ZXJzKSB7XG4gICAgICB0aGlzLnBlbmRpbmdJbml0aWFsRmlsdGVycyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudm0uZmlsdGVyUXVlcmllcy5zZXQoZmlsdGVycyk7XG4gICAgaWYgKHRoaXMuZmlsdGVyVHJpZ2dlck1vZGUgPT09ICdhdXRvJykge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwbHlGaWx0ZXJzKCkge1xuICAgIHRoaXMucHJldmlvdXNGaWx0ZXJRdWVyaWVzLnNldCh0aGlzLnZtLmZpbHRlclF1ZXJpZXMoKSk7XG4gICAgdGhpcy52bS5zYXZlU2V0dGluZ3MoJ2ZpbHRlcnMnLCB0aGlzLnZtLmZpbHRlclF1ZXJpZXMoKSk7XG4gICAgdGhpcy5zY2hlZHVsZUFwcGx5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydFF1ZXJpZXMgPSBjb21wdXRlZDxBWFBTb3J0UXVlcnlbXT4oKCkgPT5cbiAgICB0aGlzLnZtXG4gICAgICAuc29ydGVkRmllbGRzKClcbiAgICAgIC5maWx0ZXIoKHMpID0+ICEhcy5kaXIpXG4gICAgICAubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRpcjogcy5kaXIgYXMgJ2FzYycgfCAnZGVzYycgfSkpLFxuICApO1xuXG4gIHByb3RlY3RlZCBzb3J0RGVmaW5pdGlvbnMgPSBjb21wdXRlZDxBWFBTb3J0RGVmaW5pdGlvbltdPigoKSA9PlxuICAgIHRoaXMudm0uc29ydGFibGVGaWVsZHMoKS5tYXAoKHMpID0+ICh7XG4gICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICB0aXRsZTogcy50aXRsZSxcbiAgICAgIGRpcjogcy5kaXIgYXMgJ2FzYycgfCAnZGVzYycgfCB1bmRlZmluZWQsXG4gICAgfSkpLFxuICApO1xuXG4gIHByb3RlY3RlZCBvblNvcnRRdWVyaWVzQ2hhbmdlKGU6IEFYUFNvcnRRdWVyeVtdKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0aWFsaXppbmcgfHwgdGhpcy5wZW5kaW5nSW5pdGlhbFNvcnRzKSB7XG4gICAgICB0aGlzLnBlbmRpbmdJbml0aWFsU29ydHMgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52bS5zb3J0ZWRGaWVsZHMuc2V0KFxuICAgICAgZS5tYXAoKHMpID0+ICh7XG4gICAgICAgIG5hbWU6IHMubmFtZSxcbiAgICAgICAgdGl0bGU6IHMubmFtZSxcbiAgICAgICAgZGlyOiBzLmRpcixcbiAgICAgIH0pKSxcbiAgICApO1xuICAgIC8vIFBlcnNpc3Qgc29ydHMgcGVyIG1vZHVsZS9lbnRpdHkvdmlld1xuICAgIHRoaXMudm0uc2F2ZVNldHRpbmdzKCdzb3J0cycsIGUpO1xuICAgIHRoaXMuc2NoZWR1bGVBcHBseSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBWFBDb2x1bW5RdWVyeVtdKSB7XG4gICAgY29uc3Qga2V5T2YgPSAoYzogeyBuYW1lOiBzdHJpbmc7IGNvbHVtbj86IGFueSB9KSA9PiBjLmNvbHVtbj8ub3B0aW9ucz8uZGF0YVBhdGggPz8gYy5uYW1lO1xuXG4gICAgdGhpcy52bS5jb2x1bW5zLnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgY29uc3QgYnlLZXkgPSBuZXcgTWFwKHByZXYubWFwKChjKSA9PiBba2V5T2YoYyBhcyBhbnkpLCBjXSkpO1xuXG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoKG5ld0NvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGJ5S2V5LmdldChrZXlPZihuZXdDb2x1bW4pKSE7XG4gICAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWwoZXhpc3RpbmcucHJvcGVydHksIHtcbiAgICAgICAgICAuLi5leGlzdGluZy5jb2x1bW4sXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmcuY29sdW1uLm9wdGlvbnMsXG4gICAgICAgICAgICB2aXNpYmxlOiBuZXdDb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIFBlcnNpc3QgY29sdW1uIG9yZGVyL3Zpc2liaWxpdHlcbiAgICB0aGlzLnZtLm9uQ29sdW1uc0NoYW5nZWQodGhpcy52bS5jb2x1bW5zKCkpO1xuICAgIC8vIFVzZSBkZWJvdW5jZWQgYXBwbHkgdG8gYXZvaWQgdHJpcGxlIHJlZnJlc2ggd2hlbiBjb21iaW5lZCB3aXRoIHNvcnRzL2ZpbHRlcnNcbiAgICAvLyB0aGlzLnNjaGVkdWxlQXBwbHkoKTtcbiAgfVxufVxuIiwiPCEtLSA8YXhwLWVudGl0eS12aWV3LXRvb2xiYXIgW3ZpZXdNb2RlbF09XCJ2bVwiPjwvYXhwLWVudGl0eS12aWV3LXRvb2xiYXI+IC0tPlxuPGF4cC1xdWVyeS12aWV3c1xuICBpZD1cImF4cC10b29sYmFyLXZpZXctc2VsZWN0b3JcIlxuICBbdmlld3NdPVwidmlld1F1ZXJpZXMoKVwiXG4gIFtzZWxlY3RlZFZpZXddPVwic2VsZWN0ZWRWaWV3UXVlcnkoKVwiXG4gIChzZWxlY3RlZFZpZXdDaGFuZ2UpPVwib25WaWV3Q2hhbmdlZCgkZXZlbnQpXCJcbj48L2F4cC1xdWVyeS12aWV3cz5cbjxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC1ib3JkZXItYiBheC1ib3JkZXItbGlnaHQgdy1mdWxsXCI+XG4gIDwhLS0gPGF4cC1lbnRpdHktZmlsdGVyLXRvb2xiYXIgW3ZpZXdNb2RlbF09XCJ2bVwiPjwvYXhwLWVudGl0eS1maWx0ZXItdG9vbGJhcj4gLS0+XG4gIDxheHAtcXVlcnktZmlsdGVyc1xuICAgIGlkPVwiYXhwLXRvb2xiYXItZmlsdGVyc1wiXG4gICAgW2ZpbHRlcnNEZWZpbml0aW9uc109XCJmaWx0ZXJzRGVmaW5pdGlvbnMoKVwiXG4gICAgW2luaXRpYWxGaWx0ZXJzXT1cImluaXRpYWxGaWx0ZXJzKClcIlxuICAgIChvbkZpbHRlcnNDaGFuZ2VkKT1cIm9uRmlsdGVyc0NoYW5nZWQoJGV2ZW50KVwiXG4gID48L2F4cC1xdWVyeS1maWx0ZXJzPlxuXG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBtZDpheC1nYXAtMlwiPlxuICAgIEBpZiAoZmlsdGVyVHJpZ2dlck1vZGUgPT09ICdtYW51YWwnICYmIGlzRmlsdGVyc0RpcnR5KCkpIHtcbiAgICAgIDxheC1idXR0b25cbiAgICAgICAgaWQ9XCJheHAtdG9vbGJhci1idG4tZmlsdGVyXCJcbiAgICAgICAgW3RpdGxlXT1cIidAZ2VuZXJhbDphY3Rpb25zLmFwcGx5LnRpdGxlJ1wiXG4gICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgI2ZpbHRlckJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgPlxuICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtc2VhcmNoXCI+PC9pPlxuICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgICA8ZGl2PlxuICAgICAgPGF4LWJ1dHRvbiBpZD1cImF4cC10b29sYmFyLWJ0bi1jb2x1bW5zXCIgW2ljb25Pbmx5XT1cInRydWVcIiAjY29sdW1uQnV0dG9uIFtjb2xvcl09XCInZGVmYXVsdCdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS10YWJsZS1jb2x1bW5zXCI+PC9pPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICA8YXgtcG9wb3ZlclxuICAgICAgICBpZD1cImF4cC1wb3BvdmVyLWNvbHVtbnNcIlxuICAgICAgICBbYWRhcHRpdml0eUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtvZmZzZXRZXT1cIjMwXCJcbiAgICAgICAgW3RhcmdldF09XCJjb2x1bW5CdXR0b25cIlxuICAgICAgICBbb3Blbk9uXT1cIid0b2dnbGUnXCJcbiAgICAgICAgW2Nsb3NlT25dPVwiJ2NsaWNrT3V0J1wiXG4gICAgICAgICNwb3BvdmVyXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1saWdodGVzdC1zdXJmYWNlIGF4LXNoYWRvdy1tZCBheC1ib3JkZXIgbWQ6YXgtdy03MiBheC13LWZ1bGwgYXgtcm91bmRlZC1tZFwiPlxuICAgICAgICAgIDxheC1oZWFkZXIgY2xhc3M9XCJheC1ib3JkZXItYiBheC1saWdodGVyLXN1cmZhY2UgYXgtcm91bmRlZC10LW1kIGF4LXAtNCBheC1mb250LWJvbGRcIj5cbiAgICAgICAgICAgIHt7ICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24uY29sdW1ucycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvYXgtaGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1weS0yIGF4LXB4LTRcIj5cbiAgICAgICAgICAgIDxheHAtcXVlcnktY29sdW1ucyBbY29sdW1uc109XCJ2bS5jb2x1bW5zKClcIiAoY29sdW1uc0NoYW5nZSk9XCJvbkNvbHVtbnNDaGFuZ2UoJGV2ZW50KVwiPjwvYXhwLXF1ZXJ5LWNvbHVtbnM+XG4gICAgICAgICAgICA8IS0tIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zIFt2aWV3TW9kZWxdPVwidm1cIj48L2F4cC1saXN0LXZpZXctb3B0aW9uLWNvbHVtbnM+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXgtcG9wb3Zlcj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAodm0uY2FuU29ydCgpKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8YXgtYnV0dG9uIGlkPVwiYXhwLXRvb2xiYXItYnRuLXNvcnRcIiBbaWNvbk9ubHldPVwidHJ1ZVwiIFt0ZXh0XT1cIidTb3J0cydcIiAjc29ydEJ1dHRvbiBbY29sb3JdPVwiJ2RlZmF1bHQnXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1zb3J0LWFtb3VudC11cFwiPjwvaT5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1wb3BvdmVyXG4gICAgICAgICAgaWQ9XCJheHAtcG9wb3Zlci1zb3J0XCJcbiAgICAgICAgICBbYWRhcHRpdml0eUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW29mZnNldFldPVwiMTBcIlxuICAgICAgICAgIFt0YXJnZXRdPVwic29ydEJ1dHRvblwiXG4gICAgICAgICAgW29wZW5Pbl09XCIndG9nZ2xlJ1wiXG4gICAgICAgICAgW2Nsb3NlT25dPVwiJ2NsaWNrT3V0J1wiXG4gICAgICAgICAgI3BvcG92ZXJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1saWdodGVzdC1zdXJmYWNlIGF4LXNoYWRvdy1tZCBheC1ib3JkZXIgbWQ6YXgtdy03MiBheC13LWZ1bGwgYXgtcm91bmRlZC1tZFwiPlxuICAgICAgICAgICAgPGF4LWhlYWRlciBjbGFzcz1cImF4LWJvcmRlci1iIGF4LWxpZ2h0ZXItc3VyZmFjZSBheC1yb3VuZGVkLXQtbWQgYXgtcC00IGF4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICB7eyAnQGdlbmVyYWw6dGVybXMuY29tbW9uLnNvcnRzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L2F4LWhlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1weS0yIGF4LXB4LTRcIj5cbiAgICAgICAgICAgICAgPCEtLSA8YXhwLWxpc3Qtdmlldy1vcHRpb24tc29ydGluZyBbdmlld01vZGVsXT1cInZtXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nPiAtLT5cbiAgICAgICAgICAgICAgPGF4cC1xdWVyeS1zb3J0c1xuICAgICAgICAgICAgICAgIFtzb3J0RGVmaW5pdGlvbnNdPVwic29ydERlZmluaXRpb25zKClcIlxuICAgICAgICAgICAgICAgIChzb3J0UXVlcmllc0NoYW5nZSk9XCJvblNvcnRRdWVyaWVzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpbml0aWFsU29ydFF1ZXJpZXNdPVwic29ydFF1ZXJpZXMoKVwiXG4gICAgICAgICAgICAgID48L2F4cC1xdWVyeS1zb3J0cz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChkZXZpY2VTZXJ2aWNlLmlzU21hbGwoKSkge1xuICAgICAgPGF4LWJ1dHRvblxuICAgICAgICBpZD1cImF4cC10b29sYmFyLWJ0bi1jYXRlZ29yeVwiXG4gICAgICAgIChvbkNsaWNrKT1cInBhcmVudC50b2dnbGVDYXRlZ29yeURyYXdlcigpXCJcbiAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICBbY29sb3JdPVwiJ2RlZmF1bHQnXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1iYXJzXCI+PC9pPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19","import { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport { AXDataTableModule, } from '@acorex/components/data-table';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, effect, inject, signal, viewChild, } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule, translateSync } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutStartSideComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsModule } from '@acorex/platform/layout/widgets';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPEntityCategoryComponent } from '../entity-category/entity-category.component';\nimport { AXPEntityMasterToolbarViewComponent } from '../entity-master-toolbar-view/entity-master-toolbar-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/platform\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/data-table\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/platform/layout/widget-core\";\nimport * as i6 from \"@angular/common\";\nexport class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {\n constructor(platform) {\n super();\n this.platform = platform;\n this.activeRoute = inject(ActivatedRoute);\n this.router = inject(Router);\n this.vm = this.activeRoute.snapshot.data['vm'];\n //\n this.store = inject(AXPLayoutThemeService);\n //\n this.searchBarShown = signal(true, ...(ngDevMode ? [{ debugName: \"searchBarShown\" }] : []));\n this.activeEndSideView = signal('column', ...(ngDevMode ? [{ debugName: \"activeEndSideView\" }] : []));\n this.categorySearchValue = signal('', ...(ngDevMode ? [{ debugName: \"categorySearchValue\" }] : []));\n // @ViewChild('grid', { static: true}) grid: AXDataTableComponent;\n this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n this.initializedFromRoute = false;\n this.commandRowItems = computed(() => {\n return this.vm.primaryRowActions().map((c) => {\n return {\n icon: c.icon,\n name: c.name,\n text: translateSync(c.title),\n color: c.color,\n disabled: c.disabled,\n default: c.default,\n };\n });\n }, ...(ngDevMode ? [{ debugName: \"commandRowItems\" }] : []));\n this.getDropdownRowItems = (rowData) => {\n return Promise.resolve(this.dropdownRowItems(rowData));\n };\n this.getCommandRowItems = () => {\n return this.commandRowItems();\n };\n effect(() => {\n if (this.grid()) {\n this.grid().selectedRows = this.vm.selectedItems();\n }\n });\n //\n this.vm.events$.subscribe(async (e) => {\n const refreshTargetId = e.meta?.refreshTargetId;\n if (e.action == 'refresh') {\n if (refreshTargetId) {\n this.grid()?.refreshItemChildren(refreshTargetId);\n }\n else {\n this.grid()?.refresh({\n reset: false,\n });\n }\n }\n });\n // Keep URL query param `view` in sync with current vm view\n effect(() => {\n if (!this.initializedFromRoute) {\n return;\n }\n const currentViewName = this.vm.view().name;\n const urlView = this.activeRoute.snapshot.queryParamMap.get('view');\n if (currentViewName && currentViewName !== urlView) {\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: currentViewName },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n });\n }\n async ngOnInit() {\n // React to external URL changes (back/forward navigation or deep links)\n this.queryParamSub = this.activeRoute.queryParamMap.subscribe(async (qp) => {\n const viewFromUrl = qp.get('view');\n await this.vm.setView(viewFromUrl);\n });\n }\n async ngAfterViewInit() {\n const viewFromUrl = this.activeRoute.snapshot.queryParamMap.get('view');\n await this.vm.setView(viewFromUrl);\n const resolvedView = this.vm.view().name;\n const currentUrlView = this.activeRoute.snapshot.queryParamMap.get('view');\n if (currentUrlView !== resolvedView) {\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: resolvedView },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n this.initializedFromRoute = true;\n }\n onColumnSizeChanged(e) {\n if (e.isUserInteraction && e.type === 'end') {\n this.vm.saveSettings('columnSizes', e.data);\n }\n }\n onPageChanged(e) {\n if (e.isUserInteraction) {\n const pageSizeChanged = e.take != this.vm.dataSource.pageSize;\n if (pageSizeChanged) {\n this.vm.saveSettings('pageSize', e.take);\n }\n }\n }\n onColumnsOrderChanged(e) {\n if (e.isUserInteraction) {\n this.vm.onColumnsOrderChanged(e.data.event);\n }\n }\n async dropdownRowItems(rowData) {\n return (await this.vm.secondaryRowActions(rowData)).map((c) => ({\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n disabled: c.disabled,\n default: c.default,\n divided: c.separated,\n }));\n }\n async handleRowDbClick(e) {\n if (this.grid()?.dataSource.isLoading) {\n return;\n }\n const allItems = [...this.commandRowItems(), ...(await this.dropdownRowItems(e.data))];\n // const defaultAction = allItems.find((c) => (c as any).default) || allItems[0];\n const defaultAction = allItems.find((c) => {\n const commandName = c.name.split('&')[0];\n return (c.default || commandName === 'open-entity') && !c.disabled;\n });\n if (!defaultAction) {\n return;\n }\n const d = {\n component: e.component,\n name: defaultAction.name,\n data: e.data,\n };\n this.handleRowCommandClick(d);\n }\n async handleRowCommandClick(e) {\n if (this.grid()?.dataSource.isLoading) {\n return;\n }\n if (e.setLoading) {\n e.setLoading(true);\n }\n await this.vm.executeCommand(e.name, e.data);\n if (e.setLoading) {\n e.setLoading(false);\n }\n }\n async handleSelectedRowsChange(rows) {\n this.vm.selectedItems.set(rows);\n }\n makeResponsive(value) {\n if (this.platform.is('Mobile') || this.platform.is('SM')) {\n return '';\n }\n else {\n return value;\n }\n }\n toggleSideBar(sideBar) {\n this.toggleEndSide();\n if (sideBar) {\n this.activeEndSideView.set(sideBar);\n }\n }\n toggleSearchBar() {\n this.searchBarShown.update((v) => !v);\n }\n handleResetClick(sideBar) {\n switch (sideBar) {\n case 'filter': {\n this.vm.resetFilters();\n break;\n }\n case 'sort': {\n this.vm.resetSorts();\n break;\n }\n case 'column': {\n this.vm.resetColumns();\n break;\n }\n }\n }\n // protected handleDiscardClick(sideBar: 'filter' | 'sort' | 'column') {\n // switch (sideBar) {\n // case 'filter': {\n // this.vm.discardFilters();\n // break;\n // }\n // case 'sort': {\n // this.vm.resetSorts();\n // break;\n // }\n // case 'column': {\n // this.vm.resetColumns();\n // break;\n // }\n // }\n // }\n handleApplyClick(sideBar) {\n this.vm.applyFilterAndSort();\n this.toggleEndSide();\n }\n ngOnDestroy() {\n this.queryParamSub?.unsubscribe();\n this.vm.destroy();\n }\n toggleCategoryDrawer() {\n this.toggleStartSide();\n }\n getPageTitle() {\n return this.vm.title();\n }\n async getPageDescription() {\n const description = this.vm.description();\n if (description) {\n return this.translateService.translateAsync(description);\n }\n return '';\n }\n getPageBreadcrumbs() {\n return this.vm.beardcrumbs();\n }\n async getPrimaryMenuItems() {\n return (await this.vm.getPrimaryActions()).map((tr) => ({\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled: tr.disabled,\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n }));\n }\n async getSecondaryMenuItems() {\n return (await this.vm.getSecondaryActions()).map((tr) => ({\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled: tr.disabled,\n separated: tr.separated,\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n }));\n }\n async execute(command) {\n if (command) {\n this.vm.execute(command);\n }\n }\n handleUnselectAll() {\n this.vm.selectedItems.set([]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityMasterListViewComponent, deps: [{ token: i1.AXPlatform }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPEntityMasterListViewComponent, isStandalone: true, selector: \"axp-entity-master-list\", providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPEntityMasterListViewComponent,\n },\n ], viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n @if (vm.entityDef.category) {\\n <axp-layout-start-side id=\\\"axp-entity-category-drawer\\\">\\n <axp-entity-category\\n id=\\\"axp-entity-category\\\"\\n class=\\\"ax-w-80\\\"\\n [vm]=\\\"vm\\\"\\n [searchValue]=\\\"categorySearchValue()\\\"\\n ></axp-entity-category>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar id=\\\"axp-entity-toolbar\\\">\\n <axp-entity-master-toolbar-view [viewModel]=\\\"vm\\\"></axp-entity-master-toolbar-view>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-overflow-auto ax-pt-0\\\">\\n <div\\n class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-1 ax-pb-1\\\"\\n [class.ax-invisible]=\\\"!grid.selectedRows.length\\\"\\n >\\n <span\\n >{{ grid.selectedRows.length }}\\n <span>{{ '@general:terms.interface.items-selected' | translate | async }}</span>\\n </span>\\n <ax-button text=\\\"@general:terms.interface.unselect-all\\\" class=\\\"ax-xs\\\" (onClick)=\\\"handleUnselectAll()\\\"></ax-button>\\n </div>\\n <ax-data-table\\n id=\\\"axp-entity-table\\\"\\n [allowReordering]=\\\"true\\\"\\n (onColumnsOrderChanged)=\\\"onColumnsOrderChanged($event)\\\"\\n #grid\\n [showFooter]=\\\"false\\\"\\n class=\\\"ax-flex-1\\\"\\n [paging]=\\\"true\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [parentField]=\\\"vm.parentKey()\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n [dataSource]=\\\"vm.dataSource\\\"\\n (selectedRowsChange)=\\\"handleSelectedRowsChange($event)\\\"\\n (onRowDbClick)=\\\"handleRowDbClick($event)\\\"\\n (onColumnSizeChanged)=\\\"onColumnSizeChanged($event)\\\"\\n (onPageChanged)=\\\"onPageChanged($event)\\\"\\n >\\n @if (vm.view().indexCol === true) {\\n <ax-index-column id=\\\"axp-table-col-index\\\" fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n }\\n @if (vm.selectedScopeActionsCount()) {\\n <ax-select-column id=\\\"axp-table-col-select\\\" fixed=\\\"start\\\" [width]=\\\"'60px'\\\"></ax-select-column>\\n }\\n @for (col of vm.columns(); track col.name) {\\n @if (col.visible) {\\n <axp-widget-column-renderer\\n [attr.id]=\\\"'axp-table-col-' + col.name\\\"\\n [expandHandler]=\\\"$index === 0 && vm.parentKey() ? true : false\\\"\\n [caption]=\\\"(col.title | translate | async)!\\\"\\n [node]=\\\"col.node()\\\"\\n [customWidth]=\\\"col.width\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (getCommandRowItems().length) {\\n <ax-command-column\\n id=\\\"axp-table-col-commands\\\"\\n fixed=\\\"end\\\"\\n [width]=\\\"getCommandRowItems().length * 60 + 'px'\\\"\\n [items]=\\\"getCommandRowItems()\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-command-column>\\n }\\n <ax-dropdown-command-column\\n id=\\\"axp-table-col-dropdown-commands\\\"\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"getDropdownRowItems\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-dropdown-command-column>\\n </ax-data-table>\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"axp-entity-master-list axp-layout-start-side{min-width:20rem!important;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}axp-entity-master-list axp-layout-header{padding-bottom:.25rem!important}.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}.view-drawer{width:85vw}@media (min-width: 768px){.view-drawer{width:45vw}}@media (min-width: 1024px){.view-drawer{width:35vw}}@media (min-width: 1536px){.view-drawer{width:20vw}}.view-drawer{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));border-inline-start-width:1px;border-inline-start-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));border-top-width:1px;--tw-border-opacity: 1;border-top-color:rgba(var(--ax-sys-color-primary-600),var(--tw-border-opacity, 1))}.view-drawer ax-header{display:flex;align-items:center;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1));padding:.5rem 1rem}.view-drawer ax-header h2{font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lighter-surface),var(--tw-text-opacity, 1))}.view-drawer ax-footer{position:absolute!important;bottom:0!important;width:100%!important;justify-content:flex-start!important;border-top-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1))!important;padding:.5rem 1rem!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXActionSheetModule }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"ngmodule\", type: AXDialogModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXTooltipModule }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i3.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i3.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i3.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i3.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i3.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: DragDropModule }, { kind: \"ngmodule\", type: \n //\n AXPWidgetCoreModule }, { kind: \"component\", type: i5.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"ngmodule\", type: AXPWidgetsModule }, { kind: \"ngmodule\", type: AXPAuthModule }, { kind: \"component\", type: \n //\n AXPEntityMasterToolbarViewComponent, selector: \"axp-entity-master-toolbar-view\", inputs: [\"viewModel\"] }, { kind: \"component\", type: \n //\n AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPEntityCategoryComponent, selector: \"axp-entity-category\", inputs: [\"vm\", \"searchValue\"] }, { kind: \"pipe\", type: i6.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityMasterListViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-entity-master-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n AXButtonModule,\n AXDecoratorModule,\n AXBadgeModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXBreadcrumbsModule,\n AXDropdownButtonModule,\n AXSearchBoxModule,\n AXDataTableModule,\n AXTranslationModule,\n DragDropModule,\n //\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPAuthModule,\n //\n AXPEntityMasterToolbarViewComponent,\n //\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXPThemeLayoutStartSideComponent,\n AXPEntityCategoryComponent,\n ], providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPEntityMasterListViewComponent,\n },\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n @if (vm.entityDef.category) {\\n <axp-layout-start-side id=\\\"axp-entity-category-drawer\\\">\\n <axp-entity-category\\n id=\\\"axp-entity-category\\\"\\n class=\\\"ax-w-80\\\"\\n [vm]=\\\"vm\\\"\\n [searchValue]=\\\"categorySearchValue()\\\"\\n ></axp-entity-category>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar id=\\\"axp-entity-toolbar\\\">\\n <axp-entity-master-toolbar-view [viewModel]=\\\"vm\\\"></axp-entity-master-toolbar-view>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-overflow-auto ax-pt-0\\\">\\n <div\\n class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-1 ax-pb-1\\\"\\n [class.ax-invisible]=\\\"!grid.selectedRows.length\\\"\\n >\\n <span\\n >{{ grid.selectedRows.length }}\\n <span>{{ '@general:terms.interface.items-selected' | translate | async }}</span>\\n </span>\\n <ax-button text=\\\"@general:terms.interface.unselect-all\\\" class=\\\"ax-xs\\\" (onClick)=\\\"handleUnselectAll()\\\"></ax-button>\\n </div>\\n <ax-data-table\\n id=\\\"axp-entity-table\\\"\\n [allowReordering]=\\\"true\\\"\\n (onColumnsOrderChanged)=\\\"onColumnsOrderChanged($event)\\\"\\n #grid\\n [showFooter]=\\\"false\\\"\\n class=\\\"ax-flex-1\\\"\\n [paging]=\\\"true\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [parentField]=\\\"vm.parentKey()\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n [dataSource]=\\\"vm.dataSource\\\"\\n (selectedRowsChange)=\\\"handleSelectedRowsChange($event)\\\"\\n (onRowDbClick)=\\\"handleRowDbClick($event)\\\"\\n (onColumnSizeChanged)=\\\"onColumnSizeChanged($event)\\\"\\n (onPageChanged)=\\\"onPageChanged($event)\\\"\\n >\\n @if (vm.view().indexCol === true) {\\n <ax-index-column id=\\\"axp-table-col-index\\\" fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n }\\n @if (vm.selectedScopeActionsCount()) {\\n <ax-select-column id=\\\"axp-table-col-select\\\" fixed=\\\"start\\\" [width]=\\\"'60px'\\\"></ax-select-column>\\n }\\n @for (col of vm.columns(); track col.name) {\\n @if (col.visible) {\\n <axp-widget-column-renderer\\n [attr.id]=\\\"'axp-table-col-' + col.name\\\"\\n [expandHandler]=\\\"$index === 0 && vm.parentKey() ? true : false\\\"\\n [caption]=\\\"(col.title | translate | async)!\\\"\\n [node]=\\\"col.node()\\\"\\n [customWidth]=\\\"col.width\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (getCommandRowItems().length) {\\n <ax-command-column\\n id=\\\"axp-table-col-commands\\\"\\n fixed=\\\"end\\\"\\n [width]=\\\"getCommandRowItems().length * 60 + 'px'\\\"\\n [items]=\\\"getCommandRowItems()\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-command-column>\\n }\\n <ax-dropdown-command-column\\n id=\\\"axp-table-col-dropdown-commands\\\"\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"getDropdownRowItems\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-dropdown-command-column>\\n </ax-data-table>\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"axp-entity-master-list axp-layout-start-side{min-width:20rem!important;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}axp-entity-master-list axp-layout-header{padding-bottom:.25rem!important}.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}.view-drawer{width:85vw}@media (min-width: 768px){.view-drawer{width:45vw}}@media (min-width: 1024px){.view-drawer{width:35vw}}@media (min-width: 1536px){.view-drawer{width:20vw}}.view-drawer{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));border-inline-start-width:1px;border-inline-start-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));border-top-width:1px;--tw-border-opacity: 1;border-top-color:rgba(var(--ax-sys-color-primary-600),var(--tw-border-opacity, 1))}.view-drawer ax-header{display:flex;align-items:center;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1));padding:.5rem 1rem}.view-drawer ax-header h2{font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lighter-surface),var(--tw-text-opacity, 1))}.view-drawer ax-footer{position:absolute!important;bottom:0!important;width:100%!important;justify-content:flex-start!important;border-top-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1))!important;padding:.5rem 1rem!important}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.AXPlatform }], propDecorators: { grid: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUdMLGlCQUFpQixHQUtsQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIs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LG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLEVBQUU7d0JBQ0YsbUNBQW1DO3dCQUNuQyxFQUFFO3dCQUNGLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLGdDQUFnQzt3QkFDaEMsMEJBQTBCO3FCQUMzQixhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsa0NBQWtDO3lCQUM5QztxQkFDRjttSEFpQmdELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEFjdGlvblNoZWV0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQge1xuICBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCxcbiAgQVhEYXRhVGFibGVDb21wb25lbnQsXG4gIEFYRGF0YVRhYmxlTW9kdWxlLFxuICBBWERhdGFUYWJsZVJvd0RiQ2xpY2ssXG4gIEFYUm93Q29tbWFuZEl0ZW0sXG4gIEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50LFxuICBvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS1wYWdlcic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgdHJhbnNsYXRlU3luYyB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBBdXRoTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0cyc7XG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQQnJlYWRjcnVtYkl0ZW0sIEFYUEV4ZWN1dGVDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFBhZ2VMYXlvdXRCYXNlLCBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCwgQVhQUGFnZUxheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3ZpZXdzJztcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUEVudGl0eUNhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vZW50aXR5LWNhdGVnb3J5L2VudGl0eS1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRW50aXR5TWFzdGVyVG9vbGJhclZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9lbnRpdHktbWFzdGVyLXRvb2xiYXItdmlldy9lbnRpdHktbWFzdGVyLXRvb2xiYXItdmlldy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBzZWxlY3RvcjogJ2F4cC1lbnRpdHktbWFzdGVyLWxpc3QnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhBY3Rpb25TaGVldE1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWERpYWxvZ01vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYVG9vbHRpcE1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAvL1xuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhQV2lkZ2V0c01vZHVsZSxcbiAgICBBWFBBdXRoTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQRW50aXR5TWFzdGVyVG9vbGJhclZpZXdDb21wb25lbnQsXG4gICAgLy9cbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbiAgICBBWFBFbnRpdHlDYXRlZ29yeUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgYWN0aXZlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YVsndm0nXSBhcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsO1xuXG4gIC8vXG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpO1xuICAvL1xuICBwcm90ZWN0ZWQgc2VhcmNoQmFyU2hvd24gPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBhY3RpdmVFbmRTaWRlVmlldyA9IHNpZ25hbDwnY29sdW1uJyB8ICdmaWx0ZXInIHwgJ3NvcnQnPignY29sdW1uJyk7XG5cbiAgcHJvdGVjdGVkIGNhdGVnb3J5U2VhcmNoVmFsdWUgPSBzaWduYWwoJycpO1xuXG4gIC8vIEBWaWV3Q2hpbGQoJ2dyaWQnLCB7IHN0YXRpYzogdHJ1ZX0pIGdyaWQ6IEFYRGF0YVRhYmxlQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgZ3JpZCA9IHZpZXdDaGlsZDxBWERhdGFUYWJsZUNvbXBvbmVudD4oJ2dyaWQnKTtcbiAgcHJpdmF0ZSBxdWVyeVBhcmFtU3ViPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGluaXRpYWxpemVkRnJvbVJvdXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBsYXRmb3JtOiBBWFBsYXRmb3JtKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JpZCgpKSB7XG4gICAgICAgIHRoaXMuZ3JpZCgpIS5zZWxlY3RlZFJvd3MgPSB0aGlzLnZtLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMudm0uZXZlbnRzJC5zdWJzY3JpYmUoYXN5bmMgKGUpID0+IHtcbiAgICAgIGNvbnN0IHJlZnJlc2hUYXJnZXRJZCA9IGUubWV0YT8ucmVmcmVzaFRhcmdldElkO1xuICAgICAgaWYgKGUuYWN0aW9uID09ICdyZWZyZXNoJykge1xuICAgICAgICBpZiAocmVmcmVzaFRhcmdldElkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkKCk/LnJlZnJlc2hJdGVtQ2hpbGRyZW4ocmVmcmVzaFRhcmdldElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdyaWQoKT8ucmVmcmVzaCh7XG4gICAgICAgICAgICByZXNldDogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEtlZXAgVVJMIHF1ZXJ5IHBhcmFtIGB2aWV3YCBpbiBzeW5jIHdpdGggY3VycmVudCB2bSB2aWV3XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZEZyb21Sb3V0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50Vmlld05hbWUgPSB0aGlzLnZtLnZpZXcoKS5uYW1lO1xuICAgICAgY29uc3QgdXJsVmlldyA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3ZpZXcnKTtcbiAgICAgIGlmIChjdXJyZW50Vmlld05hbWUgJiYgY3VycmVudFZpZXdOYW1lICE9PSB1cmxWaWV3KSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmVSb3V0ZSxcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyB2aWV3OiBjdXJyZW50Vmlld05hbWUgfSxcbiAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVhY3QgdG8gZXh0ZXJuYWwgVVJMIGNoYW5nZXMgKGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIG9yIGRlZXAgbGlua3MpXG4gICAgdGhpcy5xdWVyeVBhcmFtU3ViID0gdGhpcy5hY3RpdmVSb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShhc3luYyAocXApID0+IHtcbiAgICAgIGNvbnN0IHZpZXdGcm9tVXJsID0gcXAuZ2V0KCd2aWV3Jyk7XG4gICAgICBhd2FpdCB0aGlzLnZtLnNldFZpZXcodmlld0Zyb21VcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHZpZXdGcm9tVXJsID0gdGhpcy5hY3RpdmVSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgndmlldycpO1xuICAgIGF3YWl0IHRoaXMudm0uc2V0Vmlldyh2aWV3RnJvbVVybCk7XG5cbiAgICBjb25zdCByZXNvbHZlZFZpZXcgPSB0aGlzLnZtLnZpZXcoKS5uYW1lO1xuICAgIGNvbnN0IGN1cnJlbnRVcmxWaWV3ID0gdGhpcy5hY3RpdmVSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgndmlldycpO1xuICAgIGlmIChjdXJyZW50VXJsVmlldyAhPT0gcmVzb2x2ZWRWaWV3KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2ZVJvdXRlLFxuICAgICAgICBxdWVyeVBhcmFtczogeyB2aWV3OiByZXNvbHZlZFZpZXcgfSxcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkRnJvbVJvdXRlID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNvbHVtblNpemVDaGFuZ2VkKGU6IG9uQ29sdW1uU2l6ZUNoYW5nZWRFdmVudCkge1xuICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uICYmIGUudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMudm0uc2F2ZVNldHRpbmdzKCdjb2x1bW5TaXplcycsIGUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uUGFnZUNoYW5nZWQoZTogQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgY29uc3QgcGFnZVNpemVDaGFuZ2VkID0gZS50YWtlICE9IHRoaXMudm0uZGF0YVNvdXJjZS5wYWdlU2l6ZTtcbiAgICAgIGlmIChwYWdlU2l6ZUNoYW5nZWQpIHtcbiAgICAgICAgdGhpcy52bS5zYXZlU2V0dGluZ3MoJ3BhZ2VTaXplJywgZS50YWtlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Db2x1bW5zT3JkZXJDaGFuZ2VkKGU6IEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMudm0ub25Db2x1bW5zT3JkZXJDaGFuZ2VkKGUuZGF0YS5ldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRyb3Bkb3duUm93SXRlbXMocm93RGF0YTogYW55KTogUHJvbWlzZTxBWFJvd0NvbW1hbmRJdGVtW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMudm0uc2Vjb25kYXJ5Um93QWN0aW9ucyhyb3dEYXRhKSkubWFwKChjKSA9PiAoe1xuICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgdGV4dDogYy50aXRsZSxcbiAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgZGlzYWJsZWQ6IGMuZGlzYWJsZWQsXG4gICAgICBkZWZhdWx0OiBjLmRlZmF1bHQsXG4gICAgICBkaXZpZGVkOiBjLnNlcGFyYXRlZCxcbiAgICB9KSkgYXMgQVhSb3dDb21tYW5kSXRlbVtdO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21tYW5kUm93SXRlbXMgPSBjb21wdXRlZDxBWFJvd0NvbW1hbmRJdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy52bS5wcmltYXJ5Um93QWN0aW9ucygpLm1hcCgoYykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgICBuYW1lOiBjLm5hbWUsXG4gICAgICAgIHRleHQ6IHRyYW5zbGF0ZVN5bmMoYy50aXRsZSksXG4gICAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgICBkaXNhYmxlZDogYy5kaXNhYmxlZCxcbiAgICAgICAgZGVmYXVsdDogYy5kZWZhdWx0LFxuICAgICAgfSBhcyBBWFJvd0NvbW1hbmRJdGVtO1xuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUm93RGJDbGljayhlOiBBWERhdGFUYWJsZVJvd0RiQ2xpY2spIHtcbiAgICBpZiAodGhpcy5ncmlkKCk/LmRhdGFTb3VyY2UuaXNMb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLnRoaXMuY29tbWFuZFJvd0l0ZW1zKCksIC4uLihhd2FpdCB0aGlzLmRyb3Bkb3duUm93SXRlbXMoZS5kYXRhKSldO1xuICAgIC8vIGNvbnN0IGRlZmF1bHRBY3Rpb24gPSBhbGxJdGVtcy5maW5kKChjKSA9PiAoYyBhcyBhbnkpLmRlZmF1bHQpIHx8IGFsbEl0ZW1zWzBdO1xuXG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFsbEl0ZW1zLmZpbmQoKGMpID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gYy5uYW1lLnNwbGl0KCcmJylbMF07XG4gICAgICByZXR1cm4gKChjIGFzIGFueSkuZGVmYXVsdCB8fCBjb21tYW5kTmFtZSA9PT0gJ29wZW4tZW50aXR5JykgJiYgIWMuZGlzYWJsZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRlZmF1bHRBY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCA9IHtcbiAgICAgIGNvbXBvbmVudDogZS5jb21wb25lbnQsXG4gICAgICBuYW1lOiBkZWZhdWx0QWN0aW9uLm5hbWUsXG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZVJvd0NvbW1hbmRDbGljayhkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREcm9wZG93blJvd0l0ZW1zID0gKHJvd0RhdGE6IHVua25vd24pOiBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4gPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kcm9wZG93blJvd0l0ZW1zKHJvd0RhdGEpKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ2V0Q29tbWFuZFJvd0l0ZW1zID0gKCk6IEFYUm93Q29tbWFuZEl0ZW1bXSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tbWFuZFJvd0l0ZW1zKCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVJvd0NvbW1hbmRDbGljayhlOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCkge1xuICAgIGlmICh0aGlzLmdyaWQoKT8uZGF0YVNvdXJjZS5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUuc2V0TG9hZGluZykge1xuICAgICAgZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnZtLmV4ZWN1dGVDb21tYW5kKGUubmFtZSwgZS5kYXRhKTtcbiAgICBpZiAoZS5zZXRMb2FkaW5nKSB7XG4gICAgICBlLnNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZWxlY3RlZFJvd3NDaGFuZ2Uocm93czogdW5rbm93bltdKSB7XG4gICAgdGhpcy52bS5zZWxlY3RlZEl0ZW1zLnNldChyb3dzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYWtlUmVzcG9uc2l2ZTx0Pih2YWx1ZTogdCk6IHQgfCBzdHJpbmcge1xuICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU2lkZUJhcihzaWRlQmFyPzogJ2NvbHVtbicgfCAnZmlsdGVyJyB8ICdzb3J0Jykge1xuICAgIHRoaXMudG9nZ2xlRW5kU2lkZSgpO1xuICAgIGlmIChzaWRlQmFyKSB7XG4gICAgICB0aGlzLmFjdGl2ZUVuZFNpZGVWaWV3LnNldChzaWRlQmFyKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU2VhcmNoQmFyKCkge1xuICAgIHRoaXMuc2VhcmNoQmFyU2hvd24udXBkYXRlKCh2KSA9PiAhdik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVzZXRDbGljayhzaWRlQmFyOiAnZmlsdGVyJyB8ICdzb3J0JyB8ICdjb2x1bW4nKSB7XG4gICAgc3dpdGNoIChzaWRlQmFyKSB7XG4gICAgICBjYXNlICdmaWx0ZXInOiB7XG4gICAgICAgIHRoaXMudm0ucmVzZXRGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnc29ydCc6IHtcbiAgICAgICAgdGhpcy52bS5yZXNldFNvcnRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICB0aGlzLnZtLnJlc2V0Q29sdW1ucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBwcm90ZWN0ZWQgaGFuZGxlRGlzY2FyZENsaWNrKHNpZGVCYXI6ICdmaWx0ZXInIHwgJ3NvcnQnIHwgJ2NvbHVtbicpIHtcbiAgLy8gICBzd2l0Y2ggKHNpZGVCYXIpIHtcbiAgLy8gICAgIGNhc2UgJ2ZpbHRlcic6IHtcbiAgLy8gICAgICAgdGhpcy52bS5kaXNjYXJkRmlsdGVycygpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICAgIGNhc2UgJ3NvcnQnOiB7XG4gIC8vICAgICAgIHRoaXMudm0ucmVzZXRTb3J0cygpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgLy8gICAgICAgdGhpcy52bS5yZXNldENvbHVtbnMoKTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFwcGx5Q2xpY2soc2lkZUJhcjogJ2ZpbHRlcicgfCAnc29ydCcgfCAnY29sdW1uJykge1xuICAgIHRoaXMudm0uYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgdGhpcy50b2dnbGVFbmRTaWRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy52bS5kZXN0cm95KCk7XG4gIH1cblxuICB0b2dnbGVDYXRlZ29yeURyYXdlcigpIHtcbiAgICB0aGlzLnRvZ2dsZVN0YXJ0U2lkZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0UGFnZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudm0udGl0bGUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VEZXNjcmlwdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy52bS5kZXNjcmlwdGlvbigpO1xuICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhkZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG92ZXJyaWRlIGdldFBhZ2VCcmVhZGNydW1icygpOiBBWFBCcmVhZGNydW1iSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy52bS5iZWFyZGNydW1icygpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UHJpbWFyeU1lbnVJdGVtcygpOiBQcm9taXNlPEFYUEFjdGlvbk1lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMudm0uZ2V0UHJpbWFyeUFjdGlvbnMoKSkubWFwKFxuICAgICAgKHRyKSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIG5hbWU6IHRyLm5hbWUsXG4gICAgICAgICAgdGl0bGU6IHRyLnRpdGxlLFxuICAgICAgICAgIGljb246IHRyLmljb24sXG4gICAgICAgICAgY29sb3I6IHRyLmNvbG9yLFxuICAgICAgICAgIGRpc2FibGVkOiB0ci5kaXNhYmxlZCxcbiAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICBuYW1lOiB0ci5uYW1lLFxuICAgICAgICAgICAgb3B0aW9uczogdHIub3B0aW9ucyxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0ci5tZXRhZGF0YSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSBhcyBBWFBBY3Rpb25NZW51SXRlbSxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0U2Vjb25kYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy52bS5nZXRTZWNvbmRhcnlBY3Rpb25zKCkpLm1hcCgodHIpID0+ICh7XG4gICAgICBuYW1lOiB0ci5uYW1lLFxuICAgICAgdGl0bGU6IHRyLnRpdGxlLFxuICAgICAgaWNvbjogdHIuaWNvbixcbiAgICAgIGNvbG9yOiB0ci5jb2xvcixcbiAgICAgIGRpc2FibGVkOiB0ci5kaXNhYmxlZCxcbiAgICAgIHNlcGFyYXRlZDogdHIuc2VwYXJhdGVkLFxuICAgICAgY29tbWFuZDoge1xuICAgICAgICBuYW1lOiB0ci5uYW1lLFxuICAgICAgICBvcHRpb25zOiB0ci5vcHRpb25zLFxuICAgICAgICBtZXRhZGF0YTogdHIubWV0YWRhdGEsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29tbWFuZCkge1xuICAgICAgdGhpcy52bS5leGVjdXRlKGNvbW1hbmQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVVbnNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnZtLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcbiAgfVxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgQGlmICh2bS5lbnRpdHlEZWYuY2F0ZWdvcnkpIHtcbiAgICA8YXhwLWxheW91dC1zdGFydC1zaWRlIGlkPVwiYXhwLWVudGl0eS1jYXRlZ29yeS1kcmF3ZXJcIj5cbiAgICAgIDxheHAtZW50aXR5LWNhdGVnb3J5XG4gICAgICAgIGlkPVwiYXhwLWVudGl0eS1jYXRlZ29yeVwiXG4gICAgICAgIGNsYXNzPVwiYXgtdy04MFwiXG4gICAgICAgIFt2bV09XCJ2bVwiXG4gICAgICAgIFtzZWFyY2hWYWx1ZV09XCJjYXRlZ29yeVNlYXJjaFZhbHVlKClcIlxuICAgICAgPjwvYXhwLWVudGl0eS1jYXRlZ29yeT5cbiAgICA8L2F4cC1sYXlvdXQtc3RhcnQtc2lkZT5cbiAgfVxuICA8YXhwLXBhZ2UtdG9vbGJhciBpZD1cImF4cC1lbnRpdHktdG9vbGJhclwiPlxuICAgIDxheHAtZW50aXR5LW1hc3Rlci10b29sYmFyLXZpZXcgW3ZpZXdNb2RlbF09XCJ2bVwiPjwvYXhwLWVudGl0eS1tYXN0ZXItdG9vbGJhci12aWV3PlxuICA8L2F4cC1wYWdlLXRvb2xiYXI+XG4gIDxheHAtcGFnZS1jb250ZW50IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0byBheC1wdC0wXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTEgYXgtcGItMVwiXG4gICAgICBbY2xhc3MuYXgtaW52aXNpYmxlXT1cIiFncmlkLnNlbGVjdGVkUm93cy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgID57eyBncmlkLnNlbGVjdGVkUm93cy5sZW5ndGggfX1cbiAgICAgICAgPHNwYW4+e3sgJ0BnZW5lcmFsOnRlcm1zLmludGVyZmFjZS5pdGVtcy1zZWxlY3RlZCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxheC1idXR0b24gdGV4dD1cIkBnZW5lcmFsOnRlcm1zLmludGVyZmFjZS51bnNlbGVjdC1hbGxcIiBjbGFzcz1cImF4LXhzXCIgKG9uQ2xpY2spPVwiaGFuZGxlVW5zZWxlY3RBbGwoKVwiPjwvYXgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxheC1kYXRhLXRhYmxlXG4gICAgICBpZD1cImF4cC1lbnRpdHktdGFibGVcIlxuICAgICAgW2FsbG93UmVvcmRlcmluZ109XCJ0cnVlXCJcbiAgICAgIChvbkNvbHVtbnNPcmRlckNoYW5nZWQpPVwib25Db2x1bW5zT3JkZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgI2dyaWRcbiAgICAgIFtzaG93Rm9vdGVyXT1cImZhbHNlXCJcbiAgICAgIGNsYXNzPVwiYXgtZmxleC0xXCJcbiAgICAgIFtwYWdpbmddPVwidHJ1ZVwiXG4gICAgICBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXG4gICAgICBbcGFyZW50RmllbGRdPVwidm0ucGFyZW50S2V5KClcIlxuICAgICAgW2xvYWRpbmddPVwieyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJ2bS5kYXRhU291cmNlXCJcbiAgICAgIChzZWxlY3RlZFJvd3NDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0ZWRSb3dzQ2hhbmdlKCRldmVudClcIlxuICAgICAgKG9uUm93RGJDbGljayk9XCJoYW5kbGVSb3dEYkNsaWNrKCRldmVudClcIlxuICAgICAgKG9uQ29sdW1uU2l6ZUNoYW5nZWQpPVwib25Db2x1bW5TaXplQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChvblBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGlmICh2bS52aWV3KCkuaW5kZXhDb2wgPT09IHRydWUpIHtcbiAgICAgICAgPGF4LWluZGV4LWNvbHVtbiBpZD1cImF4cC10YWJsZS1jb2wtaW5kZXhcIiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic4MHB4J1wiIFtwYWRaZXJvXT1cInRydWVcIj48L2F4LWluZGV4LWNvbHVtbj5cbiAgICAgIH1cbiAgICAgIEBpZiAodm0uc2VsZWN0ZWRTY29wZUFjdGlvbnNDb3VudCgpKSB7XG4gICAgICAgIDxheC1zZWxlY3QtY29sdW1uIGlkPVwiYXhwLXRhYmxlLWNvbC1zZWxlY3RcIiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic2MHB4J1wiPjwvYXgtc2VsZWN0LWNvbHVtbj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKGNvbCBvZiB2bS5jb2x1bW5zKCk7IHRyYWNrIGNvbC5uYW1lKSB7XG4gICAgICAgIEBpZiAoY29sLnZpc2libGUpIHtcbiAgICAgICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIidheHAtdGFibGUtY29sLScgKyBjb2wubmFtZVwiXG4gICAgICAgICAgICBbZXhwYW5kSGFuZGxlcl09XCIkaW5kZXggPT09IDAgJiYgdm0ucGFyZW50S2V5KCkgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgW2NhcHRpb25dPVwiKGNvbC50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgW25vZGVdPVwiY29sLm5vZGUoKVwiXG4gICAgICAgICAgICBbY3VzdG9tV2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmIChnZXRDb21tYW5kUm93SXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGF4LWNvbW1hbmQtY29sdW1uXG4gICAgICAgICAgaWQ9XCJheHAtdGFibGUtY29sLWNvbW1hbmRzXCJcbiAgICAgICAgICBmaXhlZD1cImVuZFwiXG4gICAgICAgICAgW3dpZHRoXT1cImdldENvbW1hbmRSb3dJdGVtcygpLmxlbmd0aCAqIDYwICsgJ3B4J1wiXG4gICAgICAgICAgW2l0ZW1zXT1cImdldENvbW1hbmRSb3dJdGVtcygpXCJcbiAgICAgICAgICAob25JdGVtQ2xpY2spPVwiaGFuZGxlUm93Q29tbWFuZENsaWNrKCRldmVudClcIlxuICAgICAgICA+PC9heC1jb21tYW5kLWNvbHVtbj5cbiAgICAgIH1cbiAgICAgIDxheC1kcm9wZG93bi1jb21tYW5kLWNvbHVtblxuICAgICAgICBpZD1cImF4cC10YWJsZS1jb2wtZHJvcGRvd24tY29tbWFuZHNcIlxuICAgICAgICBmaXhlZD1cImVuZFwiXG4gICAgICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgICAgICBbaXRlbXNdPVwiZ2V0RHJvcGRvd25Sb3dJdGVtc1wiXG4gICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDb21tYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICA+PC9heC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbj5cbiAgICA8L2F4LWRhdGEtdGFibGU+XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19"],"names":["i1","i2","i3","i4","i6","i7","i5"],"mappings":"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"}
|
|
@@ -737,11 +737,11 @@ class AXPDefaultThemeModule {
|
|
|
737
737
|
single: () => import('./acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs').then((c) => c.AXPEntityMasterSingleViewComponent),
|
|
738
738
|
details: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),
|
|
739
739
|
///
|
|
740
|
-
create: () => import('./acorex-platform-themes-default-entity-master-create-view.component-
|
|
740
|
+
create: () => import('./acorex-platform-themes-default-entity-master-create-view.component-xtWnr98z.mjs').then((c) => c.AXPEntityMasterCreateViewComponent),
|
|
741
741
|
///
|
|
742
742
|
modify: () => import('./acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs').then((c) => c.AXPEntityMasterModifyViewComponent),
|
|
743
743
|
//
|
|
744
|
-
list: () => import('./acorex-platform-themes-default-entity-master-list-view.component-
|
|
744
|
+
list: () => import('./acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs').then((c) => c.AXPEntityMasterListViewComponent),
|
|
745
745
|
},
|
|
746
746
|
},
|
|
747
747
|
};
|
|
@@ -773,11 +773,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
773
773
|
single: () => import('./acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs').then((c) => c.AXPEntityMasterSingleViewComponent),
|
|
774
774
|
details: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),
|
|
775
775
|
///
|
|
776
|
-
create: () => import('./acorex-platform-themes-default-entity-master-create-view.component-
|
|
776
|
+
create: () => import('./acorex-platform-themes-default-entity-master-create-view.component-xtWnr98z.mjs').then((c) => c.AXPEntityMasterCreateViewComponent),
|
|
777
777
|
///
|
|
778
778
|
modify: () => import('./acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs').then((c) => c.AXPEntityMasterModifyViewComponent),
|
|
779
779
|
//
|
|
780
|
-
list: () => import('./acorex-platform-themes-default-entity-master-list-view.component-
|
|
780
|
+
list: () => import('./acorex-platform-themes-default-entity-master-list-view.component-4nWLEm89.mjs').then((c) => c.AXPEntityMasterListViewComponent),
|
|
781
781
|
},
|
|
782
782
|
},
|
|
783
783
|
};
|
|
@@ -4,7 +4,7 @@ import * as _acorex_platform_core from '@acorex/platform/core';
|
|
|
4
4
|
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPGridLayoutOptions, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
|
|
5
5
|
import { AXPMenuItem } from '@acorex/platform/common';
|
|
6
6
|
import { AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
|
|
7
|
-
import {
|
|
7
|
+
import { AXTreeViewLegacyComponent, AXTreeItemClickBaseEventLegacy } from '@acorex/components/tree-view-legacy';
|
|
8
8
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
9
9
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
10
10
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
@@ -262,7 +262,7 @@ declare class AXPCategoryTreeComponent {
|
|
|
262
262
|
nodeDelete: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
263
263
|
searchChange: _angular_core.OutputEmitterRef<string>;
|
|
264
264
|
collapseChange: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
265
|
-
tree: _angular_core.Signal<
|
|
265
|
+
tree: _angular_core.Signal<AXTreeViewLegacyComponent | undefined>;
|
|
266
266
|
isLoading: _angular_core.WritableSignal<boolean>;
|
|
267
267
|
searchValue: _angular_core.WritableSignal<string>;
|
|
268
268
|
private loadingTimeoutId;
|
|
@@ -274,8 +274,8 @@ declare class AXPCategoryTreeComponent {
|
|
|
274
274
|
loadRootNodes(): Promise<void>;
|
|
275
275
|
loadChildNodes(parentId: string): Promise<void>;
|
|
276
276
|
searchNodes(searchValue: string): Promise<void>;
|
|
277
|
-
handleNodeClick(event:
|
|
278
|
-
handleCollapseChanged(event:
|
|
277
|
+
handleNodeClick(event: AXTreeItemClickBaseEventLegacy): Promise<void>;
|
|
278
|
+
handleCollapseChanged(event: AXTreeItemClickBaseEventLegacy): Promise<void>;
|
|
279
279
|
handleSearchChange(event: AXValueChangedEvent): Promise<void>;
|
|
280
280
|
handleCreateRootClick(event: AXClickEvent): Promise<void>;
|
|
281
281
|
handleCreateChildClick(node: AXPCategoryTreeNode, event: AXClickEvent): Promise<void>;
|