@acorex/modules 20.6.0-next.14 → 20.6.0-next.16
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/common/index.d.ts +1 -0
- package/fesm2022/acorex-modules-common.mjs +5 -2
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BiCwa7Ww.mjs → acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs} +13 -13
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-1KGMBDfA.mjs → acorex-modules-party-management-acorex-modules-party-management-DB3H-49E.mjs} +7 -7
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-1KGMBDfA.mjs.map → acorex-modules-party-management-acorex-modules-party-management-DB3H-49E.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-industry.entity-DHuE1kt7.mjs → acorex-modules-party-management-industry.entity-E0RPqKYR.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-industry.entity-DHuE1kt7.mjs.map → acorex-modules-party-management-industry.entity-E0RPqKYR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-jD8FUA11.mjs → acorex-modules-party-management-party-identifier-type.entity-COMURXUX.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-jD8FUA11.mjs.map → acorex-modules-party-management-party-identifier-type.entity-COMURXUX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BykPw02a.mjs → acorex-modules-party-management-party-identifier.entity-C6b-Vrgs.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BykPw02a.mjs.map → acorex-modules-party-management-party-identifier.entity-C6b-Vrgs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-DT0eidsI.mjs → acorex-modules-party-management-party-relationship.entity-rZHjByaY.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-DT0eidsI.mjs.map → acorex-modules-party-management-party-relationship.entity-rZHjByaY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-avNIs_Ga.mjs → acorex-modules-party-management-party-role.entity-B_fesIiR.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-role.entity-avNIs_Ga.mjs.map → acorex-modules-party-management-party-role.entity-B_fesIiR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party.entity-CPN2U-mp.mjs → acorex-modules-party-management-party.entity-Czvx5O4_.mjs} +3 -13
- package/fesm2022/acorex-modules-party-management-party.entity-Czvx5O4_.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B0TrJk70.mjs → acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs} +5 -5
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B0TrJk70.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-_xsJ6KyX.mjs → acorex-modules-platform-management-list-version.component-um9dTYaN.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-_xsJ6KyX.mjs.map → acorex-modules-platform-management-list-version.component-um9dTYaN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-CXlEbNtH.mjs → acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs} +8 -8
- package/fesm2022/acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-BWt2Ib-i.mjs → acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-BWt2Ib-i.mjs.map → acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs → acorex-modules-report-management-report-runner-root-page.component-Cjpx-4Q9.mjs} +5 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Cjpx-4Q9.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/package.json +6 -6
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BiCwa7Ww.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party.entity-CPN2U-mp.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CXlEbNtH.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { AXCommonModule } from '@acorex/cdk/common';
|
|
1
2
|
import * as i2 from '@acorex/components/button';
|
|
2
3
|
import { AXButtonModule } from '@acorex/components/button';
|
|
3
|
-
import { AXCommonModule } from '@acorex/cdk/common';
|
|
4
4
|
import * as i3 from '@acorex/components/decorators';
|
|
5
5
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
6
6
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
@@ -15,10 +15,10 @@ import { inject, Injector, runInInjectionContext, signal, model, computed, ViewE
|
|
|
15
15
|
import * as i1 from '@angular/forms';
|
|
16
16
|
import { FormsModule } from '@angular/forms';
|
|
17
17
|
import { orderBy } from 'lodash-es';
|
|
18
|
+
import * as i5 from '@acorex/components/tree-view-legacy';
|
|
19
|
+
import { AXTreeViewLegacyModule } from '@acorex/components/tree-view-legacy';
|
|
18
20
|
import * as i3$1 from '@acorex/core/translation';
|
|
19
21
|
import { AXTranslationModule } from '@acorex/core/translation';
|
|
20
|
-
import * as i5 from '@acorex/components/tree-view';
|
|
21
|
-
import { AXTreeViewModule } from '@acorex/components/tree-view';
|
|
22
22
|
import { AXPWidgetItemComponent, AXPStateMessageComponent } from '@acorex/platform/layout/components';
|
|
23
23
|
import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
|
|
24
24
|
import { RootConfig } from './acorex-modules-form-template-management.mjs';
|
|
@@ -32,7 +32,7 @@ function mapToWidgetItemData(widget) {
|
|
|
32
32
|
description: widget.description,
|
|
33
33
|
icon: widget.icon ?? 'fa-solid fa-cube',
|
|
34
34
|
isPinned: widget.pinned,
|
|
35
|
-
data: widget
|
|
35
|
+
data: widget,
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {
|
|
@@ -104,10 +104,10 @@ class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {
|
|
|
104
104
|
return [
|
|
105
105
|
{
|
|
106
106
|
hasChild: true,
|
|
107
|
-
id:
|
|
108
|
-
title:
|
|
107
|
+
id: 'all',
|
|
108
|
+
title: 'All Items',
|
|
109
109
|
expanded: true,
|
|
110
|
-
}
|
|
110
|
+
},
|
|
111
111
|
];
|
|
112
112
|
}
|
|
113
113
|
};
|
|
@@ -195,15 +195,15 @@ class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {
|
|
|
195
195
|
}
|
|
196
196
|
else {
|
|
197
197
|
// Category was collapsed - remove from expanded list
|
|
198
|
-
const newExpanded = currentExpanded.filter(id => id !== item.id);
|
|
198
|
+
const newExpanded = currentExpanded.filter((id) => id !== item.id);
|
|
199
199
|
this.expandedCategoryIds.set(newExpanded);
|
|
200
200
|
await this.settingService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPTemplateWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[60vh]\">\n <div class=\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-grow ax-h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\"\n >\n <ax-tree-view\n [showCheckbox]=\"false\"\n [itemTemplate]=\"categoryTemplate\"\n [textField]=\"'title'\"\n [hasChildField]=\"'hasChild'\"\n [valueField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [items]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onCollapsedChanged)=\"handleCollapseChanged($event)\"\n class=\"ax-w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-item>\n <ax-icon class=\"fa-solid fa-folder ax-text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"ax-flex ax-flex-col ax-p-4\">\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"ax-mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
|
204
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[60vh]\">\n <div class=\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-grow ax-h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\"\n >\n <ax-tree-view-legacy\n [showCheckbox]=\"false\"\n [itemTemplate]=\"categoryTemplate\"\n [textField]=\"'title'\"\n [hasChildField]=\"'hasChild'\"\n [valueField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [items]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onCollapsedChanged)=\"handleCollapseChanged($event)\"\n class=\"ax-w-full\"\n >\n </ax-tree-view-legacy>\n\n <ng-template #categoryTemplate let-item>\n <ax-icon class=\"fa-solid fa-folder ax-text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"ax-flex ax-flex-col ax-p-4\">\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"ax-mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
|
205
205
|
//
|
|
206
|
-
AXCommonModule }, { 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: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.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: AXSearchBoxModule }, { kind: "component", type: i4.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: "ngmodule", type:
|
|
206
|
+
AXCommonModule }, { 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: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.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: AXSearchBoxModule }, { kind: "component", type: i4.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: "ngmodule", type: AXTreeViewLegacyModule }, { kind: "component", type: i5.AXTreeViewLegacyComponent, selector: "ax-tree-view-legacy", inputs: ["items", "showCheckbox", "hasCheckboxField", "selectionMode", "selectionBehavior", "selectionScope", "focusNodeEnabled", "valueField", "textField", "visibleField", "disableField", "hasChildField", "selectedField", "expandedField", "tooltipField", "childrenField", "activeField", "indeterminateField", "parentField", "iconField", "toggleIcons", "look", "showEmptyNodeMassage", "itemTemplate", "emptyTemplate", "expandOn"], outputs: ["onSelectionChanged", "onItemSelectedChanged", "onNodeClick", "onCollapsedChanged", "onNodedbClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPWidgetItemComponent, selector: "axp-widget-item", inputs: ["widget", "isSelected", "showPinButton", "customClasses"], outputs: ["onWidgetClick", "onPinClick"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
207
207
|
}
|
|
208
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPTemplateWidgetPickerComponent, decorators: [{
|
|
209
209
|
type: Component,
|
|
@@ -215,12 +215,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
215
215
|
AXButtonModule,
|
|
216
216
|
AXDecoratorModule,
|
|
217
217
|
AXSearchBoxModule,
|
|
218
|
-
|
|
218
|
+
AXTreeViewLegacyModule,
|
|
219
219
|
AXTranslationModule,
|
|
220
220
|
AXPWidgetItemComponent,
|
|
221
221
|
AXPStateMessageComponent,
|
|
222
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[60vh]\">\n <div class=\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-grow ax-h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\"\n >\n <ax-tree-view\n [showCheckbox]=\"false\"\n [itemTemplate]=\"categoryTemplate\"\n [textField]=\"'title'\"\n [hasChildField]=\"'hasChild'\"\n [valueField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [items]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onCollapsedChanged)=\"handleCollapseChanged($event)\"\n class=\"ax-w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-item>\n <ax-icon class=\"fa-solid fa-folder ax-text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"ax-flex ax-flex-col ax-p-4\">\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"ax-mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n" }]
|
|
222
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[60vh]\">\n <div class=\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-grow ax-h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\"\n >\n <ax-tree-view-legacy\n [showCheckbox]=\"false\"\n [itemTemplate]=\"categoryTemplate\"\n [textField]=\"'title'\"\n [hasChildField]=\"'hasChild'\"\n [valueField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [items]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onCollapsedChanged)=\"handleCollapseChanged($event)\"\n class=\"ax-w-full\"\n >\n </ax-tree-view-legacy>\n\n <ng-template #categoryTemplate let-item>\n <ax-icon class=\"fa-solid fa-folder ax-text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"ax-flex ax-flex-col ax-p-4\">\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"ax-mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n" }]
|
|
223
223
|
}], propDecorators: { searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTerm", required: false }] }, { type: i0.Output, args: ["searchTermChange"] }] } });
|
|
224
224
|
|
|
225
225
|
export { AXPTemplateWidgetPickerComponent };
|
|
226
|
-
//# sourceMappingURL=acorex-modules-form-template-management-template-picker.component-
|
|
226
|
+
//# sourceMappingURL=acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs.map
|
package/fesm2022/acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs","sources":["../tmp-esm2022/form-template-management/lib/features/designer/components/template-picker/template-picker.component.js"],"sourcesContent":["import { AXCommonModule } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Injector, model, runInInjectionContext, signal, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { orderBy } from 'lodash-es';\nimport { AXTreeViewLegacyModule } from '@acorex/components/tree-view-legacy';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent, AXPWidgetItemComponent, } from '@acorex/platform/layout/components';\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../../../const';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/search-box\";\nimport * as i5 from \"@acorex/components/tree-view-legacy\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"@acorex/core/translation\";\n/**\n * Maps AXPDisplayWidgetProvided to generic AXPWidgetItemData\n */\nfunction mapToWidgetItemData(widget) {\n return {\n title: widget.title,\n description: widget.description,\n icon: widget.icon ?? 'fa-solid fa-cube',\n isPinned: widget.pinned,\n data: widget,\n };\n}\nexport class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.settingService = inject(AXPSettingService);\n this.injector = inject(Injector);\n this.categoryEntityService = runInInjectionContext(this.injector, () => new AXMEntityCrudServiceImpl(`${RootConfig.module.name}.Category`));\n this.expandedCategoriesKey = 'forms:templates:picker:expandedCategories';\n // Track expanded category IDs\n this.expandedCategoryIds = signal([], ...(ngDevMode ? [{ debugName: \"expandedCategoryIds\" }] : []));\n this.pinnedSettingKey = 'forms:templates:picker:pinned';\n this.searchTerm = model('', ...(ngDevMode ? [{ debugName: \"searchTerm\" }] : []));\n // Data properties - populated by popup service\n this.widgets = [];\n // Signals\n this.displayWidgets = signal([], ...(ngDevMode ? [{ debugName: \"displayWidgets\" }] : []));\n // Signal to track selected widgets\n this.selectedWidgets = signal([], ...(ngDevMode ? [{ debugName: \"selectedWidgets\" }] : []));\n // Computed for filtered and ordered widget list\n this.orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedCategory = this.selectedCategory();\n const selectedCategoryId = selectedCategory ? selectedCategory.id : null;\n const filterByCategory = (widget) => {\n if (!selectedCategoryId || selectedCategoryId == 'all')\n return true;\n return selectedCategoryId === widget.group.name;\n };\n return orderBy(this.displayWidgets().filter((w) => {\n const matchesCategory = filterByCategory(w);\n const matchesSearch = !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesCategory && matchesSearch;\n }), ['pinned', 'title'], ['desc', 'asc']);\n }, ...(ngDevMode ? [{ debugName: \"orderedList\" }] : []));\n // Pinned and regular lists\n this.pinnedList = computed(() => this.orderedList().filter((c) => c.pinned), ...(ngDevMode ? [{ debugName: \"pinnedList\" }] : []));\n this.regularList = computed(() => this.orderedList().filter((c) => !c.pinned), ...(ngDevMode ? [{ debugName: \"regularList\" }] : []));\n // Mapped data for generic widget items\n this.pinnedWidgetItems = computed(() => this.pinnedList().map(mapToWidgetItemData), ...(ngDevMode ? [{ debugName: \"pinnedWidgetItems\" }] : []));\n this.regularWidgetItems = computed(() => this.regularList().map(mapToWidgetItemData), ...(ngDevMode ? [{ debugName: \"regularWidgetItems\" }] : []));\n // Computed property to check if we're in search mode\n this.isSearchMode = computed(() => this.searchTerm().trim().length > 0, ...(ngDevMode ? [{ debugName: \"isSearchMode\" }] : []));\n // Computed property to check if there are any results\n this.hasResults = computed(() => this.orderedList().length > 0, ...(ngDevMode ? [{ debugName: \"hasResults\" }] : []));\n //#region Category Tree\n this.provideLazyTreeView = async (selectedItemId) => {\n if (selectedItemId == 'all') {\n const categories = await this.categoryEntityService.getRoots({});\n const items = categories.items.map((item) => ({\n id: item.id,\n title: item.title,\n hasChild: item.childrenCount > 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n return items;\n }\n else if (selectedItemId) {\n const categories = (await this.categoryEntityService.getChildren({ parentId: selectedItemId }))?.items.map((item) => ({\n id: item.id,\n title: item.title,\n parentId: item.parentId,\n hasChild: item.childrenCount > 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n return categories;\n }\n else {\n return [\n {\n hasChild: true,\n id: 'all',\n title: 'All Items',\n expanded: true,\n },\n ];\n }\n };\n this.selectedCategory = signal(null, ...(ngDevMode ? [{ debugName: \"selectedCategory\" }] : []));\n }\n async ngOnInit() {\n super.ngOnInit();\n // Load expanded categories from settings\n const savedExpandedIds = (await this.settingService.get(this.expandedCategoriesKey)) || [];\n this.expandedCategoryIds.set(savedExpandedIds);\n //\n const pinnedWidgets = (await this.settingService.get(this.pinnedSettingKey)) || [];\n this.displayWidgets.set(this.widgets.map((c) => ({\n ...c,\n pinned: pinnedWidgets.includes(c.id),\n icon: c.icon ?? 'fa-solid fa-file-invoice',\n })));\n }\n handleWidgetClick(clickEvent) {\n const { event, widget } = clickEvent;\n const originalWidget = widget.data;\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some((w) => w === originalWidget);\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter((w) => w !== originalWidget));\n }\n else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, originalWidget]);\n }\n }\n else {\n // If CTRL is not pressed, select only the clicked widget\n this.close({ widgets: [originalWidget] });\n }\n }\n async handleWidgetPinClick(clickEvent) {\n const { widget } = clickEvent;\n const originalWidget = widget.data;\n originalWidget.pinned = !originalWidget.pinned;\n // Get the current list of pinned widgets from settings\n let pinnedWidgets = (await this.settingService.get(this.pinnedSettingKey)) || [];\n // Update the list of pinned widgets based on the pinned status\n if (originalWidget.pinned) {\n if (!pinnedWidgets.includes(originalWidget.id)) {\n pinnedWidgets.push(originalWidget.id);\n }\n }\n else {\n pinnedWidgets = pinnedWidgets.filter((name) => name !== originalWidget.id);\n }\n // Save the updated list of pinned widgets\n await this.settingService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);\n // Trigger a re-render of the widgets\n this.displayWidgets.set([...this.displayWidgets()]);\n }\n // Check if a widget is selected\n isWidgetSelected(widget) {\n return this.selectedWidgets().includes(widget);\n }\n // Check if a generic widget item is selected\n isWidgetItemSelected(widgetItem) {\n const originalWidget = widgetItem.data;\n return this.isWidgetSelected(originalWidget);\n }\n handleConfirmSelection() {\n this.close({ widgets: this.selectedWidgets() });\n }\n handleNodeClick(event) {\n const item = event.data;\n this.selectedCategory.set(item);\n }\n async handleCollapseChanged(event) {\n const item = event.data;\n const currentExpanded = this.expandedCategoryIds();\n if (item.expanded) {\n // Category was expanded - add to expanded list\n if (!currentExpanded.includes(item.id)) {\n const newExpanded = [...currentExpanded, item.id];\n this.expandedCategoryIds.set(newExpanded);\n await this.settingService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n }\n else {\n // Category was collapsed - remove from expanded list\n const newExpanded = currentExpanded.filter((id) => id !== item.id);\n this.expandedCategoryIds.set(newExpanded);\n await this.settingService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTemplateWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: \"ng-component\", inputs: { searchTerm: { classPropertyName: \"searchTerm\", publicName: \"searchTerm\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: \"searchTermChange\" }, usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-flex ax-flex-col lg:ax-h-[60vh]\\\">\\n <div class=\\\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\\\">\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n class=\\\"ax-sm\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-grow ax-h-full\\\">\\n <!-- Category Tree - Hidden in search mode -->\\n @if (!isSearchMode()) {\\n <div\\n class=\\\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\\\"\\n >\\n <ax-tree-view-legacy\\n [showCheckbox]=\\\"false\\\"\\n [itemTemplate]=\\\"categoryTemplate\\\"\\n [textField]=\\\"'title'\\\"\\n [hasChildField]=\\\"'hasChild'\\\"\\n [valueField]=\\\"'id'\\\"\\n [expandedField]=\\\"'expanded'\\\"\\n [items]=\\\"provideLazyTreeView\\\"\\n (onNodeClick)=\\\"handleNodeClick($event)\\\"\\n (onCollapsedChanged)=\\\"handleCollapseChanged($event)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n </ax-tree-view-legacy>\\n\\n <ng-template #categoryTemplate let-item>\\n <ax-icon class=\\\"fa-solid fa-folder ax-text-yellow-500 fa-fw\\\"></ax-icon>\\n {{ item.title | translate | async }}\\n </ng-template>\\n </div>\\n }\\n\\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\\n <div\\n [class]=\\\"\\n isSearchMode()\\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\\n \\\"\\n >\\n @if (hasResults()) {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4\\\">\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n @if (pinnedWidgetItems().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n </div>\\n } @else {\\n <!-- Empty State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-search\\\"\\n [title]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\\n \\\"\\n [description]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\\n \\\"\\n >\\n @if (isSearchMode()) {\\n <ax-button\\n look=\\\"blank\\\"\\n [text]=\\\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\\\"\\n class=\\\"ax-mt-4\\\"\\n (onClick)=\\\"searchTerm.set('')\\\"\\n ></ax-button>\\n }\\n </axp-state-message>\\n }\\n </div>\\n </div>\\n</div>\\n\\n@if (selectedWidgets().length) {\\n <ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n </ax-footer>\\n}\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: \n //\n AXCommonModule }, { 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: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.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: AXSearchBoxModule }, { kind: \"component\", type: i4.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: \"ngmodule\", type: AXTreeViewLegacyModule }, { kind: \"component\", type: i5.AXTreeViewLegacyComponent, selector: \"ax-tree-view-legacy\", inputs: [\"items\", \"showCheckbox\", \"hasCheckboxField\", \"selectionMode\", \"selectionBehavior\", \"selectionScope\", \"focusNodeEnabled\", \"valueField\", \"textField\", \"visibleField\", \"disableField\", \"hasChildField\", \"selectedField\", \"expandedField\", \"tooltipField\", \"childrenField\", \"activeField\", \"indeterminateField\", \"parentField\", \"iconField\", \"toggleIcons\", \"look\", \"showEmptyNodeMassage\", \"itemTemplate\", \"emptyTemplate\", \"expandOn\"], outputs: [\"onSelectionChanged\", \"onItemSelectedChanged\", \"onNodeClick\", \"onCollapsedChanged\", \"onNodedbClick\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPWidgetItemComponent, selector: \"axp-widget-item\", inputs: [\"widget\", \"isSelected\", \"showPinButton\", \"customClasses\"], outputs: [\"onWidgetClick\", \"onPinClick\"] }, { 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: AXPTemplateWidgetPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n FormsModule,\n //\n AXCommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSearchBoxModule,\n AXTreeViewLegacyModule,\n AXTranslationModule,\n AXPWidgetItemComponent,\n AXPStateMessageComponent,\n ], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"ax-flex ax-flex-col lg:ax-h-[60vh]\\\">\\n <div class=\\\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\\\">\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n class=\\\"ax-sm\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-grow ax-h-full\\\">\\n <!-- Category Tree - Hidden in search mode -->\\n @if (!isSearchMode()) {\\n <div\\n class=\\\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\\\"\\n >\\n <ax-tree-view-legacy\\n [showCheckbox]=\\\"false\\\"\\n [itemTemplate]=\\\"categoryTemplate\\\"\\n [textField]=\\\"'title'\\\"\\n [hasChildField]=\\\"'hasChild'\\\"\\n [valueField]=\\\"'id'\\\"\\n [expandedField]=\\\"'expanded'\\\"\\n [items]=\\\"provideLazyTreeView\\\"\\n (onNodeClick)=\\\"handleNodeClick($event)\\\"\\n (onCollapsedChanged)=\\\"handleCollapseChanged($event)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n </ax-tree-view-legacy>\\n\\n <ng-template #categoryTemplate let-item>\\n <ax-icon class=\\\"fa-solid fa-folder ax-text-yellow-500 fa-fw\\\"></ax-icon>\\n {{ item.title | translate | async }}\\n </ng-template>\\n </div>\\n }\\n\\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\\n <div\\n [class]=\\\"\\n isSearchMode()\\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\\n \\\"\\n >\\n @if (hasResults()) {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4\\\">\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n @if (pinnedWidgetItems().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n </div>\\n } @else {\\n <!-- Empty State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-search\\\"\\n [title]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\\n \\\"\\n [description]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\\n \\\"\\n >\\n @if (isSearchMode()) {\\n <ax-button\\n look=\\\"blank\\\"\\n [text]=\\\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\\\"\\n class=\\\"ax-mt-4\\\"\\n (onClick)=\\\"searchTerm.set('')\\\"\\n ></ax-button>\\n }\\n </axp-state-message>\\n }\\n </div>\\n </div>\\n</div>\\n\\n@if (selectedWidgets().length) {\\n <ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n </ax-footer>\\n}\\n\" }]\n }], propDecorators: { searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: \"searchTerm\", required: false }] }, { type: i0.Output, args: [\"searchTermChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9mb3JtLXRlbXBsYXRlLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL3RlbXBsYXRlLXBpY2tlci90ZW1wbGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Zvcm0tdGVtcGxhdGUtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2Rlc2lnbmVyL2NvbXBvbmVudHMvdGVtcGxhdGUtcGlja2VyL3RlbXBsYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxF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QzsrR0F2TVUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsK1JDM0U3QyxrdUlBb0hBLDJDRHhESSxZQUFZLDhCQUNaLFdBQVc7Z0JBQ1gsRUFBRTtnQkFDRixjQUFjLDhCQUNkLGNBQWMsNlhBQ2QsaUJBQWlCLHNjQUNqQixpQkFBaUIsMFpBQ2pCLHNCQUFzQix5cEJBQ3RCLG1CQUFtQiwrQkFDbkIsc0JBQXNCLDBLQUN0Qix3QkFBd0I7OzRGQUtmLGdDQUFnQztrQkFqQjVDLFNBQVM7OEJBQ0M7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLEVBQUU7d0JBQ0YsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCLGlCQUVjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbW1vbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIG1vZGVsLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUFRlbXBsYXRlV2lkZ2V0TGlzdEl0ZW0gfSBmcm9tICcuL3RlbXBsYXRlLnByb3ZpZGVyJztcblxuaW1wb3J0IHsgQVhUcmVlVmlld0xlZ2FjeU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90cmVlLXZpZXctbGVnYWN5JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICBBWFBXaWRnZXRJdGVtQ2xpY2tFdmVudCxcbiAgQVhQV2lkZ2V0SXRlbUNvbXBvbmVudCxcbiAgQVhQV2lkZ2V0SXRlbURhdGEsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkIGV4dGVuZHMgQVhQVGVtcGxhdGVXaWRnZXRMaXN0SXRlbSB7XG4gIHBpbm5lZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDYXRlZ29yeURpc3BsYXlNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhcmVudElkPzogc3RyaW5nO1xuICBoYXNDaGlsZDogYm9vbGVhbjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1hcHMgQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkIHRvIGdlbmVyaWMgQVhQV2lkZ2V0SXRlbURhdGFcbiAqL1xuZnVuY3Rpb24gbWFwVG9XaWRnZXRJdGVtRGF0YSh3aWRnZXQ6IEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZCk6IEFYUFdpZGdldEl0ZW1EYXRhIHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogd2lkZ2V0LnRpdGxlLFxuICAgIGRlc2NyaXB0aW9uOiB3aWRnZXQuZGVzY3JpcHRpb24sXG4gICAgaWNvbjogd2lkZ2V0Lmljb24gPz8gJ2ZhLXNvbGlkIGZhLWN1YmUnLFxuICAgIGlzUGlubmVkOiB3aWRnZXQucGlubmVkLFxuICAgIGRhdGE6IHdpZGdldCxcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgLy9cbiAgICBBWENvbW1vbk1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgICBBWFRyZWVWaWV3TGVnYWN5TW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQV2lkZ2V0SXRlbUNvbXBvbmVudCxcbiAgICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBUZW1wbGF0ZVdpZGdldFBpY2tlckNvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xuICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgY2F0ZWdvcnlFbnRpdHlTZXJ2aWNlID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxuICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgKCkgPT4gbmV3IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbDxhbnksIGFueT4oYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uQ2F0ZWdvcnlgKSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV4cGFuZGVkQ2F0ZWdvcmllc0tleSA9ICdmb3Jtczp0ZW1wbGF0ZXM6cGlja2VyOmV4cGFuZGVkQ2F0ZWdvcmllcyc7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgY2F0ZWdvcnkgSURzXG4gIHByaXZhdGUgZXhwYW5kZWRDYXRlZ29yeUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIC8vIExvYWQgZXhwYW5kZWQgY2F0ZWdvcmllcyBmcm9tIHNldHRpbmdzXG4gICAgY29uc3Qgc2F2ZWRFeHBhbmRlZElkcyA9IChhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLmdldDxzdHJpbmdbXT4odGhpcy5leHBhbmRlZENhdGVnb3JpZXNLZXkpKSB8fCBbXTtcbiAgICB0aGlzLmV4cGFuZGVkQ2F0ZWdvcnlJZHMuc2V0KHNhdmVkRXhwYW5kZWRJZHMpO1xuICAgIC8vXG4gICAgY29uc3QgcGlubmVkV2lkZ2V0cyA9IChhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLmdldDxzdHJpbmdbXT4odGhpcy5waW5uZWRTZXR0aW5nS2V5KSkgfHwgW107XG4gICAgdGhpcy5kaXNwbGF5V2lkZ2V0cy5zZXQoXG4gICAgICB0aGlzLndpZGdldHMubWFwKChjKSA9PiAoe1xuICAgICAgICAuLi5jLFxuICAgICAgICBwaW5uZWQ6IHBpbm5lZFdpZGdldHMuaW5jbHVkZXMoYy5pZCksXG4gICAgICAgIGljb246IGMuaWNvbiA/PyAnZmEtc29saWQgZmEtZmlsZS1pbnZvaWNlJyxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwaW5uZWRTZXR0aW5nS2V5ID0gJ2Zvcm1zOnRlbXBsYXRlczpwaWNrZXI6cGlubmVkJztcblxuICBwcm90ZWN0ZWQgc2VhcmNoVGVybSA9IG1vZGVsKCcnKTtcblxuICAvLyBEYXRhIHByb3BlcnRpZXMgLSBwb3B1bGF0ZWQgYnkgcG9wdXAgc2VydmljZVxuICB3aWRnZXRzOiBBWFBUZW1wbGF0ZVdpZGdldExpc3RJdGVtW10gPSBbXTtcblxuICAvLyBTaWduYWxzXG4gIHByaXZhdGUgZGlzcGxheVdpZGdldHMgPSBzaWduYWw8QVhQRGlzcGxheVdpZGdldFByb3ZpZGVkW10+KFtdKTtcblxuICAvLyBTaWduYWwgdG8gdHJhY2sgc2VsZWN0ZWQgd2lkZ2V0c1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRXaWRnZXRzID0gc2lnbmFsPEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZFtdPihbXSk7XG5cbiAgLy8gQ29tcHV0ZWQgZm9yIGZpbHRlcmVkIGFuZCBvcmRlcmVkIHdpZGdldCBsaXN0XG4gIHByaXZhdGUgb3JkZXJlZExpc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXJtKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBzZWxlY3RlZENhdGVnb3J5ID0gdGhpcy5zZWxlY3RlZENhdGVnb3J5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeUlkID0gc2VsZWN0ZWRDYXRlZ29yeSA/IHNlbGVjdGVkQ2F0ZWdvcnkuaWQgOiBudWxsO1xuXG4gICAgY29uc3QgZmlsdGVyQnlDYXRlZ29yeSA9ICh3aWRnZXQ6IEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZCkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RlZENhdGVnb3J5SWQgfHwgc2VsZWN0ZWRDYXRlZ29yeUlkID09ICdhbGwnKSByZXR1cm4gdHJ1ZTtcbiAgICAgIHJldHVybiBzZWxlY3RlZENhdGVnb3J5SWQgPT09IHdpZGdldC5ncm91cC5uYW1lO1xuICAgIH07XG5cbiAgICByZXR1cm4gb3JkZXJCeShcbiAgICAgIHRoaXMuZGlzcGxheVdpZGdldHMoKS5maWx0ZXIoKHcpID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlc0NhdGVnb3J5ID0gZmlsdGVyQnlDYXRlZ29yeSh3KTtcbiAgICAgICAgY29uc3QgbWF0Y2hlc1NlYXJjaCA9XG4gICAgICAgICAgIXNlYXJjaCB8fCB3LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSB8fCB3LmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCk7XG4gICAgICAgIHJldHVybiBtYXRjaGVzQ2F0ZWdvcnkgJiYgbWF0Y2hlc1NlYXJjaDtcbiAgICAgIH0pLFxuICAgICAgWydwaW5uZWQnLCAndGl0bGUnXSxcbiAgICAgIFsnZGVzYycsICdhc2MnXSxcbiAgICApO1xuICB9KTtcblxuICAvLyBQaW5uZWQgYW5kIHJlZ3VsYXIgbGlzdHNcbiAgcHJvdGVjdGVkIHBpbm5lZExpc3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yZGVyZWRMaXN0KCkuZmlsdGVyKChjKSA9PiBjLnBpbm5lZCkpO1xuICBwcm90ZWN0ZWQgcmVndWxhckxpc3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yZGVyZWRMaXN0KCkuZmlsdGVyKChjKSA9PiAhYy5waW5uZWQpKTtcblxuICAvLyBNYXBwZWQgZGF0YSBmb3IgZ2VuZXJpYyB3aWRnZXQgaXRlbXNcbiAgcHJvdGVjdGVkIHBpbm5lZFdpZGdldEl0ZW1zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5waW5uZWRMaXN0KCkubWFwKG1hcFRvV2lkZ2V0SXRlbURhdGEpKTtcbiAgcHJvdGVjdGVkIHJlZ3VsYXJXaWRnZXRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVndWxhckxpc3QoKS5tYXAobWFwVG9XaWRnZXRJdGVtRGF0YSkpO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnR5IHRvIGNoZWNrIGlmIHdlJ3JlIGluIHNlYXJjaCBtb2RlXG4gIHByb3RlY3RlZCBpc1NlYXJjaE1vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlYXJjaFRlcm0oKS50cmltKCkubGVuZ3RoID4gMCk7XG5cbiAgLy8gQ29tcHV0ZWQgcHJvcGVydHkgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSByZXN1bHRzXG4gIHByb3RlY3RlZCBoYXNSZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmRlcmVkTGlzdCgpLmxlbmd0aCA+IDApO1xuXG4gIHByb3RlY3RlZCBoYW5kbGVXaWRnZXRDbGljayhjbGlja0V2ZW50OiBBWFBXaWRnZXRJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZXZlbnQsIHdpZGdldCB9ID0gY2xpY2tFdmVudDtcbiAgICBjb25zdCBvcmlnaW5hbFdpZGdldCA9IHdpZGdldC5kYXRhIGFzIEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZDtcblxuICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZFdpZGdldHMoKTtcbiAgICAgIGNvbnN0IGlzQWxyZWFkeVNlbGVjdGVkID0gY3VycmVudFNlbGVjdGlvbi5zb21lKCh3KSA9PiB3ID09PSBvcmlnaW5hbFdpZGdldCk7XG5cbiAgICAgIGlmIChpc0FscmVhZHlTZWxlY3RlZCkge1xuICAgICAgICAvLyBEZXNlbGVjdCB3aWRnZXQgaWYgYWxyZWFkeSBzZWxlY3RlZFxuICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5zZXQoY3VycmVudFNlbGVjdGlvbi5maWx0ZXIoKHcpID0+IHcgIT09IG9yaWdpbmFsV2lkZ2V0KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgd2lkZ2V0IHRvIHNlbGVjdGlvblxuICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5zZXQoWy4uLmN1cnJlbnRTZWxlY3Rpb24sIG9yaWdpbmFsV2lkZ2V0XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIENUUkwgaXMgbm90IHByZXNzZWQsIHNlbGVjdCBvbmx5IHRoZSBjbGlja2VkIHdpZGdldFxuICAgICAgdGhpcy5jbG9zZSh7IHdpZGdldHM6IFtvcmlnaW5hbFdpZGdldF0gfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVdpZGdldFBpbkNsaWNrKGNsaWNrRXZlbnQ6IEFYUFdpZGdldEl0ZW1DbGlja0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyB3aWRnZXQgfSA9IGNsaWNrRXZlbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxXaWRnZXQgPSB3aWRnZXQuZGF0YSBhcyBBWFBEaXNwbGF5V2lkZ2V0UHJvdmlkZWQ7XG5cbiAgICBvcmlnaW5hbFdpZGdldC5waW5uZWQgPSAhb3JpZ2luYWxXaWRnZXQucGlubmVkO1xuXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgcGlubmVkIHdpZGdldHMgZnJvbSBzZXR0aW5nc1xuICAgIGxldCBwaW5uZWRXaWRnZXRzID0gKGF3YWl0IHRoaXMuc2V0dGluZ1NlcnZpY2UuZ2V0PHN0cmluZ1tdPih0aGlzLnBpbm5lZFNldHRpbmdLZXkpKSB8fCBbXTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgbGlzdCBvZiBwaW5uZWQgd2lkZ2V0cyBiYXNlZCBvbiB0aGUgcGlubmVkIHN0YXR1c1xuICAgIGlmIChvcmlnaW5hbFdpZGdldC5waW5uZWQpIHtcbiAgICAgIGlmICghcGlubmVkV2lkZ2V0cy5pbmNsdWRlcyhvcmlnaW5hbFdpZGdldC5pZCkpIHtcbiAgICAgICAgcGlubmVkV2lkZ2V0cy5wdXNoKG9yaWdpbmFsV2lkZ2V0LmlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGlubmVkV2lkZ2V0cyA9IHBpbm5lZFdpZGdldHMuZmlsdGVyKChuYW1lKSA9PiBuYW1lICE9PSBvcmlnaW5hbFdpZGdldC5pZCk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSB0aGUgdXBkYXRlZCBsaXN0IG9mIHBpbm5lZCB3aWRnZXRzXG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpLnNldCh0aGlzLnBpbm5lZFNldHRpbmdLZXksIHBpbm5lZFdpZGdldHMpO1xuXG4gICAgLy8gVHJpZ2dlciBhIHJlLXJlbmRlciBvZiB0aGUgd2lkZ2V0c1xuICAgIHRoaXMuZGlzcGxheVdpZGdldHMuc2V0KFsuLi50aGlzLmRpc3BsYXlXaWRnZXRzKCldKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGEgd2lkZ2V0IGlzIHNlbGVjdGVkXG4gIHByb3RlY3RlZCBpc1dpZGdldFNlbGVjdGVkKHdpZGdldDogQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRXaWRnZXRzKCkuaW5jbHVkZXMod2lkZ2V0KTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGEgZ2VuZXJpYyB3aWRnZXQgaXRlbSBpcyBzZWxlY3RlZFxuICBwcm90ZWN0ZWQgaXNXaWRnZXRJdGVtU2VsZWN0ZWQod2lkZ2V0SXRlbTogQVhQV2lkZ2V0SXRlbURhdGEpOiBib29sZWFuIHtcbiAgICBjb25zdCBvcmlnaW5hbFdpZGdldCA9IHdpZGdldEl0ZW0uZGF0YSBhcyBBWFBEaXNwbGF5V2lkZ2V0UHJvdmlkZWQ7XG4gICAgcmV0dXJuIHRoaXMuaXNXaWRnZXRTZWxlY3RlZChvcmlnaW5hbFdpZGdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29uZmlybVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKHsgd2lkZ2V0czogdGhpcy5zZWxlY3RlZFdpZGdldHMoKSB9KTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBDYXRlZ29yeSBUcmVlXG5cbiAgcHJvdGVjdGVkIHByb3ZpZGVMYXp5VHJlZVZpZXcgPSBhc3luYyAoc2VsZWN0ZWRJdGVtSWQ/OiBzdHJpbmcgfCBudW1iZXIpOiBQcm9taXNlPEFYUENhdGVnb3J5RGlzcGxheU1vZGVsW10+ID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRJdGVtSWQgPT0gJ2FsbCcpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmNhdGVnb3J5RW50aXR5U2VydmljZS5nZXRSb290cyh7fSk7XG4gICAgICBjb25zdCBpdGVtcyA9IGNhdGVnb3JpZXMuaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIGhhc0NoaWxkOiBpdGVtLmNoaWxkcmVuQ291bnQgPiAwLFxuICAgICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzKCkuaW5jbHVkZXMoaXRlbS5pZCksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZEl0ZW1JZCkge1xuICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5jYXRlZ29yeUVudGl0eVNlcnZpY2UuZ2V0Q2hpbGRyZW4oeyBwYXJlbnRJZDogc2VsZWN0ZWRJdGVtSWQgYXMgc3RyaW5nIH0pXG4gICAgICApPy5pdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgIGhhc0NoaWxkOiBpdGVtLmNoaWxkcmVuQ291bnQgPiAwLFxuICAgICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzKCkuaW5jbHVkZXMoaXRlbS5pZCksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGhhc0NoaWxkOiB0cnVlLFxuICAgICAgICAgIGlkOiAnYWxsJyxcbiAgICAgICAgICB0aXRsZTogJ0FsbCBJdGVtcycsXG4gICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgIH0gYXMgQVhQQ2F0ZWdvcnlEaXNwbGF5TW9kZWwsXG4gICAgICBdO1xuICAgIH1cbiAgfTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDYXRlZ29yeSA9IHNpZ25hbDxBWFBDYXRlZ29yeURpc3BsYXlNb2RlbCB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGl0ZW0gPSBldmVudC5kYXRhIGFzIEFYUENhdGVnb3J5RGlzcGxheU1vZGVsO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoaXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ29sbGFwc2VDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpdGVtID0gZXZlbnQuZGF0YSBhcyBBWFBDYXRlZ29yeURpc3BsYXlNb2RlbDtcbiAgICBjb25zdCBjdXJyZW50RXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkQ2F0ZWdvcnlJZHMoKTtcblxuICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAvLyBDYXRlZ29yeSB3YXMgZXhwYW5kZWQgLSBhZGQgdG8gZXhwYW5kZWQgbGlzdFxuICAgICAgaWYgKCFjdXJyZW50RXhwYW5kZWQuaW5jbHVkZXMoaXRlbS5pZCkpIHtcbiAgICAgICAgY29uc3QgbmV3RXhwYW5kZWQgPSBbLi4uY3VycmVudEV4cGFuZGVkLCBpdGVtLmlkXTtcbiAgICAgICAgdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzLnNldChuZXdFeHBhbmRlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2NvcGUoQVhQUGxhdGZvcm1TY29wZS5Vc2VyKS5zZXQodGhpcy5leHBhbmRlZENhdGVnb3JpZXNLZXksIG5ld0V4cGFuZGVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2F0ZWdvcnkgd2FzIGNvbGxhcHNlZCAtIHJlbW92ZSBmcm9tIGV4cGFuZGVkIGxpc3RcbiAgICAgIGNvbnN0IG5ld0V4cGFuZGVkID0gY3VycmVudEV4cGFuZGVkLmZpbHRlcigoaWQpID0+IGlkICE9PSBpdGVtLmlkKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRDYXRlZ29yeUlkcy5zZXQobmV3RXhwYW5kZWQpO1xuICAgICAgYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpLnNldCh0aGlzLmV4cGFuZGVkQ2F0ZWdvcmllc0tleSwgbmV3RXhwYW5kZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZCByZWdpb25cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGxnOmF4LWgtWzYwdmhdXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1wLTIgYXgtc3VyZmFjZS1sb3dlc3QgYXgtYm9yZGVyLWIgYXgtZmxleC1ub25lXCI+XG4gICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgIGxvb2s9XCJmaWxsXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBCdXR0b24sIFRleHQsIC4uLlwiXG4gICAgICBjbGFzcz1cImF4LXNtXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICBbZGVsYXlUaW1lXT1cIjMwMFwiXG4gICAgPlxuICAgICAgPGF4LWNsZWFyLWJ1dHRvbj48L2F4LWNsZWFyLWJ1dHRvbj5cbiAgICA8L2F4LXNlYXJjaC1ib3g+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWdyb3cgYXgtaC1mdWxsXCI+XG4gICAgPCEtLSBDYXRlZ29yeSBUcmVlIC0gSGlkZGVuIGluIHNlYXJjaCBtb2RlIC0tPlxuICAgIEBpZiAoIWlzU2VhcmNoTW9kZSgpKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1oLWZ1bGwgYXgtcC0yIGF4LW92ZXJmbG93LWF1dG8gYXgtdy0xLzMgYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1zdGFydCBheC1zdXJmYWNlLWxvd2VzdCBheC1ib3JkZXItZVwiXG4gICAgICA+XG4gICAgICAgIDxheC10cmVlLXZpZXctbGVnYWN5XG4gICAgICAgICAgW3Nob3dDaGVja2JveF09XCJmYWxzZVwiXG4gICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJjYXRlZ29yeVRlbXBsYXRlXCJcbiAgICAgICAgICBbdGV4dEZpZWxkXT1cIid0aXRsZSdcIlxuICAgICAgICAgIFtoYXNDaGlsZEZpZWxkXT1cIidoYXNDaGlsZCdcIlxuICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgIFtleHBhbmRlZEZpZWxkXT1cIidleHBhbmRlZCdcIlxuICAgICAgICAgIFtpdGVtc109XCJwcm92aWRlTGF6eVRyZWVWaWV3XCJcbiAgICAgICAgICAob25Ob2RlQ2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChvbkNvbGxhcHNlZENoYW5nZWQpPVwiaGFuZGxlQ29sbGFwc2VDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICA8L2F4LXRyZWUtdmlldy1sZWdhY3k+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXRlZ29yeVRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZm9sZGVyIGF4LXRleHQteWVsbG93LTUwMCBmYS1md1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICB7eyBpdGVtLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gV2lkZ2V0IEdyaWQgLSBGdWxsIHdpZHRoIGluIHNlYXJjaCBtb2RlLCAyLzMgd2lkdGggb3RoZXJ3aXNlIC0tPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJcbiAgICAgICAgaXNTZWFyY2hNb2RlKClcbiAgICAgICAgICA/ICdheC1mbGV4IGF4LWgtZnVsbCBheC1mbGV4LWNvbCBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuJ1xuICAgICAgICAgIDogJ2F4LWZsZXggYXgtaC1mdWxsIGF4LWZsZXgtY29sIGF4LXctMi8zIGF4LW92ZXJmbG93LWhpZGRlbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgQGlmIChoYXNSZXN1bHRzKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtcC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIEBmb3IgKHdpZGdldEl0ZW0gb2YgcGlubmVkV2lkZ2V0SXRlbXMoKTsgdHJhY2sgd2lkZ2V0SXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICA8YXhwLXdpZGdldC1pdGVtXG4gICAgICAgICAgICAgICAgW3dpZGdldF09XCJ3aWRnZXRJdGVtXCJcbiAgICAgICAgICAgICAgICBbaXNTZWxlY3RlZF09XCJpc1dpZGdldEl0ZW1TZWxlY3RlZCh3aWRnZXRJdGVtKVwiXG4gICAgICAgICAgICAgICAgKG9uV2lkZ2V0Q2xpY2spPVwiaGFuZGxlV2lkZ2V0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG9uUGluQ2xpY2spPVwiaGFuZGxlV2lkZ2V0UGluQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9heHAtd2lkZ2V0LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChwaW5uZWRXaWRnZXRJdGVtcygpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGhyIGNsYXNzPVwiYXgtbXktNCBheC1ib3JkZXItZGFzaGVkXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIEBmb3IgKHdpZGdldEl0ZW0gb2YgcmVndWxhcldpZGdldEl0ZW1zKCk7IHRyYWNrIHdpZGdldEl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgPGF4cC13aWRnZXQtaXRlbVxuICAgICAgICAgICAgICAgIFt3aWRnZXRdPVwid2lkZ2V0SXRlbVwiXG4gICAgICAgICAgICAgICAgW2lzU2VsZWN0ZWRdPVwiaXNXaWRnZXRJdGVtU2VsZWN0ZWQod2lkZ2V0SXRlbSlcIlxuICAgICAgICAgICAgICAgIChvbldpZGdldENsaWNrKT1cImhhbmRsZVdpZGdldENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvblBpbkNsaWNrKT1cImhhbmRsZVdpZGdldFBpbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvYXhwLXdpZGdldC1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtc2VhcmNoXCJcbiAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICBpc1NlYXJjaE1vZGUoKVxuICAgICAgICAgICAgICA/ICdAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmVtcHR5LXN0YXRlcy5uby1zZWFyY2gtcmVzdWx0cy50aXRsZSdcbiAgICAgICAgICAgICAgOiAnQGZvcm0tdGVtcGxhdGUtbWFuYWdlbWVudDpkZXNpZ25lci5jb21wb25lbnRzLnRlbXBsYXRlLXBpY2tlci5lbXB0eS1zdGF0ZXMubm8tY2F0ZWdvcnktcmVzdWx0cy50aXRsZSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIGlzU2VhcmNoTW9kZSgpXG4gICAgICAgICAgICAgID8gJ0Bmb3JtLXRlbXBsYXRlLW1hbmFnZW1lbnQ6ZGVzaWduZXIuY29tcG9uZW50cy50ZW1wbGF0ZS1waWNrZXIuZW1wdHktc3RhdGVzLm5vLXNlYXJjaC1yZXN1bHRzLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgICA6ICdAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmVtcHR5LXN0YXRlcy5uby1jYXRlZ29yeS1yZXN1bHRzLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGlzU2VhcmNoTW9kZSgpKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgIGxvb2s9XCJibGFua1wiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIidAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmNsZWFyLXNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtbXQtNFwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInNlYXJjaFRlcm0uc2V0KCcnKVwiXG4gICAgICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5AaWYgKHNlbGVjdGVkV2lkZ2V0cygpLmxlbmd0aCkge1xuICA8YXgtZm9vdGVyPlxuICAgIDxheC1zdWZmaXg+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGxvb2s9XCJzb2xpZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHRleHQ9XCJ7eyBzZWxlY3RlZFdpZGdldHMoKS5sZW5ndGggfX0gU2VsZWN0ZWRcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDb25maXJtU2VsZWN0aW9uKClcIlxuICAgICAgPjwvYXgtYnV0dG9uPlxuICAgIDwvYXgtc3VmZml4PlxuICA8L2F4LWZvb3Rlcj5cbn1cbiJdfQ=="],"names":["i6","i7"],"mappings":"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"}
|
|
@@ -399,7 +399,7 @@ class AXPTemplateWidgetProviderService {
|
|
|
399
399
|
return null;
|
|
400
400
|
}
|
|
401
401
|
async chooseTemplate() {
|
|
402
|
-
const com = await import('./acorex-modules-form-template-management-template-picker.component-
|
|
402
|
+
const com = await import('./acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs').then((c) => c.AXPTemplateWidgetPickerComponent);
|
|
403
403
|
const widgets = await this.items({
|
|
404
404
|
skip: 0,
|
|
405
405
|
take: 100,
|
|
@@ -485,19 +485,19 @@ class AXMPartyManagementEntityProvider {
|
|
|
485
485
|
if (moduleName == RootConfig.module.name) {
|
|
486
486
|
switch (entityName) {
|
|
487
487
|
case RootConfig.entities.industry.name:
|
|
488
|
-
return (await import('./acorex-modules-party-management-industry.entity-
|
|
488
|
+
return (await import('./acorex-modules-party-management-industry.entity-E0RPqKYR.mjs')).industryFactory(this.injector);
|
|
489
489
|
case RootConfig.entities.party.name:
|
|
490
|
-
return (await import('./acorex-modules-party-management-party.entity-
|
|
490
|
+
return (await import('./acorex-modules-party-management-party.entity-Czvx5O4_.mjs')).partyFactory(this.injector);
|
|
491
491
|
case RootConfig.entities.partyRole.name:
|
|
492
|
-
return (await import('./acorex-modules-party-management-party-role.entity-
|
|
492
|
+
return (await import('./acorex-modules-party-management-party-role.entity-B_fesIiR.mjs')).partyRoleFactory(this.injector);
|
|
493
493
|
case RootConfig.entities.partyRelationship.name:
|
|
494
|
-
return (await import('./acorex-modules-party-management-party-relationship.entity-
|
|
494
|
+
return (await import('./acorex-modules-party-management-party-relationship.entity-rZHjByaY.mjs')).partyRelationshipFactory(this.injector);
|
|
495
495
|
case RootConfig.entities.partyRelationshipType?.name:
|
|
496
496
|
return (await Promise.resolve().then(function () { return partyRelationshipType_entity; })).partyRelationshipTypeFactory(this.injector);
|
|
497
497
|
case RootConfig.entities.partyIdentifierType.name:
|
|
498
|
-
return (await import('./acorex-modules-party-management-party-identifier-type.entity-
|
|
498
|
+
return (await import('./acorex-modules-party-management-party-identifier-type.entity-COMURXUX.mjs')).partyIdentifierTypeFactory(this.injector);
|
|
499
499
|
case RootConfig.entities.partyIdentifier.name:
|
|
500
|
-
return (await import('./acorex-modules-party-management-party-identifier.entity-
|
|
500
|
+
return (await import('./acorex-modules-party-management-party-identifier.entity-C6b-Vrgs.mjs')).partyIdentifierFactory(this.injector);
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
503
|
return null;
|
|
@@ -907,4 +907,4 @@ var setting_provider = /*#__PURE__*/Object.freeze({
|
|
|
907
907
|
*/
|
|
908
908
|
|
|
909
909
|
export { AXMIndustryService as A, RootConfig as R, AXMPartyService as a, AXMPartyRoleService as b, AXMPartyRelationshipService as c, AXMPartyIdentifierTypeService as d, AXMPartyIdentifierService as e, AXMPartyManagementModule as f, AXMPartyManagementEntityProvider as g, AXMMenuProvider as h, AXMSearchCommandProvider as i, AXMSettingProvider as j };
|
|
910
|
-
//# sourceMappingURL=acorex-modules-party-management-acorex-modules-party-management-
|
|
910
|
+
//# sourceMappingURL=acorex-modules-party-management-acorex-modules-party-management-DB3H-49E.mjs.map
|