@acorex/modules 20.2.0-next.0 → 20.2.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar-management/index.d.ts +47 -26
- package/fesm2022/acorex-modules-calendar-management.mjs +353 -315
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-acorex-modules-common-DQESb8jf.mjs → acorex-modules-common-acorex-modules-common-D06CT4CO.mjs} +6 -16
- package/fesm2022/acorex-modules-common-acorex-modules-common-D06CT4CO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-common-search-popup.component-CpFvcrxw.mjs → acorex-modules-common-search-popup.component-DbTj01Wz.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-search-popup.component-CpFvcrxw.mjs.map → acorex-modules-common-search-popup.component-DbTj01Wz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-settings.provider-ha75F6g5.mjs → acorex-modules-common-settings.provider-DPVsF4c9.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-settings.provider-ha75F6g5.mjs.map → acorex-modules-common-settings.provider-DPVsF4c9.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +3 -3
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs → acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs} +411 -51
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs → acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs.map → acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs → acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs} +4 -4
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-bzA7fJZW.mjs → acorex-modules-document-management-details-view.component-CzTg3hha.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-bzA7fJZW.mjs.map → acorex-modules-document-management-details-view.component-CzTg3hha.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs → acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs.map → acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DrkSd6Rv.mjs → acorex-modules-document-management-drive.component-TzRLr7rb.mjs} +7 -7
- package/fesm2022/{acorex-modules-document-management-drive.component-DrkSd6Rv.mjs.map → acorex-modules-document-management-drive.component-TzRLr7rb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs → acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs.map → acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs → acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs.map → acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs → acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs → acorex-modules-document-management-list-view.component-CWGGArxw.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs.map → acorex-modules-document-management-list-view.component-CWGGArxw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs → acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs} +8 -9
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs → acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs.map → acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs → acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs.map → acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs → acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs → acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs → acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs.map → acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs → acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs.map → acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs → acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs} +3 -3
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs → acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs} +2 -2
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs.map → acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs → acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs → acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs.map → acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +2 -2
- package/fesm2022/acorex-modules-platform-management.mjs +43 -19
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +48 -38
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs → acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs} +2 -2
- package/fesm2022/acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-enYapFRb.mjs +213 -0
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-enYapFRb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs → acorex-modules-workflow-management-task-board.page-CPL7HwN4.mjs} +21 -20
- package/fesm2022/acorex-modules-workflow-management-task-board.page-CPL7HwN4.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -143
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +12 -12
- package/workflow-management/index.d.ts +11 -2
- package/fesm2022/acorex-modules-common-acorex-modules-common-DQESb8jf.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs.map +0 -1
@@ -261,7 +261,7 @@ class AXPReportCreateRootComponent {
|
|
261
261
|
// Angular
|
262
262
|
CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
263
263
|
// ACoreX
|
264
|
-
AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.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: AXLabelModule }, { kind: "component", type: i5.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i6.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i7.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.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: "ngmodule", type: AXStepWizardModule }, { kind: "component", type: i9.AXStepWizardComponent, selector: "ax-step-wizard", inputs: ["connector", "size", "look", "changeStep", "orientation", "content"], outputs: ["stepChanged"] }, { kind: "component", type: i9.AXStepWizardItemComponent, selector: "ax-step-wizard-item", inputs: ["disabled", "color", "step", "label", "description", "customTemplate", "active", "passed", "look", "state", "id"], outputs: ["activeChange", "passedChange", "lookChange", "stateChange"] }, { kind: "directive", type: i9.AXStepWizardContentDirective, selector: "[axStepWizardContent]", inputs: ["axStepWizardContent"], exportAs: ["axStepWizardContent"] }], animations: [
|
264
|
+
AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.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: AXLabelModule }, { kind: "component", type: i5.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i6.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i7.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.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: "ngmodule", type: AXStepWizardModule }, { kind: "component", type: i9.AXStepWizardComponent, selector: "ax-step-wizard", inputs: ["connector", "size", "look", "changeStep", "orientation", "content"], outputs: ["stepChanged"] }, { kind: "component", type: i9.AXStepWizardItemComponent, selector: "ax-step-wizard-item", inputs: ["disabled", "color", "step", "label", "description", "customTemplate", "active", "passed", "look", "state", "id"], outputs: ["activeChange", "passedChange", "lookChange", "stateChange"] }, { kind: "directive", type: i9.AXStepWizardContentDirective, selector: "[axStepWizardContent]", inputs: ["axStepWizardContent"], exportAs: ["axStepWizardContent"] }], animations: [
|
265
265
|
trigger('fadeIn', [
|
266
266
|
transition(':enter', [
|
267
267
|
style({ opacity: 0, transform: 'translateY(20px)' }),
|
@@ -299,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
299
299
|
}] });
|
300
300
|
|
301
301
|
export { AXPReportCreateRootComponent };
|
302
|
-
//# sourceMappingURL=acorex-modules-report-management-report-create-root.component-
|
302
|
+
//# sourceMappingURL=acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs.map
|
package/fesm2022/acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs","sources":["../tmp-esm2022/report-management/lib/features/report/create/report-create-root/report-create-root.component.js"],"sourcesContent":["import { Component, ViewEncapsulation, computed, inject, signal, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXStepWizardModule } from '@acorex/components/step-wizard';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXToastService } from '@acorex/components/toast';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/form\";\nimport * as i3 from \"@acorex/components/text-box\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/label\";\nimport * as i6 from \"@acorex/components/check-box\";\nimport * as i7 from \"@acorex/components/select-box\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/step-wizard\";\n//#endregion\nexport class AXPReportCreateRootComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.toastService = inject(AXToastService);\n //#endregion\n //#region ---- ViewChild & Signals ----\n this.reportWizard = viewChild('reportWizard', ...(ngDevMode ? [{ debugName: \"reportWizard\" }] : []));\n this.isValidating = signal(false, ...(ngDevMode ? [{ debugName: \"isValidating\" }] : []));\n this.isSaving = signal(false, ...(ngDevMode ? [{ debugName: \"isSaving\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.canProceed = computed(() => {\n return this.validateCurrentStep();\n }, ...(ngDevMode ? [{ debugName: \"canProceed\" }] : []));\n //#endregion\n //#region ---- Form Data ----\n this.formData = {\n name: '',\n title: '',\n category: '',\n dataSource: '',\n template: '',\n formats: {},\n isScheduled: false,\n scheduleFrequency: '',\n parameters: []\n };\n //#endregion\n //#region ---- Step Definitions ----\n this.steps = [\n {\n id: 'basic-info',\n title: 'Basic Information',\n subtitle: 'Enter report details'\n },\n {\n id: 'configuration',\n title: 'Configuration',\n subtitle: 'Configure report settings'\n },\n {\n id: 'parameters',\n title: 'Parameters',\n subtitle: 'Define report parameters'\n },\n {\n id: 'review',\n title: 'Review & Finish',\n subtitle: 'Review and complete'\n }\n ];\n //#endregion\n //#region ---- Data Sources ----\n this.categories = [\n { id: 'financial', name: 'Financial Reports' },\n { id: 'operational', name: 'Operational Reports' },\n { id: 'analytics', name: 'Analytics Reports' },\n { id: 'compliance', name: 'Compliance Reports' }\n ];\n this.dataSources = [\n { id: 'users', title: 'Users Data' },\n { id: 'orders', title: 'Orders Data' },\n { id: 'products', title: 'Products Data' },\n { id: 'transactions', title: 'Transactions Data' },\n { id: 'logs', title: 'System Logs' }\n ];\n this.templates = [\n { id: 'standard', name: 'Standard Template' },\n { id: 'detailed', name: 'Detailed Template' },\n { id: 'summary', name: 'Summary Template' },\n { id: 'custom', name: 'Custom Template' }\n ];\n this.formats = [\n { id: 'pdf', name: 'PDF' },\n { id: 'excel', name: 'Excel' },\n { id: 'csv', name: 'CSV' },\n { id: 'html', name: 'HTML' }\n ];\n this.frequencies = [\n { id: 'daily', name: 'Daily' },\n { id: 'weekly', name: 'Weekly' },\n { id: 'monthly', name: 'Monthly' },\n { id: 'yearly', name: 'Yearly' }\n ];\n this.parameterTypes = [\n { id: 'string', name: 'Text' },\n { id: 'number', name: 'Number' },\n { id: 'date', name: 'Date' },\n { id: 'boolean', name: 'Boolean' },\n { id: 'select', name: 'Selection' }\n ];\n }\n //#endregion\n //#region ---- Lifecycle Methods ----\n ngOnInit() {\n this.initializeFormData();\n }\n ngOnDestroy() {\n // Cleanup if needed\n }\n //#endregion\n //#region ---- Step Navigation Methods ----\n async nextStep() {\n if (this.isValidating())\n return;\n this.isValidating.set(true);\n try {\n const isValid = this.validateCurrentStep();\n if (isValid) {\n const wizard = this.reportWizard();\n if (wizard) {\n wizard.next();\n }\n }\n else {\n this.toastService.warning('Please complete all required fields before proceeding.');\n }\n }\n catch (error) {\n this.toastService.danger('Validation failed. Please try again.');\n }\n finally {\n this.isValidating.set(false);\n }\n }\n async finishWizard() {\n if (this.isSaving())\n return;\n this.isSaving.set(true);\n try {\n const isValid = await this.validateAllSteps();\n if (isValid) {\n await this.saveReport();\n this.toastService.success('Report created successfully!');\n // Navigate to report list or show success message\n }\n else {\n this.toastService.warning('Please complete all required fields.');\n }\n }\n catch (error) {\n this.toastService.danger('Failed to create report. Please try again.');\n console.error('Error creating report:', error);\n }\n finally {\n this.isSaving.set(false);\n }\n }\n //#endregion\n //#region ---- Parameter Management ----\n addParameter() {\n const newParameter = {\n id: `param_${Date.now()}`,\n name: '',\n type: 'string',\n required: false\n };\n this.formData.parameters.push(newParameter);\n }\n removeParameter(index) {\n this.formData.parameters.splice(index, 1);\n }\n //#endregion\n //#region ---- Validation Methods ----\n validateCurrentStep() {\n // Since we can't reliably get current step index from wizard,\n // we'll validate all steps and let the wizard handle navigation\n return this.validateBasicInfo() || this.validateConfiguration() ||\n this.validateParameters() || this.validateReview();\n }\n validateBasicInfo() {\n return !!(this.formData.name?.trim() && this.formData.title?.trim() &&\n this.formData.category && this.formData.dataSource);\n }\n validateConfiguration() {\n const hasSelectedFormat = Object.values(this.formData.formats).some(selected => selected);\n const scheduleValid = !this.formData.isScheduled || !!this.formData.scheduleFrequency;\n return !!(this.formData.template && hasSelectedFormat && scheduleValid);\n }\n validateParameters() {\n return this.formData.parameters.every(param => param.name?.trim() && param.type);\n }\n validateReview() {\n return this.validateBasicInfo() && this.validateConfiguration() && this.validateParameters();\n }\n async validateAllSteps() {\n // Validate each step's form individually\n const basicValid = this.validateBasicInfo();\n const configValid = this.validateConfiguration();\n const paramsValid = this.validateParameters();\n const reviewValid = this.validateReview();\n return basicValid && configValid && paramsValid && reviewValid;\n }\n //#endregion\n //#region ---- Helper Methods ----\n initializeFormData() {\n // Initialize formats object\n this.formats.forEach(format => {\n this.formData.formats[format.id] = false;\n });\n // Set default PDF format\n this.formData.formats['pdf'] = true;\n }\n async saveReport() {\n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000));\n console.log('Saving report with data:', this.formData);\n // Here you would typically call a service to save the report\n // Example: await this.reportService.createReport(this.formData);\n }\n getCategoryName(categoryId) {\n const category = this.categories.find(c => c.id === categoryId);\n return category?.name || categoryId;\n }\n getTemplateName(templateId) {\n const template = this.templates.find(t => t.id === templateId);\n return template?.name || templateId;\n }\n getSelectedFormats() {\n const selectedFormats = Object.entries(this.formData.formats)\n .filter(([_, selected]) => selected)\n .map(([formatId, _]) => {\n const format = this.formats.find(f => f.id === formatId);\n return format?.name || formatId;\n });\n return selectedFormats.join(', ') || 'None';\n }\n getDataSourceTitle(dataSourceId) {\n const dataSource = this.dataSources.find(d => d.id === dataSourceId);\n return dataSource?.title || dataSourceId;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXPReportCreateRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: AXPReportCreateRootComponent, isStandalone: true, selector: \"axp-report-create-root\", providers: [], viewQueries: [{ propertyName: \"reportWizard\", first: true, predicate: [\"reportWizard\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-w-full ax-max-w-4xl ax-mx-auto ax-p-6\\\">\\n <div class=\\\"step-wizard-header ax-text-center ax-mb-8\\\">\\n <h2 class=\\\"ax-text-2xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Create New Report</h2>\\n <p class=\\\"ax-text-gray-600\\\">Follow these steps to create your custom report</p>\\n </div>\\n\\n <ax-step-wizard\\n [content]=\\\"wizardContent\\\"\\n [look]=\\\"'rounded-icon'\\\"\\n #reportWizard\\n >\\n <ax-step-wizard-item [label]=\\\"'Basic Information'\\\" [id]=\\\"'basic'\\\">\\n <ax-icon class=\\\"fas fa-info-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Basic Information</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Enter the basic details for your report</p>\\n </div>\\n \\n <ax-form #basicForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Report Name *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.name\\\"\\n placeholder=\\\"Enter report name\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportName\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Report Title *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.title\\\"\\n placeholder=\\\"Enter report title\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTitle\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Category *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.category\\\"\\n [dataSource]=\\\"categories\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select category\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportCategory\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Data Source *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.dataSource\\\"\\n [dataSource]=\\\"dataSources\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'title'\\\"\\n placeholder=\\\"Select data source\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportDataSource\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Configuration'\\\" [id]=\\\"'config'\\\">\\n <ax-icon class=\\\"fas fa-cog\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Configuration</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Configure your report settings</p>\\n </div>\\n \\n <ax-form #configForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Template *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.template\\\"\\n [dataSource]=\\\"templates\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select template\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTemplate\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Output Formats *</ax-label>\\n <div class=\\\"format-selection ax-grid ax-grid-cols-2 ax-gap-3\\\">\\n @for (format of formats; track format.id) {\\n <div class=\\\"format-option ax-p-3 ax-border ax-border-gray-200 ax-rounded-lg ax-transition-colors\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.formats[format.id]\\\"\\n [name]=\\\"'format_' + format.id\\\">\\n {{ format.name }}\\n </ax-check-box>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n\\n <ax-form-field class=\\\"md:ax-col-span-2\\\">\\n <div class=\\\"schedule-section ax-space-y-4\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.isScheduled\\\"\\n name=\\\"isScheduled\\\">\\n Enable scheduled reports\\n </ax-check-box>\\n \\n @if (formData.isScheduled) {\\n <div class=\\\"schedule-options ax-pl-6 ax-border-l-2 ax-border-primary/20\\\">\\n <ax-form-field>\\n <ax-label>Frequency</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.scheduleFrequency\\\"\\n [dataSource]=\\\"frequencies\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select frequency\\\"\\n name=\\\"scheduleFrequency\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Parameters'\\\" [id]=\\\"'parameters'\\\">\\n <ax-icon class=\\\"fas fa-sliders-h\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Parameters</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Define parameters for your report</p>\\n </div>\\n \\n <div class=\\\"parameters-section ax-space-y-6\\\">\\n @if (formData.parameters.length > 0) {\\n <div class=\\\"parameters-list ax-space-y-4\\\">\\n @for (param of formData.parameters; track param.id; let i = $index) {\\n <div class=\\\"parameter-item ax-p-4 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50 ax-space-y-4\\\">\\n <div class=\\\"parameter-fields ax-grid ax-grid-cols-1 md:ax-grid-cols-3 ax-gap-4\\\">\\n <ax-form-field>\\n <ax-label>Parameter Name</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"param.name\\\"\\n placeholder=\\\"Enter parameter name\\\"\\n [name]=\\\"'param_name_' + i\\\">\\n </ax-text-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-label>Type</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"param.type\\\"\\n [dataSource]=\\\"parameterTypes\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select type\\\"\\n [name]=\\\"'param_type_' + i\\\">\\n </ax-select-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-check-box \\n [(ngModel)]=\\\"param.required\\\"\\n [name]=\\\"'param_required_' + i\\\">\\n Required\\n </ax-check-box>\\n </ax-form-field>\\n </div>\\n \\n <ax-button \\n look=\\\"ghost\\\"\\n color=\\\"danger\\\"\\n size=\\\"small\\\"\\n (onClick)=\\\"removeParameter(i)\\\">\\n Remove\\n </ax-button>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"no-parameters ax-text-center ax-py-8 ax-text-gray-500\\\">\\n <p>No parameters defined yet.</p>\\n </div>\\n }\\n \\n <div class=\\\"add-parameter-section ax-text-center\\\">\\n <ax-button \\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"addParameter()\\\">\\n + Add Parameter\\n </ax-button>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Review'\\\" [id]=\\\"'review'\\\">\\n <ax-icon class=\\\"fas fa-check-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Review & Confirm</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Review your report configuration before creating</p>\\n </div>\\n \\n <div class=\\\"review-sections ax-space-y-6\\\">\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Basic Information</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Name:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.name || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Title:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.title || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Category:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getCategoryName(formData.category) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Data Source:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getDataSourceTitle(formData.dataSource) || 'Not selected' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Configuration</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Template:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getTemplateName(formData.template) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Formats:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getSelectedFormats() || 'None selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Scheduled:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.isScheduled ? 'Yes - ' + formData.scheduleFrequency : 'No' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Parameters</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n @if (formData.parameters.length > 0) {\\n @for (param of formData.parameters; track param.id) {\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">{{ param.name }}:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ param.type }}{{ param.required ? ' (Required)' : '' }}</span>\\n </div>\\n }\\n } @else {\\n <div class=\\\"review-item\\\">\\n <span class=\\\"value ax-text-gray-900\\\">No parameters defined</span>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n </ax-step-wizard>\\n\\n <div class=\\\"ax-flex ax-justify-center ax-p-5\\\">\\n <ng-template [axStepWizardContent] #wizardContent=\\\"axStepWizardContent\\\">\\n </ng-template>\\n </div>\\n\\n <div class=\\\"ax-mt-10 ax-flex ax-justify-between ax-items-center ax-pt-6 ax-border-t ax-border-gray-200\\\">\\n <div class=\\\"nav-left\\\">\\n <ax-button\\n [disabled]=\\\"reportWizard.isFirst()\\\"\\n (onClick)=\\\"reportWizard.previous()\\\"\\n [color]=\\\"'primary'\\\"\\n text=\\\"\\u2190 Previous\\\"\\n look=\\\"outline\\\">\\n </ax-button>\\n </div>\\n\\n <div class=\\\"nav-right\\\">\\n @if(reportWizard.isLast()) {\\n <ax-button \\n (onClick)=\\\"finishWizard()\\\" \\n color=\\\"success\\\" \\n text=\\\"Create Report\\\"\\n [disabled]=\\\"isSaving()\\\">\\n @if (isSaving()) {\\n Creating...\\n } @else {\\n Create Report\\n }\\n </ax-button>\\n } @else {\\n <ax-button\\n (onClick)=\\\"nextStep()\\\"\\n color=\\\"primary\\\"\\n text=\\\"Next \\u2192\\\"\\n [disabled]=\\\"!canProceed()\\\">\\n </ax-button>\\n }\\n </div>\\n </div>\\n</div>\\n\", styles: [\".step-content{min-height:24rem}.step-title-section{margin-bottom:1.5rem;text-align:center}.step-title-section h3{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.step-title-section p{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.form-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width: 768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.format-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (max-width: 480px){.format-selection{grid-template-columns:repeat(1,minmax(0,1fr))}}.format-option{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.format-option:has(input:checked){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.schedule-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.schedule-section .schedule-options{border-left-width:2px;border-color:rgba(var(--ax-sys-color-primary-500),.2);padding-left:1.5rem}.parameters-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.parameters-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.parameter-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item .parameter-fields{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.parameter-item .parameter-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.no-parameters{padding-top:2rem;padding-bottom:2rem;text-align:center;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.add-parameter-section{text-align:center}.review-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.review-section{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1.5rem}.review-section h4{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-bottom:.5rem}.review-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.review-item{display:flex;align-items:flex-start;justify-content:space-between}@media (max-width: 480px){.review-item{flex-direction:column}.review-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}}.review-item .label{margin-right:1rem;min-width:0px;flex-shrink:0;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.review-item .value{overflow-wrap:break-word;text-align:right;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}@media (max-width: 480px){.review-item .value{text-align:left}}ax-form-field{display:block}ax-form-field ax-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: \n // Angular\n CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: \n // ACoreX\n AXFormModule }, { kind: \"component\", type: i2.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i2.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i3.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { 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: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i5.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i6.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i7.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.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: \"ngmodule\", type: AXStepWizardModule }, { kind: \"component\", type: i9.AXStepWizardComponent, selector: \"ax-step-wizard\", inputs: [\"connector\", \"size\", \"look\", \"changeStep\", \"orientation\", \"content\"], outputs: [\"stepChanged\"] }, { kind: \"component\", type: i9.AXStepWizardItemComponent, selector: \"ax-step-wizard-item\", inputs: [\"disabled\", \"color\", \"step\", \"label\", \"description\", \"customTemplate\", \"active\", \"passed\", \"look\", \"state\", \"id\"], outputs: [\"activeChange\", \"passedChange\", \"lookChange\", \"stateChange\"] }, { kind: \"directive\", type: i9.AXStepWizardContentDirective, selector: \"[axStepWizardContent]\", inputs: [\"axStepWizardContent\"], exportAs: [\"axStepWizardContent\"] }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(20px)' }),\n animate('300ms ease-in', style({ opacity: 1, transform: 'translateY(0)' }))\n ])\n ])\n ], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXPReportCreateRootComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-create-root', imports: [\n // Angular\n CommonModule,\n FormsModule,\n // ACoreX\n AXFormModule,\n AXTextBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXSelectBoxModule,\n AXSwitchModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXStepWizardModule,\n // Platform\n ], encapsulation: ViewEncapsulation.None, providers: [], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(20px)' }),\n animate('300ms ease-in', style({ opacity: 1, transform: 'translateY(0)' }))\n ])\n ])\n ], template: \"<div class=\\\"ax-w-full ax-max-w-4xl ax-mx-auto ax-p-6\\\">\\n <div class=\\\"step-wizard-header ax-text-center ax-mb-8\\\">\\n <h2 class=\\\"ax-text-2xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Create New Report</h2>\\n <p class=\\\"ax-text-gray-600\\\">Follow these steps to create your custom report</p>\\n </div>\\n\\n <ax-step-wizard\\n [content]=\\\"wizardContent\\\"\\n [look]=\\\"'rounded-icon'\\\"\\n #reportWizard\\n >\\n <ax-step-wizard-item [label]=\\\"'Basic Information'\\\" [id]=\\\"'basic'\\\">\\n <ax-icon class=\\\"fas fa-info-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Basic Information</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Enter the basic details for your report</p>\\n </div>\\n \\n <ax-form #basicForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Report Name *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.name\\\"\\n placeholder=\\\"Enter report name\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportName\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Report Title *</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"formData.title\\\"\\n placeholder=\\\"Enter report title\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTitle\\\">\\n </ax-text-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Category *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.category\\\"\\n [dataSource]=\\\"categories\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select category\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportCategory\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Data Source *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.dataSource\\\"\\n [dataSource]=\\\"dataSources\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'title'\\\"\\n placeholder=\\\"Select data source\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportDataSource\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Configuration'\\\" [id]=\\\"'config'\\\">\\n <ax-icon class=\\\"fas fa-cog\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Configuration</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Configure your report settings</p>\\n </div>\\n \\n <ax-form #configForm>\\n <div class=\\\"form-grid ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>Template *</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.template\\\"\\n [dataSource]=\\\"templates\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select template\\\"\\n [required]=\\\"true\\\"\\n name=\\\"reportTemplate\\\">\\n </ax-select-box>\\n </ax-form-field>\\n\\n <ax-form-field>\\n <ax-label>Output Formats *</ax-label>\\n <div class=\\\"format-selection ax-grid ax-grid-cols-2 ax-gap-3\\\">\\n @for (format of formats; track format.id) {\\n <div class=\\\"format-option ax-p-3 ax-border ax-border-gray-200 ax-rounded-lg ax-transition-colors\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.formats[format.id]\\\"\\n [name]=\\\"'format_' + format.id\\\">\\n {{ format.name }}\\n </ax-check-box>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n\\n <ax-form-field class=\\\"md:ax-col-span-2\\\">\\n <div class=\\\"schedule-section ax-space-y-4\\\">\\n <ax-check-box \\n [(ngModel)]=\\\"formData.isScheduled\\\"\\n name=\\\"isScheduled\\\">\\n Enable scheduled reports\\n </ax-check-box>\\n \\n @if (formData.isScheduled) {\\n <div class=\\\"schedule-options ax-pl-6 ax-border-l-2 ax-border-primary/20\\\">\\n <ax-form-field>\\n <ax-label>Frequency</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"formData.scheduleFrequency\\\"\\n [dataSource]=\\\"frequencies\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select frequency\\\"\\n name=\\\"scheduleFrequency\\\">\\n </ax-select-box>\\n </ax-form-field>\\n </div>\\n }\\n </div>\\n </ax-form-field>\\n </div>\\n </ax-form>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Parameters'\\\" [id]=\\\"'parameters'\\\">\\n <ax-icon class=\\\"fas fa-sliders-h\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Report Parameters</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Define parameters for your report</p>\\n </div>\\n \\n <div class=\\\"parameters-section ax-space-y-6\\\">\\n @if (formData.parameters.length > 0) {\\n <div class=\\\"parameters-list ax-space-y-4\\\">\\n @for (param of formData.parameters; track param.id; let i = $index) {\\n <div class=\\\"parameter-item ax-p-4 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50 ax-space-y-4\\\">\\n <div class=\\\"parameter-fields ax-grid ax-grid-cols-1 md:ax-grid-cols-3 ax-gap-4\\\">\\n <ax-form-field>\\n <ax-label>Parameter Name</ax-label>\\n <ax-text-box \\n [(ngModel)]=\\\"param.name\\\"\\n placeholder=\\\"Enter parameter name\\\"\\n [name]=\\\"'param_name_' + i\\\">\\n </ax-text-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-label>Type</ax-label>\\n <ax-select-box \\n [(ngModel)]=\\\"param.type\\\"\\n [dataSource]=\\\"parameterTypes\\\"\\n [valueField]=\\\"'id'\\\"\\n [textField]=\\\"'name'\\\"\\n placeholder=\\\"Select type\\\"\\n [name]=\\\"'param_type_' + i\\\">\\n </ax-select-box>\\n </ax-form-field>\\n \\n <ax-form-field>\\n <ax-check-box \\n [(ngModel)]=\\\"param.required\\\"\\n [name]=\\\"'param_required_' + i\\\">\\n Required\\n </ax-check-box>\\n </ax-form-field>\\n </div>\\n \\n <ax-button \\n look=\\\"ghost\\\"\\n color=\\\"danger\\\"\\n size=\\\"small\\\"\\n (onClick)=\\\"removeParameter(i)\\\">\\n Remove\\n </ax-button>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"no-parameters ax-text-center ax-py-8 ax-text-gray-500\\\">\\n <p>No parameters defined yet.</p>\\n </div>\\n }\\n \\n <div class=\\\"add-parameter-section ax-text-center\\\">\\n <ax-button \\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"addParameter()\\\">\\n + Add Parameter\\n </ax-button>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n\\n <ax-step-wizard-item [label]=\\\"'Review'\\\" [id]=\\\"'review'\\\">\\n <ax-icon class=\\\"fas fa-check-circle\\\"></ax-icon>\\n <ax-content>\\n <div class=\\\"step-content\\\">\\n <div class=\\\"step-title-section ax-text-center ax-mb-6\\\">\\n <h3 class=\\\"ax-text-xl ax-font-bold ax-text-gray-900 ax-mb-2\\\">Review & Confirm</h3>\\n <p class=\\\"ax-text-gray-600 ax-text-sm\\\">Review your report configuration before creating</p>\\n </div>\\n \\n <div class=\\\"review-sections ax-space-y-6\\\">\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Basic Information</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Name:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.name || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Title:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.title || 'Not specified' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Category:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getCategoryName(formData.category) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Data Source:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getDataSourceTitle(formData.dataSource) || 'Not selected' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Configuration</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Template:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getTemplateName(formData.template) || 'Not selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Formats:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ getSelectedFormats() || 'None selected' }}</span>\\n </div>\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">Scheduled:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ formData.isScheduled ? 'Yes - ' + formData.scheduleFrequency : 'No' }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"review-section ax-p-6 ax-border ax-border-gray-200 ax-rounded-lg ax-bg-gray-50\\\">\\n <h4 class=\\\"ax-text-lg ax-font-semibold ax-text-gray-900 ax-mb-4 ax-pb-2 ax-border-b ax-border-gray-200\\\">Parameters</h4>\\n <div class=\\\"review-items ax-space-y-3\\\">\\n @if (formData.parameters.length > 0) {\\n @for (param of formData.parameters; track param.id) {\\n <div class=\\\"review-item ax-flex ax-justify-between ax-items-start\\\">\\n <span class=\\\"label ax-font-medium ax-text-gray-700 ax-min-w-0 ax-mr-4 ax-flex-shrink-0\\\">{{ param.name }}:</span>\\n <span class=\\\"value ax-text-gray-900 ax-text-right ax-break-words\\\">{{ param.type }}{{ param.required ? ' (Required)' : '' }}</span>\\n </div>\\n }\\n } @else {\\n <div class=\\\"review-item\\\">\\n <span class=\\\"value ax-text-gray-900\\\">No parameters defined</span>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n </ax-content>\\n </ax-step-wizard-item>\\n </ax-step-wizard>\\n\\n <div class=\\\"ax-flex ax-justify-center ax-p-5\\\">\\n <ng-template [axStepWizardContent] #wizardContent=\\\"axStepWizardContent\\\">\\n </ng-template>\\n </div>\\n\\n <div class=\\\"ax-mt-10 ax-flex ax-justify-between ax-items-center ax-pt-6 ax-border-t ax-border-gray-200\\\">\\n <div class=\\\"nav-left\\\">\\n <ax-button\\n [disabled]=\\\"reportWizard.isFirst()\\\"\\n (onClick)=\\\"reportWizard.previous()\\\"\\n [color]=\\\"'primary'\\\"\\n text=\\\"\\u2190 Previous\\\"\\n look=\\\"outline\\\">\\n </ax-button>\\n </div>\\n\\n <div class=\\\"nav-right\\\">\\n @if(reportWizard.isLast()) {\\n <ax-button \\n (onClick)=\\\"finishWizard()\\\" \\n color=\\\"success\\\" \\n text=\\\"Create Report\\\"\\n [disabled]=\\\"isSaving()\\\">\\n @if (isSaving()) {\\n Creating...\\n } @else {\\n Create Report\\n }\\n </ax-button>\\n } @else {\\n <ax-button\\n (onClick)=\\\"nextStep()\\\"\\n color=\\\"primary\\\"\\n text=\\\"Next \\u2192\\\"\\n [disabled]=\\\"!canProceed()\\\">\\n </ax-button>\\n }\\n </div>\\n </div>\\n</div>\\n\", styles: [\".step-content{min-height:24rem}.step-title-section{margin-bottom:1.5rem;text-align:center}.step-title-section h3{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.step-title-section p{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.form-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width: 768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.format-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}@media (max-width: 480px){.format-selection{grid-template-columns:repeat(1,minmax(0,1fr))}}.format-option{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.format-option:has(input:checked){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-500),.05)}.schedule-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.schedule-section .schedule-options{border-left-width:2px;border-color:rgba(var(--ax-sys-color-primary-500),.2);padding-left:1.5rem}.parameters-section>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.parameters-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.parameter-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.parameter-item .parameter-fields{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width: 768px){.parameter-item .parameter-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.no-parameters{padding-top:2rem;padding-bottom:2rem;text-align:center;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.add-parameter-section{text-align:center}.review-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.review-section{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1.5rem}.review-section h4{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-bottom:.5rem}.review-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.review-item{display:flex;align-items:flex-start;justify-content:space-between}@media (max-width: 480px){.review-item{flex-direction:column}.review-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}}.review-item .label{margin-right:1rem;min-width:0px;flex-shrink:0;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.review-item .value{overflow-wrap:break-word;text-align:right;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}@media (max-width: 480px){.review-item .value{text-align:left}}ax-form-field{display:block}ax-form-field ax-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNyZWF0ZS1yb290LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS1yb290L3JlcG9ydC1jcmVhdGUtcm9vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQvY3JlYXRlL3JlcG9ydC1jcmVhdGUtcm9vdC9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0s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RUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM5RSxDQUFDO3lCQUNMLENBQUM7cUJBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUsIEFYRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYU3dpdGNoTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3N3aXRjaCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYU3RlcFdpemFyZE1vZHVsZSwgQVhTdGVwV2l6YXJkQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3N0ZXAtd2l6YXJkJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuXG4vLyNyZWdpb24gLS0tLSAgIEludGVyZmFjZXMgJiBUeXBlcyAgIC0tLS1cblxuaW50ZXJmYWNlIFN0ZXBEZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgaXNWYWxpZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBSZXBvcnRGb3JtRGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgZGF0YVNvdXJjZTogc3RyaW5nO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBmb3JtYXRzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgaXNTY2hlZHVsZWQ6IGJvb2xlYW47XG4gIHNjaGVkdWxlRnJlcXVlbmN5OiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IFBhcmFtZXRlckRlZmluaXRpb25bXTtcbn1cblxuaW50ZXJmYWNlIFBhcmFtZXRlckRlZmluaXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDYXRlZ29yeU9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRlbXBsYXRlT3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRm9ybWF0T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRnJlcXVlbmN5T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFyYW1ldGVyVHlwZU9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIERhdGFTb3VyY2VPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6J2F4cC1yZXBvcnQtY3JlYXRlLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50LnNjc3MnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gQW5ndWxhclxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICAvLyBBQ29yZVhcbiAgICAgICAgQVhGb3JtTW9kdWxlLFxuICAgICAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWExhYmVsTW9kdWxlLFxuICAgICAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgICAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICAgICAgQVhTd2l0Y2hNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgICAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgICAgICBBWFN0ZXBXaXphcmRNb2R1bGUsXG4gICAgICAgIC8vIFBsYXRmb3JtXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwcHgpJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRDcmVhdGVSb290Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBWaWV3Q2hpbGQgJiBTaWduYWxzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBvcnRXaXphcmQgPSB2aWV3Q2hpbGQ8QVhTdGVwV2l6YXJkQ29tcG9uZW50PigncmVwb3J0V2l6YXJkJyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNWYWxpZGF0aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTYXZpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuUHJvY2VlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVDdXJyZW50U3RlcCgpO1xuICAgIH0pO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZvcm0gRGF0YSAgIC0tLS1cblxuICAgIHByb3RlY3RlZCBmb3JtRGF0YTogUmVwb3J0Rm9ybURhdGEgPSB7XG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGNhdGVnb3J5OiAnJyxcbiAgICAgICAgZGF0YVNvdXJjZTogJycsXG4gICAgICAgIHRlbXBsYXRlOiAnJyxcbiAgICAgICAgZm9ybWF0czoge30sXG4gICAgICAgIGlzU2NoZWR1bGVkOiBmYWxzZSxcbiAgICAgICAgc2NoZWR1bGVGcmVxdWVuY3k6ICcnLFxuICAgICAgICBwYXJhbWV0ZXJzOiBbXVxuICAgIH07XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RlcCBEZWZpbml0aW9ucyAgIC0tLS1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGVwczogU3RlcERlZmluaXRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdiYXNpYy1pbmZvJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQmFzaWMgSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgc3VidGl0bGU6ICdFbnRlciByZXBvcnQgZGV0YWlscydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdjb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgICAgICAgICBzdWJ0aXRsZTogJ0NvbmZpZ3VyZSByZXBvcnQgc2V0dGluZ3MnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAncGFyYW1ldGVycycsXG4gICAgICAgICAgICB0aXRsZTogJ1BhcmFtZXRlcnMnLFxuICAgICAgICAgICAgc3VidGl0bGU6ICdEZWZpbmUgcmVwb3J0IHBhcmFtZXRlcnMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAncmV2aWV3JyxcbiAgICAgICAgICAgIHRpdGxlOiAnUmV2aWV3ICYgRmluaXNoJyxcbiAgICAgICAgICAgIHN1YnRpdGxlOiAnUmV2aWV3IGFuZCBjb21wbGV0ZSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGF0YSBTb3VyY2VzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhdGVnb3JpZXM6IENhdGVnb3J5T3B0aW9uW10gPSBbXG4gICAgICAgIHsgaWQ6ICdmaW5hbmNpYWwnLCBuYW1lOiAnRmluYW5jaWFsIFJlcG9ydHMnIH0sXG4gICAgICAgIHsgaWQ6ICdvcGVyYXRpb25hbCcsIG5hbWU6ICdPcGVyYXRpb25hbCBSZXBvcnRzJyB9LFxuICAgICAgICB7IGlkOiAnYW5hbHl0aWNzJywgbmFtZTogJ0FuYWx5dGljcyBSZXBvcnRzJyB9LFxuICAgICAgICB7IGlkOiAnY29tcGxpYW5jZScsIG5hbWU6ICdDb21wbGlhbmNlIFJlcG9ydHMnIH1cbiAgICBdO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFTb3VyY2VzOiBEYXRhU291cmNlT3B0aW9uW10gPSBbXG4gICAgICAgIHsgaWQ6ICd1c2VycycsIHRpdGxlOiAnVXNlcnMgRGF0YScgfSxcbiAgICAgICAgeyBpZDogJ29yZGVycycsIHRpdGxlOiAnT3JkZXJzIERhdGEnIH0sXG4gICAgICAgIHsgaWQ6ICdwcm9kdWN0cycsIHRpdGxlOiAnUHJvZHVjdHMgRGF0YScgfSxcbiAgICAgICAgeyBpZDogJ3RyYW5zYWN0aW9ucycsIHRpdGxlOiAnVHJhbnNhY3Rpb25zIERhdGEnIH0sXG4gICAgICAgIHsgaWQ6ICdsb2dzJywgdGl0bGU6ICdTeXN0ZW0gTG9ncycgfVxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGVtcGxhdGVzOiBUZW1wbGF0ZU9wdGlvbltdID0gW1xuICAgICAgICB7IGlkOiAnc3RhbmRhcmQnLCBuYW1lOiAnU3RhbmRhcmQgVGVtcGxhdGUnIH0sXG4gICAgICAgIHsgaWQ6ICdkZXRhaWxlZCcsIG5hbWU6ICdEZXRhaWxlZCBUZW1wbGF0ZScgfSxcbiAgICAgICAgeyBpZDogJ3N1bW1hcnknLCBuYW1lOiAnU3VtbWFyeSBUZW1wbGF0ZScgfSxcbiAgICAgICAgeyBpZDogJ2N1c3RvbScsIG5hbWU6ICdDdXN0b20gVGVtcGxhdGUnIH1cbiAgICBdO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1hdHM6IEZvcm1hdE9wdGlvbltdID0gW1xuICAgICAgICB7IGlkOiAncGRmJywgbmFtZTogJ1BERicgfSxcbiAgICAgICAgeyBpZDogJ2V4Y2VsJywgbmFtZTogJ0V4Y2VsJyB9LFxuICAgICAgICB7IGlkOiAnY3N2JywgbmFtZTogJ0NTVicgfSxcbiAgICAgICAgeyBpZDogJ2h0bWwnLCBuYW1lOiAnSFRNTCcgfVxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnJlcXVlbmNpZXM6IEZyZXF1ZW5jeU9wdGlvbltdID0gW1xuICAgICAgICB7IGlkOiAnZGFpbHknLCBuYW1lOiAnRGFpbHknIH0sXG4gICAgICAgIHsgaWQ6ICd3ZWVrbHknLCBuYW1lOiAnV2Vla2x5JyB9LFxuICAgICAgICB7IGlkOiAnbW9udGhseScsIG5hbWU6ICdNb250aGx5JyB9LFxuICAgICAgICB7IGlkOiAneWVhcmx5JywgbmFtZTogJ1llYXJseScgfVxuICAgIF07XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFyYW1ldGVyVHlwZXM6IFBhcmFtZXRlclR5cGVPcHRpb25bXSA9IFtcbiAgICAgICAgeyBpZDogJ3N0cmluZycsIG5hbWU6ICdUZXh0JyB9LFxuICAgICAgICB7IGlkOiAnbnVtYmVyJywgbmFtZTogJ051bWJlcicgfSxcbiAgICAgICAgeyBpZDogJ2RhdGUnLCBuYW1lOiAnRGF0ZScgfSxcbiAgICAgICAgeyBpZDogJ2Jvb2xlYW4nLCBuYW1lOiAnQm9vbGVhbicgfSxcbiAgICAgICAgeyBpZDogJ3NlbGVjdCcsIG5hbWU6ICdTZWxlY3Rpb24nIH1cbiAgICBdO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSBNZXRob2RzICAgLS0tLVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1EYXRhKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFudXAgaWYgbmVlZGVkXG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFN0ZXAgTmF2aWdhdGlvbiBNZXRob2RzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIG5leHRTdGVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkYXRpbmcoKSkgcmV0dXJuO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5pc1ZhbGlkYXRpbmcuc2V0KHRydWUpO1xuICAgICAgICBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLnJlcG9ydFdpemFyZCgpO1xuICAgICAgICAgICAgICAgIGlmICh3aXphcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgd2l6YXJkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm5pbmcoJ1BsZWFzZSBjb21wbGV0ZSBhbGwgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBwcm9jZWVkaW5nLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdWYWxpZGF0aW9uIGZhaWxlZC4gUGxlYXNlIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZGF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZmluaXNoV2l6YXJkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1NhdmluZygpKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICB0aGlzLmlzU2F2aW5nLnNldCh0cnVlKTtcbiAgICAgICAgXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdGhpcy52YWxpZGF0ZUFsbFN0ZXBzKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zYXZlUmVwb3J0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnUmVwb3J0IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgICAgICAgICAgIC8vIE5hdmlnYXRlIHRvIHJlcG9ydCBsaXN0IG9yIHNob3cgc3VjY2VzcyBtZXNzYWdlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm5pbmcoJ1BsZWFzZSBjb21wbGV0ZSBhbGwgcmVxdWlyZWQgZmllbGRzLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gY3JlYXRlIHJlcG9ydC4gUGxlYXNlIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIHJlcG9ydDonLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmlzU2F2aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUGFyYW1ldGVyIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgYWRkUGFyYW1ldGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdQYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBpZDogYHBhcmFtXyR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAgICAgbmFtZTogJycsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5wYXJhbWV0ZXJzLnB1c2gobmV3UGFyYW1ldGVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlUGFyYW1ldGVyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5wYXJhbWV0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFZhbGlkYXRpb24gTWV0aG9kcyAgIC0tLS1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDdXJyZW50U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gU2luY2Ugd2UgY2FuJ3QgcmVsaWFibHkgZ2V0IGN1cnJlbnQgc3RlcCBpbmRleCBmcm9tIHdpemFyZCxcbiAgICAgICAgLy8gd2UnbGwgdmFsaWRhdGUgYWxsIHN0ZXBzIGFuZCBsZXQgdGhlIHdpemFyZCBoYW5kbGUgbmF2aWdhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJhc2ljSW5mbygpIHx8IHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKCkgfHwgXG4gICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlUGFyYW1ldGVycygpIHx8IHRoaXMudmFsaWRhdGVSZXZpZXcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQmFzaWNJbmZvKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mb3JtRGF0YS5uYW1lPy50cmltKCkgJiYgdGhpcy5mb3JtRGF0YS50aXRsZT8udHJpbSgpICYmIFxuICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmNhdGVnb3J5ICYmIHRoaXMuZm9ybURhdGEuZGF0YVNvdXJjZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGhhc1NlbGVjdGVkRm9ybWF0ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1EYXRhLmZvcm1hdHMpLnNvbWUoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzY2hlZHVsZVZhbGlkID0gIXRoaXMuZm9ybURhdGEuaXNTY2hlZHVsZWQgfHwgISF0aGlzLmZvcm1EYXRhLnNjaGVkdWxlRnJlcXVlbmN5O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZm9ybURhdGEudGVtcGxhdGUgJiYgaGFzU2VsZWN0ZWRGb3JtYXQgJiYgc2NoZWR1bGVWYWxpZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBhcmFtZXRlcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1EYXRhLnBhcmFtZXRlcnMuZXZlcnkocGFyYW0gPT4gXG4gICAgICAgICAgICBwYXJhbS5uYW1lPy50cmltKCkgJiYgcGFyYW0udHlwZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVSZXZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmFzaWNJbmZvKCkgJiYgdGhpcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb24oKSAmJiB0aGlzLnZhbGlkYXRlUGFyYW1ldGVycygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVBbGxTdGVwcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgZWFjaCBzdGVwJ3MgZm9ybSBpbmRpdmlkdWFsbHlcbiAgICAgICAgY29uc3QgYmFzaWNWYWxpZCA9IHRoaXMudmFsaWRhdGVCYXNpY0luZm8oKTtcbiAgICAgICAgY29uc3QgY29uZmlnVmFsaWQgPSB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBjb25zdCBwYXJhbXNWYWxpZCA9IHRoaXMudmFsaWRhdGVQYXJhbWV0ZXJzKCk7XG4gICAgICAgIGNvbnN0IHJldmlld1ZhbGlkID0gdGhpcy52YWxpZGF0ZVJldmlldygpO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGJhc2ljVmFsaWQgJiYgY29uZmlnVmFsaWQgJiYgcGFyYW1zVmFsaWQgJiYgcmV2aWV3VmFsaWQ7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybURhdGEoKTogdm9pZCB7XG4gICAgICAgIC8vIEluaXRpYWxpemUgZm9ybWF0cyBvYmplY3RcbiAgICAgICAgdGhpcy5mb3JtYXRzLmZvckVhY2goZm9ybWF0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuZm9ybWF0c1tmb3JtYXQuaWRdID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgUERGIGZvcm1hdFxuICAgICAgICB0aGlzLmZvcm1EYXRhLmZvcm1hdHNbJ3BkZiddID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNhdmVSZXBvcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIFNpbXVsYXRlIEFQSSBjYWxsXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZygnU2F2aW5nIHJlcG9ydCB3aXRoIGRhdGE6JywgdGhpcy5mb3JtRGF0YSk7XG4gICAgICAgIFxuICAgICAgICAvLyBIZXJlIHlvdSB3b3VsZCB0eXBpY2FsbHkgY2FsbCBhIHNlcnZpY2UgdG8gc2F2ZSB0aGUgcmVwb3J0XG4gICAgICAgIC8vIEV4YW1wbGU6IGF3YWl0IHRoaXMucmVwb3J0U2VydmljZS5jcmVhdGVSZXBvcnQodGhpcy5mb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENhdGVnb3J5TmFtZShjYXRlZ29yeUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKGMgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCk7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeT8ubmFtZSB8fCBjYXRlZ29yeUlkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUZW1wbGF0ZU5hbWUodGVtcGxhdGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlcy5maW5kKHQgPT4gdC5pZCA9PT0gdGVtcGxhdGVJZCk7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZT8ubmFtZSB8fCB0ZW1wbGF0ZUlkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTZWxlY3RlZEZvcm1hdHMoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGb3JtYXRzID0gT2JqZWN0LmVudHJpZXModGhpcy5mb3JtRGF0YS5mb3JtYXRzKVxuICAgICAgICAgICAgLmZpbHRlcigoW18sIHNlbGVjdGVkXSkgPT4gc2VsZWN0ZWQpXG4gICAgICAgICAgICAubWFwKChbZm9ybWF0SWQsIF9dKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5mb3JtYXRzLmZpbmQoZiA9PiBmLmlkID09PSBmb3JtYXRJZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdD8ubmFtZSB8fCBmb3JtYXRJZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybWF0cy5qb2luKCcsICcpIHx8ICdOb25lJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGF0YVNvdXJjZVRpdGxlKGRhdGFTb3VyY2VJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZXMuZmluZChkID0+IGQuaWQgPT09IGRhdGFTb3VyY2VJZCk7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlPy50aXRsZSB8fCBkYXRhU291cmNlSWQ7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtdy1mdWxsIGF4LW1heC13LTR4bCBheC1teC1hdXRvIGF4LXAtNlwiPlxuICA8ZGl2IGNsYXNzPVwic3RlcC13aXphcmQtaGVhZGVyIGF4LXRleHQtY2VudGVyIGF4LW1iLThcIj5cbiAgICA8aDIgY2xhc3M9XCJheC10ZXh0LTJ4bCBheC1mb250LWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi0yXCI+Q3JlYXRlIE5ldyBSZXBvcnQ8L2gyPlxuICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1ncmF5LTYwMFwiPkZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgeW91ciBjdXN0b20gcmVwb3J0PC9wPlxuICA8L2Rpdj5cblxuICA8YXgtc3RlcC13aXphcmRcbiAgICBbY29udGVudF09XCJ3aXphcmRDb250ZW50XCJcbiAgICBbbG9va109XCIncm91bmRlZC1pY29uJ1wiXG4gICAgI3JlcG9ydFdpemFyZFxuICA+XG4gICAgPGF4LXN0ZXAtd2l6YXJkLWl0ZW0gW2xhYmVsXT1cIidCYXNpYyBJbmZvcm1hdGlvbidcIiBbaWRdPVwiJ2Jhc2ljJ1wiPlxuICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2F4LWljb24+XG4gICAgICA8YXgtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlLXNlY3Rpb24gYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi0yXCI+QmFzaWMgSW5mb3JtYXRpb248L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWdyYXktNjAwIGF4LXRleHQtc21cIj5FbnRlciB0aGUgYmFzaWMgZGV0YWlscyBmb3IgeW91ciByZXBvcnQ8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGF4LWZvcm0gI2Jhc2ljRm9ybT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWQgYXgtZ3JpZCBheC1ncmlkLWNvbHMtMSBtZDpheC1ncmlkLWNvbHMtMiBheC1nYXAtNlwiPlxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+UmVwb3J0IE5hbWUgKjwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGF4LXRleHQtYm94IFxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcmVwb3J0IG5hbWVcIlxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlcG9ydE5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsPlJlcG9ydCBUaXRsZSAqPC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcmVwb3J0IHRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZXBvcnRUaXRsZVwiPlxuICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+Q2F0ZWdvcnkgKjwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiJ2lkJ1wiXG4gICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIiduYW1lJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVwb3J0Q2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+RGF0YSBTb3VyY2UgKjwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmRhdGFTb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiJ2lkJ1wiXG4gICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIid0aXRsZSdcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0YSBzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlcG9ydERhdGFTb3VyY2VcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXgtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC1zdGVwLXdpemFyZC1pdGVtPlxuXG4gICAgPGF4LXN0ZXAtd2l6YXJkLWl0ZW0gW2xhYmVsXT1cIidDb25maWd1cmF0aW9uJ1wiIFtpZF09XCInY29uZmlnJ1wiPlxuICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9heC1pY29uPlxuICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZS1zZWN0aW9uIGF4LXRleHQtY2VudGVyIGF4LW1iLTZcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkIGF4LXRleHQtZ3JheS05MDAgYXgtbWItMlwiPlJlcG9ydCBDb25maWd1cmF0aW9uPC9oMz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1ncmF5LTYwMCBheC10ZXh0LXNtXCI+Q29uZmlndXJlIHlvdXIgcmVwb3J0IHNldHRpbmdzPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxheC1mb3JtICNjb25maWdGb3JtPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZCBheC1ncmlkIGF4LWdyaWQtY29scy0xIG1kOmF4LWdyaWQtY29scy0yIGF4LWdhcC02XCI+XG4gICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD5UZW1wbGF0ZSAqPC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXgtc2VsZWN0LWJveCBcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGVtcGxhdGVzXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCInbmFtZSdcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlcG9ydFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9heC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsPk91dHB1dCBGb3JtYXRzICo8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtYXQtc2VsZWN0aW9uIGF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGZvcm1hdCBvZiBmb3JtYXRzOyB0cmFjayBmb3JtYXQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1hdC1vcHRpb24gYXgtcC0zIGF4LWJvcmRlciBheC1ib3JkZXItZ3JheS0yMDAgYXgtcm91bmRlZC1sZyBheC10cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3ggXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmZvcm1hdHNbZm9ybWF0LmlkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZm9ybWF0XycgKyBmb3JtYXQuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdC5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQgY2xhc3M9XCJtZDpheC1jb2wtc3Bhbi0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlLXNlY3Rpb24gYXgtc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICA8YXgtY2hlY2stYm94IFxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmlzU2NoZWR1bGVkXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlzU2NoZWR1bGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIEVuYWJsZSBzY2hlZHVsZWQgcmVwb3J0c1xuICAgICAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIEBpZiAoZm9ybURhdGEuaXNTY2hlZHVsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlLW9wdGlvbnMgYXgtcGwtNiBheC1ib3JkZXItbC0yIGF4LWJvcmRlci1wcmltYXJ5LzIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+RnJlcXVlbmN5PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94IFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnNjaGVkdWxlRnJlcXVlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZnJlcXVlbmNpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCInaWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCInbmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBmcmVxdWVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic2NoZWR1bGVGcmVxdWVuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F4LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1jb250ZW50PlxuICAgIDwvYXgtc3RlcC13aXphcmQtaXRlbT5cblxuICAgIDxheC1zdGVwLXdpemFyZC1pdGVtIFtsYWJlbF09XCInUGFyYW1ldGVycydcIiBbaWRdPVwiJ3BhcmFtZXRlcnMnXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1zbGlkZXJzLWhcIj48L2F4LWljb24+XG4gICAgICA8YXgtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlLXNlY3Rpb24gYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGQgYXgtdGV4dC1ncmF5LTkwMCBheC1tYi0yXCI+UmVwb3J0IFBhcmFtZXRlcnM8L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWdyYXktNjAwIGF4LXRleHQtc21cIj5EZWZpbmUgcGFyYW1ldGVycyBmb3IgeW91ciByZXBvcnQ8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhcmFtZXRlcnMtc2VjdGlvbiBheC1zcGFjZS15LTZcIj5cbiAgICAgICAgICAgIEBpZiAoZm9ybURhdGEucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXJhbWV0ZXJzLWxpc3QgYXgtc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgQGZvciAocGFyYW0gb2YgZm9ybURhdGEucGFyYW1ldGVyczsgdHJhY2sgcGFyYW0uaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFyYW1ldGVyLWl0ZW0gYXgtcC00IGF4LWJvcmRlciBheC1ib3JkZXItZ3JheS0yMDAgYXgtcm91bmRlZC1sZyBheC1iZy1ncmF5LTUwIGF4LXNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFyYW1ldGVyLWZpZWxkcyBheC1ncmlkIGF4LWdyaWQtY29scy0xIG1kOmF4LWdyaWQtY29scy0zIGF4LWdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+UGFyYW1ldGVyIE5hbWU8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXRleHQtYm94IFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhcmFtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHBhcmFtZXRlciBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BhcmFtX25hbWVfJyArIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPlR5cGU8L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFyYW0udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInBhcmFtZXRlclR5cGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiJ2lkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ25hbWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidwYXJhbV90eXBlXycgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWNoZWNrLWJveCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXJhbS5yZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidwYXJhbV9yZXF1aXJlZF8nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgbG9vaz1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVQYXJhbWV0ZXIoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVcbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wYXJhbWV0ZXJzIGF4LXRleHQtY2VudGVyIGF4LXB5LTggYXgtdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgIDxwPk5vIHBhcmFtZXRlcnMgZGVmaW5lZCB5ZXQuPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1wYXJhbWV0ZXItc2VjdGlvbiBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIFxuICAgICAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFkZFBhcmFtZXRlcigpXCI+XG4gICAgICAgICAgICAgICAgKyBBZGQgUGFyYW1ldGVyXG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1jb250ZW50PlxuICAgIDwvYXgtc3RlcC13aXphcmQtaXRlbT5cblxuICAgIDxheC1zdGVwLXdpemFyZC1pdGVtIFtsYWJlbF09XCInUmV2aWV3J1wiIFtpZF09XCIncmV2aWV3J1wiPlxuICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXMgZmEtY2hlY2stY2lyY2xlXCI+PC9heC1pY29uPlxuICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZS1zZWN0aW9uIGF4LXRleHQtY2VudGVyIGF4LW1iLTZcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkIGF4LXRleHQtZ3JheS05MDAgYXgtbWItMlwiPlJldmlldyAmIENvbmZpcm08L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWdyYXktNjAwIGF4LXRleHQtc21cIj5SZXZpZXcgeW91ciByZXBvcnQgY29uZmlndXJhdGlvbiBiZWZvcmUgY3JlYXRpbmc8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1zZWN0aW9ucyBheC1zcGFjZS15LTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjdGlvbiBheC1wLTYgYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMCBheC1yb3VuZGVkLWxnIGF4LWJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LXRleHQtZ3JheS05MDAgYXgtbWItNCBheC1wYi0yIGF4LWJvcmRlci1iIGF4LWJvcmRlci1ncmF5LTIwMFwiPkJhc2ljIEluZm9ybWF0aW9uPC9oND5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pdGVtcyBheC1zcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW0gYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTcwMCBheC1taW4tdy0wIGF4LW1yLTQgYXgtZmxleC1zaHJpbmstMFwiPk5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwIGF4LXRleHQtcmlnaHQgYXgtYnJlYWstd29yZHNcIj57eyBmb3JtRGF0YS5uYW1lIHx8ICdOb3Qgc3BlY2lmaWVkJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW0gYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTcwMCBheC1taW4tdy0wIGF4LW1yLTQgYXgtZmxleC1zaHJpbmstMFwiPlRpdGxlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgYXgtdGV4dC1ncmF5LTkwMCBheC10ZXh0LXJpZ2h0IGF4LWJyZWFrLXdvcmRzXCI+e3sgZm9ybURhdGEudGl0bGUgfHwgJ05vdCBzcGVjaWZpZWQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+Q2F0ZWdvcnk6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwIGF4LXRleHQtcmlnaHQgYXgtYnJlYWstd29yZHNcIj57eyBnZXRDYXRlZ29yeU5hbWUoZm9ybURhdGEuY2F0ZWdvcnkpIHx8ICdOb3Qgc2VsZWN0ZWQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+RGF0YSBTb3VyY2U6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwIGF4LXRleHQtcmlnaHQgYXgtYnJlYWstd29yZHNcIj57eyBnZXREYXRhU291cmNlVGl0bGUoZm9ybURhdGEuZGF0YVNvdXJjZSkgfHwgJ05vdCBzZWxlY3RlZCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjdGlvbiBheC1wLTYgYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMCBheC1yb3VuZGVkLWxnIGF4LWJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LXRleHQtZ3JheS05MDAgYXgtbWItNCBheC1wYi0yIGF4LWJvcmRlci1iIGF4LWJvcmRlci1ncmF5LTIwMFwiPkNvbmZpZ3VyYXRpb248L2g0PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW1zIGF4LXNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+VGVtcGxhdGU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwIGF4LXRleHQtcmlnaHQgYXgtYnJlYWstd29yZHNcIj57eyBnZXRUZW1wbGF0ZU5hbWUoZm9ybURhdGEudGVtcGxhdGUpIHx8ICdOb3Qgc2VsZWN0ZWQnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaXRlbSBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBheC1mb250LW1lZGl1bSBheC10ZXh0LWdyYXktNzAwIGF4LW1pbi13LTAgYXgtbXItNCBheC1mbGV4LXNocmluay0wXCI+Rm9ybWF0czo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGdldFNlbGVjdGVkRm9ybWF0cygpIHx8ICdOb25lIHNlbGVjdGVkJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW0gYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTcwMCBheC1taW4tdy0wIGF4LW1yLTQgYXgtZmxleC1zaHJpbmstMFwiPlNjaGVkdWxlZDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IGZvcm1EYXRhLmlzU2NoZWR1bGVkID8gJ1llcyAtICcgKyBmb3JtRGF0YS5zY2hlZHVsZUZyZXF1ZW5jeSA6ICdObycgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjdGlvbiBheC1wLTYgYXgtYm9yZGVyIGF4LWJvcmRlci1ncmF5LTIwMCBheC1yb3VuZGVkLWxnIGF4LWJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LXRleHQtZ3JheS05MDAgYXgtbWItNCBheC1wYi0yIGF4LWJvcmRlci1iIGF4LWJvcmRlci1ncmF5LTIwMFwiPlBhcmFtZXRlcnM8L2g0PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW1zIGF4LXNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoZm9ybURhdGEucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBAZm9yIChwYXJhbSBvZiBmb3JtRGF0YS5wYXJhbWV0ZXJzOyB0cmFjayBwYXJhbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW0gYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS03MDAgYXgtbWluLXctMCBheC1tci00IGF4LWZsZXgtc2hyaW5rLTBcIj57eyBwYXJhbS5uYW1lIH19Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIGF4LXRleHQtZ3JheS05MDAgYXgtdGV4dC1yaWdodCBheC1icmVhay13b3Jkc1wiPnt7IHBhcmFtLnR5cGUgfX17eyBwYXJhbS5yZXF1aXJlZCA/ICcgKFJlcXVpcmVkKScgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBheC10ZXh0LWdyYXktOTAwXCI+Tm8gcGFyYW1ldGVycyBkZWZpbmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXgtY29udGVudD5cbiAgICA8L2F4LXN0ZXAtd2l6YXJkLWl0ZW0+XG4gIDwvYXgtc3RlcC13aXphcmQ+XG5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXIgYXgtcC01XCI+XG4gICAgPG5nLXRlbXBsYXRlIFtheFN0ZXBXaXphcmRDb250ZW50XSAjd2l6YXJkQ29udGVudD1cImF4U3RlcFdpemFyZENvbnRlbnRcIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYXgtbXQtMTAgYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyIGF4LXB0LTYgYXgtYm9yZGVyLXQgYXgtYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdi1sZWZ0XCI+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZXBvcnRXaXphcmQuaXNGaXJzdCgpXCJcbiAgICAgICAgKG9uQ2xpY2spPVwicmVwb3J0V2l6YXJkLnByZXZpb3VzKClcIlxuICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgdGV4dD1cIuKGkCBQcmV2aW91c1wiXG4gICAgICAgIGxvb2s9XCJvdXRsaW5lXCI+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJuYXYtcmlnaHRcIj5cbiAgICAgIEBpZihyZXBvcnRXaXphcmQuaXNMYXN0KCkpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBcbiAgICAgICAgICAob25DbGljayk9XCJmaW5pc2hXaXphcmQoKVwiIFxuICAgICAgICAgIGNvbG9yPVwic3VjY2Vzc1wiIFxuICAgICAgICAgIHRleHQ9XCJDcmVhdGUgUmVwb3J0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTYXZpbmcoKVwiPlxuICAgICAgICAgIEBpZiAoaXNTYXZpbmcoKSkge1xuICAgICAgICAgICAgQ3JlYXRpbmcuLi5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIENyZWF0ZSBSZXBvcnRcbiAgICAgICAgICB9XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAob25DbGljayk9XCJuZXh0U3RlcCgpXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHRleHQ9XCJOZXh0IOKGklwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Qcm9jZWVkKClcIj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0="],"names":["i4","i8"],"mappings":"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"}
|
@@ -981,7 +981,7 @@ class AXMReportCreateRootWorkflowAction extends AXPWorkflowAction {
|
|
981
981
|
}
|
982
982
|
async execute(context) {
|
983
983
|
// const refId = context.getVariable<string>('options.refId');
|
984
|
-
const comp = await import('./acorex-modules-report-management-report-create-root.component-
|
984
|
+
const comp = await import('./acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs').then(m => m.AXPReportCreateRootComponent);
|
985
985
|
this.popupService.open(comp, await this.translationService.translateAsync('report.create.title', { scope: 'report-management' }));
|
986
986
|
}
|
987
987
|
}
|
package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-enYapFRb.mjs
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
import { AXMCalendarManagementService } from '@acorex/modules/calendar-management';
|
2
|
+
import { AXP_WORKFLOW_TASK_PROVIDER } from '@acorex/platform/workflow';
|
3
|
+
import * as i0 from '@angular/core';
|
4
|
+
import { inject, Injectable, NgModule } from '@angular/core';
|
5
|
+
import { AXPAuthGuard } from '@acorex/platform/auth';
|
6
|
+
import { AXP_ENTITY_CONFIG_TOKEN } from '@acorex/platform/layout/entity';
|
7
|
+
import { ROUTES } from '@angular/router';
|
8
|
+
import { AXP_MENU_PROVIDER } from '@acorex/platform/common';
|
9
|
+
|
10
|
+
class AXPTaskBoardService {
|
11
|
+
constructor() {
|
12
|
+
this.calendarManagementService = inject(AXMCalendarManagementService);
|
13
|
+
this.providers = inject(AXP_WORKFLOW_TASK_PROVIDER, { optional: true });
|
14
|
+
}
|
15
|
+
async getTaskTypes() {
|
16
|
+
if (!this.providers || (this.providers?.length || 0) === 0) {
|
17
|
+
return [];
|
18
|
+
}
|
19
|
+
return this.providers;
|
20
|
+
}
|
21
|
+
async getTasks(options) {
|
22
|
+
if (!this.providers || (this.providers?.length || 0) === 0) {
|
23
|
+
console.warn('No task providers available'); // No providers available
|
24
|
+
return [];
|
25
|
+
}
|
26
|
+
const filteredProviders = this.providers.filter((provider) => (options?.types?.length ?? 0) == 0 || options?.types?.includes(provider.name));
|
27
|
+
const mergeData = [];
|
28
|
+
const promises = filteredProviders.map((provider) => provider
|
29
|
+
.getTasks(options)
|
30
|
+
.then((tasks) => tasks.map((t) => ({ ...t, data: { provider: provider.name, ...t.data } }))));
|
31
|
+
const results = await Promise.all(promises);
|
32
|
+
for (const resultArray of results) {
|
33
|
+
mergeData.push(...resultArray);
|
34
|
+
}
|
35
|
+
return mergeData;
|
36
|
+
}
|
37
|
+
async updateTaskDateRange(task, range) {
|
38
|
+
if (!task.data?.provider) {
|
39
|
+
throw new Error('Task provider not found');
|
40
|
+
}
|
41
|
+
const provider = this.providers?.find((p) => p.name === task.data?.provider);
|
42
|
+
if (!provider) {
|
43
|
+
throw new Error('Task provider not found');
|
44
|
+
}
|
45
|
+
// Create a task update object and call the new unified method
|
46
|
+
const taskWithNewRange = { ...task, startDate: range.from, endDate: range.end };
|
47
|
+
const updatedTasks = await provider.updateTasks([taskWithNewRange]);
|
48
|
+
// updateTasks returns an array, so we return the first (and only) element
|
49
|
+
if (updatedTasks.length > 0) {
|
50
|
+
return updatedTasks[0];
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
throw new Error('Task update failed or task not found in provider.');
|
54
|
+
}
|
55
|
+
}
|
56
|
+
async updateTasks(tasks) {
|
57
|
+
if (!tasks || tasks.length === 0) {
|
58
|
+
return [];
|
59
|
+
}
|
60
|
+
if (!tasks[0].data?.provider) {
|
61
|
+
throw new Error('Task provider not found');
|
62
|
+
}
|
63
|
+
// Ensure all tasks are from the same provider before performing a bulk update
|
64
|
+
if (tasks.every((t) => t.data?.provider === tasks[0].data?.provider)) {
|
65
|
+
const provider = this.providers?.find((p) => p.name === tasks[0].data?.provider);
|
66
|
+
if (!provider) {
|
67
|
+
throw new Error('Task provider not found');
|
68
|
+
}
|
69
|
+
// Directly call the new `updateTasks` method
|
70
|
+
const updatedTasks = await provider.updateTasks(tasks);
|
71
|
+
// The provider itself no longer adds the provider name, so we don't need to remap.
|
72
|
+
// The returned tasks from the provider should be complete.
|
73
|
+
return updatedTasks;
|
74
|
+
}
|
75
|
+
throw new Error('All tasks must have the same provider for a bulk update.');
|
76
|
+
}
|
77
|
+
executeCommand(command, providerName) {
|
78
|
+
const provider = this.providers?.find((p) => p.name === providerName);
|
79
|
+
if (!provider) {
|
80
|
+
throw new Error('Task provider not found');
|
81
|
+
}
|
82
|
+
provider.executeCommand(command);
|
83
|
+
}
|
84
|
+
getStatusName(key, providerName) {
|
85
|
+
const provider = this.providers?.find((p) => p.name === providerName);
|
86
|
+
if (!provider) {
|
87
|
+
throw new Error('Task provider not found');
|
88
|
+
}
|
89
|
+
return provider.statuses.find((s) => s.key === key)?.title ?? null;
|
90
|
+
}
|
91
|
+
async getEvents(range) {
|
92
|
+
const events = await this.calendarManagementService.getEvents(range);
|
93
|
+
return events.map((event) => ({
|
94
|
+
date: event.date,
|
95
|
+
title: event.title,
|
96
|
+
description: event.description,
|
97
|
+
}));
|
98
|
+
}
|
99
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
100
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardService, providedIn: 'root' }); }
|
101
|
+
}
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardService, decorators: [{
|
103
|
+
type: Injectable,
|
104
|
+
args: [{
|
105
|
+
providedIn: 'root',
|
106
|
+
}]
|
107
|
+
}] });
|
108
|
+
|
109
|
+
function routesFactory() {
|
110
|
+
const config = inject(AXP_ENTITY_CONFIG_TOKEN);
|
111
|
+
const routes = [
|
112
|
+
{
|
113
|
+
loadComponent: () => {
|
114
|
+
return config.viewers.root();
|
115
|
+
},
|
116
|
+
path: ':app/task-board',
|
117
|
+
canActivate: [AXPAuthGuard],
|
118
|
+
children: [
|
119
|
+
{
|
120
|
+
path: '**',
|
121
|
+
loadComponent: () => import('./acorex-modules-workflow-management-task-board.page-CPL7HwN4.mjs').then((c) => c.AXMTaskBoardPage),
|
122
|
+
},
|
123
|
+
],
|
124
|
+
},
|
125
|
+
];
|
126
|
+
return routes;
|
127
|
+
}
|
128
|
+
class AXPTaskBoardModule {
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
130
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardModule }); }
|
131
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardModule, providers: [
|
132
|
+
{
|
133
|
+
provide: ROUTES,
|
134
|
+
multi: true,
|
135
|
+
useFactory: routesFactory,
|
136
|
+
},
|
137
|
+
] }); }
|
138
|
+
}
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTaskBoardModule, decorators: [{
|
140
|
+
type: NgModule,
|
141
|
+
args: [{
|
142
|
+
imports: [],
|
143
|
+
providers: [
|
144
|
+
{
|
145
|
+
provide: ROUTES,
|
146
|
+
multi: true,
|
147
|
+
useFactory: routesFactory,
|
148
|
+
},
|
149
|
+
],
|
150
|
+
}]
|
151
|
+
}] });
|
152
|
+
|
153
|
+
const config = {
|
154
|
+
i18n: 'workflow-management',
|
155
|
+
};
|
156
|
+
const RootConfig = {
|
157
|
+
config,
|
158
|
+
module: {
|
159
|
+
module: 'WorkflowManagement',
|
160
|
+
name: 'WorkflowManagement',
|
161
|
+
title: `t('module-name', {scope:"${config.i18n}"})`,
|
162
|
+
icon: 'fa-light fa-clipboard-list-check',
|
163
|
+
},
|
164
|
+
};
|
165
|
+
|
166
|
+
class AXMWorkflowManagementMenuProvider {
|
167
|
+
async provide(context) {
|
168
|
+
context.addItems([
|
169
|
+
{
|
170
|
+
name: 'task-board',
|
171
|
+
text: `t('task-board.page-title', {scope: 'workflow-management'})`,
|
172
|
+
type: 'menu',
|
173
|
+
data: {
|
174
|
+
requiredPermission: 'platform',
|
175
|
+
},
|
176
|
+
icon: 'fa-light fa-list-check',
|
177
|
+
path: `/${RootConfig.module.name}/task-board`,
|
178
|
+
},
|
179
|
+
]);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
class AXMWorkflowManagementModule {
|
184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMWorkflowManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
185
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXMWorkflowManagementModule, imports: [AXPTaskBoardModule] }); }
|
186
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMWorkflowManagementModule, providers: [
|
187
|
+
{
|
188
|
+
provide: AXP_MENU_PROVIDER,
|
189
|
+
useClass: AXMWorkflowManagementMenuProvider,
|
190
|
+
multi: true,
|
191
|
+
},
|
192
|
+
], imports: [AXPTaskBoardModule] }); }
|
193
|
+
}
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMWorkflowManagementModule, decorators: [{
|
195
|
+
type: NgModule,
|
196
|
+
args: [{
|
197
|
+
imports: [AXPTaskBoardModule],
|
198
|
+
providers: [
|
199
|
+
{
|
200
|
+
provide: AXP_MENU_PROVIDER,
|
201
|
+
useClass: AXMWorkflowManagementMenuProvider,
|
202
|
+
multi: true,
|
203
|
+
},
|
204
|
+
],
|
205
|
+
}]
|
206
|
+
}] });
|
207
|
+
|
208
|
+
/**
|
209
|
+
* Generated bundle index. Do not edit.
|
210
|
+
*/
|
211
|
+
|
212
|
+
export { AXPTaskBoardService as A, RootConfig as R, AXPTaskBoardModule as a, AXMWorkflowManagementMenuProvider as b, AXMWorkflowManagementModule as c };
|
213
|
+
//# sourceMappingURL=acorex-modules-workflow-management-acorex-modules-workflow-management-enYapFRb.mjs.map
|