barsa-novin-ray-core 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/barsa-novin-ray-core.mjs +257 -142
- package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/pipes/can-upload.pipe.d.ts +1 -1
- package/package.json +3 -5
- package/esm2022/barsa-novin-ray-core.mjs +0 -5
- package/esm2022/lib/abstract-classes/application-base.mjs +0 -24
- package/esm2022/lib/abstract-classes/barsa-api.mjs +0 -43
- package/esm2022/lib/abstract-classes/base-column-props.mjs +0 -84
- package/esm2022/lib/abstract-classes/base.component.mjs +0 -59
- package/esm2022/lib/abstract-classes/field-base.mjs +0 -232
- package/esm2022/lib/abstract-classes/files-validation-helper.mjs +0 -75
- package/esm2022/lib/abstract-classes/form-base.mjs +0 -163
- package/esm2022/lib/abstract-classes/form-field-report-page.component.mjs +0 -54
- package/esm2022/lib/abstract-classes/form-page-base.mjs +0 -129
- package/esm2022/lib/abstract-classes/form-page.component.mjs +0 -53
- package/esm2022/lib/abstract-classes/form-props.base.mjs +0 -97
- package/esm2022/lib/abstract-classes/form-toolbar-base.mjs +0 -56
- package/esm2022/lib/abstract-classes/index.mjs +0 -25
- package/esm2022/lib/abstract-classes/layout-item-base.mjs +0 -48
- package/esm2022/lib/abstract-classes/layout-panel-base.mjs +0 -63
- package/esm2022/lib/abstract-classes/linear-list-helper.mjs +0 -135
- package/esm2022/lib/abstract-classes/models.mjs +0 -184
- package/esm2022/lib/abstract-classes/module-with-dynamic-components.mjs +0 -2
- package/esm2022/lib/abstract-classes/number-base.mjs +0 -200
- package/esm2022/lib/abstract-classes/page-base.mjs +0 -97
- package/esm2022/lib/abstract-classes/page-with-form-handler-base.mjs +0 -40
- package/esm2022/lib/abstract-classes/report-base.mjs +0 -254
- package/esm2022/lib/abstract-classes/report-item-base.mjs +0 -53
- package/esm2022/lib/abstract-classes/report-view-base.component.mjs +0 -428
- package/esm2022/lib/abstract-classes/system-base.mjs +0 -24
- package/esm2022/lib/abstract-classes/tile-props.mjs +0 -46
- package/esm2022/lib/auth-guard.mjs +0 -48
- package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +0 -292
- package/esm2022/lib/barsa-novin-ray-core.module.mjs +0 -487
- package/esm2022/lib/base-ulv-setting.component.mjs +0 -45
- package/esm2022/lib/base.module.mjs +0 -28
- package/esm2022/lib/button-loading/button-loading.component.mjs +0 -18
- package/esm2022/lib/constants.mjs +0 -898
- package/esm2022/lib/container.component.mjs +0 -99
- package/esm2022/lib/controllers/base-controller.mjs +0 -30
- package/esm2022/lib/controllers/index.mjs +0 -5
- package/esm2022/lib/controllers/login-controller.mjs +0 -54
- package/esm2022/lib/controllers/login-verification-controller.mjs +0 -56
- package/esm2022/lib/controllers/models.mjs +0 -2
- package/esm2022/lib/custom-route-reuse-strategy.mjs +0 -32
- package/esm2022/lib/date-services/date-hijri.service.mjs +0 -146
- package/esm2022/lib/date-services/date-info.mjs +0 -2
- package/esm2022/lib/date-services/date-miladi.service.mjs +0 -124
- package/esm2022/lib/date-services/date-shamsi.service.mjs +0 -148
- package/esm2022/lib/date-services/date.service.mjs +0 -149
- package/esm2022/lib/date-services/index.mjs +0 -6
- package/esm2022/lib/device.mjs +0 -663
- package/esm2022/lib/directives/absolute-div-body.directive.mjs +0 -45
- package/esm2022/lib/directives/anchor-scroll.directive.mjs +0 -24
- package/esm2022/lib/directives/attr-rtl.directive.mjs +0 -35
- package/esm2022/lib/directives/base.directive.mjs +0 -55
- package/esm2022/lib/directives/body-click.directive.mjs +0 -35
- package/esm2022/lib/directives/column-resizer.directive.mjs +0 -39
- package/esm2022/lib/directives/copy.directive.mjs +0 -59
- package/esm2022/lib/directives/count-down.directive.mjs +0 -108
- package/esm2022/lib/directives/dynamic-command.directive.mjs +0 -42
- package/esm2022/lib/directives/dynamic-style.directive.mjs +0 -57
- package/esm2022/lib/directives/ellapsis-text.directive.mjs +0 -69
- package/esm2022/lib/directives/ellipsify.directive.mjs +0 -72
- package/esm2022/lib/directives/field-binding.directive.mjs +0 -17
- package/esm2022/lib/directives/fill-empty-space.mjs +0 -83
- package/esm2022/lib/directives/form-close.directive.mjs +0 -32
- package/esm2022/lib/directives/img-lazy.directive.mjs +0 -81
- package/esm2022/lib/directives/index.mjs +0 -35
- package/esm2022/lib/directives/intersection-observer.directive.mjs +0 -51
- package/esm2022/lib/directives/items-renderer.directive.mjs +0 -59
- package/esm2022/lib/directives/label-mandatory.directive.mjs +0 -48
- package/esm2022/lib/directives/load-external-files.directive.mjs +0 -37
- package/esm2022/lib/directives/mobile.directive.mjs +0 -29
- package/esm2022/lib/directives/nowraptext.directive.mjs +0 -26
- package/esm2022/lib/directives/numbers-only-input.directive.mjs +0 -26
- package/esm2022/lib/directives/placeHolder.directive.mjs +0 -15
- package/esm2022/lib/directives/prevent-default.directive.mjs +0 -20
- package/esm2022/lib/directives/render-ulv-paging.directive.mjs +0 -80
- package/esm2022/lib/directives/render-ulv-viewer.directive.mjs +0 -75
- package/esm2022/lib/directives/route-form-change.directive.mjs +0 -37
- package/esm2022/lib/directives/stop-propagation.directive.mjs +0 -20
- package/esm2022/lib/directives/table-resizer.directive.mjs +0 -235
- package/esm2022/lib/directives/ulv-command.directive.mjs +0 -42
- package/esm2022/lib/directives/until-inview.directive.mjs +0 -52
- package/esm2022/lib/directives/workflow-choice-command.directive.mjs +0 -60
- package/esm2022/lib/dynamic-component/base-dynamic.component.mjs +0 -96
- package/esm2022/lib/dynamic-component/base-form-toolbaritem-props.mjs +0 -52
- package/esm2022/lib/dynamic-component/base-item-content-props.mjs +0 -80
- package/esm2022/lib/dynamic-component/base-view-content-props.mjs +0 -20
- package/esm2022/lib/dynamic-component/base-view-item-props.mjs +0 -525
- package/esm2022/lib/dynamic-component/base-view-props.mjs +0 -162
- package/esm2022/lib/dynamic-component/dynamic-form-toolbar-item.component.mjs +0 -38
- package/esm2022/lib/dynamic-component/dynamic-form.component.mjs +0 -66
- package/esm2022/lib/dynamic-component/dynamic-item.component.mjs +0 -76
- package/esm2022/lib/dynamic-component/dynamic-layout.component.mjs +0 -63
- package/esm2022/lib/dynamic-component/index.mjs +0 -11
- package/esm2022/lib/empty-page/empty-page.component.mjs +0 -44
- package/esm2022/lib/empty-page-with-router-and-router-outlet/empty-page-with-router-and-router-outlet.component.mjs +0 -16
- package/esm2022/lib/field-ui/field-ui.component.mjs +0 -146
- package/esm2022/lib/form/form.component.mjs +0 -211
- package/esm2022/lib/form-new/form-new.component.mjs +0 -30
- package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page-routing.module.mjs +0 -54
- package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page.module.mjs +0 -29
- package/esm2022/lib/form-page-routing/constants.mjs +0 -9
- package/esm2022/lib/form-page-routing/index.mjs +0 -3
- package/esm2022/lib/from-intersection-observer.mjs +0 -53
- package/esm2022/lib/global-error-handler.mjs +0 -26
- package/esm2022/lib/injdection-tokens.mjs +0 -8
- package/esm2022/lib/login-enter-mobile/login-enter-mobile.component.mjs +0 -64
- package/esm2022/lib/login-verification/login-verification.component.mjs +0 -79
- package/esm2022/lib/login2/login2.component.mjs +0 -60
- package/esm2022/lib/modal-root.component.mjs +0 -33
- package/esm2022/lib/not-found/not-found.component.mjs +0 -16
- package/esm2022/lib/not-internet/not-internet.component.mjs +0 -21
- package/esm2022/lib/pipes/barsa-icon-dict.pipe.mjs +0 -19
- package/esm2022/lib/pipes/bbb-translate.pipe.mjs +0 -35
- package/esm2022/lib/pipes/can-upload.pipe.mjs +0 -30
- package/esm2022/lib/pipes/column-custom-component.pipe.mjs +0 -40
- package/esm2022/lib/pipes/column-customui.pipe.mjs +0 -32
- package/esm2022/lib/pipes/column-icon.pipe.mjs +0 -22
- package/esm2022/lib/pipes/column-value.pipe.mjs +0 -34
- package/esm2022/lib/pipes/combo-row-img.pipe.mjs +0 -16
- package/esm2022/lib/pipes/context-menu.pipe.mjs +0 -40
- package/esm2022/lib/pipes/control-ui.pipe.mjs +0 -31
- package/esm2022/lib/pipes/convert-to-style.pipe.mjs +0 -32
- package/esm2022/lib/pipes/date-time-to-caption.pipe.mjs +0 -34
- package/esm2022/lib/pipes/fileinfo-count.pipe.mjs +0 -20
- package/esm2022/lib/pipes/filter-columns-by-details.pipe.mjs +0 -22
- package/esm2022/lib/pipes/filter-string.pipe.mjs +0 -44
- package/esm2022/lib/pipes/filter-tab.pipe.mjs +0 -19
- package/esm2022/lib/pipes/filter-toolbar-control.pipe.mjs +0 -16
- package/esm2022/lib/pipes/filter-workflow-mobile.pipe.mjs +0 -24
- package/esm2022/lib/pipes/filter.pipe.mjs +0 -33
- package/esm2022/lib/pipes/find-column-by-db-name.pipe.mjs +0 -27
- package/esm2022/lib/pipes/find-preview-column.pipe.mjs +0 -19
- package/esm2022/lib/pipes/fiori-icon.pipe.mjs +0 -42
- package/esm2022/lib/pipes/groupby.pipe.mjs +0 -63
- package/esm2022/lib/pipes/header-facet-value.pipe.mjs +0 -22
- package/esm2022/lib/pipes/hide-columns-inmobile.pipe.mjs +0 -22
- package/esm2022/lib/pipes/index.mjs +0 -48
- package/esm2022/lib/pipes/list-count.pipe.mjs +0 -17
- package/esm2022/lib/pipes/merge-fields-to-columns.pipe.mjs +0 -42
- package/esm2022/lib/pipes/mo-info-ulv-data.pipe.mjs +0 -58
- package/esm2022/lib/pipes/mo-info-ulv-paging.pipe.mjs +0 -16
- package/esm2022/lib/pipes/mo-report-value-concat.pipe.mjs +0 -35
- package/esm2022/lib/pipes/mo-report-value.pipe.mjs +0 -17
- package/esm2022/lib/pipes/mo-value.pipe.mjs +0 -18
- package/esm2022/lib/pipes/multiple-groupby.pipe.mjs +0 -90
- package/esm2022/lib/pipes/numeral.pipe.mjs +0 -43
- package/esm2022/lib/pipes/picture-field-source.pipe.mjs +0 -22
- package/esm2022/lib/pipes/remove-newline.pipe.mjs +0 -20
- package/esm2022/lib/pipes/replace.pipe.mjs +0 -17
- package/esm2022/lib/pipes/reverse.pipe.mjs +0 -22
- package/esm2022/lib/pipes/rownumber.pipe.mjs +0 -25
- package/esm2022/lib/pipes/sanitize-text.pipe.mjs +0 -20
- package/esm2022/lib/pipes/seperator-fix.pipe.mjs +0 -23
- package/esm2022/lib/pipes/sort.pipe.mjs +0 -48
- package/esm2022/lib/pipes/th-image-icon.pipe.mjs +0 -22
- package/esm2022/lib/pipes/tlbButtons.pipe.mjs +0 -59
- package/esm2022/lib/pipes/total-summary.pipe.mjs +0 -16
- package/esm2022/lib/pipes/tree-item-isexpanded.pipe.mjs +0 -25
- package/esm2022/lib/pipes/visible-value.pipe.mjs +0 -18
- package/esm2022/lib/portal-page/portal-page.component.mjs +0 -23
- package/esm2022/lib/portal-page/portal-sidebar.component.mjs +0 -36
- package/esm2022/lib/redirect-home-guard.mjs +0 -51
- package/esm2022/lib/redirect-report-navigator-command/redirect-report-navigator-command.component.mjs +0 -12
- package/esm2022/lib/report-container/report-container.component.mjs +0 -63
- package/esm2022/lib/resizable-module/resizable.component.mjs +0 -31
- package/esm2022/lib/resizable-module/resizable.directive.mjs +0 -41
- package/esm2022/lib/resizable-module/resizable.module.mjs +0 -17
- package/esm2022/lib/resolvers/index.mjs +0 -6
- package/esm2022/lib/resolvers/portal-dynamic-page.resolver.mjs +0 -49
- package/esm2022/lib/resolvers/portal-form-page.resolver.mjs +0 -18
- package/esm2022/lib/resolvers/portal-page.resolver.mjs +0 -30
- package/esm2022/lib/resolvers/portal-report-page.resolver.mjs +0 -37
- package/esm2022/lib/resolvers/tile-group-breadcrumb.resolver.mjs +0 -30
- package/esm2022/lib/root-page/root-page.component.mjs +0 -21
- package/esm2022/lib/root-portal/root-portal.component.mjs +0 -164
- package/esm2022/lib/server-connection-error/server-connection-error.component.mjs +0 -19
- package/esm2022/lib/services/api.service.mjs +0 -63
- package/esm2022/lib/services/audio-recording.service.mjs +0 -95
- package/esm2022/lib/services/barsa-dialog.service.mjs +0 -80
- package/esm2022/lib/services/barsa-storage.service.mjs +0 -78
- package/esm2022/lib/services/breadcrumb.service.mjs +0 -64
- package/esm2022/lib/services/column.service.mjs +0 -20
- package/esm2022/lib/services/container.service.mjs +0 -69
- package/esm2022/lib/services/dynamic-component.service.mjs +0 -55
- package/esm2022/lib/services/form-panel.service.mjs +0 -380
- package/esm2022/lib/services/form.service.mjs +0 -14
- package/esm2022/lib/services/horizontal-layout.service.mjs +0 -16
- package/esm2022/lib/services/index.mjs +0 -29
- package/esm2022/lib/services/indexeddb.service.mjs +0 -34
- package/esm2022/lib/services/layout.service.mjs +0 -42
- package/esm2022/lib/services/local-storage.service.mjs +0 -32
- package/esm2022/lib/services/log.service.mjs +0 -50
- package/esm2022/lib/services/network-status.service.mjs +0 -15
- package/esm2022/lib/services/notification-popup.service.mjs +0 -2
- package/esm2022/lib/services/notification-sw.service.mjs +0 -180
- package/esm2022/lib/services/notification.service.mjs +0 -308
- package/esm2022/lib/services/portal.service.mjs +0 -929
- package/esm2022/lib/services/prompt-update.service.mjs +0 -56
- package/esm2022/lib/services/routing.service.mjs +0 -60
- package/esm2022/lib/services/save-scoll-position.service.mjs +0 -29
- package/esm2022/lib/services/service-worker-communication.service.mjs +0 -120
- package/esm2022/lib/services/toast.service.mjs +0 -2
- package/esm2022/lib/services/ui.service.mjs +0 -23
- package/esm2022/lib/services/ulvmain.service.mjs +0 -810
- package/esm2022/lib/services/upload.service.mjs +0 -161
- package/esm2022/lib/services/video-recording.service.mjs +0 -115
- package/esm2022/public-api.mjs +0 -44
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { NotFoundComponent } from '../not-found/not-found.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class DynamicComponentService {
|
|
6
|
-
constructor(cfr) {
|
|
7
|
-
this.cfr = cfr;
|
|
8
|
-
this._dynamicModuleWithComponents = {};
|
|
9
|
-
}
|
|
10
|
-
addModuleWithComponents(moduleName, ngModuleRef) {
|
|
11
|
-
if (!this._dynamicModuleWithComponents[moduleName]) {
|
|
12
|
-
this._dynamicModuleWithComponents[moduleName] = {
|
|
13
|
-
ngModuleRef
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
getComponentBySelector(selector, moduleName, injector) {
|
|
18
|
-
const moName = moduleName + 'Module';
|
|
19
|
-
const module = this._dynamicModuleWithComponents[moName];
|
|
20
|
-
if (module && module.ngModuleRef.getComponentFactory) {
|
|
21
|
-
const componentFactory = module.ngModuleRef.getComponentFactory(selector);
|
|
22
|
-
if (componentFactory) {
|
|
23
|
-
return of(componentFactory.create(injector));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
const componentRef = this.cfr.resolveComponentFactory(NotFoundComponent).create(injector);
|
|
27
|
-
componentRef.instance.componentName = selector;
|
|
28
|
-
componentRef.instance.moduleName = moduleName;
|
|
29
|
-
return of(componentRef);
|
|
30
|
-
}
|
|
31
|
-
getComponentByName(componentName, moduleName, injector) {
|
|
32
|
-
const cmpName = componentName + 'Component';
|
|
33
|
-
const moName = moduleName + 'Module';
|
|
34
|
-
const module = this._dynamicModuleWithComponents[moName];
|
|
35
|
-
if (module && module.ngModuleRef.getComponentFactory) {
|
|
36
|
-
const componentFactory = module.ngModuleRef.getComponentFactory(cmpName);
|
|
37
|
-
if (componentFactory) {
|
|
38
|
-
return of(componentFactory.create(injector));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
const componentRef = this.cfr.resolveComponentFactory(NotFoundComponent).create(injector);
|
|
42
|
-
componentRef.instance.componentName = componentName;
|
|
43
|
-
componentRef.instance.moduleName = moduleName;
|
|
44
|
-
return of(componentRef);
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicComponentService, providedIn: 'root' }); }
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicComponentService, decorators: [{
|
|
50
|
-
type: Injectable,
|
|
51
|
-
args: [{
|
|
52
|
-
providedIn: 'root'
|
|
53
|
-
}]
|
|
54
|
-
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvRCxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUtyRSxNQUFNLE9BQU8sdUJBQXVCO0lBTWhDLFlBQW9CLEdBQTZCO1FBQTdCLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBTHpDLGlDQUE0QixHQUloQyxFQUFFLENBQUM7SUFDNkMsQ0FBQztJQUNyRCx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFdBQWdCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLEdBQUc7Z0JBQzVDLFdBQVc7YUFDZCxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFDRCxzQkFBc0IsQ0FDbEIsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsUUFBa0I7UUFFbEIsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRixZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDL0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxrQkFBa0IsQ0FDZCxhQUFxQixFQUNyQixVQUFrQixFQUNsQixRQUFrQjtRQUVsQixNQUFNLE9BQU8sR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNuRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3BELFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM5QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQWxEUSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudFJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5vdEZvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbm90LWZvdW5kL25vdC1mb3VuZC5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ29tcG9uZW50U2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9keW5hbWljTW9kdWxlV2l0aENvbXBvbmVudHM6IHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlUmVmOiBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgIH0gPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHt9XHJcbiAgICBhZGRNb2R1bGVXaXRoQ29tcG9uZW50cyhtb2R1bGVOYW1lOiBzdHJpbmcsIG5nTW9kdWxlUmVmOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2R5bmFtaWNNb2R1bGVXaXRoQ29tcG9uZW50c1ttb2R1bGVOYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljTW9kdWxlV2l0aENvbXBvbmVudHNbbW9kdWxlTmFtZV0gPSB7XHJcbiAgICAgICAgICAgICAgICBuZ01vZHVsZVJlZlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldENvbXBvbmVudEJ5U2VsZWN0b3IoXHJcbiAgICAgICAgc2VsZWN0b3I6IHN0cmluZyxcclxuICAgICAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgICApOiBPYnNlcnZhYmxlPENvbXBvbmVudFJlZjx1bmtub3duPj4ge1xyXG4gICAgICAgIGNvbnN0IG1vTmFtZSA9IG1vZHVsZU5hbWUgKyAnTW9kdWxlJztcclxuICAgICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLl9keW5hbWljTW9kdWxlV2l0aENvbXBvbmVudHNbbW9OYW1lXTtcclxuICAgICAgICBpZiAobW9kdWxlICYmIG1vZHVsZS5uZ01vZHVsZVJlZi5nZXRDb21wb25lbnRGYWN0b3J5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBtb2R1bGUubmdNb2R1bGVSZWYuZ2V0Q29tcG9uZW50RmFjdG9yeShzZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoY29tcG9uZW50RmFjdG9yeS5jcmVhdGUoaW5qZWN0b3IpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOb3RGb3VuZENvbXBvbmVudCkuY3JlYXRlKGluamVjdG9yKTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29tcG9uZW50TmFtZSA9IHNlbGVjdG9yO1xyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcclxuICAgICAgICByZXR1cm4gb2YoY29tcG9uZW50UmVmKTtcclxuICAgIH1cclxuICAgIGdldENvbXBvbmVudEJ5TmFtZShcclxuICAgICAgICBjb21wb25lbnROYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgbW9kdWxlTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICAgKTogT2JzZXJ2YWJsZTxDb21wb25lbnRSZWY8dW5rbm93bj4+IHtcclxuICAgICAgICBjb25zdCBjbXBOYW1lID0gY29tcG9uZW50TmFtZSArICdDb21wb25lbnQnO1xyXG4gICAgICAgIGNvbnN0IG1vTmFtZSA9IG1vZHVsZU5hbWUgKyAnTW9kdWxlJztcclxuICAgICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLl9keW5hbWljTW9kdWxlV2l0aENvbXBvbmVudHNbbW9OYW1lXTtcclxuICAgICAgICBpZiAobW9kdWxlICYmIG1vZHVsZS5uZ01vZHVsZVJlZi5nZXRDb21wb25lbnRGYWN0b3J5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBtb2R1bGUubmdNb2R1bGVSZWYuZ2V0Q29tcG9uZW50RmFjdG9yeShjbXBOYW1lKTtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudEZhY3RvcnkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvZihjb21wb25lbnRGYWN0b3J5LmNyZWF0ZShpbmplY3RvcikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5vdEZvdW5kQ29tcG9uZW50KS5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICAgICAgcmV0dXJuIG9mKGNvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
|
|
2
|
-
import { debounceTime, delay, filter, map, takeUntil, tap } from 'rxjs/operators';
|
|
3
|
-
import { BarsaApi } from '../abstract-classes/barsa-api';
|
|
4
|
-
import { BaseComponent } from '../abstract-classes/base.component';
|
|
5
|
-
import { DeviceWidth, FindLayoutSettingFromLayout94, getDeviceIsMobile, getHeaderValue, getDeviceIsTablet } from '../constants';
|
|
6
|
-
export class FormPanelService extends BaseComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
this._hideClose$ = new BehaviorSubject(false);
|
|
10
|
-
this._hideTitle$ = new BehaviorSubject(false);
|
|
11
|
-
this._hidePin$ = new BehaviorSubject(false);
|
|
12
|
-
this._contextSource = new BehaviorSubject(null);
|
|
13
|
-
this._formHeightSource = new BehaviorSubject(0);
|
|
14
|
-
this._searchPanelIsObjectSource = new BehaviorSubject(false);
|
|
15
|
-
this._isSearchPanelSource = new BehaviorSubject(false);
|
|
16
|
-
this._isSearcPanelInSideContent = new BehaviorSubject(false);
|
|
17
|
-
this._workflowPanelUiSource = new BehaviorSubject(null);
|
|
18
|
-
this._moSource = new BehaviorSubject(null);
|
|
19
|
-
this._viewSource = new BehaviorSubject(null);
|
|
20
|
-
this._sidebarState$ = new BehaviorSubject('close');
|
|
21
|
-
this._toolbarItemsSource = new BehaviorSubject([]);
|
|
22
|
-
this._titleSource = new BehaviorSubject('');
|
|
23
|
-
this._maxContentWidthSource = new BehaviorSubject('auto');
|
|
24
|
-
this._wizardNextStepSource = new Subject();
|
|
25
|
-
this._wizardPreviousStepSource = new Subject();
|
|
26
|
-
this._layoutSource = new BehaviorSubject(null);
|
|
27
|
-
this._forceCloseSource = new Subject();
|
|
28
|
-
this._groupBRuleSource = new Subject();
|
|
29
|
-
this._isSimpleFormSource = new BehaviorSubject(false);
|
|
30
|
-
this._formWidthSource = new BehaviorSubject('100%');
|
|
31
|
-
this._toolbarVisibleSource = new BehaviorSubject(true);
|
|
32
|
-
this._headerLayoutSource = new BehaviorSubject(null);
|
|
33
|
-
this._headerTitleSource = new BehaviorSubject('');
|
|
34
|
-
this._maskSource = new BehaviorSubject(false);
|
|
35
|
-
this._headerRemoveContentPaddingSource = new BehaviorSubject(false);
|
|
36
|
-
this._headerDescriptionSource = new BehaviorSubject('');
|
|
37
|
-
this._canSend$ = new BehaviorSubject(false);
|
|
38
|
-
this.ColonInLabel = true;
|
|
39
|
-
this.context$ = this._contextSource.asObservable().pipe(tap((context) => this._prepareContext(context)), takeUntil(this._onDestroy$));
|
|
40
|
-
this.searchPanelIsObject$ = this._searchPanelIsObjectSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
41
|
-
this.isSearchPanel$ = this._isSearchPanelSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
42
|
-
this.isSearcPanelInSideContent$ = this._isSearcPanelInSideContent
|
|
43
|
-
.asObservable()
|
|
44
|
-
.pipe(takeUntil(this._onDestroy$));
|
|
45
|
-
this.workflowPanelUi$ = this._workflowPanelUiSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
46
|
-
this.formHeight$ = this._formHeightSource.asObservable();
|
|
47
|
-
this.mo$ = this._moSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
48
|
-
this.fieldDict$ = this.mo$.pipe(map((c) => c.$FieldDict), takeUntil(this._onDestroy$));
|
|
49
|
-
this.view$ = this._viewSource.asObservable().pipe(tap((view) => this._prepareView(view)), takeUntil(this._onDestroy$));
|
|
50
|
-
this.toolbarItems$ = this._toolbarItemsSource.asObservable().pipe(map((items) => this._filterToolbarItems(items)), takeUntil(this._onDestroy$));
|
|
51
|
-
this.workflowButtons$ = this._toolbarItemsSource.asObservable().pipe(map((items) => this._filterToolbarItems(items)), map((items) => items.filter((c) => c.isWorkflow)), takeUntil(this._onDestroy$));
|
|
52
|
-
this.maxContentWidth$ = this._maxContentWidthSource.asObservable().pipe(map((width) => (width ? width + 'px' : 'auto')), takeUntil(this._onDestroy$));
|
|
53
|
-
this.wizardNextStep$ = this._wizardNextStepSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
54
|
-
this.wizardPreviousStep$ = this._wizardPreviousStepSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
55
|
-
this.layout$ = this._layoutSource.asObservable().pipe(map((layout) => {
|
|
56
|
-
if (!layout) {
|
|
57
|
-
return layout;
|
|
58
|
-
}
|
|
59
|
-
const deviceWidth = DeviceWidth();
|
|
60
|
-
if (deviceWidth < layout.Bounds.width) {
|
|
61
|
-
layout.Bounds.width = deviceWidth;
|
|
62
|
-
}
|
|
63
|
-
return { ...layout };
|
|
64
|
-
}), takeUntil(this._onDestroy$));
|
|
65
|
-
this.forceClose$ = this._forceCloseSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
66
|
-
this.groupLayout$ = this._groupBRuleSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
67
|
-
this.isSimpleForm$ = this._isSimpleFormSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
68
|
-
this.formWidth$ = this._formWidthSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
69
|
-
this.toolbarVisible$ = this._toolbarVisibleSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
70
|
-
this.title$ = combineLatest([this._headerTitleSource.asObservable(), this._titleSource.asObservable()]).pipe(map(([headerTitle, title]) => (headerTitle ? headerTitle : title)), takeUntil(this._onDestroy$));
|
|
71
|
-
this.headerLayout$ = this._headerLayoutSource.asObservable().pipe(filter((headerLayout) => !!headerLayout), tap((headerLayout) => this._headerTitleSource.next(getHeaderValue(headerLayout?.Title))), tap((headerLayout) => this._hideClose$.next(headerLayout?.HideClose)), tap((headerLayout) => this._hideTitle$.next(headerLayout?.HideTitle)), tap((headerLayout) => this._hidePin$.next(headerLayout?.HidePin)), tap((headerLayout) => this._headerDescriptionSource.next(getHeaderValue(headerLayout?.Description))), tap((headerLayout) => this._headerRemoveContentPaddingSource.next(getHeaderValue(headerLayout?.RemoveContentPadding))), takeUntil(this._onDestroy$));
|
|
72
|
-
this.headerDescription$ = this._headerDescriptionSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
73
|
-
this.headerRemoveContentPadding$ = this._headerRemoveContentPaddingSource
|
|
74
|
-
.asObservable()
|
|
75
|
-
.pipe(delay(0), takeUntil(this._onDestroy$));
|
|
76
|
-
this.headerSubtitle$ = this.headerLayout$.pipe(map((headerLayout) => getHeaderValue(headerLayout?.SubTitle)), takeUntil(this._onDestroy$));
|
|
77
|
-
this.avatar$ = this.headerLayout$.pipe(map((headerLayout) => getHeaderValue(headerLayout?.Avatar, true)), takeUntil(this._onDestroy$));
|
|
78
|
-
this.circleAvatar$ = this.headerLayout$.pipe(map((headerLayout) => getHeaderValue(headerLayout?.CircleAvatar)), takeUntil(this._onDestroy$));
|
|
79
|
-
this.mask$ = this._maskSource.asObservable().pipe(debounceTime(200), takeUntil(this._onDestroy$));
|
|
80
|
-
}
|
|
81
|
-
get sidebarState$() {
|
|
82
|
-
return this._sidebarState$.asObservable();
|
|
83
|
-
}
|
|
84
|
-
get hidePin$() {
|
|
85
|
-
return this._hidePin$.asObservable();
|
|
86
|
-
}
|
|
87
|
-
get hideClose$() {
|
|
88
|
-
return this._hideClose$.asObservable();
|
|
89
|
-
}
|
|
90
|
-
get hideTitle$() {
|
|
91
|
-
return this._hideTitle$.asObservable();
|
|
92
|
-
}
|
|
93
|
-
get canSend$() {
|
|
94
|
-
return this._canSend$.asObservable();
|
|
95
|
-
}
|
|
96
|
-
get mo() {
|
|
97
|
-
return this._moSource.getValue();
|
|
98
|
-
}
|
|
99
|
-
set context(val) {
|
|
100
|
-
if (this._context) {
|
|
101
|
-
this.destroy();
|
|
102
|
-
}
|
|
103
|
-
this._contextSource.next(val);
|
|
104
|
-
}
|
|
105
|
-
setFormHeight(val) {
|
|
106
|
-
this._formHeightSource.next(val);
|
|
107
|
-
}
|
|
108
|
-
destroy() {
|
|
109
|
-
if (!this._context) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
this._context.un('CloseSideNavigator', this._closeSideNavigator);
|
|
113
|
-
this._context.un('GroupBRuleChanged', this._groupBRuleChanged);
|
|
114
|
-
this._context.un('TitleChanged', this._titleChanged);
|
|
115
|
-
this._context.un('WizardNextStep', this._wizardNextStep);
|
|
116
|
-
this._context.un('WizardPreviousStep', this._wizardPreviousStep);
|
|
117
|
-
this._context.un('DoLayout', this._doLayout);
|
|
118
|
-
this._context.un('MaskChanged', this._maskChanged);
|
|
119
|
-
this._context.un('ForceClose', this._forceClose);
|
|
120
|
-
this._context.toolbar.un('ToolbarItemsChanged', this._toolbarItemsChanged);
|
|
121
|
-
this._context = null;
|
|
122
|
-
this._layoutSource.next(null);
|
|
123
|
-
// this._onDestroy$.next();
|
|
124
|
-
}
|
|
125
|
-
toolbarClick(btn) {
|
|
126
|
-
btn.handler(btn, this._context);
|
|
127
|
-
}
|
|
128
|
-
wfChoice(btn) {
|
|
129
|
-
this._context.fireEvent('TransitionSelect', this._context, btn);
|
|
130
|
-
}
|
|
131
|
-
changeSidebarState(state) {
|
|
132
|
-
this._sidebarState$.next(state);
|
|
133
|
-
}
|
|
134
|
-
_initialize(context) {
|
|
135
|
-
this._workflowPanelUiSource.next(context?.WorkflowPanelUi);
|
|
136
|
-
this._isSearchPanelSource.next(context?.Setting?.IsSearchPanel);
|
|
137
|
-
this._isSearcPanelInSideContent.next(context?.Setting?.IsSearcPanelInSideContent);
|
|
138
|
-
this._canSend$.next(context?.Setting?.CanSend);
|
|
139
|
-
this._searchPanelIsObjectSource.next(context?.Setting?.ParameterTypeIsObject);
|
|
140
|
-
this._moSource.next(context?.Mo);
|
|
141
|
-
this._viewSource.next(context?.Setting?.View);
|
|
142
|
-
this._toolbarItemsSource.next(context?.toolbar?.items);
|
|
143
|
-
if (context?.toolbar) {
|
|
144
|
-
context.toolbar.on({
|
|
145
|
-
ToolbarItemsChanged: this._toolbarItemsChanged.bind(this)
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
this._titleSource?.next(context?.title);
|
|
149
|
-
this._toolbarVisibleSource.next(this._getToolbarVisibility(context));
|
|
150
|
-
}
|
|
151
|
-
_prepareView(view) {
|
|
152
|
-
this._layoutSource.next(view?.Layout94);
|
|
153
|
-
this._prepareLayoutComponent(view);
|
|
154
|
-
this._maxContentWidthSource.next(this._getMaxContentWidth(view));
|
|
155
|
-
this._isSimpleFormSource.next(this._getIsSimpleForm(view));
|
|
156
|
-
this._headerLayoutSource.next(this._getHeaderLayout(view));
|
|
157
|
-
if (view) {
|
|
158
|
-
this.ColonInLabel = view.ColonInLabel !== false;
|
|
159
|
-
}
|
|
160
|
-
this._formWidthSource.next(view?.inDialog ? view.Layout94.Bounds.width + 'px' : '100%');
|
|
161
|
-
}
|
|
162
|
-
_filterToolbarItems(items) {
|
|
163
|
-
if (!items) {
|
|
164
|
-
return [];
|
|
165
|
-
}
|
|
166
|
-
// در صورتی که در موبایل باشد دو دکمه نمایش داده شود از دکمه های کاربر و فرآیندی
|
|
167
|
-
// در صورتی که دکمه ی وجود نداشت فقط دکمه ذخیره نمایش داده شود
|
|
168
|
-
// در حالتهای دیگر ابتدا دکمه های کاربری و فرآیندی و بعد دکمه های تعریف شده سیستم نمایش داده میشود.
|
|
169
|
-
const isMobile = getDeviceIsMobile();
|
|
170
|
-
const isTablet = getDeviceIsTablet();
|
|
171
|
-
let newItems = items.filter((c) => !c.hidden &&
|
|
172
|
-
!((isMobile || isTablet || BarsaApi.LoginFormData.IsServiceDesk) &&
|
|
173
|
-
(c.itemId === 'Next' ||
|
|
174
|
-
c.itemId === 'Previous' ||
|
|
175
|
-
c.itemId === 'MoveNext' ||
|
|
176
|
-
c.itemId === 'MovePrev' ||
|
|
177
|
-
c.itemId === 'MovePrevious')));
|
|
178
|
-
newItems.sort((c, d) => (Number(c?.Data?.TabOrderNumber) < Number(d?.Data?.TabOrderNumber) ? 1 : -1));
|
|
179
|
-
const nonStringItems = newItems.filter((c) => typeof c !== 'string');
|
|
180
|
-
const t = nonStringItems.find((c) => !c.isBuiltin && !c.IAmMenu);
|
|
181
|
-
if (t) {
|
|
182
|
-
t.priority = 'high';
|
|
183
|
-
}
|
|
184
|
-
// let nonBuiltinCount = 0;
|
|
185
|
-
// nonStringItems.forEach((item) => {
|
|
186
|
-
// if (typeof item === 'string') {
|
|
187
|
-
// return;
|
|
188
|
-
// }
|
|
189
|
-
// const inFooter = BarsaApi.Common.Util.TryGetValue(item, 'Data.CustomUi.Parameters.InFooter', false);
|
|
190
|
-
// if (item.isBuiltin || inFooter) {
|
|
191
|
-
// // سیستمی
|
|
192
|
-
// item.priority = 'always';
|
|
193
|
-
// } else {
|
|
194
|
-
// if (nonBuiltinCount > 1) {
|
|
195
|
-
// // دکمه های کاربری که بیشتر از دو هستند
|
|
196
|
-
// item.priority = 'low';
|
|
197
|
-
// } else {
|
|
198
|
-
// item.priority = 'low';
|
|
199
|
-
// }
|
|
200
|
-
// nonBuiltinCount++;
|
|
201
|
-
// }
|
|
202
|
-
// });
|
|
203
|
-
const noBuiltinItems = nonStringItems.filter((c) => typeof c === 'object' &&
|
|
204
|
-
!c.isBuiltin &&
|
|
205
|
-
BarsaApi.Common.Util.TryGetValue(c, 'Data.CustomUi.Parameters.InFooter', false) !== true);
|
|
206
|
-
noBuiltinItems.forEach((item, index) => {
|
|
207
|
-
index === 0 ? (item.priority = 'hight') : (item.priority = 'low');
|
|
208
|
-
});
|
|
209
|
-
const nonBuiltinCount = noBuiltinItems.length;
|
|
210
|
-
if (nonBuiltinCount === 0) {
|
|
211
|
-
// اگر هیچ دکمه کاربری وجود نداشت
|
|
212
|
-
nonStringItems.forEach((item, _) => {
|
|
213
|
-
if (item.itemId === 'Save') {
|
|
214
|
-
item.priority = 'never';
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
const saveAndNew = newItems.find((c) => c.itemId === 'SaveAndNew');
|
|
219
|
-
const saveAndClose = newItems.find((c) => c.itemId === 'SaveAndClose');
|
|
220
|
-
if (saveAndClose && saveAndClose.menu) {
|
|
221
|
-
const save = saveAndClose.menu.items[0];
|
|
222
|
-
if (save) {
|
|
223
|
-
save.isBuiltin = true;
|
|
224
|
-
save.priority = nonBuiltinCount === 0 ? 'never' : 'always';
|
|
225
|
-
newItems.push(save);
|
|
226
|
-
if (saveAndNew) {
|
|
227
|
-
save.IAmMenu = true;
|
|
228
|
-
save.menu = { items: [{ ...saveAndNew }] };
|
|
229
|
-
newItems = newItems.filter((c) => c.itemId !== 'SaveAndNew');
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
newItems.forEach((item) => {
|
|
234
|
-
if (item.menu) {
|
|
235
|
-
item.menu.items = item.menu.items.filter((c) => !c.hidden);
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
const builtinsButtons = newItems.filter((c) => c?.isBuiltin);
|
|
239
|
-
newItems = [
|
|
240
|
-
...builtinsButtons,
|
|
241
|
-
...newItems.filter((c) => !c?.isBuiltin && !c?.isWorkflow),
|
|
242
|
-
...newItems.filter((c) => c?.isWorkflow)
|
|
243
|
-
];
|
|
244
|
-
const moveNextIndex = newItems.findIndex((c) => c.itemId === 'MoveNext');
|
|
245
|
-
if (moveNextIndex > -1) {
|
|
246
|
-
newItems[moveNextIndex].priority = 'always';
|
|
247
|
-
const mos = newItems.splice(moveNextIndex - 1, 2);
|
|
248
|
-
newItems = [...mos, ...newItems];
|
|
249
|
-
}
|
|
250
|
-
const movePrevIndex = newItems.findIndex((c) => c.itemId === 'MovePrev');
|
|
251
|
-
if (movePrevIndex > -1) {
|
|
252
|
-
newItems[movePrevIndex].priority = 'always';
|
|
253
|
-
}
|
|
254
|
-
// check toolbaritems in footer property
|
|
255
|
-
newItems.forEach((c) => {
|
|
256
|
-
const inFooter = BarsaApi.Common.Util.TryGetValue(c, 'Data.CustomUi.Parameters.InFooter', false);
|
|
257
|
-
if (inFooter) {
|
|
258
|
-
c.inFooter = true;
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
return newItems.reverse();
|
|
262
|
-
// return newItems.sort((a): number => (typeof a == 'string' ? 0 : a.IAmMenu ? 1 : -1));
|
|
263
|
-
}
|
|
264
|
-
_getHeaderLayout(view) {
|
|
265
|
-
const headerLayout = BarsaApi.Common.Util.TryGetValue(view, 'HeaderLayout', null);
|
|
266
|
-
if (headerLayout) {
|
|
267
|
-
// this.setHeaderTitleAndSubtitleAndAvatar(headerLayout);
|
|
268
|
-
const t = [];
|
|
269
|
-
headerLayout.FacetList.MoDataList.forEach((facetColumn) => {
|
|
270
|
-
t.push({
|
|
271
|
-
type: facetColumn.ColumnSettings.$FormPanelSetting.Data.Mo.Type,
|
|
272
|
-
mo: facetColumn.ColumnSettings.$FormPanelSetting.Data.Mo
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
headerLayout.FacetList2 = t;
|
|
276
|
-
}
|
|
277
|
-
return headerLayout;
|
|
278
|
-
}
|
|
279
|
-
_prepareLayoutComponent(view) {
|
|
280
|
-
if (!view) {
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
const layoutComponents = BarsaApi.Common.Util.TryGetValue(view, 'ExtraJsonProp.Components', null);
|
|
284
|
-
if (!layoutComponents) {
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
if (!Array.isArray(layoutComponents)) {
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
layoutComponents.forEach((layoutComponent) => {
|
|
291
|
-
const layoutSetting = FindLayoutSettingFromLayout94(view.Layout94, layoutComponent.LayoutTitle);
|
|
292
|
-
if (layoutSetting == null) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
layoutSetting.component = { ...layoutComponent };
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
_getIsSimpleForm(view) {
|
|
299
|
-
const isSimple = BarsaApi.Common.Util.TryGetValue(view, 'ExtraJsonProp.IsSimple', false);
|
|
300
|
-
return isSimple;
|
|
301
|
-
}
|
|
302
|
-
_getToolbarVisibility(context) {
|
|
303
|
-
if (!context) {
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
const hideToolbar = BarsaApi.Common.Util.TryGetValue(context, 'toolbar.hideToolbar', false);
|
|
307
|
-
if (hideToolbar) {
|
|
308
|
-
return false;
|
|
309
|
-
}
|
|
310
|
-
const { FormSettings } = context.Setting.View;
|
|
311
|
-
if (FormSettings) {
|
|
312
|
-
const showToolbar = FormSettings.ShowToolbar === false ? false : true;
|
|
313
|
-
const featureToolbar = BarsaApi.Common.Util.TryGetValue(context, 'Features.Toolbar', false);
|
|
314
|
-
const visible = (featureToolbar && showToolbar) !== false;
|
|
315
|
-
return visible;
|
|
316
|
-
}
|
|
317
|
-
return true;
|
|
318
|
-
}
|
|
319
|
-
_getMaxContentWidth(view) {
|
|
320
|
-
const maxContentWidth = BarsaApi.Common.Util.TryGetValue(view, 'ExtraJsonProp.MaxWidth', '0');
|
|
321
|
-
return maxContentWidth;
|
|
322
|
-
}
|
|
323
|
-
_addListener(context) {
|
|
324
|
-
if (!context) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
context.on({
|
|
328
|
-
CloseSideNavigator: this._closeSideNavigator.bind(this),
|
|
329
|
-
GroupBRuleChanged: this._groupBRuleChanged.bind(this),
|
|
330
|
-
TitleChanged: this._titleChanged.bind(this),
|
|
331
|
-
WizardNextStep: this._wizardNextStep.bind(this),
|
|
332
|
-
WizardPreviousStep: this._wizardPreviousStep.bind(this),
|
|
333
|
-
DoLayout: this._doLayout.bind(this),
|
|
334
|
-
MaskChanged: this._maskChanged.bind(this),
|
|
335
|
-
ForceClose: this._forceClose.bind(this),
|
|
336
|
-
Refresh: this._refresh.bind(this)
|
|
337
|
-
});
|
|
338
|
-
context.toolbar.on({
|
|
339
|
-
ToolbarItemsChanged: this._toolbarItemsChanged.bind(this)
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
_refresh() {
|
|
343
|
-
this._initialize(this._context);
|
|
344
|
-
// this._prepareView(this._context.Setting.View);
|
|
345
|
-
}
|
|
346
|
-
_forceClose() {
|
|
347
|
-
this._forceCloseSource.next();
|
|
348
|
-
}
|
|
349
|
-
_maskChanged(mask) {
|
|
350
|
-
this._maskSource.next(mask);
|
|
351
|
-
}
|
|
352
|
-
_toolbarItemsChanged(items) {
|
|
353
|
-
this._toolbarItemsSource.next(items);
|
|
354
|
-
}
|
|
355
|
-
_titleChanged(title) {
|
|
356
|
-
this._titleSource.next(title);
|
|
357
|
-
}
|
|
358
|
-
_wizardNextStep() {
|
|
359
|
-
this._wizardNextStepSource.next();
|
|
360
|
-
}
|
|
361
|
-
_wizardPreviousStep() {
|
|
362
|
-
this._wizardPreviousStepSource.next();
|
|
363
|
-
}
|
|
364
|
-
_doLayout(context) {
|
|
365
|
-
const view = context.Setting.View;
|
|
366
|
-
this._viewSource.next(view);
|
|
367
|
-
}
|
|
368
|
-
_closeSideNavigator() {
|
|
369
|
-
this._sidebarState$.next('close');
|
|
370
|
-
}
|
|
371
|
-
_groupBRuleChanged(groupItem) {
|
|
372
|
-
this._groupBRuleSource.next(groupItem);
|
|
373
|
-
}
|
|
374
|
-
_prepareContext(context) {
|
|
375
|
-
this._addListener(context);
|
|
376
|
-
this._initialize(context);
|
|
377
|
-
this._context = context;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYW5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mb3JtLXBhbmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUNILFdBQVcsRUFDWCw2QkFBNkIsRUFDN0IsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxpQkFBaUIsRUFDcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUE4RC9DO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUEzQ1osZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVl4QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2hELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFD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LENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNTLGtCQUFrQixDQUFDLFNBQXdCO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNTLGVBQWUsQ0FBQyxPQUFPO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGZpbHRlciwgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1WaWV3U2V0dGluZywgSUhlYWRlckxheW91dCwgTGF5b3V0U2V0dGluZywgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvbW9kZWxzJztcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9iYXJzYS1hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBEZXZpY2VXaWR0aCxcbiAgICBGaW5kTGF5b3V0U2V0dGluZ0Zyb21MYXlvdXQ5NCxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBnZXRIZWFkZXJWYWx1ZSxcbiAgICBnZXREZXZpY2VJc1RhYmxldFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVBhbmVsU2VydmljZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIGNvbnRleHQkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc2VhcmNoUGFuZWxJc09iamVjdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaXNTZWFyY2hQYW5lbCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgd29ya2Zsb3dQYW5lbFVpJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIG1vJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICB2aWV3JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHRvb2xiYXJJdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xuICAgIHdvcmtmbG93QnV0dG9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xuICAgIG1heENvbnRlbnRXaWR0aCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICB3aXphcmROZXh0U3RlcCQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgd2l6YXJkUHJldmlvdXNTdGVwJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBsYXlvdXQkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgZm9yY2VDbG9zZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgZ3JvdXBMYXlvdXQkOiBPYnNlcnZhYmxlPExheW91dFNldHRpbmc+O1xuICAgIGlzU2ltcGxlRm9ybSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZm9ybVdpZHRoJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHRvb2xiYXJWaXNpYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBoZWFkZXJMYXlvdXQkOiBPYnNlcnZhYmxlPElIZWFkZXJMYXlvdXQ+O1xuICAgIF9oaWRlQ2xvc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgX2hpZGVUaXRsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBfaGlkZVBpbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBoZWFkZXJEZXNjcmlwdGlvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBoZWFkZXJSZW1vdmVDb250ZW50UGFkZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaGVhZGVyU3VidGl0bGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgYXZhdGFyJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGNpcmNsZUF2YXRhciQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbWFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZm9ybUhlaWdodCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBmaWVsZERpY3QkOiBPYnNlcnZhYmxlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ+O1xuXG4gICAgcHJpdmF0ZSBfY29udGV4dDtcbiAgICBwcml2YXRlIF9jb250ZXh0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgX2Zvcm1IZWlnaHRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoUGFuZWxJc09iamVjdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2lzU2VhcmNoUGFuZWxTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfd29ya2Zsb3dQYW5lbFVpU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgX21vU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgX3ZpZXdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfc2lkZWJhclN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2Nsb3NlJyB8ICdvcGVuJz4oJ2Nsb3NlJyk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhckl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIF9tYXhDb250ZW50V2lkdGhTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2F1dG8nKTtcbiAgICBwcml2YXRlIF93aXphcmROZXh0U3RlcFNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfd2l6YXJkUHJldmlvdXNTdGVwU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9sYXlvdXRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfZm9yY2VDbG9zZVNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZ3JvdXBCUnVsZVNvdXJjZSA9IG5ldyBTdWJqZWN0PExheW91dFNldHRpbmc+KCk7XG4gICAgcHJpdmF0ZSBfaXNTaW1wbGVGb3JtU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfZm9ybVdpZHRoU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcxMDAlJyk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhclZpc2libGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHByaXZhdGUgX2hlYWRlckxheW91dFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIF9oZWFkZXJUaXRsZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2hlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaGVhZGVyRGVzY3JpcHRpb25Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHByaXZhdGUgX2NhblNlbmQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgZm9ybUNvbnRhaW5lckRvbTogSFRNTEVsZW1lbnQ7XG4gICAgQ29sb25JbkxhYmVsID0gdHJ1ZTtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0JCA9IHRoaXMuX2NvbnRleHRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoY29udGV4dCkgPT4gdGhpcy5fcHJlcGFyZUNvbnRleHQoY29udGV4dCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbElzT2JqZWN0JCA9IHRoaXMuX3NlYXJjaFBhbmVsSXNPYmplY3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWwkID0gdGhpcy5faXNTZWFyY2hQYW5lbFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMuaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCQgPSB0aGlzLl9pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50XG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMud29ya2Zsb3dQYW5lbFVpJCA9IHRoaXMuX3dvcmtmbG93UGFuZWxVaVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMuZm9ybUhlaWdodCQgPSB0aGlzLl9mb3JtSGVpZ2h0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm1vJCA9IHRoaXMuX21vU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5maWVsZERpY3QkID0gdGhpcy5tbyQucGlwZShcbiAgICAgICAgICAgIG1hcCgoYykgPT4gYy4kRmllbGREaWN0KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudmlldyQgPSB0aGlzLl92aWV3U291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHZpZXcpID0+IHRoaXMuX3ByZXBhcmVWaWV3KHZpZXcpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudG9vbGJhckl0ZW1zJCA9IHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gdGhpcy5fZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zKSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMkID0gdGhpcy5fdG9vbGJhckl0ZW1zU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB0aGlzLl9maWx0ZXJUb29sYmFySXRlbXMoaXRlbXMpKSxcbiAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoYykgPT4gYy5pc1dvcmtmbG93KSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm1heENvbnRlbnRXaWR0aCQgPSB0aGlzLl9tYXhDb250ZW50V2lkdGhTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgICAgIG1hcCgod2lkdGgpID0+ICh3aWR0aCA/IHdpZHRoICsgJ3B4JyA6ICdhdXRvJykpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy53aXphcmROZXh0U3RlcCQgPSB0aGlzLl93aXphcmROZXh0U3RlcFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMud2l6YXJkUHJldmlvdXNTdGVwJCA9IHRoaXMuX3dpemFyZFByZXZpb3VzU3RlcFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuX2xheW91dFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChsYXlvdXQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXZpY2VXaWR0aCA9IERldmljZVdpZHRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRldmljZVdpZHRoIDwgbGF5b3V0LkJvdW5kcy53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBsYXlvdXQuQm91bmRzLndpZHRoID0gZGV2aWNlV2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmxheW91dCB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcmNlQ2xvc2UkID0gdGhpcy5fZm9yY2VDbG9zZVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG5cbiAgICAgICAgdGhpcy5ncm91cExheW91dCQgPSB0aGlzLl9ncm91cEJSdWxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcblxuICAgICAgICB0aGlzLmlzU2ltcGxlRm9ybSQgPSB0aGlzLl9pc1NpbXBsZUZvcm1Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuZm9ybVdpZHRoJCA9IHRoaXMuX2Zvcm1XaWR0aFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG5cbiAgICAgICAgdGhpcy50b29sYmFyVmlzaWJsZSQgPSB0aGlzLl90b29sYmFyVmlzaWJsZVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMudGl0bGUkID0gY29tYmluZUxhdGVzdChbdGhpcy5faGVhZGVyVGl0bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCksIHRoaXMuX3RpdGxlU291cmNlLmFzT2JzZXJ2YWJsZSgpXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2hlYWRlclRpdGxlLCB0aXRsZV0pID0+IChoZWFkZXJUaXRsZSA/IGhlYWRlclRpdGxlIDogdGl0bGUpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmhlYWRlckxheW91dCQgPSB0aGlzLl9oZWFkZXJMYXlvdXRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaGVhZGVyTGF5b3V0KSA9PiAhIWhlYWRlckxheW91dCksXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT4gdGhpcy5faGVhZGVyVGl0bGVTb3VyY2UubmV4dChnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LlRpdGxlKSkpLFxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hpZGVDbG9zZSQubmV4dChoZWFkZXJMYXlvdXQ/LkhpZGVDbG9zZSkpLFxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hpZGVUaXRsZSQubmV4dChoZWFkZXJMYXlvdXQ/LkhpZGVUaXRsZSkpLFxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+IHRoaXMuX2hpZGVQaW4kLm5leHQoaGVhZGVyTGF5b3V0Py5IaWRlUGluKSksXG4gICAgICAgICAgICB0YXAoKGhlYWRlckxheW91dCkgPT4gdGhpcy5faGVhZGVyRGVzY3JpcHRpb25Tb3VyY2UubmV4dChnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LkRlc2NyaXB0aW9uKSkpLFxuICAgICAgICAgICAgdGFwKChoZWFkZXJMYXlvdXQpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5faGVhZGVyUmVtb3ZlQ29udGVudFBhZGRpbmdTb3VyY2UubmV4dChnZXRIZWFkZXJWYWx1ZShoZWFkZXJMYXlvdXQ/LlJlbW92ZUNvbnRlbnRQYWRkaW5nKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhlYWRlckRlc2NyaXB0aW9uJCA9IHRoaXMuX2hlYWRlckRlc2NyaXB0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcblxuICAgICAgICB0aGlzLmhlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nJCA9IHRoaXMuX2hlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nU291cmNlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKGRlbGF5KDApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuaGVhZGVyU3VidGl0bGUkID0gdGhpcy5oZWFkZXJMYXlvdXQkLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGhlYWRlckxheW91dCkgPT4gZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5TdWJUaXRsZSkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hdmF0YXIkID0gdGhpcy5oZWFkZXJMYXlvdXQkLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGhlYWRlckxheW91dCkgPT4gZ2V0SGVhZGVyVmFsdWUoaGVhZGVyTGF5b3V0Py5BdmF0YXIsIHRydWUpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2lyY2xlQXZhdGFyJCA9IHRoaXMuaGVhZGVyTGF5b3V0JC5waXBlKFxuICAgICAgICAgICAgbWFwKChoZWFkZXJMYXlvdXQpID0+IGdldEhlYWRlclZhbHVlKGhlYWRlckxheW91dD8uQ2lyY2xlQXZhdGFyKSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tYXNrJCA9IHRoaXMuX21hc2tTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICB9XG4gICAgZ2V0IHNpZGViYXJTdGF0ZSQoKTogT2JzZXJ2YWJsZTwnb3BlbicgfCAnY2xvc2UnPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaWRlYmFyU3RhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgaGlkZVBpbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlUGluJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGhpZGVDbG9zZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlQ2xvc2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgaGlkZVRpdGxlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVUaXRsZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBjYW5TZW5kJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhblNlbmQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgbW8oKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXQgY29udGV4dCh2YWw6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5fY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29udGV4dFNvdXJjZS5uZXh0KHZhbCk7XG4gICAgfVxuICAgIHNldEZvcm1IZWlnaHQodmFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUhlaWdodFNvdXJjZS5uZXh0KHZhbCk7XG4gICAgfVxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ0Nsb3NlU2lkZU5hdmlnYXRvcicsIHRoaXMuX2Nsb3NlU2lkZU5hdmlnYXRvcik7XG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ0dyb3VwQlJ1bGVDaGFuZ2VkJywgdGhpcy5fZ3JvdXBCUnVsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdUaXRsZUNoYW5nZWQnLCB0aGlzLl90aXRsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdXaXphcmROZXh0U3RlcCcsIHRoaXMuX3dpemFyZE5leHRTdGVwKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignV2l6YXJkUHJldmlvdXNTdGVwJywgdGhpcy5fd2l6YXJkUHJldmlvdXNTdGVwKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC51bignRG9MYXlvdXQnLCB0aGlzLl9kb0xheW91dCk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQudW4oJ01hc2tDaGFuZ2VkJywgdGhpcy5fbWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LnVuKCdGb3JjZUNsb3NlJywgdGhpcy5fZm9yY2VDbG9zZSk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQudG9vbGJhci51bignVG9vbGJhckl0ZW1zQ2hhbmdlZCcsIHRoaXMuX3Rvb2xiYXJJdGVtc0NoYW5nZWQpO1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fbGF5b3V0U291cmNlLm5leHQobnVsbCk7XG4gICAgICAgIC8vIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIHRvb2xiYXJDbGljayhidG4pOiB2b2lkIHtcbiAgICAgICAgYnRuLmhhbmRsZXIoYnRuLCB0aGlzLl9jb250ZXh0KTtcbiAgICB9XG4gICAgd2ZDaG9pY2UoYnRuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuZmlyZUV2ZW50KCdUcmFuc2l0aW9uU2VsZWN0JywgdGhpcy5fY29udGV4dCwgYnRuKTtcbiAgICB9XG4gICAgY2hhbmdlU2lkZWJhclN0YXRlKHN0YXRlOiAnb3BlbicgfCAnY2xvc2UnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NpZGViYXJTdGF0ZSQubmV4dChzdGF0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplKGNvbnRleHQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl93b3JrZmxvd1BhbmVsVWlTb3VyY2UubmV4dChjb250ZXh0Py5Xb3JrZmxvd1BhbmVsVWkpO1xuICAgICAgICB0aGlzLl9pc1NlYXJjaFBhbmVsU291cmNlLm5leHQoY29udGV4dD8uU2V0dGluZz8uSXNTZWFyY2hQYW5lbCk7XG4gICAgICAgIHRoaXMuX2lzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQubmV4dChjb250ZXh0Py5TZXR0aW5nPy5Jc1NlYXJjUGFuZWxJblNpZGVDb250ZW50KTtcbiAgICAgICAgdGhpcy5fY2FuU2VuZCQubmV4dChjb250ZXh0Py5TZXR0aW5nPy5DYW5TZW5kKTtcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxJc09iamVjdFNvdXJjZS5uZXh0KGNvbnRleHQ/LlNldHRpbmc/LlBhcmFtZXRlclR5cGVJc09iamVjdCk7XG4gICAgICAgIHRoaXMuX21vU291cmNlLm5leHQoY29udGV4dD8uTW8pO1xuICAgICAgICB0aGlzLl92aWV3U291cmNlLm5leHQoY29udGV4dD8uU2V0dGluZz8uVmlldyk7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtc1NvdXJjZS5uZXh0KGNvbnRleHQ/LnRvb2xiYXI/Lml0ZW1zKTtcbiAgICAgICAgaWYgKGNvbnRleHQ/LnRvb2xiYXIpIHtcbiAgICAgICAgICAgIGNvbnRleHQudG9vbGJhci5vbih7XG4gICAgICAgICAgICAgICAgVG9vbGJhckl0ZW1zQ2hhbmdlZDogdGhpcy5fdG9vbGJhckl0ZW1zQ2hhbmdlZC5iaW5kKHRoaXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aXRsZVNvdXJjZT8ubmV4dChjb250ZXh0Py50aXRsZSk7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJWaXNpYmxlU291cmNlLm5leHQodGhpcy5fZ2V0VG9vbGJhclZpc2liaWxpdHkoY29udGV4dCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJlcGFyZVZpZXcodmlldyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXlvdXRTb3VyY2UubmV4dCh2aWV3Py5MYXlvdXQ5NCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVMYXlvdXRDb21wb25lbnQodmlldyk7XG4gICAgICAgIHRoaXMuX21heENvbnRlbnRXaWR0aFNvdXJjZS5uZXh0KHRoaXMuX2dldE1heENvbnRlbnRXaWR0aCh2aWV3KSk7XG4gICAgICAgIHRoaXMuX2lzU2ltcGxlRm9ybVNvdXJjZS5uZXh0KHRoaXMuX2dldElzU2ltcGxlRm9ybSh2aWV3KSk7XG4gICAgICAgIHRoaXMuX2hlYWRlckxheW91dFNvdXJjZS5uZXh0KHRoaXMuX2dldEhlYWRlckxheW91dCh2aWV3KSk7XG4gICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLkNvbG9uSW5MYWJlbCA9IHZpZXcuQ29sb25JbkxhYmVsICE9PSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mb3JtV2lkdGhTb3VyY2UubmV4dCh2aWV3Py5pbkRpYWxvZyA/IHZpZXcuTGF5b3V0OTQuQm91bmRzLndpZHRoICsgJ3B4JyA6ICcxMDAlJyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZmlsdGVyVG9vbGJhckl0ZW1zKGl0ZW1zOiBBcnJheTxhbnk+KTogQXJyYXk8YW55PiB7XG4gICAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyDYr9ixINi12YjYsdiq24wg2qnZhyDYr9ixINmF2YjYqNin24zZhCDYqNin2LTYryDYr9mIINiv2qnZhdmHINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2LTZiNivINin2LIg2K/aqdmF2Ycg2YfYp9uMINqp2KfYsdio2LEg2Ygg2YHYsdii24zZhtiv24xcbiAgICAgICAgLy8g2K/YsSDYtdmI2LHYqtuMINqp2Ycg2K/aqdmF2Ycg24wg2YjYrNmI2K8g2YbYr9in2LTYqiDZgdmC2Lcg2K/aqdmF2Ycg2LDYrtuM2LHZhyDZhtmF2KfbjNi0INiv2KfYr9mHINi02YjYr1xuICAgICAgICAvLyDYr9ixINit2KfZhNiq2YfYp9uMINiv24zar9ixINin2KjYqtiv2Kcg2K/aqdmF2Ycg2YfYp9uMINqp2KfYsdio2LHbjCDZiCDZgdix2KLbjNmG2K/bjCDZiCDYqNi52K8g2K/aqdmF2Ycg2YfYp9uMINiq2LnYsduM2YEg2LTYr9mHINiz24zYs9iq2YUg2YbZhdin24zYtCDYr9in2K/ZhyDZhduM2LTZiNivLlxuICAgICAgICBjb25zdCBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgICAgIGNvbnN0IGlzVGFibGV0ID0gZ2V0RGV2aWNlSXNUYWJsZXQoKTtcbiAgICAgICAgbGV0IG5ld0l0ZW1zID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGMpID0+XG4gICAgICAgICAgICAgICAgIWMuaGlkZGVuICYmXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgKGlzTW9iaWxlIHx8IGlzVGFibGV0IHx8IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzaykgJiZcbiAgICAgICAgICAgICAgICAgICAgKGMuaXRlbUlkID09PSAnTmV4dCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnUHJldmlvdXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjLml0ZW1JZCA9PT0gJ01vdmVOZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pdGVtSWQgPT09ICdNb3ZlUHJldicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaXRlbUlkID09PSAnTW92ZVByZXZpb3VzJylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbmV3SXRlbXMuc29ydCgoYywgZCk6IG51bWJlciA9PiAoTnVtYmVyKGM/LkRhdGE/LlRhYk9yZGVyTnVtYmVyKSA8IE51bWJlcihkPy5EYXRhPy5UYWJPcmRlck51bWJlcikgPyAxIDogLTEpKTtcbiAgICAgICAgY29uc3Qgbm9uU3RyaW5nSXRlbXMgPSBuZXdJdGVtcy5maWx0ZXIoKGMpID0+IHR5cGVvZiBjICE9PSAnc3RyaW5nJyk7XG5cbiAgICAgICAgY29uc3QgdCA9IG5vblN0cmluZ0l0ZW1zLmZpbmQoKGMpID0+ICFjLmlzQnVpbHRpbiAmJiAhYy5JQW1NZW51KTtcbiAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgIHQucHJpb3JpdHkgPSAnaGlnaCc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbGV0IG5vbkJ1aWx0aW5Db3VudCA9IDA7XG4gICAgICAgIC8vIG5vblN0cmluZ0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgLy8gICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gICAgICAgICByZXR1cm47XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICBjb25zdCBpbkZvb3RlciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGl0ZW0sICdEYXRhLkN1c3RvbVVpLlBhcmFtZXRlcnMuSW5Gb290ZXInLCBmYWxzZSk7XG4gICAgICAgIC8vICAgICBpZiAoaXRlbS5pc0J1aWx0aW4gfHwgaW5Gb290ZXIpIHtcbiAgICAgICAgLy8gICAgICAgICAvLyDYs9uM2LPYqtmF24xcbiAgICAgICAgLy8gICAgICAgICBpdGVtLnByaW9yaXR5ID0gJ2Fsd2F5cyc7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIGlmIChub25CdWlsdGluQ291bnQgPiAxKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIC8vINiv2qnZhdmHINmH2KfbjCDaqdin2LHYqNix24wg2qnZhyDYqNuM2LTYqtixINin2LIg2K/ZiCDZh9iz2KrZhtivXG4gICAgICAgIC8vICAgICAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnbG93JztcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBpdGVtLnByaW9yaXR5ID0gJ2xvdyc7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIG5vbkJ1aWx0aW5Db3VudCsrO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KTtcbiAgICAgICAgY29uc3Qgbm9CdWlsdGluSXRlbXMgPSBub25TdHJpbmdJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT5cbiAgICAgICAgICAgICAgICB0eXBlb2YgYyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAhYy5pc0J1aWx0aW4gJiZcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjLCAnRGF0YS5DdXN0b21VaS5QYXJhbWV0ZXJzLkluRm9vdGVyJywgZmFsc2UpICE9PSB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIG5vQnVpbHRpbkl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpbmRleCA9PT0gMCA/IChpdGVtLnByaW9yaXR5ID0gJ2hpZ2h0JykgOiAoaXRlbS5wcmlvcml0eSA9ICdsb3cnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5vbkJ1aWx0aW5Db3VudCA9IG5vQnVpbHRpbkl0ZW1zLmxlbmd0aDtcbiAgICAgICAgaWYgKG5vbkJ1aWx0aW5Db3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8g2Kfar9ixINmH24zahiDYr9qp2YXZhyDaqdin2LHYqNix24wg2YjYrNmI2K8g2YbYr9in2LTYqlxuICAgICAgICAgICAgbm9uU3RyaW5nSXRlbXMuZm9yRWFjaCgoaXRlbSwgXykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PT0gJ1NhdmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJpb3JpdHkgPSAnbmV2ZXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhdmVBbmROZXcgPSBuZXdJdGVtcy5maW5kKChjKSA9PiBjLml0ZW1JZCA9PT0gJ1NhdmVBbmROZXcnKTtcbiAgICAgICAgY29uc3Qgc2F2ZUFuZENsb3NlID0gbmV3SXRlbXMuZmluZCgoYykgPT4gYy5pdGVtSWQgPT09ICdTYXZlQW5kQ2xvc2UnKTtcbiAgICAgICAgaWYgKHNhdmVBbmRDbG9zZSAmJiBzYXZlQW5kQ2xvc2UubWVudSkge1xuICAgICAgICAgICAgY29uc3Qgc2F2ZSA9IHNhdmVBbmRDbG9zZS5tZW51Lml0ZW1zWzBdO1xuICAgICAgICAgICAgaWYgKHNhdmUpIHtcbiAgICAgICAgICAgICAgICBzYXZlLmlzQnVpbHRpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2F2ZS5wcmlvcml0eSA9IG5vbkJ1aWx0aW5Db3VudCA9PT0gMCA/ICduZXZlcicgOiAnYWx3YXlzJztcblxuICAgICAgICAgICAgICAgIG5ld0l0ZW1zLnB1c2goc2F2ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNhdmVBbmROZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgc2F2ZS5JQW1NZW51ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2F2ZS5tZW51ID0geyBpdGVtczogW3sgLi4uc2F2ZUFuZE5ldyB9XSB9O1xuICAgICAgICAgICAgICAgICAgICBuZXdJdGVtcyA9IG5ld0l0ZW1zLmZpbHRlcigoYykgPT4gYy5pdGVtSWQgIT09ICdTYXZlQW5kTmV3Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLm1lbnUpIHtcbiAgICAgICAgICAgICAgICBpdGVtLm1lbnUuaXRlbXMgPSBpdGVtLm1lbnUuaXRlbXMuZmlsdGVyKChjKSA9PiAhYy5oaWRkZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYnVpbHRpbnNCdXR0b25zID0gbmV3SXRlbXMuZmlsdGVyKChjKSA9PiBjPy5pc0J1aWx0aW4pO1xuICAgICAgICBuZXdJdGVtcyA9IFtcbiAgICAgICAgICAgIC4uLmJ1aWx0aW5zQnV0dG9ucyxcbiAgICAgICAgICAgIC4uLm5ld0l0ZW1zLmZpbHRlcigoYykgPT4gIWM/LmlzQnVpbHRpbiAmJiAhYz8uaXNXb3JrZmxvdyksXG4gICAgICAgICAgICAuLi5uZXdJdGVtcy5maWx0ZXIoKGMpID0+IGM/LmlzV29ya2Zsb3cpXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG1vdmVOZXh0SW5kZXggPSBuZXdJdGVtcy5maW5kSW5kZXgoKGMpID0+IGMuaXRlbUlkID09PSAnTW92ZU5leHQnKTtcbiAgICAgICAgaWYgKG1vdmVOZXh0SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgbmV3SXRlbXNbbW92ZU5leHRJbmRleF0ucHJpb3JpdHkgPSAnYWx3YXlzJztcbiAgICAgICAgICAgIGNvbnN0IG1vcyA9IG5ld0l0ZW1zLnNwbGljZShtb3ZlTmV4dEluZGV4IC0gMSwgMik7XG4gICAgICAgICAgICBuZXdJdGVtcyA9IFsuLi5tb3MsIC4uLm5ld0l0ZW1zXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb3ZlUHJldkluZGV4ID0gbmV3SXRlbXMuZmluZEluZGV4KChjKSA9PiBjLml0ZW1JZCA9PT0gJ01vdmVQcmV2Jyk7XG4gICAgICAgIGlmIChtb3ZlUHJldkluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIG5ld0l0ZW1zW21vdmVQcmV2SW5kZXhdLnByaW9yaXR5ID0gJ2Fsd2F5cyc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgdG9vbGJhcml0ZW1zIGluIGZvb3RlciBwcm9wZXJ0eVxuICAgICAgICBuZXdJdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbkZvb3RlciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsICdEYXRhLkN1c3RvbVVpLlBhcmFtZXRlcnMuSW5Gb290ZXInLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoaW5Gb290ZXIpIHtcbiAgICAgICAgICAgICAgICBjLmluRm9vdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ld0l0ZW1zLnJldmVyc2UoKTtcbiAgICAgICAgLy8gcmV0dXJuIG5ld0l0ZW1zLnNvcnQoKGEpOiBudW1iZXIgPT4gKHR5cGVvZiBhID09ICdzdHJpbmcnID8gMCA6IGEuSUFtTWVudSA/IDEgOiAtMSkpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dldEhlYWRlckxheW91dCh2aWV3KTogSUhlYWRlckxheW91dCB7XG4gICAgICAgIGNvbnN0IGhlYWRlckxheW91dCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHZpZXcsICdIZWFkZXJMYXlvdXQnLCBudWxsKTtcblxuICAgICAgICBpZiAoaGVhZGVyTGF5b3V0KSB7XG4gICAgICAgICAgICAvLyB0aGlzLnNldEhlYWRlclRpdGxlQW5kU3VidGl0bGVBbmRBdmF0YXIoaGVhZGVyTGF5b3V0KTtcbiAgICAgICAgICAgIGNvbnN0IHQ6IGFueVtdID0gW107XG4gICAgICAgICAgICBoZWFkZXJMYXlvdXQuRmFjZXRMaXN0Lk1vRGF0YUxpc3QuZm9yRWFjaCgoZmFjZXRDb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICB0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmYWNldENvbHVtbi5Db2x1bW5TZXR0aW5ncy4kRm9ybVBhbmVsU2V0dGluZy5EYXRhLk1vLlR5cGUsXG4gICAgICAgICAgICAgICAgICAgIG1vOiBmYWNldENvbHVtbi5Db2x1bW5TZXR0aW5ncy4kRm9ybVBhbmVsU2V0dGluZy5EYXRhLk1vXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhlYWRlckxheW91dC5GYWNldExpc3QyID0gdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGVhZGVyTGF5b3V0O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3ByZXBhcmVMYXlvdXRDb21wb25lbnQodmlldzogRm9ybVZpZXdTZXR0aW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheW91dENvbXBvbmVudHMgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnRXh0cmFKc29uUHJvcC5Db21wb25lbnRzJywgbnVsbCk7XG4gICAgICAgIGlmICghbGF5b3V0Q29tcG9uZW50cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShsYXlvdXRDb21wb25lbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxheW91dENvbXBvbmVudHMuZm9yRWFjaCgobGF5b3V0Q29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRTZXR0aW5nID0gRmluZExheW91dFNldHRpbmdGcm9tTGF5b3V0OTQodmlldy5MYXlvdXQ5NCwgbGF5b3V0Q29tcG9uZW50LkxheW91dFRpdGxlKTtcbiAgICAgICAgICAgIGlmIChsYXlvdXRTZXR0aW5nID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXlvdXRTZXR0aW5nLmNvbXBvbmVudCA9IHsgLi4ubGF5b3V0Q29tcG9uZW50IH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dldElzU2ltcGxlRm9ybSh2aWV3OiBGb3JtVmlld1NldHRpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNTaW1wbGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh2aWV3LCAnRXh0cmFKc29uUHJvcC5Jc1NpbXBsZScsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIGlzU2ltcGxlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dldFRvb2xiYXJWaXNpYmlsaXR5KGNvbnRleHQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGlkZVRvb2xiYXIgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAndG9vbGJhci5oaWRlVG9vbGJhcicsIGZhbHNlKTtcbiAgICAgICAgaWYgKGhpZGVUb29sYmFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBGb3JtU2V0dGluZ3MgfSA9IGNvbnRleHQuU2V0dGluZy5WaWV3O1xuICAgICAgICBpZiAoRm9ybVNldHRpbmdzKSB7XG4gICAgICAgICAgICBjb25zdCBzaG93VG9vbGJhciA9IEZvcm1TZXR0aW5ncy5TaG93VG9vbGJhciA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdGZWF0dXJlcy5Ub29sYmFyJywgZmFsc2UpO1xuXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlID0gKGZlYXR1cmVUb29sYmFyICYmIHNob3dUb29sYmFyKSAhPT0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdmlzaWJsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9nZXRNYXhDb250ZW50V2lkdGgodmlldyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG1heENvbnRlbnRXaWR0aCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHZpZXcsICdFeHRyYUpzb25Qcm9wLk1heFdpZHRoJywgJzAnKTtcbiAgICAgICAgcmV0dXJuIG1heENvbnRlbnRXaWR0aDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9hZGRMaXN0ZW5lcihjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQub24oe1xuICAgICAgICAgICAgQ2xvc2VTaWRlTmF2aWdhdG9yOiB0aGlzLl9jbG9zZVNpZGVOYXZpZ2F0b3IuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIEdyb3VwQlJ1bGVDaGFuZ2VkOiB0aGlzLl9ncm91cEJSdWxlQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgVGl0bGVDaGFuZ2VkOiB0aGlzLl90aXRsZUNoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFdpemFyZE5leHRTdGVwOiB0aGlzLl93aXphcmROZXh0U3RlcC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgV2l6YXJkUHJldmlvdXNTdGVwOiB0aGlzLl93aXphcmRQcmV2aW91c1N0ZXAuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIERvTGF5b3V0OiB0aGlzLl9kb0xheW91dC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgTWFza0NoYW5nZWQ6IHRoaXMuX21hc2tDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBGb3JjZUNsb3NlOiB0aGlzLl9mb3JjZUNsb3NlLmJpbmQodGhpcyksXG4gICAgICAgICAgICBSZWZyZXNoOiB0aGlzLl9yZWZyZXNoLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRleHQudG9vbGJhci5vbih7XG4gICAgICAgICAgICBUb29sYmFySXRlbXNDaGFuZ2VkOiB0aGlzLl90b29sYmFySXRlbXNDaGFuZ2VkLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVmcmVzaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSh0aGlzLl9jb250ZXh0KTtcbiAgICAgICAgLy8gdGhpcy5fcHJlcGFyZVZpZXcodGhpcy5fY29udGV4dC5TZXR0aW5nLlZpZXcpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZvcmNlQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvcmNlQ2xvc2VTb3VyY2UubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX21hc2tDaGFuZ2VkKG1hc2spOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWFza1NvdXJjZS5uZXh0KG1hc2spO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3Rvb2xiYXJJdGVtc0NoYW5nZWQoaXRlbXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW1zU291cmNlLm5leHQoaXRlbXMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3RpdGxlQ2hhbmdlZCh0aXRsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aXRsZVNvdXJjZS5uZXh0KHRpdGxlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF93aXphcmROZXh0U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkTmV4dFN0ZXBTb3VyY2UubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3dpemFyZFByZXZpb3VzU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkUHJldmlvdXNTdGVwU291cmNlLm5leHQoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9kb0xheW91dChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBjb250ZXh0LlNldHRpbmcuVmlldztcbiAgICAgICAgdGhpcy5fdmlld1NvdXJjZS5uZXh0KHZpZXcpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2Nsb3NlU2lkZU5hdmlnYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2lkZWJhclN0YXRlJC5uZXh0KCdjbG9zZScpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2dyb3VwQlJ1bGVDaGFuZ2VkKGdyb3VwSXRlbTogTGF5b3V0U2V0dGluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncm91cEJSdWxlU291cmNlLm5leHQoZ3JvdXBJdGVtKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9wcmVwYXJlQ29udGV4dChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZExpc3RlbmVyKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
export class FormService {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.fromListSubject = new BehaviorSubject([]);
|
|
5
|
-
this.formList$ = this.fromListSubject.asObservable();
|
|
6
|
-
}
|
|
7
|
-
openCompose(formComposeId) {
|
|
8
|
-
this.fromListSubject.next([...this.fromListSubject.value, formComposeId]);
|
|
9
|
-
}
|
|
10
|
-
closeCompose(formComposeId) {
|
|
11
|
-
this.fromListSubject.next(this.fromListSubject.value.filter((id) => id !== formComposeId));
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxNQUFNLE9BQU8sV0FBVztJQUdwQjtRQURRLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFDRCxXQUFXLENBQUMsYUFBcUI7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELFlBQVksQ0FBQyxhQUFxQjtRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcclxuICAgIGZvcm1MaXN0JDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcbiAgICBwcml2YXRlIGZyb21MaXN0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUxpc3QkID0gdGhpcy5mcm9tTGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBvcGVuQ29tcG9zZShmb3JtQ29tcG9zZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZyb21MaXN0U3ViamVjdC5uZXh0KFsuLi50aGlzLmZyb21MaXN0U3ViamVjdC52YWx1ZSwgZm9ybUNvbXBvc2VJZF0pO1xyXG4gICAgfVxyXG4gICAgY2xvc2VDb21wb3NlKGZvcm1Db21wb3NlSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZnJvbUxpc3RTdWJqZWN0Lm5leHQodGhpcy5mcm9tTGlzdFN1YmplY3QudmFsdWUuZmlsdGVyKChpZCkgPT4gaWQgIT09IGZvcm1Db21wb3NlSWQpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
export class HorizontalLayoutService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.controlFlexColumnSource = new BehaviorSubject({});
|
|
6
|
-
this.displayTextFlexColumn$ = this.controlFlexColumnSource
|
|
7
|
-
.asObservable()
|
|
8
|
-
.pipe(map((controlFlexColumn) => Object.keys(controlFlexColumn).some((c) => controlFlexColumn[c])));
|
|
9
|
-
}
|
|
10
|
-
setFlexColumn(id, val) {
|
|
11
|
-
const flexColumn = this.controlFlexColumnSource.getValue();
|
|
12
|
-
flexColumn[id] = val;
|
|
13
|
-
this.controlFlexColumnSource.next(flexColumn);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1sYXlvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvc2VydmljZXMvaG9yaXpvbnRhbC1sYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDO1FBRlEsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBR3ZFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCO2FBQ3JELFlBQVksRUFBRTthQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUNELGFBQWEsQ0FBQyxFQUFFLEVBQUUsR0FBWTtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgY2xhc3MgSG9yaXpvbnRhbExheW91dFNlcnZpY2Uge1xyXG4gICAgZGlzcGxheVRleHRGbGV4Q29sdW1uJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIHByaXZhdGUgY29udHJvbEZsZXhDb2x1bW5Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpc3BsYXlUZXh0RmxleD4oe30pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVRleHRGbGV4Q29sdW1uJCA9IHRoaXMuY29udHJvbEZsZXhDb2x1bW5Tb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKG1hcCgoY29udHJvbEZsZXhDb2x1bW4pID0+IE9iamVjdC5rZXlzKGNvbnRyb2xGbGV4Q29sdW1uKS5zb21lKChjKSA9PiBjb250cm9sRmxleENvbHVtbltjXSkpKTtcclxuICAgIH1cclxuICAgIHNldEZsZXhDb2x1bW4oaWQsIHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZsZXhDb2x1bW4gPSB0aGlzLmNvbnRyb2xGbGV4Q29sdW1uU291cmNlLmdldFZhbHVlKCk7XHJcbiAgICAgICAgZmxleENvbHVtbltpZF0gPSB2YWw7XHJcbiAgICAgICAgdGhpcy5jb250cm9sRmxleENvbHVtblNvdXJjZS5uZXh0KGZsZXhDb2x1bW4pO1xyXG4gICAgfVxyXG59XHJcbmludGVyZmFjZSBEaXNwbGF5VGV4dEZsZXgge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export * from './api.service';
|
|
2
|
-
export * from './breadcrumb.service';
|
|
3
|
-
export * from './barsa-dialog.service';
|
|
4
|
-
export * from './dynamic-component.service';
|
|
5
|
-
export * from './form-panel.service';
|
|
6
|
-
export * from './form.service';
|
|
7
|
-
export * from './container.service';
|
|
8
|
-
export * from './horizontal-layout.service';
|
|
9
|
-
export * from './layout.service';
|
|
10
|
-
export * from './log.service';
|
|
11
|
-
export * from './portal.service';
|
|
12
|
-
export * from './ui.service';
|
|
13
|
-
export * from './ulvmain.service';
|
|
14
|
-
export * from './upload.service';
|
|
15
|
-
export * from './network-status.service';
|
|
16
|
-
export * from './audio-recording.service';
|
|
17
|
-
export * from './video-recording.service';
|
|
18
|
-
export * from './local-storage.service';
|
|
19
|
-
export * from './indexeddb.service';
|
|
20
|
-
export * from './barsa-storage.service';
|
|
21
|
-
export * from './prompt-update.service';
|
|
22
|
-
export * from './notification.service';
|
|
23
|
-
export * from './notification-popup.service';
|
|
24
|
-
export * from './notification-sw.service';
|
|
25
|
-
export * from './column.service';
|
|
26
|
-
export * from './service-worker-communication.service';
|
|
27
|
-
export * from './save-scoll-position.service';
|
|
28
|
-
export * from './routing.service';
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFyc2EtZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1wYW5lbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFpbmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ob3Jpem9udGFsLWxheW91dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvcnRhbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdWkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Vsdm1haW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3VwbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yay1zdGF0dXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLXJlY29yZGluZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdmlkZW8tcmVjb3JkaW5nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmRleGVkZGIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2JhcnNhLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb21wdC11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLXBvcHVwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tc3cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbHVtbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS13b3JrZXItY29tbXVuaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2F2ZS1zY29sbC1wb3NpdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGluZy5zZXJ2aWNlJztcbiJdfQ==
|