imm-element-ui 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/page-form/page-form.component.mjs +7 -5
- package/esm2022/lib/steps/steps.component.mjs +7 -1
- package/fesm2022/imm-element-ui.mjs +12 -4
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/grid/grid/grid.component.d.ts +1 -1
- package/lib/page-form/page-form.component.d.ts +2 -2
- package/lib/steps/steps.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -139,10 +139,10 @@ export class PageFormComponent extends AmComponent {
|
|
|
139
139
|
authClick(btn) {
|
|
140
140
|
console.log('authClick', btn);
|
|
141
141
|
if (btn.hasOwnProperty('onClick')) {
|
|
142
|
-
btn.onClick(this.getPrm.data
|
|
142
|
+
btn.onClick(this.getPrm.data);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
statusChange(value) {
|
|
145
|
+
statusChange(value, customSteps) {
|
|
146
146
|
if (this.authLevel() < 4)
|
|
147
147
|
return;
|
|
148
148
|
if (this.id) {
|
|
@@ -159,6 +159,7 @@ export class PageFormComponent extends AmComponent {
|
|
|
159
159
|
}
|
|
160
160
|
this.web_write(param).subscribe(res => {
|
|
161
161
|
this.getDetail();
|
|
162
|
+
customSteps.refreshSteps();
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
else {
|
|
@@ -167,6 +168,7 @@ export class PageFormComponent extends AmComponent {
|
|
|
167
168
|
});
|
|
168
169
|
this.upsertPrm.addData[this.statusKey()] = value;
|
|
169
170
|
this.cForm.triggerModelEffect({ [this.statusKey()]: value });
|
|
171
|
+
customSteps.refreshSteps();
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
formDisFunc() {
|
|
@@ -183,7 +185,7 @@ export class PageFormComponent extends AmComponent {
|
|
|
183
185
|
});
|
|
184
186
|
}
|
|
185
187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n #customSteps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event, customSteps)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
187
189
|
}
|
|
188
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
|
|
189
191
|
type: Component,
|
|
@@ -198,7 +200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
198
200
|
TabsModule,
|
|
199
201
|
RowSelectorComponent,
|
|
200
202
|
TranslatePipe,
|
|
201
|
-
], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
203
|
+
], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n #customSteps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event, customSteps)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
202
204
|
}], ctorParameters: () => [], propDecorators: { customGrid: [{
|
|
203
205
|
type: ViewChild,
|
|
204
206
|
args: ['customGrid']
|
|
@@ -206,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
206
208
|
type: ViewChild,
|
|
207
209
|
args: ['cForm']
|
|
208
210
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxHQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFHdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFB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QyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO2dCQUN2RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQTNLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiwrbkRBRmxCLEVBQUUsNE9DbkNkLG9xSUFnSGUsK1FEMUZYLFlBQVksaWJBQ1osbUJBQW1CLHFiQUNuQixhQUFhLGdHQUNiLFlBQVksK0VBQ1osb0JBQW9CLCtOQUNwQixjQUFjLHlIQUNkLGFBQWEsb09BQ2IsVUFBVSw0WEFDVixvQkFBb0Isa0pBQ3BCLGFBQWE7OzRGQU1KLGlCQUFpQjtrQkFuQjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixhQUFhO3FCQUNkLGFBR1MsRUFBRTt3REFlYSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0gsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS91c2VySGlzdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBpbnB1dCwgZWZmZWN0LCBjb21wdXRlZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCxGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQnXHJcbmltcG9ydCB7IExvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2xvZy9sb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBDcnVtYkFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NydW1iLWFjdGlvbi9jcnVtYi1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RlcHNDb21wb25lbnQsU3RlcCB9IGZyb20gJy4uL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFic01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFicyc7XHJcbmltcG9ydCB7IEFtQ29tcG9uZW50LCBHZXQsIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50J1xyXG5pbXBvcnQgeyBIcmVmQnRuTGlzdCxHcmlkTGlzdCB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CdG4gfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIExvZ0NvbXBvbmVudCxcclxuICAgIENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgU3RlcHNDb21wb25lbnQsXHJcbiAgICBHcmlkQ29tcG9uZW50LFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIFJvd1NlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczpbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBBbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBhZGRWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKVxyXG4gIGdyaWRMaXN0ID0gaW5wdXQ8R3JpZExpc3RbXT4oW10pXHJcbiAgZm9ybSA9IGlucHV0LnJlcXVpcmVkPEZvcm1PcHRpb25zPih7fSlcclxuICBnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pXHJcbiAgc3RhdHVzU3RlcHMgPSBpbnB1dDxTdGVwW10+KFtdKVxyXG4gIHN0YXR1c0tleSA9IGlucHV0KCdzdGF0dXMnKVxyXG4gIGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pXHJcbiAgc2V0VGl0bGUgPSBpbnB1dDxzdHJpbmc+KClcclxuICBhY3Rpb25MaXN0ID0gaW5wdXQ8UGVybWlzc2lvbkJ0bltdPihbXSlcclxuICBtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKVxyXG4gIGZvcm1EaXNhYmxlZCA9IGlucHV0PEZ1bmN0aW9uPigpXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbUdyaWQnKSBjdXN0b21HcmlkITogR3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjRm9ybScpIGNGb3JtITogRm9ybUNvbXBvbmVudFxyXG4gIHVzZXJIaXN0b3J5U2VydmljZSA9ICBpbmplY3QoVXNlckhpc3RvcnlTZXJ2aWNlKVxyXG4gIGluZGV4VmFsdWUgPSAwXHJcbiAgdmlzaWJsZSA9IGZhbHNlXHJcbiAgZGlhbG9nU2VhcmNoUHJtITogU2VhcmNoXHJcbiAgc2VsZWN0T3B0aW9ucyE6R3JpZE9wdGlvbnNcclxuICBzZWxlY3REYXRhIDphbnlbXT0gW11cclxuICBwYWdlVXJsID0gJydcclxuICBuZXdVcmwgPSAnJ1xyXG4gIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpXHJcbiAgYXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSlcclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgc3VwZXIoKVxyXG4gICAgdGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSlcclxuICAgIHRoaXMucGFnZVVybCA9IHRoaXMucm91dGUuc25hcHNob3QudXJsLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpLnJlcGxhY2UoLyhbXlxcL10qKSQvLCBcIlwiKVxyXG4gICAgdGhpcy5uZXdVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9bmV3YFxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbE5hbWUgPSB0aGlzLmdldFBybUlucHV0KCkubW9kZWxOYW1lIVxyXG4gICAgICB0aGlzLmdldFBybSA9IHsuLi50aGlzLmdldFBybUlucHV0KCl9XHJcbiAgICAgIHRoaXMuaWQgJiYgKHRoaXMuZ2V0UHJtLmlkID0gdGhpcy5pZClcclxuICAgICAgdGhpcy5pZCAmJiB0aGlzLmdldERldGFpbCgpXHJcbiAgICB9LHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1PcHRpb25zID0gey4uLnRoaXMuZm9ybSgpfVxyXG4gICAgfSlcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKClcclxuICAgICAgY29uc29sZS5sb2coJ21vZGVsLS0tLS0nLHRoaXMuaXNMb2csdGhpcy5tb2RlbExvZygpKVxyXG4gICAgfSx7YWxsb3dTaWduYWxXcml0ZXM6dHJ1ZX0pXHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cENiID0gdGhpcy51cENiLmJpbmQodGhpcylcclxuICB9XHJcblxyXG4gIHN1Ym1pdEZvcm0oKSA6YW55e1xyXG4gICAgaWYodGhpcy5jRm9ybS52YWxpZGF0ZSgpKXtcclxuICAgICAgbGV0IGNiOmFueSA9IHRoaXMuaWQgPT09IDAgPyBudWxsIDogdGhpcy51cENiXHJcbiAgICAgIHRoaXMudXBzZXJ0KG51bGwsY2IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxSb3dzKGU6YW55KSB7XHJcbiAgICBjb25zdCBncmlkVGFiID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1cclxuICAgIGNvbnN0IGRlbGV0ZUZ1bmMgPSBncmlkVGFiLmRlbGV0ZUZ1bmNcclxuICAgIGNvbnN0IHN1YlRhYmxlID0gZ3JpZFRhYi5ncmlkT3B0aW9ucy5tb2RlbE5hbWU7XHJcblxyXG4gICAgbGV0IHBybSA9IHsgXHJcbiAgICAgIG1vZGVsTmFtZTogc3ViVGFibGUsIFxyXG4gICAgICBpZHM6ZSBcclxuICAgIH07XHJcbiAgICBpZighZGVsZXRlRnVuYyl7XHJcbiAgICAgIHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWxldGVGdW5jKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmdldCgpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbiAgdXBDYihyZXM/OmFueSl7XHJcbiAgICBpZihyZXMuaWQgPT0gMCl7XHJcbiAgICAgIHRoaXMuZ2V0RGV0YWlsKClcclxuICAgIH1lbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGVkaXRVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9JHtyZXMuaWR9YFxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtlZGl0VXJsXSlcclxuICAgICAgfSwgMTUwMClcclxuICAgIH1cclxuICAgIHRoaXMuY0Zvcm0uZmluYWxpemUoKVxyXG4gIH1cclxuICAvLyBUT0RPIOaYr+WQpumcgOimgeaVsOaNrui9rOaNouWbnuiwg+WHveaVsFxyXG4gIG9uT2soZTphbnkpe1xyXG4gICAgdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV0uc2VsZWN0RGF0YSA9IFtdXHJcbiAgICBpZihlLmxlbmd0aCA+IDApe1xyXG4gICAgICBsZXQgeyBzZWxlY3REYXRhQ2IgfSA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdXHJcbiAgICAgIGUuZm9yRWFjaCgoaXRlbTphbnkpID0+IHtcclxuICAgICAgICBsZXQgb2JqID0gc2VsZWN0RGF0YUNiID8gc2VsZWN0RGF0YUNiKGl0ZW0pOiB7Li4uaXRlbX1cclxuICAgICAgICB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhIS5wdXNoKG9iailcclxuICAgICAgfSlcclxuICAgIH0gXHJcbiAgfVxyXG4gIGdldERldGFpbCgpe1xyXG4gICAgdGhpcy53ZWJfZ2V0KHRoaXMuZ2V0UHJtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVUaXRsZShyZXMpXHJcbiAgICAgIHRoaXMuZm9ybURpc2FibGVkKCkgJiYgdGhpcy5mb3JtRGlzRnVuYygpXHJcbiAgICB9KVxyXG4gIH1cclxuICB1cGRhdGVUaXRsZShyZXM6YW55KXtcclxuICAgIC8vIGxldCB0aXRsZSA9IHRoaXMuc2V0VGl0bGUoKSA/IHRoaXMuc2V0VGl0bGUoKSA6ICcnXHJcbiAgICAvLyB0aXRsZSAhPT0gJycgJiYgdGhpcy51c2VySGlzdG9yeVNlcnZpY2Uuc2V0TGFzdFRpdGxlKHRpdGxlKVxyXG4gICAgbGV0IG1haW5GaWVsZCA9IHRoaXMuZm9ybSgpLm1haW5GaWVsZFxyXG4gICAgbGV0IHRpdGxlID0gcmVzW21haW5GaWVsZCFdXHJcbiAgICB0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpXHJcbiAgfVxyXG4gIGRhdGFTb3VyY2VTaG93KCl7XHJcbiAgICB0aGlzLmRpYWxvZ1NlYXJjaFBybSA9IHsuLi50aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VhcmNoUHJtJ10hfVxyXG4gICAgdGhpcy5zZWxlY3RPcHRpb25zID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1bJ3NlbGVjdE9wdGlvbnMnXSFcclxuICAgIGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsdGhpcy5zZWxlY3RPcHRpb25zKVxyXG4gICAgdGhpcy5kaWFsb2dTZWFyY2hQcm0ubW9kZWxOYW1lID0gdGhpcy5zZWxlY3RPcHRpb25zLm1vZGVsTmFtZVxyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgZ29SdW4oZGF0YTphbnkpe1xyXG4gICAgaWYoZGF0YS5pZEtleSl7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuZ2V0UHJtLmRhdGFbZGF0YS5pZEtleV1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake2RhdGEudXJsfS8ke2lkfWBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2RhdGEudXJsXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhDbGljayhidG46YW55KXtcclxuICAgIGNvbnNvbGUubG9nKCdhdXRoQ2xpY2snLGJ0bilcclxuICAgIGlmKGJ0bi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpKXtcclxuICAgICAgYnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSx0aGlzLmdldERldGFpbClcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdHVzQ2hhbmdlKHZhbHVlOmFueSl7XHJcbiAgICBpZih0aGlzLmF1dGhMZXZlbCgpIDwgNCkgcmV0dXJuO1xyXG4gICAgaWYodGhpcy5pZCl7XHJcbiAgICAgIGxldCBwYXJhbSA6YW55PSB7XHJcbiAgICAgICAgbW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSxcclxuICAgICAgICBkYXRhOntpZDogdGhpcy5pZCwgW3RoaXMuc3RhdHVzS2V5KCldOiB2YWx1ZX1cclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmlzTG9nKXtcclxuICAgICAgICBwYXJhbS5sb2dNb2RlbCA9IGAke3RoaXMubW9kZWxOYW1lfUxvZ2BcclxuICAgICAgICBwYXJhbS5sb2cgPSB7XHJcbiAgICAgICAgICBwaWQ6dGhpcy5pZCxcclxuICAgICAgICAgIGNvbnRlbnQ6YFvnirbmgIFdICR7dGhpcy5nZXRQcm0uZGF0YSFbdGhpcy5zdGF0dXNLZXkoKV19IC0+ICR7dmFsdWV9YFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLndlYl93cml0ZShwYXJhbSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXREZXRhaWwoKVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRQcm0uZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5nZXRQcm0uZGF0YXx8e30se1xyXG4gICAgICAgIFt0aGlzLnN0YXR1c0tleSgpXTp2YWx1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnVwc2VydFBybS5hZGREYXRhIVt0aGlzLnN0YXR1c0tleSgpXSA9IHZhbHVlXHJcbiAgICAgIHRoaXMuY0Zvcm0udHJpZ2dlck1vZGVsRWZmZWN0KHtbdGhpcy5zdGF0dXNLZXkoKV06dmFsdWV9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybURpc0Z1bmMoKXtcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMuZmllbGRzPy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgIHYuZ3JvdXA/LmZvckVhY2goKGc6YW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGZpZWxkRGlzYWJsZWQgPSBnW2Zvcm1UeXBlVG9Qcm9wc1tnLnR5cGVdXS5kaXNhYmxlZCB8fCBmYWxzZVxyXG4gICAgICAgIGlmKHRoaXMuZm9ybURpc2FibGVkKCkhKHRoaXMuZ2V0UHJtLmRhdGEpICl7XHJcbiAgICAgICAgICB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSkgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICFmaWVsZERpc2FibGVkICYmIHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pIFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMSBweC0xIGJvcmRlci1iLVsxcHhdIGJvcmRlci1bI2RiZGJkYl0gYmctd2hpdGVcIj5cclxuICAgIDxhcHAtY3J1bWItYWN0aW9uXHJcbiAgICAgIFthZGRWaXNpYmxlXT1cImFkZFZpc2libGUoKVwiXHJcbiAgICAgIFtuZXdVcmxdPVwibmV3VXJsXCJcclxuICAgICAgW2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuICAgICAgW291dGxpbmVkXT1cInRydWVcIlxyXG4gICAgICBbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdCgpXCJcclxuICAgICAgKGFjdGlvbkV2ZW50KT1cImF1dGhDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHNhdmVFdmVudCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgIDwvYXBwLWNydW1iLWFjdGlvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJocmVmQnRuTGlzdFwiPlxyXG4gICAgICBAaWYoaWQpe1xyXG4gICAgICAgIEBmb3IoYnRuIG9mIGhyZWZCdG5MaXN0KCk7dHJhY2sgYnRuKXtcclxuICAgICAgICAgIDxwLWJ1dHRvbiBcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuPy52YXJpYW50XCIgXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXItWzZweF1cIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJidG4/Lmljb25cIlxyXG4gICAgICAgICAgICBsYWJlbD1cInt7YnRuLmkxOG5LZXk/IGkxOG4uZmFueWkoYnRuLmkxOG5LZXkpIDogYnRuLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29SdW4oYnRuKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9wLWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+PC9kaXY+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIG1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4gbWQ6YmFzaXMtMS8zIHB5LTEgYmFzaXMtZnVsbCBtZDpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LXJvdyBvcmRlci0xXCI+XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIGFjdGlvbkxpc3QoKTtsZXQgaSA9ICRpbmRleDsgdHJhY2sgYnRuKSB7XHJcbiAgICAgICAgICA8cC1idXR0b25cclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuPy52YXJpYW50XCJcclxuICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bj8uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yLVs0cHhdXCJcclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuPy5pY29uXCJcclxuICAgICAgICAgICAgbGFiZWw9XCJ7eyBidG4uaTE4bktleSA/IChidG4uaTE4bktleSB8IHRyYW5zbGF0ZSkgOiBidG4ubGFiZWwgfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXV0aENsaWNrKGJ0bilcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmJ0bkRpc2FibGVkID8gYnRuLmJ0bkRpc2FibGVkKGdldFBybS5kYXRhKSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9wLWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMi8zIGJhc2lzLWZ1bGwgZmxleCBtZDpmbGV4LXJvdy1yZXZlcnNlIGZsZXgtcm93IG1kOm9yZGVyLTIgb3JkZXItZmlyc3Qgdy1mdWxsXCI+XHJcbiAgICAgICAgPGN1c3RvbS1zdGVwc1xyXG4gICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxyXG4gICAgICAgICAgW3N0ZXBzXT1cInN0YXR1c1N0ZXBzKClcIlxyXG4gICAgICAgICAgW2N1cnJlbnRdPVwiZ2V0UHJtLmRhdGEgJiYgZ2V0UHJtLmRhdGFbc3RhdHVzS2V5KCldICE9PSB1bmRlZmluZWQgPyBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gOiAwXCJcclxuICAgICAgICAgIFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJzdGF0dXNDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvY3VzdG9tLXN0ZXBzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtYWluIGZsZXggZmxleC13cmFwIG92ZXJmbG93LXktaGlkZGVuXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMi8zIGJhc2lzLWZ1bGwgaC1mdWxsIG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgbXgtMiBmb3JtLXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBmbGV4LTFcIj5cclxuICAgICAgICAgIDxmb3JtXHJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybSgpLmZvcm0hXCI+XHJcbiAgICAgICAgICAgIDxjdXN0b20tZm9ybVxyXG4gICAgICAgICAgICAgICNjRm9ybVxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZvcm1PcHRpb25zXCJcclxuICAgICAgICAgICAgICBbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cImdldFBybS5kYXRhPz97fVwiPjwvY3VzdG9tLWZvcm0+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgQGlmKGdyaWRMaXN0KCkgJiYgZ3JpZExpc3QoKS5sZW5ndGggPiAxKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtYi0yXCI+XHJcbiAgICAgICAgICAgIDxwLXRhYnMgWyh2YWx1ZSldPVwiaW5kZXhWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgIDxwLXRhYmxpc3Q+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChmY2hpbGQgb2YgZ3JpZExpc3QoKTtsZXQgaSA9ICRpbmRleDsgdHJhY2sgZmNoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxwLXRhYiBbdmFsdWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ZmNoaWxkLmkxOG5LZXkgPyBpMThuLmZhbnlpKGZjaGlsZC5pMThuS2V5KSA6IGZjaGlsZC50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgIDwvcC10YWI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9wLXRhYmxpc3Q+XHJcbiAgICAgICAgICAgIDwvcC10YWJzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBmb3IgKGdyaWQgb2YgZ3JpZExpc3QoKTsgbGV0IGkgPSAkaW5kZXg7dHJhY2sgZ3JpZCkge1xyXG4gICAgICAgICAgPGN1c3RvbS1ncmlkXHJcbiAgICAgICAgICAgICNjdXN0b21HcmlkXHJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaW5kZXhWYWx1ZSAhPWkgXCJcclxuICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ2V0UHJtLmRhdGE/LltncmlkLnN1YkRhdGFLZXkhXXx8IFtdXCJcclxuICAgICAgICAgICAgW3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG4gICAgICAgICAgICAoZGVsZXRlRW1pdCk9XCJkZWxSb3dzKCRldmVudClcIlxyXG4gICAgICAgICAgICBbYWRkVHlwZV09XCJncmlkLnN1YlRhYmxlU291cmNlXCJcclxuICAgICAgICAgICAgKGFkZEVtaXQpPVwiZGF0YVNvdXJjZVNob3coKVwiXHJcbiAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkLmdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgW2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3REYXRhXT1cImdyaWQuc2VsZWN0RGF0YVwiPlxyXG4gICAgICAgICAgPC9jdXN0b20tZ3JpZD5cclxuICAgICAgICB9ICAgICAgIFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1kOmJhc2lzLTEvMyBiYXNpcy1mdWxsIGgtZnVsbCBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgPGN1c3RvbS1sb2cgW2xvZ3NdPVwiZ2V0UHJtLmRhdGE/LmxvZz8/W11cIj48L2N1c3RvbS1sb2c+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxyb3ctc2VsZWN0b3JcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG5cdFtzZWFyY2hQcm1dPVwiZGlhbG9nU2VhcmNoUHJtXCJcclxuXHRbZ3JpZE9wdGlvbnNdPVwic2VsZWN0T3B0aW9uc1wiXHJcblx0KG9uT2spPVwib25PaygkZXZlbnQpXCI+XHJcbjwvcm93LXNlbGVjdG9yPiJdfQ==
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxHQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFHdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFB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QUFJLENBQUMsRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO2dCQUN2RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQTdLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiwrbkRBRmxCLEVBQUUsNE9DbkNkLDJzSUFpSGUsK1FEM0ZYLFlBQVksaWJBQ1osbUJBQW1CLHFiQUNuQixhQUFhLGdHQUNiLFlBQVksK0VBQ1osb0JBQW9CLCtOQUNwQixjQUFjLHlIQUNkLGFBQWEsb09BQ2IsVUFBVSw0WEFDVixvQkFBb0Isa0pBQ3BCLGFBQWE7OzRGQU1KLGlCQUFpQjtrQkFuQjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixhQUFhO3FCQUNkLGFBR1MsRUFBRTt3REFlYSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0gsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS91c2VySGlzdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBpbnB1dCwgZWZmZWN0LCBjb21wdXRlZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCxGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQnXHJcbmltcG9ydCB7IExvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2xvZy9sb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBDcnVtYkFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NydW1iLWFjdGlvbi9jcnVtYi1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RlcHNDb21wb25lbnQsU3RlcCB9IGZyb20gJy4uL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFic01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFicyc7XHJcbmltcG9ydCB7IEFtQ29tcG9uZW50LCBHZXQsIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50J1xyXG5pbXBvcnQgeyBIcmVmQnRuTGlzdCxHcmlkTGlzdCB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CdG4gfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIExvZ0NvbXBvbmVudCxcclxuICAgIENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgU3RlcHNDb21wb25lbnQsXHJcbiAgICBHcmlkQ29tcG9uZW50LFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIFJvd1NlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczpbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBBbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBhZGRWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKVxyXG4gIGdyaWRMaXN0ID0gaW5wdXQ8R3JpZExpc3RbXT4oW10pXHJcbiAgZm9ybSA9IGlucHV0LnJlcXVpcmVkPEZvcm1PcHRpb25zPih7fSlcclxuICBnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pXHJcbiAgc3RhdHVzU3RlcHMgPSBpbnB1dDxTdGVwW10+KFtdKVxyXG4gIHN0YXR1c0tleSA9IGlucHV0KCdzdGF0dXMnKVxyXG4gIGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pXHJcbiAgc2V0VGl0bGUgPSBpbnB1dDxzdHJpbmc+KClcclxuICBhY3Rpb25MaXN0ID0gaW5wdXQ8UGVybWlzc2lvbkJ0bltdPihbXSlcclxuICBtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKVxyXG4gIGZvcm1EaXNhYmxlZCA9IGlucHV0PEZ1bmN0aW9uPigpXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbUdyaWQnKSBjdXN0b21HcmlkITogR3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjRm9ybScpIGNGb3JtITogRm9ybUNvbXBvbmVudFxyXG4gIHVzZXJIaXN0b3J5U2VydmljZSA9ICBpbmplY3QoVXNlckhpc3RvcnlTZXJ2aWNlKVxyXG4gIGluZGV4VmFsdWUgPSAwXHJcbiAgdmlzaWJsZSA9IGZhbHNlXHJcbiAgZGlhbG9nU2VhcmNoUHJtITogU2VhcmNoXHJcbiAgc2VsZWN0T3B0aW9ucyE6R3JpZE9wdGlvbnNcclxuICBzZWxlY3REYXRhIDphbnlbXT0gW11cclxuICBwYWdlVXJsID0gJydcclxuICBuZXdVcmwgPSAnJ1xyXG4gIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpXHJcbiAgYXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSlcclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgc3VwZXIoKVxyXG4gICAgdGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSlcclxuICAgIHRoaXMucGFnZVVybCA9IHRoaXMucm91dGUuc25hcHNob3QudXJsLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpLnJlcGxhY2UoLyhbXlxcL10qKSQvLCBcIlwiKVxyXG4gICAgdGhpcy5uZXdVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9bmV3YFxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbE5hbWUgPSB0aGlzLmdldFBybUlucHV0KCkubW9kZWxOYW1lIVxyXG4gICAgICB0aGlzLmdldFBybSA9IHsuLi50aGlzLmdldFBybUlucHV0KCl9XHJcbiAgICAgIHRoaXMuaWQgJiYgKHRoaXMuZ2V0UHJtLmlkID0gdGhpcy5pZClcclxuICAgICAgdGhpcy5pZCAmJiB0aGlzLmdldERldGFpbCgpXHJcbiAgICB9LHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1PcHRpb25zID0gey4uLnRoaXMuZm9ybSgpfVxyXG4gICAgfSlcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKClcclxuICAgICAgY29uc29sZS5sb2coJ21vZGVsLS0tLS0nLHRoaXMuaXNMb2csdGhpcy5tb2RlbExvZygpKVxyXG4gICAgfSx7YWxsb3dTaWduYWxXcml0ZXM6dHJ1ZX0pXHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cENiID0gdGhpcy51cENiLmJpbmQodGhpcylcclxuICB9XHJcblxyXG4gIHN1Ym1pdEZvcm0oKSA6YW55e1xyXG4gICAgaWYodGhpcy5jRm9ybS52YWxpZGF0ZSgpKXtcclxuICAgICAgbGV0IGNiOmFueSA9IHRoaXMuaWQgPT09IDAgPyBudWxsIDogdGhpcy51cENiXHJcbiAgICAgIHRoaXMudXBzZXJ0KG51bGwsY2IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxSb3dzKGU6YW55KSB7XHJcbiAgICBjb25zdCBncmlkVGFiID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1cclxuICAgIGNvbnN0IGRlbGV0ZUZ1bmMgPSBncmlkVGFiLmRlbGV0ZUZ1bmNcclxuICAgIGNvbnN0IHN1YlRhYmxlID0gZ3JpZFRhYi5ncmlkT3B0aW9ucy5tb2RlbE5hbWU7XHJcblxyXG4gICAgbGV0IHBybSA9IHsgXHJcbiAgICAgIG1vZGVsTmFtZTogc3ViVGFibGUsIFxyXG4gICAgICBpZHM6ZSBcclxuICAgIH07XHJcbiAgICBpZighZGVsZXRlRnVuYyl7XHJcbiAgICAgIHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWxldGVGdW5jKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmdldCgpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbiAgdXBDYihyZXM/OmFueSl7XHJcbiAgICBpZihyZXMuaWQgPT0gMCl7XHJcbiAgICAgIHRoaXMuZ2V0RGV0YWlsKClcclxuICAgIH1lbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGVkaXRVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9JHtyZXMuaWR9YFxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtlZGl0VXJsXSlcclxuICAgICAgfSwgMTUwMClcclxuICAgIH1cclxuICAgIHRoaXMuY0Zvcm0uZmluYWxpemUoKVxyXG4gIH1cclxuICAvLyBUT0RPIOaYr+WQpumcgOimgeaVsOaNrui9rOaNouWbnuiwg+WHveaVsFxyXG4gIG9uT2soZTphbnkpe1xyXG4gICAgdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV0uc2VsZWN0RGF0YSA9IFtdXHJcbiAgICBpZihlLmxlbmd0aCA+IDApe1xyXG4gICAgICBsZXQgeyBzZWxlY3REYXRhQ2IgfSA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdXHJcbiAgICAgIGUuZm9yRWFjaCgoaXRlbTphbnkpID0+IHtcclxuICAgICAgICBsZXQgb2JqID0gc2VsZWN0RGF0YUNiID8gc2VsZWN0RGF0YUNiKGl0ZW0pOiB7Li4uaXRlbX1cclxuICAgICAgICB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhIS5wdXNoKG9iailcclxuICAgICAgfSlcclxuICAgIH0gXHJcbiAgfVxyXG4gIGdldERldGFpbCgpe1xyXG4gICAgdGhpcy53ZWJfZ2V0KHRoaXMuZ2V0UHJtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVUaXRsZShyZXMpXHJcbiAgICAgIHRoaXMuZm9ybURpc2FibGVkKCkgJiYgdGhpcy5mb3JtRGlzRnVuYygpXHJcbiAgICB9KVxyXG4gIH1cclxuICB1cGRhdGVUaXRsZShyZXM6YW55KXtcclxuICAgIC8vIGxldCB0aXRsZSA9IHRoaXMuc2V0VGl0bGUoKSA/IHRoaXMuc2V0VGl0bGUoKSA6ICcnXHJcbiAgICAvLyB0aXRsZSAhPT0gJycgJiYgdGhpcy51c2VySGlzdG9yeVNlcnZpY2Uuc2V0TGFzdFRpdGxlKHRpdGxlKVxyXG4gICAgbGV0IG1haW5GaWVsZCA9IHRoaXMuZm9ybSgpLm1haW5GaWVsZFxyXG4gICAgbGV0IHRpdGxlID0gcmVzW21haW5GaWVsZCFdXHJcbiAgICB0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpXHJcbiAgfVxyXG4gIGRhdGFTb3VyY2VTaG93KCl7XHJcbiAgICB0aGlzLmRpYWxvZ1NlYXJjaFBybSA9IHsuLi50aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VhcmNoUHJtJ10hfVxyXG4gICAgdGhpcy5zZWxlY3RPcHRpb25zID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1bJ3NlbGVjdE9wdGlvbnMnXSFcclxuICAgIGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsdGhpcy5zZWxlY3RPcHRpb25zKVxyXG4gICAgdGhpcy5kaWFsb2dTZWFyY2hQcm0ubW9kZWxOYW1lID0gdGhpcy5zZWxlY3RPcHRpb25zLm1vZGVsTmFtZVxyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgZ29SdW4oZGF0YTphbnkpe1xyXG4gICAgaWYoZGF0YS5pZEtleSl7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuZ2V0UHJtLmRhdGFbZGF0YS5pZEtleV1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake2RhdGEudXJsfS8ke2lkfWBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2RhdGEudXJsXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhDbGljayhidG46YW55KXtcclxuICAgIGNvbnNvbGUubG9nKCdhdXRoQ2xpY2snLGJ0bilcclxuICAgIGlmKGJ0bi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpKXtcclxuICAgICAgYnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSlcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdHVzQ2hhbmdlKHZhbHVlOmFueSwgY3VzdG9tU3RlcHM6IFN0ZXBzQ29tcG9uZW50KXtcclxuICAgIGlmKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcbiAgICBpZih0aGlzLmlkKXtcclxuICAgICAgbGV0IHBhcmFtIDphbnk9IHtcclxuICAgICAgICBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLFxyXG4gICAgICAgIGRhdGE6e2lkOiB0aGlzLmlkLCBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaXNMb2cpe1xyXG4gICAgICAgIHBhcmFtLmxvZ01vZGVsID0gYCR7dGhpcy5tb2RlbE5hbWV9TG9nYFxyXG4gICAgICAgIHBhcmFtLmxvZyA9IHtcclxuICAgICAgICAgIHBpZDp0aGlzLmlkLFxyXG4gICAgICAgICAgY29udGVudDpgW+eKtuaAgV0gJHt0aGlzLmdldFBybS5kYXRhIVt0aGlzLnN0YXR1c0tleSgpXX0gLT4gJHt2YWx1ZX1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud2ViX3dyaXRlKHBhcmFtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmdldERldGFpbCgpXHJcbiAgICAgICAgY3VzdG9tU3RlcHMucmVmcmVzaFN0ZXBzKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJtLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZ2V0UHJtLmRhdGF8fHt9LHtcclxuICAgICAgICBbdGhpcy5zdGF0dXNLZXkoKV06dmFsdWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbdGhpcy5zdGF0dXNLZXkoKV0gPSB2YWx1ZVxyXG4gICAgICB0aGlzLmNGb3JtLnRyaWdnZXJNb2RlbEVmZmVjdCh7W3RoaXMuc3RhdHVzS2V5KCldOnZhbHVlfSlcclxuICAgICAgY3VzdG9tU3RlcHMucmVmcmVzaFN0ZXBzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1EaXNGdW5jKCl7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zLmZpZWxkcz8uZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICB2Lmdyb3VwPy5mb3JFYWNoKChnOmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWVsZERpc2FibGVkID0gZ1tmb3JtVHlwZVRvUHJvcHNbZy50eXBlXV0uZGlzYWJsZWQgfHwgZmFsc2VcclxuICAgICAgICBpZih0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKSApe1xyXG4gICAgICAgICAgdGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAhZmllbGREaXNhYmxlZCAmJiB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KSBcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTEgcHgtMSBib3JkZXItYi1bMXB4XSBib3JkZXItWyNkYmRiZGJdIGJnLXdoaXRlXCI+XHJcbiAgICA8YXBwLWNydW1iLWFjdGlvblxyXG4gICAgICBbYWRkVmlzaWJsZV09XCJhZGRWaXNpYmxlKClcIlxyXG4gICAgICBbbmV3VXJsXT1cIm5ld1VybFwiXHJcbiAgICAgIFtpc1Nob3dDb2ddPVwidHJ1ZVwiXHJcbiAgICAgIFtvdXRsaW5lZF09XCJ0cnVlXCJcclxuICAgICAgW2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcbiAgICAgIFthY3Rpb25MaXN0XT1cImFjdGlvbkxpc3QoKVwiXHJcbiAgICAgIChhY3Rpb25FdmVudCk9XCJhdXRoQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgIChzYXZlRXZlbnQpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICA8L2FwcC1jcnVtYi1hY3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaHJlZkJ0bkxpc3RcIj5cclxuICAgICAgQGlmKGlkKXtcclxuICAgICAgICBAZm9yKGJ0biBvZiBocmVmQnRuTGlzdCgpO3RyYWNrIGJ0bil7XHJcbiAgICAgICAgICA8cC1idXR0b24gXHJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiIFxyXG4gICAgICAgICAgICBbc2V2ZXJpdHldPVwiYnRuPy5zZXZlcml0eVwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yLVs2cHhdXCJcclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuPy5pY29uXCJcclxuICAgICAgICAgICAgbGFiZWw9XCJ7e2J0bi5pMThuS2V5PyBpMThuLmZhbnlpKGJ0bi5pMThuS2V5KSA6IGJ0bi5sYWJlbH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvUnVuKGJ0bilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvcC1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gICAgXHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0yIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBtZDpiYXNpcy0yLzMgYmFzaXMtZnVsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIG1kOmJhc2lzLTEvMyBweS0xIGJhc2lzLWZ1bGwgbWQ6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgZmxleC1yb3cgb3JkZXItMVwiPlxyXG4gICAgICAgIEBmb3IgKGJ0biBvZiBhY3Rpb25MaXN0KCk7bGV0IGkgPSAkaW5kZXg7IHRyYWNrIGJ0bikge1xyXG4gICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtci1bNHB4XVwiXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cImJ0bj8uaWNvblwiXHJcbiAgICAgICAgICAgIGxhYmVsPVwie3sgYnRuLmkxOG5LZXkgPyAoYnRuLmkxOG5LZXkgfCB0cmFuc2xhdGUpIDogYnRuLmxhYmVsIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImF1dGhDbGljayhidG4pXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0bi5idG5EaXNhYmxlZCA/IGJ0bi5idG5EaXNhYmxlZChnZXRQcm0uZGF0YSkgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvcC1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPGRpdiBjbGFzcz1cIm1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsIGZsZXggbWQ6ZmxleC1yb3ctcmV2ZXJzZSBmbGV4LXJvdyBtZDpvcmRlci0yIG9yZGVyLWZpcnN0IHctZnVsbFwiPlxyXG4gICAgICAgIDxjdXN0b20tc3RlcHNcclxuICAgICAgICAgICNjdXN0b21TdGVwc1xyXG4gICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxyXG4gICAgICAgICAgW3N0ZXBzXT1cInN0YXR1c1N0ZXBzKClcIlxyXG4gICAgICAgICAgW2N1cnJlbnRdPVwiZ2V0UHJtLmRhdGEgJiYgZ2V0UHJtLmRhdGFbc3RhdHVzS2V5KCldICE9PSB1bmRlZmluZWQgPyBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gOiAwXCJcclxuICAgICAgICAgIFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJzdGF0dXNDaGFuZ2UoJGV2ZW50LCBjdXN0b21TdGVwcylcIj5cclxuICAgICAgICA8L2N1c3RvbS1zdGVwcz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibWFpbiBmbGV4IGZsZXgtd3JhcCBvdmVyZmxvdy15LWhpZGRlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsIGgtZnVsbCBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIG14LTIgZm9ybS1wYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgZmxleC0xXCI+XHJcbiAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm0oKS5mb3JtIVwiPlxyXG4gICAgICAgICAgICA8Y3VzdG9tLWZvcm1cclxuICAgICAgICAgICAgICAjY0Zvcm1cclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJmb3JtT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJnZXRQcm0uZGF0YT8/e31cIj48L2N1c3RvbS1mb3JtPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZihncmlkTGlzdCgpICYmIGdyaWRMaXN0KCkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbWItMlwiPlxyXG4gICAgICAgICAgICA8cC10YWJzIFsodmFsdWUpXT1cImluZGV4VmFsdWVcIj5cclxuICAgICAgICAgICAgICA8cC10YWJsaXN0PlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZmNoaWxkIG9mIGdyaWRMaXN0KCk7bGV0IGkgPSAkaW5kZXg7IHRyYWNrIGZjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICA8cC10YWIgW3ZhbHVlXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2ZjaGlsZC5pMThuS2V5ID8gaTE4bi5mYW55aShmY2hpbGQuaTE4bktleSkgOiBmY2hpbGQudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICA8L3AtdGFiPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvcC10YWJsaXN0PlxyXG4gICAgICAgICAgICA8L3AtdGFicz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAZm9yIChncmlkIG9mIGdyaWRMaXN0KCk7IGxldCBpID0gJGluZGV4O3RyYWNrIGdyaWQpIHtcclxuICAgICAgICAgIDxjdXN0b20tZ3JpZFxyXG4gICAgICAgICAgICAjY3VzdG9tR3JpZFxyXG4gICAgICAgICAgICBbaGlkZGVuXT1cImluZGV4VmFsdWUgIT1pIFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cImdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV18fCBbXVwiXHJcbiAgICAgICAgICAgIFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUVtaXQpPVwiZGVsUm93cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2FkZFR5cGVdPVwiZ3JpZC5zdWJUYWJsZVNvdXJjZVwiXHJcbiAgICAgICAgICAgIChhZGRFbWl0KT1cImRhdGFTb3VyY2VTaG93KClcIlxyXG4gICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZC5ncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0RGF0YV09XCJncmlkLnNlbGVjdERhdGFcIj5cclxuICAgICAgICAgIDwvY3VzdG9tLWdyaWQ+XHJcbiAgICAgICAgfSAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0xLzMgYmFzaXMtZnVsbCBoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgIDxjdXN0b20tbG9nIFtsb2dzXT1cImdldFBybS5kYXRhPy5sb2c/P1tdXCI+PC9jdXN0b20tbG9nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cm93LXNlbGVjdG9yXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRbc2VhcmNoUHJtXT1cImRpYWxvZ1NlYXJjaFBybVwiXHJcblx0W2dyaWRPcHRpb25zXT1cInNlbGVjdE9wdGlvbnNcIlxyXG5cdChvbk9rKT1cIm9uT2soJGV2ZW50KVwiPlxyXG48L3Jvdy1zZWxlY3Rvcj4iXX0=
|
|
@@ -164,6 +164,12 @@ export class StepsComponent {
|
|
|
164
164
|
}
|
|
165
165
|
this.excludeValues.set(excludeValues);
|
|
166
166
|
}
|
|
167
|
+
refreshSteps() {
|
|
168
|
+
setTimeout(() => {
|
|
169
|
+
this.alternateWidthList();
|
|
170
|
+
this.handleSteps();
|
|
171
|
+
});
|
|
172
|
+
}
|
|
167
173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepsComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
174
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: StepsComponent, isStandalone: true, selector: "custom-steps", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }, { propertyName: "endBtn", first: true, predicate: ["endBtn"], descendants: true }], ngImport: i0, template: "<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i1.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "style", "styleClass", "listStyle", "listStyleClass", "readonly", "disabled", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }] }); }
|
|
169
175
|
}
|
|
@@ -180,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
180
186
|
type: HostListener,
|
|
181
187
|
args: ['window:resize', ['$event']]
|
|
182
188
|
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9zdGVwcy9zdGVwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWMxQyxNQUFNLE9BQU8sY0FBYztJQTJCMUIsUUFBUTtRQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5QnZDLFVBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUNILGtCQUFhLEdBQUcsTUFBTSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUN6RCxZQUFPLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsV0FBTSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5QixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLENBQUMsQ0FBQztJQVM2QixDQUFDO0lBRTNDLGVBQWU7UUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYTtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNoRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxTQUFTO1lBQ1YsQ0FBQztZQUNELElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsU0FBUztZQUNWLENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELFNBQVM7WUFDVixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0YsQ0FBQztJQUVELFlBQVk7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDL0YsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLEtBQVU7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLENBQVMsRUFBRSxPQUFpQjtRQUNwQyxJQUFJLE1BQU0sR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDckUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVU7UUFDNUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtRQUNqQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXRCLElBQUksU0FBUyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7UUFDbkIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0QsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1RCxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDekMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUCxDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO2dCQUMzQixVQUFVLEVBQUUsQ0FBQztnQkFDYixJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUCxDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixTQUFTLEVBQUUsQ0FBQztnQkFDWixJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM5RCxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFrQjtRQUNsQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xFLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDdEYsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVztRQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxDQUFDO1lBQ1AsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDUCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxDQUFDOytHQTFLVyxjQUFjO21HQUFkLGNBQWMseXVCQ2xCM0IsdThDQStDQSxta0REakNXLFdBQVcsOEJBQUUsYUFBYSxxK0JBQUUsT0FBTzs7NEZBSWpDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0MsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDOzhFQUtILFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRCxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUJ0QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgUmVuZGVyZXIyLCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExpc3Rib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2xpc3Rib3gnO1xyXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAncHJpbWVuZy9wb3BvdmVyJztcclxuZXhwb3J0IGludGVyZmFjZSBTdGVwIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdGkxOG5LZXk/OiBzdHJpbmc7XHJcblx0dmFsdWU6IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjdXN0b20tc3RlcHMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0Zvcm1zTW9kdWxlLCBMaXN0Ym94TW9kdWxlLCBQb3BvdmVyXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9zdGVwcy5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGVwc0NvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZCgnZW5kQnRuJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVuZEJ0biE6IEVsZW1lbnRSZWY7XHJcblx0c3RlcHMgPSBpbnB1dDxTdGVwW10+KFtdKTtcclxuXHRkaXNwbGF5U3RlcHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcblx0XHRjb25zdCBzdGVwcyA9IFsuLi50aGlzLnN0ZXBzKCldO1xyXG5cdFx0c3RlcHMudW5zaGlmdCh7IHZhbHVlOiAnc3RhcnQnLCBsYWJlbDogJy4uLicgfSk7XHJcblx0XHRzdGVwcy5wdXNoKHsgdmFsdWU6ICdlbmQnLCBsYWJlbDogJy4uLicgfSk7XHJcblx0XHRyZXR1cm4gc3RlcHMuZmlsdGVyKChzdGVwKSA9PiAhdGhpcy5leGNsdWRlVmFsdWVzKCkuaW5jbHVkZXMoc3RlcC52YWx1ZSkpO1xyXG5cdH0pO1xyXG5cdGV4Y2x1ZGVWYWx1ZXMgPSBzaWduYWw8KG51bWJlciB8ICdzdGFydCcgfCAnZW5kJylbXT4oW10pO1xyXG5cdGN1cnJlbnQgPSBpbnB1dDxudW1iZXI+KDIpO1xyXG5cdGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xyXG5cdGNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XHJcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcblxyXG5cdHdpZHRoTGlzdDogbnVtYmVyW10gPSBbXTtcclxuXHRTVEFSVF9CVVRUT05fV0lEVEggPSAzMjtcclxuXHRFTkRfQlVUVE9OX1dJRFRIID0gNDc7XHJcblxyXG5cdHN0YXJ0SW5kZXggPSAwO1xyXG5cdGVuZEluZGV4ID0gMDtcclxuXHRzdGFydFN0ZXBzOiBTdGVwW10gPSBbXTtcclxuXHRlbmRTdGVwczogU3RlcFtdID0gW107XHJcblx0bWF4V2lkdGggPSAwO1xyXG5cclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuXHRvblJlc2l6ZSgpIHtcclxuXHRcdHRoaXMuY2FsY01heFdpZHRoKCk7XHJcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xyXG5cdFx0dGhpcy5oYW5kbGVTdGVwcygpO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHR0aGlzLmNhbGNNYXhXaWR0aCgpO1xyXG5cdFx0dGhpcy5pbml0V2lkdGhMaXN0KCk7XHJcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xyXG5cdFx0dGhpcy5oYW5kbGVTdGVwcygpO1xyXG5cdH1cclxuXHJcblx0aW5pdFdpZHRoTGlzdCgpIHtcclxuXHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpLmNoaWxkcmVuWzBdLmNoaWxkcmVuO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRpZiAoIWNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnc3RlcC1pdGVtJykpIHtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzdGFydC1pdGVtJykpIHtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlbmQtaXRlbScpKSB7XHJcblx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy53aWR0aExpc3QucHVzaChjaGlsZHJlbltpXS5vZmZzZXRXaWR0aCB8fCAwKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNhbGNNYXhXaWR0aCgpIHtcclxuXHRcdHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCA/IHdpbmRvdy5pbm5lcldpZHRoICogMC45NiA6IHdpbmRvdy5pbm5lcldpZHRoICogMC40MjtcclxuXHR9XHJcblxyXG5cdHNob3dTdGFydFN0ZXBzKGV2ZW50OiBhbnksIHN0YXJ0T3A6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcblx0XHRzdGFydE9wLnRvZ2dsZShldmVudCk7XHJcblx0fVxyXG5cclxuXHRzaG93RW5kU3RlcHMoZXZlbnQ6IGFueSwgZW5kT3A6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcblx0XHRlbmRPcC50b2dnbGUoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Q2xhc3MoaTogbnVtYmVyLCBjbGFzc2VzOiBzdHJpbmdbXSkge1xyXG5cdFx0bGV0IHJlc3VsdCA9IFsnc3RlcC1pdGVtJywgJ2ZsZXgnLCAnaXRlbXMtY2VudGVyJywgJ2p1c3RpZnktY2VudGVyJ107XHJcblx0XHRyZXN1bHQgPSByZXN1bHQuY29uY2F0KGNsYXNzZXMpO1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3Itbm90LWFsbG93ZWQnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3ItcG9pbnRlciBhbGxvdy1ob3ZlcicpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5kaXNwbGF5U3RlcHMoKSFbaV07XHJcblx0XHRpZiAoaSA9PSAwKSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWZpcnN0Jyk7XHJcblx0XHR9IGVsc2UgaWYgKGkgKyAxID09IHRoaXMuZGlzcGxheVN0ZXBzKCk/Lmxlbmd0aCkge1xyXG5cdFx0XHRyZXN1bHQucHVzaCgnc3RlcC1sYXN0Jyk7XHJcblx0XHR9XHJcblx0XHRpZiAodmFsdWUgPT0gdGhpcy5jdXJyZW50KCkpIHtcclxuXHRcdFx0cmVzdWx0LnB1c2goJ3N0ZXAtYWN0aXZlJyk7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdtZDpmbGV4LW5vbmUgZmxleC0xJyk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcclxuXHR9XHJcblxyXG5cdGNoYW5nZVN0YXR1cyhzdGVwOiBhbnkpIHtcclxuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRvblN0YXJ0U3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xyXG5cdFx0dGhpcy5jaGFuZ2UuZW1pdChzdGVwLnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdG9uRW5kU3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xyXG5cdFx0dGhpcy5jaGFuZ2UuZW1pdChzdGVwLnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdGFsdGVybmF0ZVdpZHRoTGlzdCgpIHtcclxuXHRcdGxldCBpbmRleCA9IHRoaXMuc3RlcHMoKS5maW5kSW5kZXgoKHMpID0+IHMudmFsdWUgPT09IHRoaXMuY3VycmVudCgpKTtcclxuXHRcdGluZGV4ID0gaW5kZXggPT09IC0xID8gMCA6IGluZGV4O1xyXG5cdFx0dGhpcy5zdGFydEluZGV4ID0gaW5kZXg7XHJcblx0XHR0aGlzLmVuZEluZGV4ID0gaW5kZXg7XHJcblxyXG5cdFx0bGV0IGxlZnRJbmRleCA9IGluZGV4IC0gMTtcclxuXHRcdGxldCByaWdodEluZGV4ID0gaW5kZXggKyAxO1xyXG5cdFx0bGV0IHR1cm4gPSAncmlnaHQnO1xyXG5cdFx0bGV0IHRvdGFsV2lkdGggPSB0aGlzLndpZHRoTGlzdFtpbmRleF07XHJcblxyXG5cdFx0d2hpbGUgKGxlZnRJbmRleCA+PSAwIHx8IHJpZ2h0SW5kZXggPCB0aGlzLndpZHRoTGlzdC5sZW5ndGgpIHtcclxuXHRcdFx0aWYgKHR1cm4gPT09ICdyaWdodCcgJiYgcmlnaHRJbmRleCA8IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCkge1xyXG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbcmlnaHRJbmRleF07XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoKSkge1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuZW5kSW5kZXggPSByaWdodEluZGV4O1xyXG5cdFx0XHRcdHJpZ2h0SW5kZXgrKztcclxuXHRcdFx0XHR0dXJuID0gJ2xlZnQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHR1cm4gPT09ICdsZWZ0JyAmJiBsZWZ0SW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbbGVmdEluZGV4XTtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0V4Y2VlZE1heFdpZHRoKHRvdGFsV2lkdGgpKSB7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5zdGFydEluZGV4ID0gbGVmdEluZGV4O1xyXG5cdFx0XHRcdGxlZnRJbmRleC0tO1xyXG5cdFx0XHRcdHR1cm4gPSAncmlnaHQnO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHR1cm4gPSByaWdodEluZGV4IDwgdGhpcy53aWR0aExpc3QubGVuZ3RoID8gJ3JpZ2h0JyA6ICdsZWZ0JztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoOiBudW1iZXIpIHtcclxuXHRcdHRvdGFsV2lkdGggKz0gdGhpcy5zdGFydEluZGV4ID09PSAwID8gMCA6IHRoaXMuU1RBUlRfQlVUVE9OX1dJRFRIO1xyXG5cdFx0dG90YWxXaWR0aCArPSB0aGlzLmVuZEluZGV4ID09PSB0aGlzLndpZHRoTGlzdC5sZW5ndGggLSAxID8gMCA6IHRoaXMuRU5EX0JVVFRPTl9XSURUSDtcclxuXHRcdHJldHVybiB0b3RhbFdpZHRoID49IHRoaXMubWF4V2lkdGg7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVTdGVwcygpIHtcclxuXHRcdGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcygpO1xyXG5cdFx0Y29uc3QgZXhjbHVkZVZhbHVlczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0aWYgKGkgPCB0aGlzLnN0YXJ0SW5kZXgpIHtcclxuXHRcdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goc3RlcHNbaV0udmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChpID4gdGhpcy5lbmRJbmRleCkge1xyXG5cdFx0XHRcdGV4Y2x1ZGVWYWx1ZXMucHVzaChzdGVwc1tpXS52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zdGFydEluZGV4ID4gMCkge1xyXG5cdFx0XHR0aGlzLnN0YXJ0U3RlcHMgPSBzdGVwcy5zbGljZSgwLCB0aGlzLnN0YXJ0SW5kZXgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZXhjbHVkZVZhbHVlcy5wdXNoKCdzdGFydCcpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZW5kSW5kZXggPCBzdGVwcy5sZW5ndGggLSAxKSB7XHJcblx0XHRcdHRoaXMuZW5kU3RlcHMgPSBzdGVwcy5zbGljZSh0aGlzLmVuZEluZGV4ICsgMSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goJ2VuZCcpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5leGNsdWRlVmFsdWVzLnNldChleGNsdWRlVmFsdWVzKTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdlxyXG5cdCNjb250YWluZXJcclxuXHRjbGFzcz1cImZsZXggbXktMSB3LWZ1bGwganVzdGlmeS1lbmRcIj5cclxuXHRAZm9yIChzdCBvZiBkaXNwbGF5U3RlcHMoKTsgdHJhY2sgc3Q7IGxldCBpID0gJGluZGV4KSB7XHJcblx0XHRAaWYgKHN0LnZhbHVlID09PSAnc3RhcnQnKSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHQjc3RhcnRJdGVtXHJcblx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFsnc3RhcnQtaXRlbSddKVwiXHJcblx0XHRcdFx0KGNsaWNrKT1cInNob3dTdGFydFN0ZXBzKCRldmVudCwgc3RhcnRPcClcIj5cclxuXHRcdFx0XHQ8c3Bhbj4uLi48L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8cC1wb3BvdmVyXHJcblx0XHRcdFx0I3N0YXJ0T3BcclxuXHRcdFx0XHRbc3R5bGVDbGFzc109XCIncG9wLXN0ZXBzIHN0YXJ0LXN0ZXBzJ1wiXHJcblx0XHRcdFx0W2FwcGVuZFRvXT1cInN0YXJ0SXRlbVwiPlxyXG5cdFx0XHRcdDxwLWxpc3Rib3hcclxuXHRcdFx0XHRcdFtvcHRpb25zXT1cInN0YXJ0U3RlcHNcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uU3RhcnRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGwgbWQ6dy01NlwiIC8+XHJcblx0XHRcdDwvcC1wb3BvdmVyPlxyXG5cdFx0fSBAZWxzZSBpZiAoc3QudmFsdWUgPT09ICdlbmQnKSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHQjZW5kSXRlbVxyXG5cdFx0XHRcdFtjbGFzc109XCJnZXRDbGFzcyhpLCBbJ2VuZC1pdGVtJ10pXCJcclxuXHRcdFx0XHQoY2xpY2spPVwic2hvd0VuZFN0ZXBzKCRldmVudCwgZW5kT3ApXCI+XHJcblx0XHRcdFx0PHNwYW4+Li4uPC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PHAtcG9wb3ZlclxyXG5cdFx0XHRcdCNlbmRPcFxyXG5cdFx0XHRcdFtzdHlsZUNsYXNzXT1cIidwb3Atc3RlcHMgZW5kLXN0ZXBzJ1wiXHJcblx0XHRcdFx0W2FwcGVuZFRvXT1cImVuZEl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1saXN0Ym94XHJcblx0XHRcdFx0XHRbb3B0aW9uc109XCJlbmRTdGVwc1wiXHJcblx0XHRcdFx0XHQob25DaGFuZ2UpPVwib25FbmRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGwgbWQ6dy01NlwiIC8+XHJcblx0XHRcdDwvcC1wb3BvdmVyPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHRbY2xhc3NdPVwiZ2V0Q2xhc3MoaSwgW10pXCJcclxuXHRcdFx0XHQoY2xpY2spPVwiY2hhbmdlU3RhdHVzKHN0KVwiPlxyXG5cdFx0XHRcdDxzcGFuPnt7IHN0LmkxOG5LZXkgPyBpMThuLmZhbnlpKHN0LmkxOG5LZXkpIDogc3QubGFiZWwgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9zdGVwcy9zdGVwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWMxQyxNQUFNLE9BQU8sY0FBYztJQTJCMUIsUUFBUTtRQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5QnZDLFVBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxL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SUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQWpMVyxjQUFjO21HQUFkLGNBQWMseXVCQ2xCM0IsdThDQStDQSxta0REakNXLFdBQVcsOEJBQUUsYUFBYSxxK0JBQUUsT0FBTzs7NEZBSWpDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0MsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDOzhFQUtILFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRCxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUJ0QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgUmVuZGVyZXIyLCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExpc3Rib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2xpc3Rib3gnO1xyXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAncHJpbWVuZy9wb3BvdmVyJztcclxuZXhwb3J0IGludGVyZmFjZSBTdGVwIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdGkxOG5LZXk/OiBzdHJpbmc7XHJcblx0dmFsdWU6IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjdXN0b20tc3RlcHMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0Zvcm1zTW9kdWxlLCBMaXN0Ym94TW9kdWxlLCBQb3BvdmVyXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9zdGVwcy5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGVwc0NvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZCgnZW5kQnRuJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVuZEJ0biE6IEVsZW1lbnRSZWY7XHJcblx0c3RlcHMgPSBpbnB1dDxTdGVwW10+KFtdKTtcclxuXHRkaXNwbGF5U3RlcHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcblx0XHRjb25zdCBzdGVwcyA9IFsuLi50aGlzLnN0ZXBzKCldO1xyXG5cdFx0c3RlcHMudW5zaGlmdCh7IHZhbHVlOiAnc3RhcnQnLCBsYWJlbDogJy4uLicgfSk7XHJcblx0XHRzdGVwcy5wdXNoKHsgdmFsdWU6ICdlbmQnLCBsYWJlbDogJy4uLicgfSk7XHJcblx0XHRyZXR1cm4gc3RlcHMuZmlsdGVyKChzdGVwKSA9PiAhdGhpcy5leGNsdWRlVmFsdWVzKCkuaW5jbHVkZXMoc3RlcC52YWx1ZSkpO1xyXG5cdH0pO1xyXG5cdGV4Y2x1ZGVWYWx1ZXMgPSBzaWduYWw8KG51bWJlciB8ICdzdGFydCcgfCAnZW5kJylbXT4oW10pO1xyXG5cdGN1cnJlbnQgPSBpbnB1dDxudW1iZXI+KDIpO1xyXG5cdGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xyXG5cdGNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XHJcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcblxyXG5cdHdpZHRoTGlzdDogbnVtYmVyW10gPSBbXTtcclxuXHRTVEFSVF9CVVRUT05fV0lEVEggPSAzMjtcclxuXHRFTkRfQlVUVE9OX1dJRFRIID0gNDc7XHJcblxyXG5cdHN0YXJ0SW5kZXggPSAwO1xyXG5cdGVuZEluZGV4ID0gMDtcclxuXHRzdGFydFN0ZXBzOiBTdGVwW10gPSBbXTtcclxuXHRlbmRTdGVwczogU3RlcFtdID0gW107XHJcblx0bWF4V2lkdGggPSAwO1xyXG5cclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuXHRvblJlc2l6ZSgpIHtcclxuXHRcdHRoaXMuY2FsY01heFdpZHRoKCk7XHJcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xyXG5cdFx0dGhpcy5oYW5kbGVTdGVwcygpO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHR0aGlzLmNhbGNNYXhXaWR0aCgpO1xyXG5cdFx0dGhpcy5pbml0V2lkdGhMaXN0KCk7XHJcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xyXG5cdFx0dGhpcy5oYW5kbGVTdGVwcygpO1xyXG5cdH1cclxuXHJcblx0aW5pdFdpZHRoTGlzdCgpIHtcclxuXHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpLmNoaWxkcmVuWzBdLmNoaWxkcmVuO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRpZiAoIWNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnc3RlcC1pdGVtJykpIHtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzdGFydC1pdGVtJykpIHtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlbmQtaXRlbScpKSB7XHJcblx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy53aWR0aExpc3QucHVzaChjaGlsZHJlbltpXS5vZmZzZXRXaWR0aCB8fCAwKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNhbGNNYXhXaWR0aCgpIHtcclxuXHRcdHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCA/IHdpbmRvdy5pbm5lcldpZHRoICogMC45NiA6IHdpbmRvdy5pbm5lcldpZHRoICogMC40MjtcclxuXHR9XHJcblxyXG5cdHNob3dTdGFydFN0ZXBzKGV2ZW50OiBhbnksIHN0YXJ0T3A6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcblx0XHRzdGFydE9wLnRvZ2dsZShldmVudCk7XHJcblx0fVxyXG5cclxuXHRzaG93RW5kU3RlcHMoZXZlbnQ6IGFueSwgZW5kT3A6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcblx0XHRlbmRPcC50b2dnbGUoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Q2xhc3MoaTogbnVtYmVyLCBjbGFzc2VzOiBzdHJpbmdbXSkge1xyXG5cdFx0bGV0IHJlc3VsdCA9IFsnc3RlcC1pdGVtJywgJ2ZsZXgnLCAnaXRlbXMtY2VudGVyJywgJ2p1c3RpZnktY2VudGVyJ107XHJcblx0XHRyZXN1bHQgPSByZXN1bHQuY29uY2F0KGNsYXNzZXMpO1xyXG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3Itbm90LWFsbG93ZWQnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3ItcG9pbnRlciBhbGxvdy1ob3ZlcicpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5kaXNwbGF5U3RlcHMoKSFbaV07XHJcblx0XHRpZiAoaSA9PSAwKSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWZpcnN0Jyk7XHJcblx0XHR9IGVsc2UgaWYgKGkgKyAxID09IHRoaXMuZGlzcGxheVN0ZXBzKCk/Lmxlbmd0aCkge1xyXG5cdFx0XHRyZXN1bHQucHVzaCgnc3RlcC1sYXN0Jyk7XHJcblx0XHR9XHJcblx0XHRpZiAodmFsdWUgPT0gdGhpcy5jdXJyZW50KCkpIHtcclxuXHRcdFx0cmVzdWx0LnB1c2goJ3N0ZXAtYWN0aXZlJyk7XHJcblx0XHRcdHJlc3VsdC5wdXNoKCdtZDpmbGV4LW5vbmUgZmxleC0xJyk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcclxuXHR9XHJcblxyXG5cdGNoYW5nZVN0YXR1cyhzdGVwOiBhbnkpIHtcclxuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRvblN0YXJ0U3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xyXG5cdFx0dGhpcy5jaGFuZ2UuZW1pdChzdGVwLnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdG9uRW5kU3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xyXG5cdFx0dGhpcy5jaGFuZ2UuZW1pdChzdGVwLnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdGFsdGVybmF0ZVdpZHRoTGlzdCgpIHtcclxuXHRcdGxldCBpbmRleCA9IHRoaXMuc3RlcHMoKS5maW5kSW5kZXgoKHMpID0+IHMudmFsdWUgPT09IHRoaXMuY3VycmVudCgpKTtcclxuXHRcdGluZGV4ID0gaW5kZXggPT09IC0xID8gMCA6IGluZGV4O1xyXG5cdFx0dGhpcy5zdGFydEluZGV4ID0gaW5kZXg7XHJcblx0XHR0aGlzLmVuZEluZGV4ID0gaW5kZXg7XHJcblxyXG5cdFx0bGV0IGxlZnRJbmRleCA9IGluZGV4IC0gMTtcclxuXHRcdGxldCByaWdodEluZGV4ID0gaW5kZXggKyAxO1xyXG5cdFx0bGV0IHR1cm4gPSAncmlnaHQnO1xyXG5cdFx0bGV0IHRvdGFsV2lkdGggPSB0aGlzLndpZHRoTGlzdFtpbmRleF07XHJcblxyXG5cdFx0d2hpbGUgKGxlZnRJbmRleCA+PSAwIHx8IHJpZ2h0SW5kZXggPCB0aGlzLndpZHRoTGlzdC5sZW5ndGgpIHtcclxuXHRcdFx0aWYgKHR1cm4gPT09ICdyaWdodCcgJiYgcmlnaHRJbmRleCA8IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCkge1xyXG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbcmlnaHRJbmRleF07XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoKSkge1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuZW5kSW5kZXggPSByaWdodEluZGV4O1xyXG5cdFx0XHRcdHJpZ2h0SW5kZXgrKztcclxuXHRcdFx0XHR0dXJuID0gJ2xlZnQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHR1cm4gPT09ICdsZWZ0JyAmJiBsZWZ0SW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbbGVmdEluZGV4XTtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0V4Y2VlZE1heFdpZHRoKHRvdGFsV2lkdGgpKSB7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5zdGFydEluZGV4ID0gbGVmdEluZGV4O1xyXG5cdFx0XHRcdGxlZnRJbmRleC0tO1xyXG5cdFx0XHRcdHR1cm4gPSAncmlnaHQnO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHR1cm4gPSByaWdodEluZGV4IDwgdGhpcy53aWR0aExpc3QubGVuZ3RoID8gJ3JpZ2h0JyA6ICdsZWZ0JztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoOiBudW1iZXIpIHtcclxuXHRcdHRvdGFsV2lkdGggKz0gdGhpcy5zdGFydEluZGV4ID09PSAwID8gMCA6IHRoaXMuU1RBUlRfQlVUVE9OX1dJRFRIO1xyXG5cdFx0dG90YWxXaWR0aCArPSB0aGlzLmVuZEluZGV4ID09PSB0aGlzLndpZHRoTGlzdC5sZW5ndGggLSAxID8gMCA6IHRoaXMuRU5EX0JVVFRPTl9XSURUSDtcclxuXHRcdHJldHVybiB0b3RhbFdpZHRoID49IHRoaXMubWF4V2lkdGg7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVTdGVwcygpIHtcclxuXHRcdGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcygpO1xyXG5cdFx0Y29uc3QgZXhjbHVkZVZhbHVlczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0aWYgKGkgPCB0aGlzLnN0YXJ0SW5kZXgpIHtcclxuXHRcdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goc3RlcHNbaV0udmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChpID4gdGhpcy5lbmRJbmRleCkge1xyXG5cdFx0XHRcdGV4Y2x1ZGVWYWx1ZXMucHVzaChzdGVwc1tpXS52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zdGFydEluZGV4ID4gMCkge1xyXG5cdFx0XHR0aGlzLnN0YXJ0U3RlcHMgPSBzdGVwcy5zbGljZSgwLCB0aGlzLnN0YXJ0SW5kZXgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZXhjbHVkZVZhbHVlcy5wdXNoKCdzdGFydCcpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZW5kSW5kZXggPCBzdGVwcy5sZW5ndGggLSAxKSB7XHJcblx0XHRcdHRoaXMuZW5kU3RlcHMgPSBzdGVwcy5zbGljZSh0aGlzLmVuZEluZGV4ICsgMSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goJ2VuZCcpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5leGNsdWRlVmFsdWVzLnNldChleGNsdWRlVmFsdWVzKTtcclxuXHR9XHJcblxyXG5cdHJlZnJlc2hTdGVwcygpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xyXG5cdFx0XHR0aGlzLmhhbmRsZVN0ZXBzKCk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdlxyXG5cdCNjb250YWluZXJcclxuXHRjbGFzcz1cImZsZXggbXktMSB3LWZ1bGwganVzdGlmeS1lbmRcIj5cclxuXHRAZm9yIChzdCBvZiBkaXNwbGF5U3RlcHMoKTsgdHJhY2sgc3Q7IGxldCBpID0gJGluZGV4KSB7XHJcblx0XHRAaWYgKHN0LnZhbHVlID09PSAnc3RhcnQnKSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHQjc3RhcnRJdGVtXHJcblx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFsnc3RhcnQtaXRlbSddKVwiXHJcblx0XHRcdFx0KGNsaWNrKT1cInNob3dTdGFydFN0ZXBzKCRldmVudCwgc3RhcnRPcClcIj5cclxuXHRcdFx0XHQ8c3Bhbj4uLi48L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8cC1wb3BvdmVyXHJcblx0XHRcdFx0I3N0YXJ0T3BcclxuXHRcdFx0XHRbc3R5bGVDbGFzc109XCIncG9wLXN0ZXBzIHN0YXJ0LXN0ZXBzJ1wiXHJcblx0XHRcdFx0W2FwcGVuZFRvXT1cInN0YXJ0SXRlbVwiPlxyXG5cdFx0XHRcdDxwLWxpc3Rib3hcclxuXHRcdFx0XHRcdFtvcHRpb25zXT1cInN0YXJ0U3RlcHNcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uU3RhcnRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGwgbWQ6dy01NlwiIC8+XHJcblx0XHRcdDwvcC1wb3BvdmVyPlxyXG5cdFx0fSBAZWxzZSBpZiAoc3QudmFsdWUgPT09ICdlbmQnKSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHQjZW5kSXRlbVxyXG5cdFx0XHRcdFtjbGFzc109XCJnZXRDbGFzcyhpLCBbJ2VuZC1pdGVtJ10pXCJcclxuXHRcdFx0XHQoY2xpY2spPVwic2hvd0VuZFN0ZXBzKCRldmVudCwgZW5kT3ApXCI+XHJcblx0XHRcdFx0PHNwYW4+Li4uPC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PHAtcG9wb3ZlclxyXG5cdFx0XHRcdCNlbmRPcFxyXG5cdFx0XHRcdFtzdHlsZUNsYXNzXT1cIidwb3Atc3RlcHMgZW5kLXN0ZXBzJ1wiXHJcblx0XHRcdFx0W2FwcGVuZFRvXT1cImVuZEl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1saXN0Ym94XHJcblx0XHRcdFx0XHRbb3B0aW9uc109XCJlbmRTdGVwc1wiXHJcblx0XHRcdFx0XHQob25DaGFuZ2UpPVwib25FbmRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGwgbWQ6dy01NlwiIC8+XHJcblx0XHRcdDwvcC1wb3BvdmVyPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHRbY2xhc3NdPVwiZ2V0Q2xhc3MoaSwgW10pXCJcclxuXHRcdFx0XHQoY2xpY2spPVwiY2hhbmdlU3RhdHVzKHN0KVwiPlxyXG5cdFx0XHRcdDxzcGFuPnt7IHN0LmkxOG5LZXkgPyBpMThuLmZhbnlpKHN0LmkxOG5LZXkpIDogc3QubGFiZWwgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -6373,6 +6373,12 @@ class StepsComponent {
|
|
|
6373
6373
|
}
|
|
6374
6374
|
this.excludeValues.set(excludeValues);
|
|
6375
6375
|
}
|
|
6376
|
+
refreshSteps() {
|
|
6377
|
+
setTimeout(() => {
|
|
6378
|
+
this.alternateWidthList();
|
|
6379
|
+
this.handleSteps();
|
|
6380
|
+
});
|
|
6381
|
+
}
|
|
6376
6382
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepsComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6377
6383
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: StepsComponent, isStandalone: true, selector: "custom-steps", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }, { propertyName: "endBtn", first: true, predicate: ["endBtn"], descendants: true }], ngImport: i0, template: "<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i1$6.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "style", "styleClass", "listStyle", "listStyleClass", "readonly", "disabled", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }] }); }
|
|
6378
6384
|
}
|
|
@@ -6512,10 +6518,10 @@ class PageFormComponent extends AmComponent {
|
|
|
6512
6518
|
authClick(btn) {
|
|
6513
6519
|
console.log('authClick', btn);
|
|
6514
6520
|
if (btn.hasOwnProperty('onClick')) {
|
|
6515
|
-
btn.onClick(this.getPrm.data
|
|
6521
|
+
btn.onClick(this.getPrm.data);
|
|
6516
6522
|
}
|
|
6517
6523
|
}
|
|
6518
|
-
statusChange(value) {
|
|
6524
|
+
statusChange(value, customSteps) {
|
|
6519
6525
|
if (this.authLevel() < 4)
|
|
6520
6526
|
return;
|
|
6521
6527
|
if (this.id) {
|
|
@@ -6532,6 +6538,7 @@ class PageFormComponent extends AmComponent {
|
|
|
6532
6538
|
}
|
|
6533
6539
|
this.web_write(param).subscribe(res => {
|
|
6534
6540
|
this.getDetail();
|
|
6541
|
+
customSteps.refreshSteps();
|
|
6535
6542
|
});
|
|
6536
6543
|
}
|
|
6537
6544
|
else {
|
|
@@ -6540,6 +6547,7 @@ class PageFormComponent extends AmComponent {
|
|
|
6540
6547
|
});
|
|
6541
6548
|
this.upsertPrm.addData[this.statusKey()] = value;
|
|
6542
6549
|
this.cForm.triggerModelEffect({ [this.statusKey()]: value });
|
|
6550
|
+
customSteps.refreshSteps();
|
|
6543
6551
|
}
|
|
6544
6552
|
}
|
|
6545
6553
|
formDisFunc() {
|
|
@@ -6556,7 +6564,7 @@ class PageFormComponent extends AmComponent {
|
|
|
6556
6564
|
});
|
|
6557
6565
|
}
|
|
6558
6566
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6559
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.TabList, selector: "p-tablist" }, { kind: "component", type: i3$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6567
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n #customSteps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event, customSteps)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.TabList, selector: "p-tablist" }, { kind: "component", type: i3$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6560
6568
|
}
|
|
6561
6569
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
|
|
6562
6570
|
type: Component,
|
|
@@ -6571,7 +6579,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6571
6579
|
TabsModule,
|
|
6572
6580
|
RowSelectorComponent,
|
|
6573
6581
|
TranslatePipe,
|
|
6574
|
-
], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
6582
|
+
], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n [actionList]=\"actionList()\"\r\n (actionEvent)=\"authClick($event)\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n <custom-steps\r\n #customSteps\r\n class=\"w-full\"\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event, customSteps)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
6575
6583
|
}], ctorParameters: () => [], propDecorators: { customGrid: [{
|
|
6576
6584
|
type: ViewChild,
|
|
6577
6585
|
args: ['customGrid']
|