@churchillliving/se-ui-toolkit 6.53.413 → 6.53.415
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/bundles/churchillliving-se-ui-toolkit.umd.js +2 -2
- package/bundles/churchillliving-se-ui-toolkit.umd.js.map +1 -1
- package/churchillliving-se-ui-toolkit.metadata.json +1 -1
- package/esm2015/lib/components/base/grid/grid.component.js +2 -2
- package/esm2015/lib/components/base/sidebar/sidebar.component.js +1 -2
- package/esm2015/lib/models/grid.model.js +2 -1
- package/fesm2015/churchillliving-se-ui-toolkit.js +2 -2
- package/fesm2015/churchillliving-se-ui-toolkit.js.map +1 -1
- package/lib/models/grid.model.d.ts +2 -1
- package/package.json +1 -1
|
@@ -94,7 +94,6 @@ export class SidebarComponent {
|
|
|
94
94
|
onReturn: x.onReturn,
|
|
95
95
|
disabled: x.disabled,
|
|
96
96
|
}));
|
|
97
|
-
console.log('menu items', this.menuItems);
|
|
98
97
|
}
|
|
99
98
|
//ref link: https://medium.com/@saranya.thangaraj/open-angular-component-in-a-new-tab-without-bootstrapping-the-whole-app-again-e329af460e92
|
|
100
99
|
navigateComponentToNewTab(menu, onNewTab = true) {
|
|
@@ -331,4 +330,4 @@ SidebarComponent.propDecorators = {
|
|
|
331
330
|
menuTitle: [{ type: Input }],
|
|
332
331
|
sidebarItems: [{ type: Input }]
|
|
333
332
|
};
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0saUNBQWlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBT25FLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQjNCLFlBQ1UsUUFBbUIsRUFDbkIsV0FBa0MsRUFDbkMsYUFBNEIsRUFDM0IsTUFBYyxFQUNkLGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsY0FBOEI7UUFOOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxH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QUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNyQixNQUFNLFdBQVcsR0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxJQUNFLElBQUksQ0FBQyxVQUFVLEtBQUssYUFBYTtnQkFDakMsV0FBVztnQkFDWCxXQUFXLENBQUMsT0FBTyxFQUNuQjtnQkFDQSxJQUFJLENBQUMsZ0JBQWdCO3FCQUNsQixhQUFhLENBQUMsV0FBVyxDQUFDO3FCQUMxQixJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO3dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUNsQyxRQUFRLEVBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzNCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQWxVRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLDYyQkFBdUM7O2FBRXhDOzs7O1lBakJrQyxTQUFTO1lBTW5DLHFCQUFxQjtZQUhyQixhQUFhO1lBRmIsTUFBTTtZQU9OLGlCQUFpQjtZQURqQixnQkFBZ0I7WUFJaEIsY0FBYzs7O3dCQVdwQixLQUFLOzhCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgRVNpZGViYXJBY3Rpb24sIEVTaWRlYmFyVGFyZ2V0LCBJU2lkZWJhciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zaWRlYmFyLm1vZGVsJztcbmltcG9ydCB7IEVQZXJtaXNzaW9uVHlwZSwgSVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVDb21wb25lbnQgfSBmcm9tICcuLi9pZnJhbWUvaWZyYW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZUJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zaWRlYmFyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0b2dnbGVNZW51OiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRDb21wb25lbnROYW1lID0gJyc7XG4gIG9wZW5EaWFsb2dzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgbmF2SGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbGxhcHNlU2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtZW51VGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc2V0IHNpZGViYXJJdGVtcyhuZXdTaWRlYmFySXRlbXM6IElTaWRlYmFyW10pIHtcbiAgICBpZiAobmV3U2lkZWJhckl0ZW1zKSB7XG4gICAgICB0aGlzLnNpZGViYXJJdGVtc0xpc3QgPSBuZXdTaWRlYmFySXRlbXM7XG4gICAgICB0aGlzLmluaXRpYWxpemVTaWRlQmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNpZGViYXJJdGVtc0xpc3Q6IElTaWRlYmFyW10gPSBbXTtcbiAgcHVibGljIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICByb2xlczogc3RyaW5nW10gPSBbXTtcbiAgaXNTaWRlYmFySGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnN0YW5jZTogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcGFnZUxvZ2dlclNlcnZpY2U6IFBhZ2VMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIHNpZGViYXJTZXJ2aWNlOiBTaWRlQmFyU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMucm91dGVyLnVybC50b1N0cmluZygpPy5pbmNsdWRlcygnY29tcG9uZW50PScpKXtcbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSB0aGlzLnJvdXRlci51cmw/LnNwbGl0KCdjb21wb25lbnQ9JylbMV07XG4gICAgICBpZihjb21wb25lbnROYW1lKXtcbiAgICAgIHRoaXMubG9hZENvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICBpZih0aGlzLmxvYWRDb21wb25lbnROYW1lKXtcbiAgICAgIHRoaXMub3BlbkR5bmFtaWNDb21wb25ldG9uTG9hZCgpXG4gICAgfVxuICAgfVxuXG4gICBvcGVuRHluYW1pY0NvbXBvbmV0b25Mb2FkICgpe1xuICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdD8uZm9yRWFjaCgoaXRlbSk9PntcbiAgICAgIGlmKGl0ZW0uYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5PUEVORElBTE9HICYmIEVTaWRlYmFyVGFyZ2V0LkJMQU5LICYmIGl0ZW0uY29tcG9uZW50Lm5hbWUgPT09IHRoaXMubG9hZENvbXBvbmVudE5hbWUpe1xuICAgICAgICB0aGlzLm5hdmlnYXRlQ29tcG9uZW50VG9OZXdUYWIoaXRlbSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pXG4gICB9XG5cbiAgaW5pdGlhbGl6ZVNpZGVCYXIoKSB7XG4gICAgdGhpcy5yb2xlcyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclJvbGVzKCk7XG4gICAgLy8gYXBwbHkgdXNlciByb2xlIHBlcm1pc3Npb25zXG4gICAgdGhpcy5hcHBseVVzZXJQZXJtaXNzaW9ucygpO1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0Lm1hcCgoeDogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IHgubGFiZWwsXG4gICAgICBpY29uOiB4Lmljb24sXG4gICAgICBpZDogeC5pZCxcbiAgICAgIHNlY3Rpb246IHguc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiB4LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiB4LmFjdGlvbixcbiAgICAgIGl0ZW1zOiB4Lml0ZW1zICYmIHguaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuc2V0TWVudUl0ZW1zKHgpIDogW10sXG4gICAgICB0aXRsZTogdGhpcy5zZXRNZW51VGl0bGUoeCksXG4gICAgICBjb21tYW5kOiAoeyBpdGVtIH0pID0+IHtcbiAgICAgICAgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5OQVZJR0FUSU9OKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbih4LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uT1BFTkRJQUxPRykge1xuICAgICAgICAgIGlmKHgudGFyZ2V0ICYmIHgudGFyZ2V0ID09PSBFU2lkZWJhclRhcmdldC5CTEFOSyl7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQ29tcG9uZW50VG9OZXdUYWIoeCk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coeCwgaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5JRlJBTUUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWUoeCwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogeC5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiB4Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogeC5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiB4LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgICBjb25zb2xlLmxvZygnbWVudSBpdGVtcycsdGhpcy5tZW51SXRlbXMpXG5cbiAgfVxuICAvL3JlZiBsaW5rOiBodHRwczovL21lZGl1bS5jb20vQHNhcmFueWEudGhhbmdhcmFqL29wZW4tYW5ndWxhci1jb21wb25lbnQtaW4tYS1uZXctdGFiLXdpdGhvdXQtYm9vdHN0cmFwcGluZy10aGUtd2hvbGUtYXBwLWFnYWluLWUzMjlhZjQ2MGU5MlxuICBuYXZpZ2F0ZUNvbXBvbmVudFRvTmV3VGFiKG1lbnU6IGFueSwgb25OZXdUYWI6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgbGV0IHdpbmRvd1JlZiA9IHdpbmRvdztcbiAgICBsZXQgd2luUmVmOiBhbnk7XG4gICAgaWYob25OZXdUYWIpe1xuICAgICAgd2luUmVmID0gd2luZG93Lm9wZW4oKTtcbiAgICAgIGlmICh3aW5SZWYubG9jYXRpb24uaHJlZiA9PT0gJ2Fib3V0OmJsYW5rJykge1xuICAgICAgICBpZih0aGlzLnJvdXRlci51cmwgJiYgdGhpcy5yb3V0ZXIudXJsPy50b1N0cmluZygpPy5pbmNsdWRlcygnPycpKXtcbiAgICAgICAgICB3aW5SZWYubG9jYXRpb24uaHJlZiA9IHRoaXMucm91dGVyLnVybCsnJiZjb21wb25lbnQ9JyttZW51LmNvbXBvbmVudC5uYW1lO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICB3aW5SZWYubG9jYXRpb24uaHJlZiA9IGAke3RoaXMucm91dGVyLnVybH0/Y29tcG9uZW50PSR7bWVudS5jb21wb25lbnQubmFtZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdhaXQgZm9yIHdpbmRvdyBpbnN0YW5jZSB0byBiZSBjcmVhdGVkXG4gICAgaWYob25OZXdUYWIpe1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2lkZWJhclNlcnZpY2UuY3JlYXRlV2luZG93SW5zdGFuY2UobWVudSwgd2luUmVmKTtcbiAgICAgIH0sIDkwMCk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLmNyZWF0ZVdpbmRvd0luc3RhbmNlKG1lbnUsIHdpbmRvd1JlZik7XG4gICAgfVxuICAgIFxuICB9XG5cblxuICBzZXRNZW51VGl0bGUoeDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4geC50b29sdGlwID8geC50b29sdGlwIDogIXgubGFiZWwgPyB4LnNlY3Rpb24gOiAnJztcbiAgfVxuXG4gIHNldE1lbnVJdGVtcyh4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB4Lml0ZW1zLm1hcCgobWVudTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IG1lbnUubGFiZWwsXG4gICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICBpZDogbWVudS5pZCxcbiAgICAgIHNlY3Rpb246IG1lbnUuc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiBtZW51LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiBtZW51LmFjdGlvbixcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6ICh7IGl0ZW0gfTogYW55KSA9PiB7XG4gICAgICAgIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uTkFWSUdBVElPTikge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1NlY3Rpb24obWVudSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5EaWFsb2cobWVudSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLklGUkFNRSkge1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZShtZW51LCB4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogbWVudS5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBtZW51Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogbWVudS5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiBtZW51LmRpc2FibGVkLFxuICAgIH0pKVxuICB9XG5cbiAgbG9hZElGcmFtZShtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KSB7XG4gICAgaWYgKG1lbnUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKElmcmFtZUNvbXBvbmVudCwge1xuICAgICAgICBoZWFkZXI6IG1lbnUuc2VjdGlvbixcbiAgICAgICAgd2lkdGg6IG1lbnUuaUZyYW1lPy53aWR0aCA/IG1lbnUuaUZyYW1lLndpZHRoIDogJzkwJScsXG4gICAgICAgIGhlaWdodDogbWVudS5pRnJhbWU/LmhlaWdodCA/IG1lbnUuaUZyYW1lLmhlaWdodCA6ICc4MCUnLFxuICAgICAgICBkYXRhOiB7IHZhbHVlOiBtZW51LmlGcmFtZT8ubGluaywgaUZyYW1lSWQ6IG1lbnUuc2VjdGlvbiB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnBhZ2VMb2dnZXJTZXJ2aWNlLnNhdmVQYWdlTG9nZ2VySW5mbyh0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKSwgJ0lmcmFtZUNvbXBvbmVudCcpO1xuXG4gICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICB1dGlsaXRpZXMuZHJhZ2dhYmxlRGlhbG9nKG1lbnUubGFiZWwpXG4gICAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2lkZWJhcigpIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUgPSAhdGhpcy50b2dnbGVNZW51O1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2dnbGVNZW51JywgSlNPTi5zdHJpbmdpZnkodGhpcy50b2dnbGVNZW51KSk7XG4gIH1cblxuICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgYXBwbHlVc2VyUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2lkZWJhckl0ZW1zTGlzdCkge1xuICAgICAgbGV0IHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuSXRlbXM6IG51bWJlciA9IDA7XG5cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgcGVybWlzc2lvbnM6IGFueSA9IGl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIGxldCBoYXNWYWxpZEVkaXRQZXJtaXNzaW9uID0gZmFsc2U7XG5cbiAgICAgICAgaXRlbS5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucyAmJiBwZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaCgocGVybWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ucm9sZXMgJiYgcGVybWlzc2lvbi5yb2xlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24ucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMucm9sZXMgJiYgdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbi50eXBlID09PSBFUGVybWlzc2lvblR5cGUuVklFVyAmJlxuICAgICAgICAgICAgICAgICFoYXNWYWxpZEVkaXRQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5FRElUKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbEl0ZW1zKys7XG5cbiAgICAgICAgaWYgKGl0ZW0uaGlkZGVuKSB7XG4gICAgICAgICAgaGlkZGVuSXRlbXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNTaWRlYmFySGlkZGVuID0gdG90YWxJdGVtcyA+IDAgJiYgdG90YWxJdGVtcyA9PT0gaGlkZGVuSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEAgcGFyYW0gbWVudVxuICAgKiBAIHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBzaWRlYmFyIGFycmF5IHRvIGNvbnRhaW4gYWxsIElTaWRlYmFyIHByb3BlcnR5IGxpa2VcbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cblxuICAgb3BlbkRpYWxvZyhtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbWVudURhdGE6YW55ID0gbWVudS5kYXRhID8gbWVudS5kYXRhIDogbWVudTtcbiAgICBpZihtZW51RGF0YS5zY3JvbGxhYmxlID09IGZhbHNlKXtcbiAgICAgIG1lbnVEYXRhLnN0eWxlQ2xhc3MgPSBcInNtYWxsLW1vZGVsXCI7XG4gICAgfWVsc2V7XG4gICAgICBtZW51RGF0YS5zdHlsZUNsYXNzID0gXCJzaWRlYmFyLWRhdGVwaWNrZXJcIjtcbiAgICB9XG4gICAgaWYgKG1lbnUuY29tcG9uZW50KSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihtZW51LmNvbXBvbmVudCwgbWVudURhdGEpO1xuICAgICAgdGhpcy5wYWdlTG9nZ2VyU2VydmljZS5zYXZlUGFnZUxvZ2dlckluZm8odGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSksICBtZW51LmNvbXBvbmVudD8ubmFtZSk7XG4gICAgICB0aGlzLm9wZW5EaWFsb2dzLnB1c2goZGlhbG9nUmVmKTtcbiAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcblxuICAgICBpZiAodGhpcy5vcGVuRGlhbG9ncyAmJiB0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5vcGVuRGlhbG9nc1swXS5jbG9zZSgpO1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2dzLnNoaWZ0KCk7XG4gICAgICB9XG4gICAgICB1dGlsaXRpZXMuZHJhZ2dhYmxlRGlhbG9nKG1lbnUubGFiZWwpXG4gICAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEAgcGFyYW0geFxuICAgKiBAIHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBzaWRlYmFyIGFycmF5IHRvIGNvbnRhaW4gYWxsIElTaWRlYmFyIHByb3BlcnR5IGxpa2VcbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cblxuICBuYXZpZ2F0ZVRvU2VjdGlvbih4OiBJU2lkZWJhciwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW5jZT8uc2VsZWN0Um9vdEVsZW1lbnQoYC4ke3guc2VjdGlvbj8ucmVwbGFjZSgvXFxzL2csIFwiXCIpfWAsIHRydWUpPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cbiAgaGFuZGxlQWN0aXZlSXRlbSh7IGljb24gfTogYW55LCBjbG9zZURpYWxvZzogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zLm1hcCgoeCkgPT5cbiAgICAgIHguaWNvbiA9PT0gaWNvbiAmJiBjbG9zZURpYWxvZ1xuICAgICAgICA/IHsgLi4ueCwgc3R5bGVDbGFzczogJ2FjdGl2ZS1pY29uJyB9XG4gICAgICAgIDoge1xuICAgICAgICAgIC4uLngsXG4gICAgICAgICAgc3R5bGVDbGFzczogJycsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgICAgIGRpc3BsYXk6IHguc3R5bGU/LmRpc3BsYXkgPT09ICdub25lJyA/ICdub25lJyA6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY2xpY2tlZE1lbnUobWVudTogTWVudUl0ZW1bXSkge1xuICAgIG1lbnUubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZWRJdGVtOiBhbnkgPSB0aGlzLnNpZGViYXJJdGVtc0xpc3QuZmluZCgoeCkgPT4geC5pZCA9PSBpdGVtLmlkKTtcbiAgICAgIGlmIChcbiAgICAgICAgaXRlbS5zdHlsZUNsYXNzID09PSAnYWN0aXZlLWljb24nICYmXG4gICAgICAgIG1hdGNoZWRJdGVtICYmXG4gICAgICAgIG1hdGNoZWRJdGVtLm9uQ2xpY2tcbiAgICAgICkge1xuICAgICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2VcbiAgICAgICAgICAuYWRkSHlwZXJsaW5rcyhtYXRjaGVkSXRlbSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1hdGNoZWRJdGVtLmxpbmtJZCkge1xuICAgICAgICAgICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2Uuc2V0U2lkZWJhckxpbmsoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFySXRlbXNMaXN0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXRjaGVkSXRlbS5vbkNsaWNrKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxufSJdfQ==
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0saUNBQWlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBT25FLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQjNCLFlBQ1UsUUFBbUIsRUFDbkIsV0FBa0MsRUFDbkMsYUFBNEIsRUFDM0IsTUFBYyxFQUNkLGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsY0FBOEI7UUFOOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxH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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQ0UsSUFBSSxDQUFDLFVBQVUsS0FBSyxhQUFhO2dCQUNqQyxXQUFXO2dCQUNYLFdBQVcsQ0FBQyxPQUFPLEVBQ25CO2dCQUNBLElBQUksQ0FBQyxnQkFBZ0I7cUJBQ2xCLGFBQWEsQ0FBQyxXQUFXLENBQUM7cUJBQzFCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUN0QixJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQ2xDLFFBQVEsRUFDUixJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7cUJBQ0g7eUJBQU07d0JBQ0wsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBaFVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsNjJCQUF1Qzs7YUFFeEM7Ozs7WUFqQmtDLFNBQVM7WUFNbkMscUJBQXFCO1lBSHJCLGFBQWE7WUFGYixNQUFNO1lBT04saUJBQWlCO1lBRGpCLGdCQUFnQjtZQUloQixjQUFjOzs7d0JBV3BCLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzJCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2lkZWJhckFjdGlvbiwgRVNpZGViYXJUYXJnZXQsIElTaWRlYmFyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NpZGViYXIubW9kZWwnO1xuaW1wb3J0IHsgRVBlcm1pc3Npb25UeXBlLCBJUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyLWluZm8ubW9kZWwnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBIeXBlcmxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHlwZXJsaW5rLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZUxvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLWxvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IElmcmFtZUNvbXBvbmVudCB9IGZyb20gJy4uL2lmcmFtZS9pZnJhbWUuY29tcG9uZW50JztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBTaWRlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NpZGViYXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRvZ2dsZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZENvbXBvbmVudE5hbWUgPSAnJztcbiAgb3BlbkRpYWxvZ3M6IGFueSA9IFtdO1xuICBASW5wdXQoKSBuYXZIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29sbGFwc2VTaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lbnVUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzZXQgc2lkZWJhckl0ZW1zKG5ld1NpZGViYXJJdGVtczogSVNpZGViYXJbXSkge1xuICAgIGlmIChuZXdTaWRlYmFySXRlbXMpIHtcbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdCA9IG5ld1NpZGViYXJJdGVtcztcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVNpZGVCYXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2lkZWJhckl0ZW1zTGlzdDogSVNpZGViYXJbXSA9IFtdO1xuICBwdWJsaWMgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc1NpZGViYXJIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluc3RhbmNlOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwYWdlTG9nZ2VyU2VydmljZTogUGFnZUxvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2lkZWJhclNlcnZpY2U6IFNpZGVCYXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5yb3V0ZXIudXJsLnRvU3RyaW5nKCk/LmluY2x1ZGVzKCdjb21wb25lbnQ9Jykpe1xuICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMucm91dGVyLnVybD8uc3BsaXQoJ2NvbXBvbmVudD0nKVsxXTtcbiAgICAgIGlmKGNvbXBvbmVudE5hbWUpe1xuICAgICAgdGhpcy5sb2FkQ29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKHRoaXMubG9hZENvbXBvbmVudE5hbWUpe1xuICAgICAgdGhpcy5vcGVuRHluYW1pY0NvbXBvbmV0b25Mb2FkKClcbiAgICB9XG4gICB9XG5cbiAgIG9wZW5EeW5hbWljQ29tcG9uZXRvbkxvYWQgKCl7XG4gICAgdGhpcy5zaWRlYmFySXRlbXNMaXN0Py5mb3JFYWNoKChpdGVtKT0+e1xuICAgICAgaWYoaXRlbS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cgJiYgRVNpZGViYXJUYXJnZXQuQkxBTksgJiYgaXRlbS5jb21wb25lbnQubmFtZSA9PT0gdGhpcy5sb2FkQ29tcG9uZW50TmFtZSl7XG4gICAgICAgIHRoaXMubmF2aWdhdGVDb21wb25lbnRUb05ld1RhYihpdGVtLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSlcbiAgIH1cblxuICBpbml0aWFsaXplU2lkZUJhcigpIHtcbiAgICB0aGlzLnJvbGVzID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyUm9sZXMoKTtcbiAgICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgICB0aGlzLmFwcGx5VXNlclBlcm1pc3Npb25zKCk7XG4gICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLnNpZGViYXJJdGVtc0xpc3QubWFwKCh4OiBhbnkpID0+ICh7XG4gICAgICBsYWJlbDogeC5sYWJlbCxcbiAgICAgIGljb246IHguaWNvbixcbiAgICAgIGlkOiB4LmlkLFxuICAgICAgc2VjdGlvbjogeC5zZWN0aW9uLFxuICAgICAgZXhwYW5kZWQ6IHguZXhwYW5kZWQsXG4gICAgICBhY3Rpb246IHguYWN0aW9uLFxuICAgICAgaXRlbXM6IHguaXRlbXMgJiYgeC5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5zZXRNZW51SXRlbXMoeCkgOiBbXSxcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6ICh7IGl0ZW0gfSkgPT4ge1xuICAgICAgICBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04pIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9TZWN0aW9uKHgsIGl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5PUEVORElBTE9HKSB7XG4gICAgICAgICAgaWYoeC50YXJnZXQgJiYgeC50YXJnZXQgPT09IEVTaWRlYmFyVGFyZ2V0LkJMQU5LKXtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVDb21wb25lbnRUb05ld1RhYih4KTtcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZyh4LCBpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLklGUkFNRSkge1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZSh4LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBib3JkZXJCb3R0b206ICcnLCAvLyAnMXB4IHNvbGlkICNlOWVjZWYnLFxuICAgICAgICBkaXNwbGF5OiB4LmhpZGRlbiA/ICdub25lJyA6ICcnLFxuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6IHgub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiB4Lm9uUmV0dXJuLFxuICAgICAgZGlzYWJsZWQ6IHguZGlzYWJsZWQsXG4gICAgfSkpO1xuICB9XG4gIC8vcmVmIGxpbms6IGh0dHBzOi8vbWVkaXVtLmNvbS9Ac2FyYW55YS50aGFuZ2FyYWovb3Blbi1hbmd1bGFyLWNvbXBvbmVudC1pbi1hLW5ldy10YWItd2l0aG91dC1ib290c3RyYXBwaW5nLXRoZS13aG9sZS1hcHAtYWdhaW4tZTMyOWFmNDYwZTkyXG4gIG5hdmlnYXRlQ29tcG9uZW50VG9OZXdUYWIobWVudTogYW55LCBvbk5ld1RhYjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBsZXQgd2luZG93UmVmID0gd2luZG93O1xuICAgIGxldCB3aW5SZWY6IGFueTtcbiAgICBpZihvbk5ld1RhYil7XG4gICAgICB3aW5SZWYgPSB3aW5kb3cub3BlbigpO1xuICAgICAgaWYgKHdpblJlZi5sb2NhdGlvbi5ocmVmID09PSAnYWJvdXQ6YmxhbmsnKSB7XG4gICAgICAgIGlmKHRoaXMucm91dGVyLnVybCAmJiB0aGlzLnJvdXRlci51cmw/LnRvU3RyaW5nKCk/LmluY2x1ZGVzKCc/Jykpe1xuICAgICAgICAgIHdpblJlZi5sb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIudXJsKycmJmNvbXBvbmVudD0nK21lbnUuY29tcG9uZW50Lm5hbWU7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHdpblJlZi5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5yb3V0ZXIudXJsfT9jb21wb25lbnQ9JHttZW51LmNvbXBvbmVudC5uYW1lfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gV2FpdCBmb3Igd2luZG93IGluc3RhbmNlIHRvIGJlIGNyZWF0ZWRcbiAgICBpZihvbk5ld1RhYil7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaWRlYmFyU2VydmljZS5jcmVhdGVXaW5kb3dJbnN0YW5jZShtZW51LCB3aW5SZWYpO1xuICAgICAgfSwgOTAwKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuc2lkZWJhclNlcnZpY2UuY3JlYXRlV2luZG93SW5zdGFuY2UobWVudSwgd2luZG93UmVmKTtcbiAgICB9XG4gICAgXG4gIH1cblxuXG4gIHNldE1lbnVUaXRsZSh4OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB4LnRvb2x0aXAgPyB4LnRvb2x0aXAgOiAheC5sYWJlbCA/IHguc2VjdGlvbiA6ICcnO1xuICB9XG5cbiAgc2V0TWVudUl0ZW1zKHg6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHguaXRlbXMubWFwKChtZW51OiBhbnkpID0+ICh7XG4gICAgICBsYWJlbDogbWVudS5sYWJlbCxcbiAgICAgIGljb246IG1lbnUuaWNvbixcbiAgICAgIGlkOiBtZW51LmlkLFxuICAgICAgc2VjdGlvbjogbWVudS5zZWN0aW9uLFxuICAgICAgZXhwYW5kZWQ6IG1lbnUuZXhwYW5kZWQsXG4gICAgICBhY3Rpb246IG1lbnUuYWN0aW9uLFxuICAgICAgdGl0bGU6IHRoaXMuc2V0TWVudVRpdGxlKHgpLFxuICAgICAgY29tbWFuZDogKHsgaXRlbSB9OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5OQVZJR0FUSU9OKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihtZW51LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChtZW51LmFjdGlvbiAmJiBtZW51LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uT1BFTkRJQUxPRykge1xuICAgICAgICAgIHRoaXMub3BlbkRpYWxvZyhtZW51LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChtZW51LmFjdGlvbiAmJiBtZW51LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uSUZSQU1FKSB7XG4gICAgICAgICAgdGhpcy5sb2FkSUZyYW1lKG1lbnUsIHgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBib3JkZXJCb3R0b206ICcnLCAvLyAnMXB4IHNvbGlkICNlOWVjZWYnLFxuICAgICAgICBkaXNwbGF5OiBtZW51LmhpZGRlbiA/ICdub25lJyA6ICcnLFxuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6IG1lbnUub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBtZW51Lm9uUmV0dXJuLFxuICAgICAgZGlzYWJsZWQ6IG1lbnUuZGlzYWJsZWQsXG4gICAgfSkpXG4gIH1cblxuICBsb2FkSUZyYW1lKG1lbnU6IElTaWRlYmFyLCBpdGVtOiBhbnkpIHtcbiAgICBpZiAobWVudSkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oSWZyYW1lQ29tcG9uZW50LCB7XG4gICAgICAgIGhlYWRlcjogbWVudS5zZWN0aW9uLFxuICAgICAgICB3aWR0aDogbWVudS5pRnJhbWU/LndpZHRoID8gbWVudS5pRnJhbWUud2lkdGggOiAnOTAlJyxcbiAgICAgICAgaGVpZ2h0OiBtZW51LmlGcmFtZT8uaGVpZ2h0ID8gbWVudS5pRnJhbWUuaGVpZ2h0IDogJzgwJScsXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IG1lbnUuaUZyYW1lPy5saW5rLCBpRnJhbWVJZDogbWVudS5zZWN0aW9uIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucGFnZUxvZ2dlclNlcnZpY2Uuc2F2ZVBhZ2VMb2dnZXJJbmZvKHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpLCAnSWZyYW1lQ29tcG9uZW50Jyk7XG5cbiAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgIHV0aWxpdGllcy5kcmFnZ2FibGVEaWFsb2cobWVudS5sYWJlbClcbiAgICAgIGRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIGlmIChkYXRhICYmIG1lbnUub25SZXR1cm4pIHtcbiAgICAgICAgICBtZW51Lm9uUmV0dXJuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTaWRlYmFyKCkge1xuICAgIHRoaXMudG9nZ2xlTWVudSA9ICF0aGlzLnRvZ2dsZU1lbnU7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RvZ2dsZU1lbnUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnRvZ2dsZU1lbnUpKTtcbiAgfVxuXG4gIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICBhcHBseVVzZXJQZXJtaXNzaW9ucygpIHtcbiAgICBpZiAodGhpcy5zaWRlYmFySXRlbXNMaXN0KSB7XG4gICAgICBsZXQgdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgICAgIGxldCBoaWRkZW5JdGVtczogbnVtYmVyID0gMDtcblxuICAgICAgdGhpcy5zaWRlYmFySXRlbXNMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCBwZXJtaXNzaW9uczogYW55ID0gaXRlbS5wZXJtaXNzaW9ucztcbiAgICAgICAgbGV0IGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSBmYWxzZTtcblxuICAgICAgICBpdGVtLmlkID0gaW5kZXgudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zICYmIHBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbi5yb2xlcyAmJiBwZXJtaXNzaW9uLnJvbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcGVybWlzc2lvbi5yb2xlcy5mb3JFYWNoKChyb2xlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQgJiYgdGhpcy5yb2xlcyAmJiB0aGlzLnJvbGVzLmluY2x1ZGVzKHJvbGUpKSB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5WSUVXICYmXG4gICAgICAgICAgICAgICAgIWhhc1ZhbGlkRWRpdFBlcm1pc3Npb25cbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBlcm1pc3Npb24udHlwZSA9PT0gRVBlcm1pc3Npb25UeXBlLkVESVQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgaGFzVmFsaWRFZGl0UGVybWlzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICBpdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvdGFsSXRlbXMrKztcblxuICAgICAgICBpZiAoaXRlbS5oaWRkZW4pIHtcbiAgICAgICAgICBoaWRkZW5JdGVtcysrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pc1NpZGViYXJIaWRkZW4gPSB0b3RhbEl0ZW1zID4gMCAmJiB0b3RhbEl0ZW1zID09PSBoaWRkZW5JdGVtcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQCBwYXJhbSBtZW51XG4gICAqIEAgcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIHNpZGViYXIgYXJyYXkgdG8gY29udGFpbiBhbGwgSVNpZGViYXIgcHJvcGVydHkgbGlrZVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuXG4gICBvcGVuRGlhbG9nKG1lbnU6IElTaWRlYmFyLCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51RGF0YTphbnkgPSBtZW51LmRhdGEgPyBtZW51LmRhdGEgOiBtZW51O1xuICAgIGlmKG1lbnVEYXRhLnNjcm9sbGFibGUgPT0gZmFsc2Upe1xuICAgICAgbWVudURhdGEuc3R5bGVDbGFzcyA9IFwic21hbGwtbW9kZWxcIjtcbiAgICB9ZWxzZXtcbiAgICAgIG1lbnVEYXRhLnN0eWxlQ2xhc3MgPSBcInNpZGViYXItZGF0ZXBpY2tlclwiO1xuICAgIH1cbiAgICBpZiAobWVudS5jb21wb25lbnQpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKG1lbnUuY29tcG9uZW50LCBtZW51RGF0YSk7XG4gICAgICB0aGlzLnBhZ2VMb2dnZXJTZXJ2aWNlLnNhdmVQYWdlTG9nZ2VySW5mbyh0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKSwgIG1lbnUuY29tcG9uZW50Py5uYW1lKTtcbiAgICAgIHRoaXMub3BlbkRpYWxvZ3MucHVzaChkaWFsb2dSZWYpO1xuICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0pO1xuXG4gICAgIGlmICh0aGlzLm9wZW5EaWFsb2dzICYmIHRoaXMub3BlbkRpYWxvZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2dzWzBdLmNsb3NlKCk7XG4gICAgICAgIHRoaXMub3BlbkRpYWxvZ3Muc2hpZnQoKTtcbiAgICAgIH1cbiAgICAgIHV0aWxpdGllcy5kcmFnZ2FibGVEaWFsb2cobWVudS5sYWJlbClcbiAgICAgIGRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIGlmIChkYXRhICYmIG1lbnUub25SZXR1cm4pIHtcbiAgICAgICAgICBtZW51Lm9uUmV0dXJuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQCBwYXJhbSB4XG4gICAqIEAgcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIHNpZGViYXIgYXJyYXkgdG8gY29udGFpbiBhbGwgSVNpZGViYXIgcHJvcGVydHkgbGlrZVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuXG4gIG5hdmlnYXRlVG9TZWN0aW9uKHg6IElTaWRlYmFyLCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbmNlPy5zZWxlY3RSb290RWxlbWVudChgLiR7eC5zZWN0aW9uPy5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCwgdHJ1ZSk/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuICBoYW5kbGVBY3RpdmVJdGVtKHsgaWNvbiB9OiBhbnksIGNsb3NlRGlhbG9nOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5tZW51SXRlbXMubWFwKCh4KSA9PlxuICAgICAgeC5pY29uID09PSBpY29uICYmIGNsb3NlRGlhbG9nXG4gICAgICAgID8geyAuLi54LCBzdHlsZUNsYXNzOiAnYWN0aXZlLWljb24nIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgLi4ueCxcbiAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlOWVjZWYnLFxuICAgICAgICAgICAgZGlzcGxheTogeC5zdHlsZT8uZGlzcGxheSA9PT0gJ25vbmUnID8gJ25vbmUnIDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjbGlja2VkTWVudShtZW51OiBNZW51SXRlbVtdKSB7XG4gICAgbWVudS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZEl0ZW06IGFueSA9IHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5maW5kKCh4KSA9PiB4LmlkID09IGl0ZW0uaWQpO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnN0eWxlQ2xhc3MgPT09ICdhY3RpdmUtaWNvbicgJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0gJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0ub25DbGlja1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZVxuICAgICAgICAgIC5hZGRIeXBlcmxpbmtzKG1hdGNoZWRJdGVtKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAobWF0Y2hlZEl0ZW0ubGlua0lkKSB7XG4gICAgICAgICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRTaWRlYmFyTGluayhcbiAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJJdGVtc0xpc3RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hdGNoZWRJdGVtLm9uQ2xpY2soaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgXG59Il19
|
|
@@ -102,6 +102,7 @@ export var EGridRowPropName;
|
|
|
102
102
|
EGridRowPropName["HIDDEN"] = "hidden";
|
|
103
103
|
EGridRowPropName["ICON"] = "icon";
|
|
104
104
|
EGridRowPropName["LOOKUPCONTROL"] = "lookupControl";
|
|
105
|
+
EGridRowPropName["HIDEFIELDVALUE"] = "hideFieldValue";
|
|
105
106
|
})(EGridRowPropName || (EGridRowPropName = {}));
|
|
106
107
|
export var EGridValidator;
|
|
107
108
|
(function (EGridValidator) {
|
|
@@ -117,4 +118,4 @@ export var EGridValidator;
|
|
|
117
118
|
EGridValidator["PHONE"] = "phone";
|
|
118
119
|
EGridValidator["MAXOPTIONS"] = "maxOptions";
|
|
119
120
|
})(EGridValidator || (EGridValidator = {}));
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9tb2RlbHMvZ3JpZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2RUEsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gscUNBQW1CLENBQUE7SUFDbkIsaUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFjRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQiw2QkFBZ0IsQ0FBQTtJQUNoQiwyQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQWlDRCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLCtCQUFhLENBQUE7SUFDYixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxxQkFZWDtBQVpELFdBQVkscUJBQXFCO0lBQy9CLHdDQUFlLENBQUE7SUFDZiw4Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBcUIsQ0FBQTtJQUNyQiwwREFBaUMsQ0FBQTtJQUNqQyxxREFBNEIsQ0FBQTtJQUM1Qix1REFBOEIsQ0FBQTtJQUM5Qix3REFBK0IsQ0FBQTtJQUMvQixrREFBeUIsQ0FBQTtJQUN6QixzREFBNkIsQ0FBQTtJQUM3QiwwQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVB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b24gfSBmcm9tICcuL3VzZXItaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQXV0b0NvbXBsZXRlU2F2ZSwgSURyb3BEb3duUmVxdWVzdCwgSVJlcG9ydEJ0biB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDb2x1bW4ge1xuICBjb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgYWxsb3dFZGl0PzogYm9vbGVhbjtcbiAgYWxsb3dBdXRvQ29tcGxldGVTYXZlPzpib29sZWFuO1xuICB1bmlxdWVLZXk/OiBJQXV0b0NvbXBsZXRlU2F2ZTtcbiAgdGFyZ2V0PzogRUdyaWRsaW5rO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gIHNob3dPcHRpb24/OiBib29sZWFuO1xuICB0eXBlPzogRUdyaWRDb2x1bW5UeXBlO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBoeXBlcmxpbms/OiBzdHJpbmc7XG4gIHNvcnRpbmc/OiBib29sZWFuO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBJR3JpZEZpbHRlclR5cGU7XG4gIGZvcm1hdD86IHN0cmluZyB8IEVHcmlkRm9ybWF0VHlwZSB8IElHcmlkRm9ybWF0OyAvLyBGb3IgbW9yZSBmb3JtYXQgb3B0aW9ucy4gdmlzaXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGVcbiAgZGF0YT86IGFueTtcbiAgc3R5bGU/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgdmFsdWU/OiBhbnk7XG4gIGZpbHRlclZhbHVlPzogYW55O1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xuICBsaW5rSWQ/OiBzdHJpbmc7XG4gIHBhcmFtcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICBtaW51dGVzSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgdGltZU9ubHk/OiBib29sZWFuO1xuICBkaXNwbGF5VGV4dD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGVkaXRMaW5rPzogYm9vbGVhbjtcbiAgYWxsb3dTYXZlPzogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbnM/OiBJR3JpZFZhbGlkYXRpb25bXTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgc2F2ZUFzU3RyaW5nPzogYm9vbGVhbjtcbiAgb25DbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIGNvbHVtbj86IGFueSwgcm93PzogYW55KSA9PiB2b2lkO1xuICBvbkZvY3VzT3V0PzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAocm93OiBhbnkpID0+IHZvaWQ7XG4gIGFnZ3JlZ2F0ZT86IElHcmlkQWdncmVnYXRlW107XG4gIGZvcm1hdHRlcj86IEVHcmlkRm9ybWF0dGVyO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3Q7XG4gIGxvb2t1cENvbnRyb2w/OiBJR3JpZExvb2t1cENvbnRyb2w7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBpZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZExvb2t1cENvbnRyb2wge1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIGRhdGE/OiBJR3JpZExvb2t1cERhdGE7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgSUdyaWRMb29rdXBEYXRhID0ge1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGxhYmVsUHJvcD86IHN0cmluZztcbiAgdmFsdWVQcm9wPzogc3RyaW5nO1xuICBkYXRhPzoge1trZXk6IHN0cmluZ106IGFueX07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cFZhbHVlIHtcbiAgdGV4dDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBmaWVsZD86c3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkQWdncmVnYXRlIHtcbiAgU1VNID0gJ3N1bScsXG4gIEFWRVJBR0UgPSAnYXZlcmFnZScsXG4gIENPVU5UID0gJ2NvdW50Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEFnZ3JlZ2F0ZSB7XG4gIHR5cGU6IEVHcmlkQWdncmVnYXRlO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gIGFnZ3JWYWx1ZT86c3RyaW5nO1xuICBmb3JtYXQ/OiBJQWdncmVnYXRlRm9ybWF0O1xufVxuZXhwb3J0IGludGVyZmFjZSBJQWdncmVnYXRlRm9ybWF0IHtcbiAgdHlwZTogRUFnZ3JlZ2F0ZUZvcm1hdDtcbiAgZGlnaXRzSW5mbz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gRUFnZ3JlZ2F0ZUZvcm1hdCB7XG4gIE5VTUVSSUMgPSAnbnVtZXJpYycsXG4gIERFQ0lNQUwgPSAnZGVjaW1hbCcsXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkbGluayB7XG4gIEJMQU5LID0gJ19ibGFuaycsXG4gIFNFTEYgPSAnX3NlbGYnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRGF0YUV4cG9ydCB7XG4gIHJvd3M6IGFueVtdO1xuICBoZWFkaW5nczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdEl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRmlsdGVyVHlwZSB7XG4gIHR5cGU/OiBHcmlkRmlsdGVyQ29udHJvbFR5cGU7XG4gIGRhdGE/OiBJU2VsZWN0SXRlbVtdO1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xuICBzaG93RmlsdGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWxlcnRQb3BVcEJ0biB7XG4gIGJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIGJ1dHRvbkNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBbGVydFBvcFVwIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGJ1dHRvbnM6IElBbGVydFBvcFVwQnRuW107XG4gIGhlaWdodD86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkRm9ybWF0dGVyIHtcbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgQ0hBUiA9ICdjaGFyJyxcbiAgTlVNRVJJQyA9ICdudW1lcmljJ1xufVxuXG5leHBvcnQgZW51bSBHcmlkRmlsdGVyQ29udHJvbFR5cGUge1xuICBJTlBVVCA9ICdpbnB1dCcsXG4gIERST1BET1dOID0gJ2Ryb3Bkb3duJyxcbiAgQ0hFQ0tCT1ggPSAnY2hlY2tib3gnLFxuICBDQUxFTkRBUiA9ICdjYWxlbmRhcicsXG4gIENBTEVOREFSX1JBTkdFID0gJ2NhbGVuZGVyX3JhbmdlJyxcbiAgTVVMVElTRUxFQ1QgPSAnbXVsdGktc2VsZWN0JyxcbiAgTlVNRVJJQ0lOUFVUID0gJ251bWVyaWNfaW5wdXQnLFxuICBOVU1FUklDX1JBTkdFID0gJ251bWVyaWNfcmFuZ2UnLFxuICBEQVRFX1JBTkdFID0gJ2RhdGVfcmFuZ2UnLFxuICBMT09LVVBfSU5QVVQgPSAnbG9va3VwX2lucHV0JyxcbiAgU1BBQ0VSID0gJ3NwYWNlcidcbn1cblxuZXhwb3J0IGVudW0gRURheVJhbmdlIHtcbiAgREFZID0gJ0RheScsXG4gIFdFRUsgPSAnV2VlaycsXG4gIE1PTlRIID0gJ01vbnRoJyxcbiAgWUVBUiA9ICdZZWFyJyxcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRTb3J0RGlyZWN0aW9uIHtcbiAgQVNDID0gJ2FzYycsXG4gIERFU0MgPSAnZGVzYycsXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkQ29sdW1uVHlwZSB7XG4gIExJTksgPSAnbGluaycsXG4gIElGUkFNRSA9ICdpZnJhbWUnLFxuICBESUFMT0cgPSAnZGlhbG9nJyxcbiAgVEVYVCA9ICd0ZXh0JyxcbiAgTlVNRVJJQyA9ICdudW1lcmljJyxcbiAgREFURSA9ICdkYXRlJyxcbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgRFJPUERPV04gPSAnZHJvcGRvd24nLFxuICBMT09LVVBfSU5QVVQgPSAnbG9va3VwX2lucHV0JyxcbiAgQUREX0JVVFRPTiA9ICdhZGRfYnV0dG9uJyxcbiAgQVVUT0NPTVBMRVRFID0gJ0F1dG9Db21wbGV0ZScsXG4gIE1VTFRJU0VMRUNUID0gJ211bHRpLXNlbGVjdCcsXG4gIFJFUE9SVCA9ICdyZXBvcnQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHbG9iYWxGaWx0ZXIgZXh0ZW5kcyBJR3JpZEZpbHRlclR5cGUsIElHcmlkRmlsdGVyIHtcbiAgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBvblJldHVybj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgZGF5UmFuZ2U/OiBFRGF5UmFuZ2U7XG4gIGZyb21GaWVsZD86IHN0cmluZztcbiAgdG9GaWVsZD86IHN0cmluZztcbiAgZm9ybWF0Pzogc3RyaW5nIHwgRUdyaWRGb3JtYXRUeXBlIHwgRUdsb2JhbEZpbHRlckZvcm1hdFR5cGU7XG4gIGxvb2t1cENvbnRyb2w/OiBJTG9va3VwQ29udHJvbEZpbHRlcjtcbiAgYWxsb3dTZWFyY2g/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGNvbG9yPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IElHcmlkVmFsaWRhdGlvbltdO1xuICBlcnJvck1lc3NhZ2U/OnN0cmluZztcbiAgcmVxdWlyZWRGaWVsZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cENvbnRyb2xGaWx0ZXIge1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIGRhdGE/OiBJTG9va3VwRmlsdGVyRGF0YTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBJTG9va3VwRmlsdGVyRGF0YSA9IHtcbiAgaGVhZGVyOiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBsYWJlbFByb3A/OiBzdHJpbmc7XG4gIHZhbHVlUHJvcD86IHN0cmluZztcbiAgZGF0YTogYW55O1xufSAmIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJUHJpbWVOZ1NvcnQge1xuICBtdWx0aXNvcnRtZXRhOiB7IGZpZWxkOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJpbWVOZ0ZpbHRlckl0ZW0ge1xuICBtYXRjaE1vZGU6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQcmltZU5nRmlsdGVyIHtcbiAgZmlsdGVyZWRWYWx1ZTogYW55W107XG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIElQcmltZU5nRmlsdGVySXRlbVtdIHwgSVByaW1lTmdGaWx0ZXJJdGVtPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEZpbHRlciB7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBtYXRjaE1vZGU/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogc3RyaW5nO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICB2YWx1ZT86IGFueTtcbiAgdmFsdWVUd28/OiBhbnk7XG4gIHRhYmxlQWxpYXM/OiBzdHJpbmc7XG4gIGNvbHVtbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFNvcnQge1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlyZWN0aW9uPzogRUdyaWRTb3J0RGlyZWN0aW9uO1xuICBwcmlvcml0eTogbnVtYmVyO1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSUdyaWRTZXJ2ZXJTaWRlRXZlbnQge1xuICBmaWx0ZXJzPzogSUdyaWRGaWx0ZXJbXTtcbiAgc29ydHM/OiBJR3JpZFNvcnRbXTtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRQYWdpbmF0aW9uRXZlbnQge1xuICBmaXJzdDogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDb2x1bW5BY3Rpb24ge1xuICBpY29uOiBzdHJpbmc7IC8vIFVzZXMgcHJpbWVuZy9mb250LWF3ZXNvbWUgaWNvbnMuIEV4YW1wbGU6ICdwaSBwaS1jaGVjaydcbiAgdG9vbHRpcDogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgY29uZmlybURpYWxvZz86IGJvb2xlYW47XG4gIG9uQ2xpY2s6IChyb3c6IGFueSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFJvd0FjdGlvbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xuICBvbkNsaWNrOiAocm93OiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkRm9ybWF0VHlwZSB7XG4gIFNNQUxMREFURSA9ICdtbS9kZC95JyxcbiAgU0hPUlREQVRFID0gJ21tL2RkL3l5JyxcbiAgTUVESVVNREFURSA9ICdtIGQsIHl5JyxcbiAgUEVSSU9EID0gJ21tL3knLFxuICBMT05HREFURSA9ICdtbS9kZC95eSwgaDptbSBhJyxcbiAgQ1VSUkVOQ1kgPSAnY3VycmVuY3knLFxuICBQRVJDRU5UID0gJ3BlcmNlbnQnLFxuICBERUNJTUFMID0gJ2RlY2ltYWwnLFxufVxuXG5leHBvcnQgZW51bSBFR2xvYmFsRmlsdGVyRm9ybWF0VHlwZSB7XG4gIFNNQUxMREFURSA9ICdtbS9kZC95JyxcbiAgU0hPUlREQVRFID0gJ21tL2RkL3l5Jyxcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRTZWxlY3Rpb25UeXBlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJUExFID0gJ211bHRpcGxlJyxcbn1cblxuZXhwb3J0IHR5cGUgTWVudUZpbHRlckNvbnRyb2xzID1cbiAgfCBHcmlkRmlsdGVyQ29udHJvbFR5cGUuSU5QVVRcbiAgfCBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTlVNRVJJQ0lOUFVUXG4gIHwgR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSO1xuXG5leHBvcnQgdHlwZSBJTWVudUZpbHRlciA9IFJlY29yZDxNZW51RmlsdGVyQ29udHJvbHMsIElTZWxlY3RJdGVtW10+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGFkZENvbHVtbiB7XG4gIHRhcmdldD86IEVHcmlkbGluaztcbiAgYWxsb3dFZGl0PzogYm9vbGVhbjtcbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBjb250cm9sPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIHNob3dPcHRpb24/OiBib29sZWFuO1xuICBzdHlsZT86IHN0cmluZztcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZTtcbiAgZm9ybWF0Pzogc3RyaW5nIHwgRUdyaWRGb3JtYXRUeXBlIHwgSUdyaWRGb3JtYXQ7XG4gIGRhdGE/OiBhbnk7XG4gIGZpbHRlcmluZz86IGJvb2xlYW47XG4gIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgdGltZU9ubHk/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBoeXBlcmxpbms/OiBzdHJpbmc7XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgYWxsb3dBdXRvQ29tcGxldGVTYXZlPzpib29sZWFuO1xuICB1bmlxdWVLZXk/OklBdXRvQ29tcGxldGVTYXZlO1xuICBtaW51dGVzSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNvcnRpbmc/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBJR3JpZEZpbHRlclR5cGU7XG4gIHRhYmxlQWxpYXM/OiBzdHJpbmc7XG4gIGxpbmtJZD86IHN0cmluZztcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBlZGl0TGluaz86IGJvb2xlYW47XG4gIHBhcmFtcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICBkaXNwbGF5VGV4dD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhbGxvd1NhdmU/OiBib29sZWFuO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHZhbGlkYXRpb25zPzogSUdyaWRWYWxpZGF0aW9uW107XG4gIGlzdmFsaWQ/OiBib29sZWFuO1xuICBzYXZlQXNTdHJpbmc/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKHJvdzogYW55KSA9PiB2b2lkO1xuICBvblJldHVybj86ICh2YWx1ZT86IGFueSwgY29sdW1uPzogYW55LCByb3c/OiBhbnkpID0+IHZvaWQ7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBvbkNoYW5nZT86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgYWdncmVnYXRlPzogSUdyaWRBZ2dyZWdhdGVbXTtcbiAgZm9ybWF0dGVyPzogRUdyaWRGb3JtYXR0ZXI7XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0O1xuICBsb29rdXBDb250cm9sPzogSUdyaWRMb29rdXBDb250cm9sO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaWQ/OiBudW1iZXI7XG4gIHZhbHVlPzogYW55O1xuICBmaWx0ZXJWYWx1ZT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhbG9nQ29sdW1uIHtcbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBjb250cm9sPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIHN0eWxlPzogc3RyaW5nO1xuICB0eXBlPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmb3JtYXQ/OiBzdHJpbmcgfCBFR3JpZEZvcm1hdFR5cGUgfCBJR3JpZEZvcm1hdDtcbiAgZGF0YT86IGFueTtcbiAgZmlsdGVyaW5nPzogYm9vbGVhbjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgc29ydGluZz86IGJvb2xlYW47XG4gIGFnZ3JlZ2F0ZT86IElHcmlkQWdncmVnYXRlW107XG4gIGZpbHRlcj86IElHcmlkRmlsdGVyVHlwZTtcbiAgdGFibGVBbGlhcz86IHN0cmluZztcbiAgZmlsdGVyVmFsdWU/OiBhbnksXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgc2hvd09wdGlvbj86IGJvb2xlYW47XG4gIGVkaXRMaW5rPzogYm9vbGVhbjtcbiAgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgYWxsb3dTYXZlPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IElHcmlkVmFsaWRhdGlvbltdO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgc2F2ZUFzU3RyaW5nPzogYm9vbGVhbjtcbiAgb25DbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIGNvbHVtbj86IGFueSwgcm93PzogYW55KSA9PiB2b2lkO1xuICBvbkZvY3VzT3V0PzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAocm93OiBhbnkpID0+IHZvaWQ7XG4gIGZvcm1hdHRlcj86IEVHcmlkRm9ybWF0dGVyO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3Q7XG4gIGxvb2t1cENvbnRyb2w/OiBJR3JpZExvb2t1cENvbnRyb2w7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBpZD86IG51bWJlcjtcbiAgdmFsdWU/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgYWRkRmlsdGVyQ29sdW1uIHtcbiAgY29udHJvbD86IEdyaWRGaWx0ZXJDb250cm9sVHlwZTtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIGhlYWRlcj86IHN0cmluZztcbiAgZmlsdGVyPzogR3JpZEZpbHRlckNvbnRyb2xUeXBlO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBzdHlsZT86IHN0cmluZztcbiAgc2hvd1RpbWU/OiBib29sZWFuO1xuICB0aW1lT25seT86IGJvb2xlYW47XG4gIGZvcm1hdD86IHN0cmluZztcbiAgdGFibGVBbGlhcz86IHN0cmluZztcbiAgdmFsaWRhdGlvbnM/OiBJR3JpZFZhbGlkYXRpb25bXSB8IGFueTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhbGxvd1NhdmU/OiBib29sZWFuO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZTtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb24ge1xuICB0eXBlOiBFR3JpZFZhbGlkYXRvciB8IEVGaWx0ZXJWYWxpZGF0b3I7XG4gIGV4cHJlc3Npb24/OiBhbnk7XG59XG5leHBvcnQgZW51bSBFRmlsdGVyVmFsaWRhdG9yIHtcbiAgUkVRVUlSRUQgPSBcInJlcXVpcmVkXCIsXG59XG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUmVwb3J0QnRuIGV4dGVuZHMgSVJlcG9ydEJ0bntcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZS5SRVBPUlQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUm93UHJvcHtcbiAgcHJvcE5hbWU6IEVHcmlkUm93UHJvcE5hbWUgfCBzdHJpbmc7IC8vSUdyaWRDb2x1bW5Qcm9wTmFtZTtcbiAgcHJvcFZhbHVlOiBhbnk7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBhY3Rpb24/OiBFR3JpZFJvd0FjdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRSb3dBY3Rpb24ge1xuICBERUxFVEVCVE4gPSAnZGVsZXRlX2J0bicsXG4gIEVESVRCVE4gPSAnZWRpdF9idG4nLFxufVxuXG5leHBvcnQgZW51bSBFR3JpZFJvd1Byb3BOYW1lIHtcbiAgRElTUExBWVRFWFQgPSAnZGlzcGxheVRleHQnLFxuICBESVNBQkxFRCA9ICdkaXNhYmxlZCcsXG4gIERJU1BMQVlGSUVMRCA9ICdkaXNwbGF5RmllbGQnLFxuICBISURERU4gPSAnaGlkZGVuJyxcbiAgSUNPTiA9ICdpY29uJyxcbiAgTE9PS1VQQ09OVFJPTD0nbG9va3VwQ29udHJvbCdcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRWYWxpZGF0b3Ige1xuICBSRVFVSVJFRCA9ICdyZXF1aXJlZCcsXG4gIE1JTkxFTkdUSCA9ICdtaW5sZW5ndGgnLFxuICBNQVhMRU5HVEggPSAnbWF4bGVuZ3RoJyxcbiAgUEFUVEVSTiA9ICdwYXR0ZXJuJyxcbiAgTUlOSU1VTSA9ICdtaW5pbXVtJyxcbiAgTUFYSU1VTSA9ICdtYXhpbXVtJyxcbiAgTlVNRVJJQyA9ICdudW1lcmljJyxcbiAgREVDSU1BTCA9ICdkZWNpbWFsJyxcbiAgRU1BSUwgPSAnZW1haWwnLFxuICBQSE9ORSA9ICdwaG9uZScsXG4gIE1BWE9QVElPTlM9J21heE9wdGlvbnMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgYWRkR2xvYmFsRmlsdGVyIHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHZhbGlkYXRpb25zPzogSUdyaWRWYWxpZGF0aW9uW107XG4gIGRpc3BsYXlUZXh0Pzogc3RyaW5nO1xuICB0eXBlPzogR3JpZEZpbHRlckNvbnRyb2xUeXBlO1xuICBkYXRhPzogYW55O1xuICB2YWx1ZT86IGFueTtcbiAgdmFsdWVUd28/OiAgYW55O1xuICBtYXRjaE1vZGU/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogc3RyaW5nO1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIGZvcm1hdD86IEVHbG9iYWxGaWx0ZXJGb3JtYXRUeXBlIHwgSUdyaWRGb3JtYXQgfCBhbnk7XG4gIGNvbHVtbj86IHN0cmluZztcbiAgb25Gb2N1c091dD86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIG9uUmV0dXJuPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgZmlsdGVyaW5nPzogYm9vbGVhbjtcbiAgZGF5UmFuZ2U/OiBFRGF5UmFuZ2U7XG4gIGZyb21GaWVsZD86IHN0cmluZztcbiAgdG9GaWVsZD86IHN0cmluZztcbiAgbG9va3VwQ29udHJvbD86IElMb29rdXBDb250cm9sRmlsdGVyO1xuICBhbGxvd1NlYXJjaD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbGFiZWxUZXh0Pzogc3RyaW5nO1xuICBwcmVmaXg/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEZvcm1hdCB7XG4gIHR5cGU6IEVHcmlkRm9ybWF0VHlwZTtcbiAgZm9ybWF0UGFyYW1zPzpcbiAgICB8IElHcmlkRm9ybWF0UGFyYW1cbiAgICB8IElHcmlkRGF0ZUZvcm1hdFBhcmFtXG4gICAgfCBJR3JpZE51bWJlckZvcm1hdFBhcmFtXG4gICAgfCBJR3JpZEN1cnJlbmN5Rm9ybWF0UGFyYW1cbiAgICB8IElHcmlkYWxsb3djYWxjdWxhdGVGb3JtYXRQYXJhbTtcblxuICBmb3JtYXR0ZXI/OiAodmFsdWU6IGFueSkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRm9ybWF0UGFyYW0ge1xuICBsb2NhbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWREYXRlRm9ybWF0UGFyYW0gZXh0ZW5kcyBJR3JpZEZvcm1hdFBhcmFtIHtcbiAgZm9ybWF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkTnVtYmVyRm9ybWF0UGFyYW0gZXh0ZW5kcyBJR3JpZEZvcm1hdFBhcmFtIHtcbiAgZGlnaXRzSW5mbz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZGFsbG93Y2FsY3VsYXRlRm9ybWF0UGFyYW0gZXh0ZW5kcyBJR3JpZEZvcm1hdFBhcmFtIHtcbiAgYWxsb3dDYWxjdWxhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkQ3VycmVuY3lGb3JtYXRQYXJhbSBleHRlbmRzIElHcmlkTnVtYmVyRm9ybWF0UGFyYW0ge1xuICBjdXJyZW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUHJvcCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgZmllbGQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRQcm9wRmlsdGVyIHtcbiAgZmllbGQ6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEZpbHRlckluZm8ge1xuICBba2V5OnN0cmluZ106YW55O1xufVxuIl19
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9tb2RlbHMvZ3JpZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2RUEsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gscUNBQW1CLENBQUE7SUFDbkIsaUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFjRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQiw2QkFBZ0IsQ0FBQTtJQUNoQiwyQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQWlDRCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLCtCQUFhLENBQUE7SUFDYixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxxQkFZWDtBQVpELFdBQVkscUJBQXFCO0lBQy9CLHdDQUFlLENBQUE7SUFDZiw4Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBcUIsQ0FBQTtJQUNyQiwwREFBaUMsQ0FBQTtJQUNqQyxxREFBNEIsQ0FBQTtJQUM1Qix1REFBOEIsQ0FBQTtJQUM5Qix3REFBK0IsQ0FBQTtJQUMvQixrREFBeUIsQ0FBQTtJQUN6QixzREFBNkIsQ0FBQTtJQUM3QiwwQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVB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aW1wb3J0IHsgSVBlcm1pc3Npb24gfSBmcm9tICcuL3VzZXItaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQXV0b0NvbXBsZXRlU2F2ZSwgSURyb3BEb3duUmVxdWVzdCwgSVJlcG9ydEJ0biB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDb2x1bW4ge1xuICBjb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgYWxsb3dFZGl0PzogYm9vbGVhbjtcbiAgYWxsb3dBdXRvQ29tcGxldGVTYXZlPzpib29sZWFuO1xuICB1bmlxdWVLZXk/OiBJQXV0b0NvbXBsZXRlU2F2ZTtcbiAgdGFyZ2V0PzogRUdyaWRsaW5rO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gIHNob3dPcHRpb24/OiBib29sZWFuO1xuICB0eXBlPzogRUdyaWRDb2x1bW5UeXBlO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBoeXBlcmxpbms/OiBzdHJpbmc7XG4gIHNvcnRpbmc/OiBib29sZWFuO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBJR3JpZEZpbHRlclR5cGU7XG4gIGZvcm1hdD86IHN0cmluZyB8IEVHcmlkRm9ybWF0VHlwZSB8IElHcmlkRm9ybWF0OyAvLyBGb3IgbW9yZSBmb3JtYXQgb3B0aW9ucy4gdmlzaXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGVcbiAgZGF0YT86IGFueTtcbiAgc3R5bGU/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgdmFsdWU/OiBhbnk7XG4gIGZpbHRlclZhbHVlPzogYW55O1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xuICBsaW5rSWQ/OiBzdHJpbmc7XG4gIHBhcmFtcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICBtaW51dGVzSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgdGltZU9ubHk/OiBib29sZWFuO1xuICBkaXNwbGF5VGV4dD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGVkaXRMaW5rPzogYm9vbGVhbjtcbiAgYWxsb3dTYXZlPzogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbnM/OiBJR3JpZFZhbGlkYXRpb25bXTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgc2F2ZUFzU3RyaW5nPzogYm9vbGVhbjtcbiAgb25DbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIGNvbHVtbj86IGFueSwgcm93PzogYW55KSA9PiB2b2lkO1xuICBvbkZvY3VzT3V0PzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAocm93OiBhbnkpID0+IHZvaWQ7XG4gIGFnZ3JlZ2F0ZT86IElHcmlkQWdncmVnYXRlW107XG4gIGZvcm1hdHRlcj86IEVHcmlkRm9ybWF0dGVyO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3Q7XG4gIGxvb2t1cENvbnRyb2w/OiBJR3JpZExvb2t1cENvbnRyb2w7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBpZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZExvb2t1cENvbnRyb2wge1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIGRhdGE/OiBJR3JpZExvb2t1cERhdGE7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgSUdyaWRMb29rdXBEYXRhID0ge1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGxhYmVsUHJvcD86IHN0cmluZztcbiAgdmFsdWVQcm9wPzogc3RyaW5nO1xuICBkYXRhPzoge1trZXk6IHN0cmluZ106IGFueX07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cFZhbHVlIHtcbiAgdGV4dDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBmaWVsZD86c3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkQWdncmVnYXRlIHtcbiAgU1VNID0gJ3N1bScsXG4gIEFWRVJBR0UgPSAnYXZlcmFnZScsXG4gIENPVU5UID0gJ2NvdW50Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEFnZ3JlZ2F0ZSB7XG4gIHR5cGU6IEVHcmlkQWdncmVnYXRlO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gIGFnZ3JWYWx1ZT86c3RyaW5nO1xuICBmb3JtYXQ/OiBJQWdncmVnYXRlRm9ybWF0O1xufVxuZXhwb3J0IGludGVyZmFjZSBJQWdncmVnYXRlRm9ybWF0IHtcbiAgdHlwZTogRUFnZ3JlZ2F0ZUZvcm1hdDtcbiAgZGlnaXRzSW5mbz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gRUFnZ3JlZ2F0ZUZvcm1hdCB7XG4gIE5VTUVSSUMgPSAnbnVtZXJpYycsXG4gIERFQ0lNQUwgPSAnZGVjaW1hbCcsXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkbGluayB7XG4gIEJMQU5LID0gJ19ibGFuaycsXG4gIFNFTEYgPSAnX3NlbGYnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRGF0YUV4cG9ydCB7XG4gIHJvd3M6IGFueVtdO1xuICBoZWFkaW5nczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdEl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRmlsdGVyVHlwZSB7XG4gIHR5cGU/OiBHcmlkRmlsdGVyQ29udHJvbFR5cGU7XG4gIGRhdGE/OiBJU2VsZWN0SXRlbVtdO1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xuICBzaG93RmlsdGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWxlcnRQb3BVcEJ0biB7XG4gIGJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIGJ1dHRvbkNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBbGVydFBvcFVwIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGJ1dHRvbnM6IElBbGVydFBvcFVwQnRuW107XG4gIGhlaWdodD86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkRm9ybWF0dGVyIHtcbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgQ0hBUiA9ICdjaGFyJyxcbiAgTlVNRVJJQyA9ICdudW1lcmljJ1xufVxuXG5leHBvcnQgZW51bSBHcmlkRmlsdGVyQ29udHJvbFR5cGUge1xuICBJTlBVVCA9ICdpbnB1dCcsXG4gIERST1BET1dOID0gJ2Ryb3Bkb3duJyxcbiAgQ0hFQ0tCT1ggPSAnY2hlY2tib3gnLFxuICBDQUxFTkRBUiA9ICdjYWxlbmRhcicsXG4gIENBTEVOREFSX1JBTkdFID0gJ2NhbGVuZGVyX3JhbmdlJyxcbiAgTVVMVElTRUxFQ1QgPSAnbXVsdGktc2VsZWN0JyxcbiAgTlVNRVJJQ0lOUFVUID0gJ251bWVyaWNfaW5wdXQnLFxuICBOVU1FUklDX1JBTkdFID0gJ251bWVyaWNfcmFuZ2UnLFxuICBEQVRFX1JBTkdFID0gJ2RhdGVfcmFuZ2UnLFxuICBMT09LVVBfSU5QVVQgPSAnbG9va3VwX2lucHV0JyxcbiAgU1BBQ0VSID0gJ3NwYWNlcidcbn1cblxuZXhwb3J0IGVudW0gRURheVJhbmdlIHtcbiAgREFZID0gJ0RheScsXG4gIFdFRUsgPSAnV2VlaycsXG4gIE1PTlRIID0gJ01vbnRoJyxcbiAgWUVBUiA9ICdZZWFyJyxcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRTb3J0RGlyZWN0aW9uIHtcbiAgQVNDID0gJ2FzYycsXG4gIERFU0MgPSAnZGVzYycsXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkQ29sdW1uVHlwZSB7XG4gIExJTksgPSAnbGluaycsXG4gIElGUkFNRSA9ICdpZnJhbWUnLFxuICBESUFMT0cgPSAnZGlhbG9nJyxcbiAgVEVYVCA9ICd0ZXh0JyxcbiAgTlVNRVJJQyA9ICdudW1lcmljJyxcbiAgREFURSA9ICdkYXRlJyxcbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcbiAgRFJPUERPV04gPSAnZHJvcGRvd24nLFxuICBMT09LVVBfSU5QVVQgPSAnbG9va3VwX2lucHV0JyxcbiAgQUREX0JVVFRPTiA9ICdhZGRfYnV0dG9uJyxcbiAgQVVUT0NPTVBMRVRFID0gJ0F1dG9Db21wbGV0ZScsXG4gIE1VTFRJU0VMRUNUID0gJ211bHRpLXNlbGVjdCcsXG4gIFJFUE9SVCA9ICdyZXBvcnQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHbG9iYWxGaWx0ZXIgZXh0ZW5kcyBJR3JpZEZpbHRlclR5cGUsIElHcmlkRmlsdGVyIHtcbiAgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBvblJldHVybj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgZGF5UmFuZ2U/OiBFRGF5UmFuZ2U7XG4gIGZyb21GaWVsZD86IHN0cmluZztcbiAgdG9GaWVsZD86IHN0cmluZztcbiAgZm9ybWF0Pzogc3RyaW5nIHwgRUdyaWRGb3JtYXRUeXBlIHwgRUdsb2JhbEZpbHRlckZvcm1hdFR5cGU7XG4gIGxvb2t1cENvbnRyb2w/OiBJTG9va3VwQ29udHJvbEZpbHRlcjtcbiAgYWxsb3dTZWFyY2g/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGNvbG9yPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IElHcmlkVmFsaWRhdGlvbltdO1xuICBlcnJvck1lc3NhZ2U/OnN0cmluZztcbiAgcmVxdWlyZWRGaWVsZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cENvbnRyb2xGaWx0ZXIge1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIGRhdGE/OiBJTG9va3VwRmlsdGVyRGF0YTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBJTG9va3VwRmlsdGVyRGF0YSA9IHtcbiAgaGVhZGVyOiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBsYWJlbFByb3A/OiBzdHJpbmc7XG4gIHZhbHVlUHJvcD86IHN0cmluZztcbiAgZGF0YTogYW55O1xufSAmIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJUHJpbWVOZ1NvcnQge1xuICBtdWx0aXNvcnRtZXRhOiB7IGZpZWxkOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJpbWVOZ0ZpbHRlckl0ZW0ge1xuICBtYXRjaE1vZGU6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQcmltZU5nRmlsdGVyIHtcbiAgZmlsdGVyZWRWYWx1ZTogYW55W107XG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIElQcmltZU5nRmlsdGVySXRlbVtdIHwgSVByaW1lTmdGaWx0ZXJJdGVtPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEZpbHRlciB7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBtYXRjaE1vZGU/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogc3RyaW5nO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICB2YWx1ZT86IGFueTtcbiAgdmFsdWVUd28/OiBhbnk7XG4gIHRhYmxlQWxpYXM/OiBzdHJpbmc7XG4gIGNvbHVtbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFNvcnQge1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlyZWN0aW9uPzogRUdyaWRTb3J0RGlyZWN0aW9uO1xuICBwcmlvcml0eTogbnVtYmVyO1xuICB0YWJsZUFsaWFzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSUdyaWRTZXJ2ZXJTaWRlRXZlbnQge1xuICBmaWx0ZXJzPzogSUdyaWRGaWx0ZXJbXTtcbiAgc29ydHM/OiBJR3JpZFNvcnRbXTtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRQYWdpbmF0aW9uRXZlbnQge1xuICBmaXJzdDogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDb2x1bW5BY3Rpb24ge1xuICBpY29uOiBzdHJpbmc7IC8vIFVzZXMgcHJpbWVuZy9mb250LWF3ZXNvbWUgaWNvbnMuIEV4YW1wbGU6ICdwaSBwaS1jaGVjaydcbiAgdG9vbHRpcDogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgY29uZmlybURpYWxvZz86IGJvb2xlYW47XG4gIG9uQ2xpY2s6IChyb3c6IGFueSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFJvd0FjdGlvbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xuICBvbkNsaWNrOiAocm93OiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkRm9ybWF0VHlwZSB7XG4gIFNNQUxMREFURSA9ICdtbS9kZC95JyxcbiAgU0hPUlREQVRFID0gJ21tL2RkL3l5JyxcbiAgTUVESVVNREFURSA9ICdtIGQsIHl5JyxcbiAgUEVSSU9EID0gJ21tL3knLFxuICBMT05HREFURSA9ICdtbS9kZC95eSwgaDptbSBhJyxcbiAgQ1VSUkVOQ1kgPSAnY3VycmVuY3knLFxuICBQRVJDRU5UID0gJ3BlcmNlbnQnLFxuICBERUNJTUFMID0gJ2RlY2ltYWwnLFxufVxuXG5leHBvcnQgZW51bSBFR2xvYmFsRmlsdGVyRm9ybWF0VHlwZSB7XG4gIFNNQUxMREFURSA9ICdtbS9kZC95JyxcbiAgU0hPUlREQVRFID0gJ21tL2RkL3l5Jyxcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRTZWxlY3Rpb25UeXBlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJUExFID0gJ211bHRpcGxlJyxcbn1cblxuZXhwb3J0IHR5cGUgTWVudUZpbHRlckNvbnRyb2xzID1cbiAgfCBHcmlkRmlsdGVyQ29udHJvbFR5cGUuSU5QVVRcbiAgfCBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTlVNRVJJQ0lOUFVUXG4gIHwgR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSO1xuXG5leHBvcnQgdHlwZSBJTWVudUZpbHRlciA9IFJlY29yZDxNZW51RmlsdGVyQ29udHJvbHMsIElTZWxlY3RJdGVtW10+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGFkZENvbHVtbiB7XG4gIHRhcmdldD86IEVHcmlkbGluaztcbiAgYWxsb3dFZGl0PzogYm9vbGVhbjtcbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBjb250cm9sPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIHNob3dPcHRpb24/OiBib29sZWFuO1xuICBzdHlsZT86IHN0cmluZztcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZTtcbiAgZm9ybWF0Pzogc3RyaW5nIHwgRUdyaWRGb3JtYXRUeXBlIHwgSUdyaWRGb3JtYXQ7XG4gIGRhdGE/OiBhbnk7XG4gIGZpbHRlcmluZz86IGJvb2xlYW47XG4gIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgdGltZU9ubHk/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBoeXBlcmxpbms/OiBzdHJpbmc7XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgYWxsb3dBdXRvQ29tcGxldGVTYXZlPzpib29sZWFuO1xuICB1bmlxdWVLZXk/OklBdXRvQ29tcGxldGVTYXZlO1xuICBtaW51dGVzSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNvcnRpbmc/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBJR3JpZEZpbHRlclR5cGU7XG4gIHRhYmxlQWxpYXM/OiBzdHJpbmc7XG4gIGxpbmtJZD86IHN0cmluZztcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBlZGl0TGluaz86IGJvb2xlYW47XG4gIHBhcmFtcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICBkaXNwbGF5VGV4dD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhbGxvd1NhdmU/OiBib29sZWFuO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHZhbGlkYXRpb25zPzogSUdyaWRWYWxpZGF0aW9uW107XG4gIGlzdmFsaWQ/OiBib29sZWFuO1xuICBzYXZlQXNTdHJpbmc/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKHJvdzogYW55KSA9PiB2b2lkO1xuICBvblJldHVybj86ICh2YWx1ZT86IGFueSwgY29sdW1uPzogYW55LCByb3c/OiBhbnkpID0+IHZvaWQ7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBvbkNoYW5nZT86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgYWdncmVnYXRlPzogSUdyaWRBZ2dyZWdhdGVbXTtcbiAgZm9ybWF0dGVyPzogRUdyaWRGb3JtYXR0ZXI7XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0O1xuICBsb29rdXBDb250cm9sPzogSUdyaWRMb29rdXBDb250cm9sO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaWQ/OiBudW1iZXI7XG4gIHZhbHVlPzogYW55O1xuICBmaWx0ZXJWYWx1ZT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhbG9nQ29sdW1uIHtcbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBjb250cm9sPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmaWVsZD86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIHN0eWxlPzogc3RyaW5nO1xuICB0eXBlPzogRUdyaWRDb2x1bW5UeXBlO1xuICBmb3JtYXQ/OiBzdHJpbmcgfCBFR3JpZEZvcm1hdFR5cGUgfCBJR3JpZEZvcm1hdDtcbiAgZGF0YT86IGFueTtcbiAgZmlsdGVyaW5nPzogYm9vbGVhbjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgc29ydGluZz86IGJvb2xlYW47XG4gIGFnZ3JlZ2F0ZT86IElHcmlkQWdncmVnYXRlW107XG4gIGZpbHRlcj86IElHcmlkRmlsdGVyVHlwZTtcbiAgdGFibGVBbGlhcz86IHN0cmluZztcbiAgZmlsdGVyVmFsdWU/OiBhbnksXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgc2hvd09wdGlvbj86IGJvb2xlYW47XG4gIGVkaXRMaW5rPzogYm9vbGVhbjtcbiAgZGlzcGxheVRleHQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgYWxsb3dTYXZlPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IElHcmlkVmFsaWRhdGlvbltdO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgc2F2ZUFzU3RyaW5nPzogYm9vbGVhbjtcbiAgb25DbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIGNvbHVtbj86IGFueSwgcm93PzogYW55KSA9PiB2b2lkO1xuICBvbkZvY3VzT3V0PzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAocm93OiBhbnkpID0+IHZvaWQ7XG4gIGZvcm1hdHRlcj86IEVHcmlkRm9ybWF0dGVyO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3Q7XG4gIGxvb2t1cENvbnRyb2w/OiBJR3JpZExvb2t1cENvbnRyb2w7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBpZD86IG51bWJlcjtcbiAgdmFsdWU/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgYWRkRmlsdGVyQ29sdW1uIHtcbiAgY29udHJvbD86IEdyaWRGaWx0ZXJDb250cm9sVHlwZTtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIGhlYWRlcj86IHN0cmluZztcbiAgZmlsdGVyPzogR3JpZEZpbHRlckNvbnRyb2xUeXBlO1xuICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBzdHlsZT86IHN0cmluZztcbiAgc2hvd1RpbWU/OiBib29sZWFuO1xuICB0aW1lT25seT86IGJvb2xlYW47XG4gIGZvcm1hdD86IHN0cmluZztcbiAgdGFibGVBbGlhcz86IHN0cmluZztcbiAgdmFsaWRhdGlvbnM/OiBJR3JpZFZhbGlkYXRpb25bXSB8IGFueTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc3ZhbGlkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhbGxvd1NhdmU/OiBib29sZWFuO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZTtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb24ge1xuICB0eXBlOiBFR3JpZFZhbGlkYXRvciB8IEVGaWx0ZXJWYWxpZGF0b3I7XG4gIGV4cHJlc3Npb24/OiBhbnk7XG59XG5leHBvcnQgZW51bSBFRmlsdGVyVmFsaWRhdG9yIHtcbiAgUkVRVUlSRUQgPSBcInJlcXVpcmVkXCIsXG59XG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUmVwb3J0QnRuIGV4dGVuZHMgSVJlcG9ydEJ0bntcbiAgdHlwZT86IEVHcmlkQ29sdW1uVHlwZS5SRVBPUlQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUm93UHJvcHtcbiAgcHJvcE5hbWU6IEVHcmlkUm93UHJvcE5hbWUgfCBzdHJpbmc7IC8vSUdyaWRDb2x1bW5Qcm9wTmFtZTtcbiAgcHJvcFZhbHVlOiBhbnk7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBhY3Rpb24/OiBFR3JpZFJvd0FjdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gRUdyaWRSb3dBY3Rpb24ge1xuICBERUxFVEVCVE4gPSAnZGVsZXRlX2J0bicsXG4gIEVESVRCVE4gPSAnZWRpdF9idG4nLFxufVxuXG5leHBvcnQgZW51bSBFR3JpZFJvd1Byb3BOYW1lIHtcbiAgRElTUExBWVRFWFQgPSAnZGlzcGxheVRleHQnLFxuICBESVNBQkxFRCA9ICdkaXNhYmxlZCcsXG4gIERJU1BMQVlGSUVMRCA9ICdkaXNwbGF5RmllbGQnLFxuICBISURERU4gPSAnaGlkZGVuJyxcbiAgSUNPTiA9ICdpY29uJyxcbiAgTE9PS1VQQ09OVFJPTD0nbG9va3VwQ29udHJvbCcsIFxuICBISURFRklFTERWQUxVRT0naGlkZUZpZWxkVmFsdWUnXG59XG5cbmV4cG9ydCBlbnVtIEVHcmlkVmFsaWRhdG9yIHtcbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICBNSU5MRU5HVEggPSAnbWlubGVuZ3RoJyxcbiAgTUFYTEVOR1RIID0gJ21heGxlbmd0aCcsXG4gIFBBVFRFUk4gPSAncGF0dGVybicsXG4gIE1JTklNVU0gPSAnbWluaW11bScsXG4gIE1BWElNVU0gPSAnbWF4aW11bScsXG4gIE5VTUVSSUMgPSAnbnVtZXJpYycsXG4gIERFQ0lNQUwgPSAnZGVjaW1hbCcsXG4gIEVNQUlMID0gJ2VtYWlsJyxcbiAgUEhPTkUgPSAncGhvbmUnLFxuICBNQVhPUFRJT05TPSdtYXhPcHRpb25zJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIGFkZEdsb2JhbEZpbHRlciB7XG4gIGZpZWxkPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IElHcmlkVmFsaWRhdGlvbltdO1xuICBkaXNwbGF5VGV4dD86IHN0cmluZztcbiAgdHlwZT86IEdyaWRGaWx0ZXJDb250cm9sVHlwZTtcbiAgZGF0YT86IGFueTtcbiAgdmFsdWU/OiBhbnk7XG4gIHZhbHVlVHdvPzogIGFueTtcbiAgbWF0Y2hNb2RlPzogc3RyaW5nO1xuICBvcGVyYXRvcj86IHN0cmluZztcbiAgdGFibGVBbGlhcz86IHN0cmluZztcbiAgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICBmb3JtYXQ/OiBFR2xvYmFsRmlsdGVyRm9ybWF0VHlwZSB8IElHcmlkRm9ybWF0IHwgYW55O1xuICBjb2x1bW4/OiBzdHJpbmc7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBvblJldHVybj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGZpbHRlcmluZz86IGJvb2xlYW47XG4gIGRheVJhbmdlPzogRURheVJhbmdlO1xuICBmcm9tRmllbGQ/OiBzdHJpbmc7XG4gIHRvRmllbGQ/OiBzdHJpbmc7XG4gIGxvb2t1cENvbnRyb2w/OiBJTG9va3VwQ29udHJvbEZpbHRlcjtcbiAgYWxsb3dTZWFyY2g/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGxhYmVsVGV4dD86IHN0cmluZztcbiAgcHJlZml4PzogYm9vbGVhbjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRGb3JtYXQge1xuICB0eXBlOiBFR3JpZEZvcm1hdFR5cGU7XG4gIGZvcm1hdFBhcmFtcz86XG4gICAgfCBJR3JpZEZvcm1hdFBhcmFtXG4gICAgfCBJR3JpZERhdGVGb3JtYXRQYXJhbVxuICAgIHwgSUdyaWROdW1iZXJGb3JtYXRQYXJhbVxuICAgIHwgSUdyaWRDdXJyZW5jeUZvcm1hdFBhcmFtXG4gICAgfCBJR3JpZGFsbG93Y2FsY3VsYXRlRm9ybWF0UGFyYW07XG5cbiAgZm9ybWF0dGVyPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEZvcm1hdFBhcmFtIHtcbiAgbG9jYWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRGF0ZUZvcm1hdFBhcmFtIGV4dGVuZHMgSUdyaWRGb3JtYXRQYXJhbSB7XG4gIGZvcm1hdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZE51bWJlckZvcm1hdFBhcmFtIGV4dGVuZHMgSUdyaWRGb3JtYXRQYXJhbSB7XG4gIGRpZ2l0c0luZm8/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRhbGxvd2NhbGN1bGF0ZUZvcm1hdFBhcmFtIGV4dGVuZHMgSUdyaWRGb3JtYXRQYXJhbSB7XG4gIGFsbG93Q2FsY3VsYXRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZEN1cnJlbmN5Rm9ybWF0UGFyYW0gZXh0ZW5kcyBJR3JpZE51bWJlckZvcm1hdFBhcmFtIHtcbiAgY3VycmVuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFByb3Age1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGZpZWxkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkUHJvcEZpbHRlciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRGaWx0ZXJJbmZvIHtcbiAgW2tleTpzdHJpbmddOmFueTtcbn1cbiJdfQ==
|
|
@@ -147,6 +147,7 @@ var EGridRowPropName;
|
|
|
147
147
|
EGridRowPropName["HIDDEN"] = "hidden";
|
|
148
148
|
EGridRowPropName["ICON"] = "icon";
|
|
149
149
|
EGridRowPropName["LOOKUPCONTROL"] = "lookupControl";
|
|
150
|
+
EGridRowPropName["HIDEFIELDVALUE"] = "hideFieldValue";
|
|
150
151
|
})(EGridRowPropName || (EGridRowPropName = {}));
|
|
151
152
|
var EGridValidator;
|
|
152
153
|
(function (EGridValidator) {
|
|
@@ -5624,7 +5625,7 @@ class GridComponent {
|
|
|
5624
5625
|
GridComponent.decorators = [
|
|
5625
5626
|
{ type: Component, args: [{
|
|
5626
5627
|
selector: 'se-grid',
|
|
5627
|
-
template: "<div class=\"grid-component-wrapper\">\n<p-confirmDialog [style]=\"{ width: '50vw' }\" *ngIf=\"useInlineCRUD\" key=\"handleInlineCRUD\"></p-confirmDialog>\n<p-confirmDialog class=\"grid-component-confirm-dialog\" *ngIf=\"columnActions.length > 0\"\n key=\"handlecolumnActions\"></p-confirmDialog>\n<div class=\"p-mb-2 p-d-flex p-ai-center\" *ngIf=\"\n allowColumnToggle ||\n rowActions.length > 0 ||\n useInlineCRUD ||\n allowExportToExcel ||\n allowExportToPdf ||\n clearGridFilter\n \">\n <!-- button for apply value on Grid -->\n <button *ngIf=\"filtering && !hideFilter\" pButton type=\"button\" icon=\"pi pi-search\" (click)=\"applyGirdFilterBtn()\"\n [class]=\"\n searchGridFilter ? 'p-button-success' : 'hide-clear-filter-button'\n \"></button>\n\n <!-- button for clear value on Grid -->\n <button *ngIf=\"filtering && !hideFilter\" pButton id=\"clearGridFilterValuesButton\" type=\"button\"\n icon=\"pi pi-replay\" (click)=\"cleargridFiltersValue()\" [class]=\"\n clearGridFilter ? '' : 'hide-clear-filter-button'\n \" class='global-refresh global-btn p-mr-2 p-ml-2'\n ></button>\n\n <!-- button for edit all grid at once -->\n <!-- <button\n pButton\n *ngIf=\"hideEditAllRowsBtn && editAllRows\"\n id=\"editBtnGlobalvalues\"\n type=\"button\"\n [label]=\"'Edit'\"\n class=\"p-mr-2 ui-button-info\"\n icon=\"pi pi-pencil\"\n [class]=\"editRowPermission ? '' : 'p-disabled'\"\n (click)=\"editAllRowsAtOnce()\"\n ></button> -->\n\n <!-- button for save all grid at once -->\n <button pButton *ngIf=\"editAllRows && editRowPermission\" id=\"saveAllGridValues\"\n icon=\"pi pi-check\" [label]=\"'Save'\"\n [class]=\"hideGridSaveButton ? 'hide-clear-filter-button' : 'p-mr-2 p-ml-2 ui-button-info'\" type=\"button\"\n (click)=\"saveAllRowsAtOnce()\"></button>\n\n <!-- button for cancel all grid at once -->\n <button pButton *ngIf=\"editAllRows && !hideGridCancelButton\" id=\"editBtnGlobalvalues\" type=\"button\" [label]=\"'Cancel'\"\n icon=\"pi pi-times\" class=\"p-mr-2 ui-button-info\" (click)=\"cancelAllRowsAtOnce()\"></button>\n\n <!-- header Button for multiSelect on Grid -->\n <span *ngIf=\"allowColumnToggle\">\n <p-multiSelect [showToggleAll]=\"false\" [options]=\"columns\" [(ngModel)]=\"selectedColumns\" optionLabel=\"header\"\n selectedItemsLabel=\"{0} columns selected\" class=\"grid-component-multiselect-header-button p-mr-2 p-ml-2\" placeholder=\"Choose Columns\">\n </p-multiSelect>\n </span>\n\n <!-- <button\n pButton\n *ngIf=\"showRefreshBtn\"\n type=\"button\"\n [label]=\"'Refresh'\"\n icon=\"pi pi-refresh\"\n (click)=\"refresh()\"\n class=\"ui-button-info p-mr-2\"\n></button> -->\n\n <!-- header Button for Adding new Row on Grid -->\n <button pButton *ngIf=\"useInlineCRUD && addRowPermission && !hideAddBtn\" type=\"button\" [label]=\"'Add'\" pAddRow\n [table]=\"componentTableRef\" [newRow]=\"newGridRow\" [id]=\"dataKey\" pTooltip=\"Add New Row\" tooltipPosition=\"bottom\"\n icon=\"pi pi-plus\" class=\"ui-button-info global-add-btn p-ml-3\" (click)=\"addNewRow(newGridRow, true)\" pRipple></button>\n\n <div *ngFor=\"let reportButton of reportButtons\" class=\"ui-button-info p-mr-2 p-ml-2\">\n <se-generate-report-btn *ngIf =\"!reportButton.hidden\"[repId]=\"reportButton.reportId\" [label]=\"reportButton.label\" [params]=\"reportButton.params\"\n [showDialog]=\"reportButton.showDialog\"></se-generate-report-btn>\n </div>\n\n <!-- header Button for Excel File on Grid -->\n <button *ngIf=\"allowExportToExcel\" type=\"button\" pButton icon=\"pi pi-file-excel\" (click)=\"exportExcel()\"\n class=\"p-button-success p-mt-0 p-mr-2 p-ml-2\" pTooltip=\"Export to Excel\" tooltipPosition=\"bottom\" pRipple></button>\n\n <!-- header Button for PDF File on Grid -->\n <button *ngIf=\"allowExportToPdf\" type=\"button\" pButton icon=\"pi pi-file-pdf\" (click)=\"exportPdf()\"\n class=\"p-button-warning p-mr-2 p-ml-2\" pTooltip=\"Export to Pdf\" tooltipPosition=\"bottom\" pRipple></button>\n <ng-content></ng-content>\n</div>\n\n<p-table *ngIf=\"!isGridHidden\" id=\"my-table\" [value]=\"rowsData\" [columns]=\"selectedColumns\" sortMode=\"multiple\"\n [lazy]=\"useServerSideEvents\" [paginator]=\"pagination\" [alwaysShowPaginator]=\"false\" [class]=\"pagination || !rowsData.length ? 'pagination' : ''\"\n class=\"grid-component-main-table\"\n [rows]=\"defaultRows\" [totalRecords]=\"totalRecords\" [rowsPerPageOptions]=\"setPaginationLength\"\n [showCurrentPageReport]=\"showCurrentPageReport\" currentPageReportTemplate=\"Showing {first} to {last} of {{\n totalRecords\n }} entries\" [loading]=\"autoLoadData && !setGridRefreshTime ? loading : false\"\n (onSort)=\"sortDisabled ?? handleSortChange($event)\" (onFilter)=\"handleFilterChange($event)\"\n (onLazyLoad)=\"autoLoadData ? handleServerSideEvents($event) : ''\" (onPage)=\"handleServerSidePagination($event)\" #dt\n [dataKey]=\"dataKey\" [(selection)]=\"selectedRows\" selectionMode=\"multiple\" [scrollable]=\"scrollable\" [scrollHeight]=\"scrollHeight\"\n editMode=\"row\" [editingRowKeys]=\"editingRowKeys\" [autoLayout]=\"true\" [rowHover]=\"rowHover\"\n [ngClass]=\"{'horizontal-scroll': horizontalScroll === true ? true : false}\">\n <!-- header Button for Action on Grid -->\n <div *ngIf=\"rowActions.length > 0 && rowActions.length > 0\" class=\"p-d-flex p-jc-end\">\n <span *ngFor=\"let rowAction of rowActions\">\n <button pButton type=\"button\" [label]=\"rowAction.title\" [class]=\"rowAction.class\"\n (click)=\"rowAction.onClick(selectedRows)\"></button>\n </span>\n </div>\n\n <!-- header columns on Grid -->\n <ng-template pTemplate=\"header\" let-cols>\n <tr>\n <th *ngIf=\"allowSelection && selectionType === 'multiple'\" class=\"grid-component-selection\">\n <div class=\"grid-component-table-header-inner-div-2\n table-header-inner-div div-last-inner-html-is-icon\">\n <span class=\"flex-grow-1\"> {{allowSelectionHeader}} </span>\n <p-tableHeaderCheckbox *ngIf=\"selectionType === 'multiple'\" binary=\"true\"\n (click)=\"multiCheckBoxOnclick(rowsData, $event)\"></p-tableHeaderCheckbox>\n </div>\n </th>\n <th *ngIf=\"allowSelection && selectionType === 'single'\" \n class=\"grid-component-selection\">\n Select\n </th>\n <th\n *ngIf=\"setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n Actions\n </th>\n <th *ngFor=\"let column of cols\" [pSortableColumn]=\"column.field\"\n [class]=\"column.type === 'boolean' ? 'checkbox-th' : ''\"\n [pSortableColumnDisabled]=\"sortDisabled && useServerSideEvents ? true : column.sorting === false\"\n class=\"column?.type === 'multiple' ? 'grid-component-select-th-column-type-multiple' : ''\">\n <div class=\"grid-component-table-header-inner-div-1 table-header-inner-div div-last-inner-html-is-icon\"> \n <span [class]=\"'flex-grow-1'\">{{ column.header }}</span>\n <span *ngIf=\"column.isRequired\" class=\"grid-component required-star\">*</span>\n <p-sortIcon *ngIf=\"column.sorting !== false && column?.type !== 'multiple'\"\n [field]=\"column.field\"></p-sortIcon>\n </div>\n </th>\n <th\n *ngIf=\"!setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">Actions</th>\n </tr>\n <tr *ngIf=\"filtering && !hideFilter\">\n <th *ngIf=\"allowSelection\" [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></th>\n <th *ngIf=\"setActionColumnAsFirst && !disabledSaveBtn\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n </th>\n <th *ngFor=\"let column of cols\" [ngSwitch]=\"column?.filter?.type\" [style]=\"column.style\"\n [class]=\"hideFilterOptions ? 'hide-table-filter' : ''\">\n <span *ngIf=\"column.filtering !== false\" [class]=\"column.filter?.showFilter ? '' : 'hide-filter-icon'\">\n <!-- Text input on Header For Filter-->\n <p-columnFilter [type]=\"'text'\" [field]=\"column.field\" *ngSwitchCase=\"'input'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <input type=\"text\" [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\" pInputText />\n </ng-template>\n </p-columnFilter>\n\n <!-- Numeric input on Header For Filter-->\n <p-columnFilter [type]=\"'numeric'\" [field]=\"column.field\" *ngSwitchCase=\"'numeric_input'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-inputNumber [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (onBlur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\"></p-inputNumber>\n </ng-template>\n </p-columnFilter>\n\n <!-- lookup input on Header For Filter-->\n <p-columnFilter\n [type]=\"'text'\"\n [field]=\"column.field\"\n *ngSwitchCase=\"'lookup_input'\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filter=\"filterCallback\"\n >\n <div class=\"close-icon-wrapper grid-component lookup-filter-wrapper\">\n <input\n id=\"lookUp_filter\"\n class=\"grid-component lookup-filter\"\n autocomplete=\"off\"\n type=\"text\"\n [(ngModel)]=\"column.filterValue\"\n (click)=\"setFilterLookup(column)\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\"\n (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\"\n pInputText\n />\n <div><button\n *ngIf=\"column.filterValue\"\n icon=\"pi pi-times\"\n pButton\n type=\"button\"\n (click)=\"lookupClearValue(column)\"\n ></button></div>\n </div>\n </ng-template>\n </p-columnFilter>\n\n <!-- checkbox on Header For Filter-->\n <p-columnFilter type=\"boolean\" [field]=\"column.field\" *ngSwitchCase=\"'checkbox'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-checkbox [binary]=\"true\" [disabled]=\"column.disabled\" [(ngModel)]=\"column.filterValue\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (onChange)=\"setFilterFocusOut(column, filter, $event)\" (click)=\"clickCheckBoxFilter(column)\"\n (keydown)=\"backspaceEvent($event, column)\">\n </p-checkbox>\n </ng-template>\n </p-columnFilter>\n\n <!-- multiSelect on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'multi-select'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"column.filterValue\" [options]=\"column.filter.data || []\" (onChange)=\"filter($event.value)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n placeholder=\"Any\" optionLabel=\"label\">\n </p-multiSelect>\n </ng-template>\n </p-columnFilter>\n\n <!-- dropdown on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'dropdown'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-dropdown [showClear]=\"true\" [placeholder]=\"'Select'\" [filter]=\"column.allowSearch\"\n [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyDropdownFilter(filter, $event)\"\n [options]=\"column.filter.data || []\"\n (onChange)=\"searchDropdownFilter(filter, $event, column)\"></p-dropdown>\n </ng-template>\n </p-columnFilter>\n\n <!-- calendar on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'calendar'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-calendar [placeholder]=\"'Select-Date'\" [(ngModel)]=\"column.filterValue\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\" appendTo=\"body\" (onSelect)=\"selectDate(column)\"\n [inputId]=\"column.field\" hourFormat=\"12\" (keyup.backspace)=\"removeNullCalendar(column, filter, $event)\"\n [showButtonBar]=\"true\" (onClose)=\"setFilterFocusOut(column, filter, $event)\"\n (keydown)=\"backspaceEvent($event, column)\" (onClearClick)=\"backspaceEvent($event, column)\">\n </p-calendar>\n </ng-template>\n </p-columnFilter>\n\n <!-- Default Filter For Header -->\n <p-columnFilter [type]=\"\n column.type && column.type !== 'link' ? column.type : 'text'\n \" [field]=\"column.field\" display=\"menu\" *ngSwitchDefault>\n </p-columnFilter>\n </span>\n </th>\n <th\n *ngIf=\"!setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></th>\n </tr>\n </ng-template>\n\n <!-- Body columns on Grid -->\n <ng-template pTemplate=\"body\" let-row let-editing=\"editing\" let-ri=\"rowIndex\">\n <tr [ngClass]=\"row?.highlightrow ? 'highlighted-row' : ''\"\n [class]=\"wordWrap ? 'p-selectable-row' : 'noWrap p-selectable-row'\" (click)=\"!editing && handleRowClick(row)\"\n [pEditableRow]=\"row\" #gridRow [id]=\"row[dataKey]\">\n <td *ngIf=\"allowSelection\" class=\"grid-component-selection\">\n <p-tableRadioButton [value]=\"row\" *ngIf=\"selectionType === 'single'\"\n (click)=\"multiCheckBoxOnclick(row , $event, true)\"></p-tableRadioButton>\n <p-tableCheckbox [value]=\"row\" *ngIf=\"selectionType === 'multiple'\"\n (click)=\"multiCheckBoxOnclick(row, $event)\"></p-tableCheckbox>\n </td>\n\n <!-- first actions column -->\n <td *ngIf=\"setActionColumnAsFirst && columnActions.length > 0\">\n <span class=\"action-btn\" *ngFor=\"let action of columnActions\">\n <i [title]=\"action.tooltip\" [class]=\"action.icon\" (click)=\"handleActionClick($event, action, row)\"></i>\n </span>\n </td>\n <td *ngIf=\"setActionColumnAsFirst && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\">\n <span class=\"setActionColumnWidth\">\n <se-grid-row-actions [editing]=\"editing\" [editRowPermission]=\"editRowPermission\"\n [deleteRowPermission]=\"deleteRowPermission\" [hideDeleteBtn]=\"hideDeleteBtn\" [hideEditBtn]=\"hideEditBtn\"\n [row]=\"row\" (onRowEditInitBtn)=\"onRowEditInit($event)\" (deleteRecordBtn)=\"deleteRecord($event)\"\n (onRowEditSaveBtn)=\"onRowEditSave($event)\" (onRowEditCancelBtn)=\"onRowEditCancel($event, ri)\"\n [editAllRows]=\"editAllRows\">\n </se-grid-row-actions>\n </span>\n </td>\n\n <!-- Grid Rows Data Bindings Start -->\n <td *ngFor=\"let column of selectedColumns\" [ngSwitch]=\"column.type\" >\n\n <!-- Boolean column on Grid -->\n <span *ngSwitchCase=\"'boolean'\">\n <td *ngIf=\"!editing\">\n <p-checkbox [disabled]=\"!column.allowEdit ?? true\" [binary]=\"true\" (click)=\"onClickEvent(column, row)\"\n (ngModelChange)=\"checkBoxChangeEvent($event, column, row)\" (blur)=\"onFocusOutEvent(column, row)\" \n [(ngModel)]=\" \n row[column.field] &&\n (row[column.field].toString() === '1' ||\n row[column.field].toString().toLowerCase() === 'true' ||\n row[column.field].toString().toLowerCase() === 'y'||\n ( row[column.field].text && (row[column.field]?.text?.toString() === '1' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'true' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'y')))\n ? Checked\n : unChecked\n \">\n </p-checkbox>\n </td>\n <td *ngIf=\"editing\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <!-- for edit checkBox -->\n <p-checkbox (click)=\"onClickEvent(column, row)\" (ngModelChange)=\"checkBoxChangeEvent($event, column, row)\"\n [disabled]=\"allowDisabled(column,row)\" [binary]=\"true\" [(ngModel)]=\"\n row[column.field] && \n (row[column.field].toString() === '1' ||\n row[column.field].toString().toLowerCase() === 'true' ||\n row[column.field].toString().toLowerCase() === 'y' ||\n ( row[column.field].text && (row[column.field]?.text?.toString() === '1' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'true' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'y')))\n ? editModeChecked\n : editModeunCkecked\n \" (blur)=\"onFocusOutEvent(column, row)\"></p-checkbox>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ row[column.field] }}\n </ng-template>\n </p-cellEditor>\n </td>\n </span>\n\n <!-- link column on Grid -->\n <span *ngSwitchCase=\"'link'\">\n <!-- link column for HyperLink Case -->\n <span *ngIf=\"column.allowSave === false\">\n <span *ngIf=\"column.target !== '_self'\" (click)=\"onClickEvent(column, row)\"\n [title]=\"setConditionBaseValue(row, column)\" class=\"custom-link\"\n [class]=\"column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\">\n <!-- <a [href]=\"row[column.field + '_obj']?.hyperlink\" target=\"_blank\">\n {{\n setConditionBaseValue(row, column)\n }}\n </a> -->\n <a *ngIf=\"!column.disabled; else disabled\" [href]=\"row[column.field + '_obj']?.hyperlink\" target=\"_blank\">\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled >\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </ng-template>\n </span>\n <span *ngIf=\"column.target === '_self'\" (click)=\"onClickEvent(column, row)\"\n [title]=\"setConditionBaseValue(row, column)\"class=\"custom-link\"\n [class]=\"column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\">\n <!-- <a [href]=\"row[column.field + '_obj']?.hyperlink\">\n {{\n setConditionBaseValue(row, column)\n }}\n </a> -->\n <a *ngIf=\"!column.disabled; else disabled\" [href]=\"row[column.field + '_obj']?.hyperlink\">\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled >\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </ng-template>\n </span>\n </span>\n <!-- link column for Edit Case -->\n <span *ngIf=\"column.allowSave || column.allowSave === undefined\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <span\n *ngIf=\"(column.editable === true || column.editable === undefined) && (column.editLink === true || column.editLink === undefined)\">\n <input *ngIf=\"!row.isNew\" pInputText (click)=\"onClickEvent(column, row)\" type=\"text\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" (blur)=\"onFocusOutEvent(column, row)\"\n (change)=\"onChangeEvent(column, row)\" />\n <input pInputText *ngIf=\"row.isNew\" type=\"text\" (click)=\"onClickEvent(column, row)\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" (blur)=\"onFocusOutEvent(column, row)\"\n (change)=\"onChangeEvent(column, row)\" />\n </span>\n <span *ngIf=\"column.editable === false\"\n [class]=\"allowDisabled(column,row) ? 'disable-link' : 'hyperlink'\">\n {{\n setConditionBaseValue(row, column)\n }}\n </span>\n <span *ngIf=\"column.editLink === false\">\n <a (click)=\"onClickEvent(column, row)\" [href]=\"row[column.field + '_obj']?.hyperlink\" target=\"_blank\"\n [class]=\"column.editable === false ? '' : allowDisabled(column,row) ? 'disable-link' : ''\">\n <i *ngIf=\"column.icon; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n \n </a>\n </span>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span class=\"custom-link\" [class]=\"column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\">\n <a *ngIf=\"!column.disabled; else disabled\" (click)=\"onClickEvent(column, row)\" [href]=\"row[column.field + '_obj']?.hyperlink\" [target]=\"column.target\"\n >\n <i *ngIf=\"column.icon; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled>\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{ setConditionBaseValue(row, column) }}\n </ng-template>\n </ng-template>\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n </span>\n\n <!-- Iframe column on Grid -->\n <span *ngSwitchCase=\"'iframe'\">\n <span class=\"custom-link\" (click)=\"gridIFrame(column, row[column.field + '_obj']?.hyperlink, row)\" [title]=\"\n row[column.field + '_obj'] &&\n (row[column.field + '_obj'].displayText === null || row[column.field + '_obj'].displayText === '')\n ? row[column.field] : row[column.field + '_obj']?.displayText\n ? row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : row[column.field]\n\n \"\n > \n <i *ngIf=\"column.icon; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field + '_obj'] &&\n (row[column.field + '_obj'].displayText === null || row[column.field + '_obj'].displayText === '')\n ? row[column.field] : row[column.field + '_obj']?.displayText\n ? row[column.field + '_obj'].displayText\n : column.displayText ? column.displayText : row[column.field]\n }}\n </ng-template>\n </span>\n </span>\n\n <!-- dialog column on Grid -->\n <span *ngSwitchCase=\"'dialog'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <span\n *ngIf=\"row[column.field + '_secondType'] !== 'date' && !row.hidegridbtn\" \n [title]=\"setConditionBaseValue(row, column) \"\n >\n <span *ngIf=\"column.editable === true\">\n <input\n readonly\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n type=\"text\"\n pInputText\n (click)=\"selectLookupField(column, row)\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [name]=\"row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\"\n (blur)=\"onFocusOutEvent(column, row)\"\n />\n </span>\n <span\n *ngIf=\"column.editable === false || column.editable === undefined\n \" class=\"custom-link\"\n [class]=\"\n allowDisabled(column,row) ? 'disable-link' : ''\n \" (click)=\"openGridDialog(column, row)\">\n\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>{{ !column.displayText && row.isNew ? '' : setConditionBaseValue(row, column)\n }}</ng-template>\n\n\n </span>\n </span>\n\n <span *ngIf=\"row[column.field + '_secondType'] === 'date'\" [title]=\"\n row[column.field]\n | date: (column.format ? column.format : 'MM/dd/YY')\n \">\n <p-calendar [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (onClose)=\"onFocusOutEvent(column, row)\"\n [appendTo]=\"'body'\" hourFormat=\"12\" [showTime]=\"column.showTime\" (click)=\"onClickEvent(column, row)\"\n [timeOnly]=\"column.timeOnly\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\"></p-calendar>\n </span>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span class=\"custom-link\"\n [class]=\"row.disabled || column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\"\n (click)=\"openGridDialog(column, row)\" *ngIf=\"!row[column.field + '_secondType'] && !row.hidegridbtn\"\n [title]=\"setConditionBaseValue(row, column)\">\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>{{ setConditionBaseValue(row, column) }}</ng-template>\n\n <!-- {{ setConditionBaseValue(row, column) }} -->\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- lookup Input column on Grid -->\n <span *ngSwitchCase=\"'lookup_input'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <div class=\"close-icon-wrapper\">\n <input readonly type=\"text\" pInputText\n [(ngModel)]=\"(column.disabled || column.editable === false) && column.displayField ? row[column.displayField] : typeOf(row[column.field]) === 'object' ?\n row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [name]=\"row[column.field]\"\n\n (keyup.tab)=\"selectLookupField(column, row)\" [disabled]=\"allowDisabled(column,row)\"\n (click)=\"selectLookupField(column, row)\" [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\" (blur)=\"onFocusOutEvent(column, row)\" />\n <div *ngIf=\"!allowDisabled(column,row)\"><button *ngIf=\"row[column.field] && typeOf(row[column.field]) === 'object'\n ? row[column.field].text\n : row[column.field] && !column.disabled\" icon=\"pi pi-times\" pButton type=\"button\"\n (click)=\"lookupClearValue(column,row)\"></button></div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"column.linkId\">\n <a [href]=\"row[column.field + '_obj']?.hyperlink\" [target]=\"column.target === '_self' ? '' : '_blank'\">\n {{\n row[column.field]?.action ? row[column.field]?.text :\n typeOf(row[column.field]) === 'object' ? row[column.field]?.text : row[column.displayField]\n ? typeOf(row[column.displayField]) === 'object' ? row[column.displayField]?.text : row[column.displayField] : row[column.field]\n }}\n </a>\n </span>\n <span *ngIf=\"!column.linkId\" [class]=\"column.component && column.editLink === true ? 'custom-link' : ''\"\n (click)=\"openLookupHyperlink(column, row)\">\n {{\n row[column.field]?.action ? row[column.field]?.text :\n typeOf(row[column.field]) === 'object' ? row[column.field]?.text : row[column.displayField]\n ? typeOf(row[column.displayField]) === 'object' ? row[column.displayField]?.text : row[column.displayField] : row[column.field]\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- Numeric Input column on Grid -->\n <span *ngSwitchCase=\"'numeric'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <!-- for Currency && Decimal && Percent -->\n <span class=\"input-number\">\n <p-inputNumber [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" [class]=\"\n column.errorMessage\n ? 'ng-invalid ng-dirty'\n : 'form-control'\n \" [showButtons]=\"!column.format ? true : false\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [name]=\"column.field\"\n [disabled]=\"allowDisabled(column,row)\" (ngModelChange)=\"onChangeEvent(column, row)\"\n (onBlur)=\"onFocusOutEvent(column, row)\" [mode]=\"\n column.format &&\n column.format.type === 'currency'\n ? 'currency'\n : 'decimal'\n \" [currency]=\"\n column.format &&\n column.format.type === 'currency' &&\n column.format.formatParams &&\n column.format.formatParams.currency\n ? column.format.formatParams.currency\n : 'USD'\n \" [locale]=\"\n column.format &&\n column.format.type === 'currency' &&\n column.format.formatParams &&\n column.format.formatParams.locale\n ? column.format.formatParams.locale\n : 'en-US'\n \" [minFractionDigits]=\"column.format ? setNumericMinMxFraction(column) : '0'\"\n [maxFractionDigits]=\"column.format ? setNumericMinMxFraction(column) : '0'\" [suffix]=\"\n column.format &&\n column.format.type === 'percent' && \n '%'\n \n \">\n </p-inputNumber>\n </span>\n <ng-template #locked_field><span *ngIf=\"!row.isNew\" [title]=\"row[column.field]\">\n {{ row[column.field] }}\n </span></ng-template>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span [title]=\"setNumericFormat(column, row)\">\n {{\n setNumericFormat(column, row)\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- Button column on Grid -->\n <span>\n <div *ngSwitchCase=\"'add_button'\">\n <button *ngIf=\"!row.hidegridbtn\" pButton type=\"button\"\n [icon]=\"row[column.field]?.action?.icon ? row[column.field]?.action?.icon : column.icon\"\n [name]=\"column.header\" class=\"merge-btn\" [disabled]=\"allowDisabled(column,row)\"\n [label]=\"row[column.field]?.action?.displayText ? row[column.field]?.action?.displayText : column.value\"\n class=\"grid-component-grid-add-btn\" (click)=\"onClickButton(column, row)\"></button>\n </div>\n </span>\n\n <!-- Date column on Grid -->\n <span *ngSwitchCase=\"'date'\" [title]=\"setConditionBaseValue(row,column)\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-calendar\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty ' + column.field + row[dataKey] : column.field + row[dataKey]\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (onClose)=\"onFocusOutEvent(column, row)\"\n [appendTo]=\"'body'\" hourFormat=\"12\" [defaultDate]=\"defaultDate\"\n [stepMinute]=\"column.minutesInterval ? column.minutesInterval : 1\" [showTime]=\"column.showTime\"\n [timeOnly]=\"column.timeOnly\" [dateFormat]=\"column.format ? column.format.type : calendarFormat\"\n (keyup)=\"calenderInputValue(column, row)\" (onShow)=\"onClickEvent(column, row)\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n [showButtonBar]=\"!column.timeOnly\"></p-calendar>\n <!-- [todayButtonStyleClass]=\"column.timeOnly ? 'hide-today-btn' : 'show-today-btn'\" -->\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ setConditionBaseValue(row,column) }}\n </ng-template>\n </p-cellEditor>\n </span>\n <span *ngSwitchDefault>\n <span [ngSwitch]=\"column.type\">\n <!-- Dropdown column on Grid -->\n <span *ngSwitchCase=\"'dropdown'\" [class]=\"dropdownInput ? '' : 'output-dropdown'\" [title]=\"\n setDropdwonReadOnlyValue(row, column)\n \">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-dropdown *ngIf=\"!row[column.field]?.action?.hidden\" [options]=\"\n row[column.field+'_data']\n ? row[column.field+'_data']\n : column.data\n \"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\" [placeholder]=\"row[column.displayField]\n ? row[column.displayField]\n : row[column.field] ? row[column.field] : 'Select'\" [showClear]=\"row[column.field] ? true : false\"\n [optionLabel]=\"column.optionLabel\" (click)=\"onClickEvent(column, row)\"\n [optionValue]=\"column.optionValue\" [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (blur)=\"onFocusOutEvent(column, row)\"\n (onChange)=\"onChangeEvent(column, row)\" [filter]=\"column.allowSearch\"></p-dropdown>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"!row[column.field]?.action?.hidden\">\n {{\n setDropdwonReadOnlyValue(row, column)\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- MultiSelect column on Grid -->\n <span *ngSwitchCase=\"'multi-select'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-multiSelect [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" type=\"text\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n [options]=\"column.data\" [optionLabel]=\"column.optionLabel\" [optionValue]=\"column.optionValue\"\n (onChange)=\"onChangeEvent(column, row)\" (onPanelShow)=\"showOption(column, row)\"\n (click)=\"onClickEvent(column, row)\" [appendTo]=\"'body'\" (blur)=\"onFocusOutEvent(column, row)\">\n </p-multiSelect>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span [title]=\"\n row[column.displayField]\n ? row[column.displayField]\n : setMultiSelectData(column, row[column.field])\n \">\n {{\n row[column.displayField]\n ? row[column.displayField] :\n setMultiSelectData(column, row[column.field])\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- AutoComplete Search -->\n <span *ngSwitchCase=\"'AutoComplete'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-autoComplete \n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" \n [name]=\"column.header\"\n [suggestions]=\"column.data\" \n (onSelect)=\"autoCompleteSelectedValue(row, column, $event)\"\n [field]=\"column.optionLabel ? column.optionLabel?.toLowerCase() : column.displayField ? column.displayField?.toLowerCase() : column.field?.toLowerCase()\"\n [(ngModel)]=\"row[column.field]?.action && row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] :\n typeOf(row[column.field]) === 'object' && row[column.field]?.text ?\n row[column.field]?.text :\n row[column.field]\"\n [dropdown]=\"column.showOption\" \n (ngModelChange)=\"onChangeEvent(column, row)\"\n (click)=\"onClickEvent(column, row)\" \n (completeMethod)=\"autoSearch($event, column, row)\"\n (onBlur)=\"onFocusOutEvent(column, row)\" \n [disabled]=\"allowDisabled(column,row)\" \n [multiple]=\"true\"\n (keydown.enter)=\"onAutoCompleteFocusOut($event, column, row)\">\n </p-autoComplete>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"row[column.field] && row[column.field][0] && row[column.field][0][column.displayField]\">\n <span *ngFor=\"let value of row[column.field]; let i = index\">\n {{ row[column.field] && row[column.field].length > 1 ? row[column.field].length -1 === i ?\n value[column.displayField] : value[column.displayField] + ';' : value[column.displayField] }}\n </span>\n </span>\n <span *ngIf=\"row[column.field] && row[column.field][0] && row[column.field][0][column.field] && !column.displayField\">\n <span *ngFor=\"let value of row[column.field]; let i = index\">\n {{ row[column.field] && row[column.field].length > 1 ? row[column.field].length -1 === i ?\n value[column.field] : value[column.field] + ';' : value[column.field] }}\n </span>\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n <!-- Add Generate Report Button -->\n <span *ngSwitchCase=\"'report'\">\n <p-cellEditor>\n <ng-template pTemplate=\"output\">\n <se-generate-report-btn [repId]=\"column.reportId\" [label]=\"column.label\" [params]=\"column.params\"\n [showDialog]=\"column.showDialog\"></se-generate-report-btn>\n </ng-template>\n <ng-template pTemplate=\"input\">\n <se-generate-report-btn [repId]=\"column.reportId\" [label]=\"column.label\" [params]=\"column.params\"\n [showDialog]=\"column.showDialog\"></se-generate-report-btn>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <span *ngSwitchDefault>\n <!-- Input column on Grid -->\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input pInputText type=\"text\" [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n [(ngModel)]=\"row.undefined ? '' : allowDisabled(column,row) && row[column.displayField] ? row[column.displayField] : typeOf(row[column.field]) === 'object' && (row[column.field]?.action || row[column.field]?.text) ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n (blur)=\"onFocusOutEvent(column, row)\" (change)=\"onChangeEvent(column, row)\"\n (click)=\"onClickButton(column, row)\" *ngIf=\"column.field !== dataKey; else locked_field\" />\n <ng-template #locked_field><span *ngIf=\"!row.isNew\" [title]=\"row[column.field]\">\n {{ row[column.field] }}\n </span></ng-template>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span (click)=\"onClickEvent(column, row)\" [title]=\"\n column.displayText ? column.displayText : \n row[column.displayField]\n ? row[column.displayField]\n : row[column.field]\n \">\n {{\n row[column.field]?.action ? row[column.field]?.text : column.displayText ? column.displayText :\n row[column.displayField]\n ? row[column.displayField]\n : row[column.field]\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n </span>\n </span>\n </td>\n <!-- Grid Rows Data Bindings End -->\n\n <!-- Action column on Grid -->\n <td *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && columnActions.length > 0\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n <span class=\"action-btn\" *ngFor=\"let action of columnActions\">\n <i [title]=\"action.tooltip\" [class]=\"action.icon\" (click)=\"handleActionClick($event, action, row)\"></i>\n </span>\n </td>\n <td\n *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\">\n <span class='setActionColumnWidth'>\n <se-grid-row-actions [editing]=\"editing\" [editRowPermission]=\"editRowPermission\"\n [deleteRowPermission]=\"deleteRowPermission\" [hideDeleteBtn]=\"hideDeleteBtn\" [hideEditBtn]=\"hideEditBtn\"\n [row]=\"row\" (onRowEditInitBtn)=\"onRowEditInit($event)\" (deleteRecordBtn)=\"deleteRecord($event)\"\n (onRowEditSaveBtn)=\"onRowEditSave($event)\" (onRowEditCancelBtn)=\"onRowEditCancel($event, ri)\"\n [editAllRows]=\"editAllRows\">\n </se-grid-row-actions>\n </span>\n </td>\n </tr>\n </ng-template>\n\n <!-- Footer columns on Grid -->\n <ng-template pTemplate=\"footer\">\n <tr *ngIf=\"aggregateFooter\">\n <td\n *ngIf=\"setActionColumnAsFirst && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></td>\n <td *ngIf=\"allowSelection\" [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></td>\n <td *ngFor=\"let outerColumn of selectedColumns\" class=\"grid-component-outer-column\">\n <div *ngFor=\"let innerColumn of selectedColumns\">\n <div *ngFor=\"let aggr of innerColumn?.aggregate\">\n <div\n *ngIf=\"aggr.aggrValue?.length && ((!aggr.displayField && innerColumn.field?.toLowerCase() === outerColumn.field?.toLowerCase()) || aggr.displayField && aggr.displayField?.toLowerCase() === outerColumn.field?.toLowerCase())\">\n <div [innerHTML]=\"aggr.aggrValue\">\n </div>\n </div>\n </div>\n </div>\n </td>\n <td\n *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\"></td>\n </tr>\n </ng-template>\n\n <!-- Footer for Empty Message columns on Grid -->\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"grid-component no-records-found\">\n <td [attr.colspan]=\"selectedColumns?.length + 1\">No records found.</td>\n </tr>\n </ng-template>\n</p-table>\n</div>",
|
|
5628
|
+
template: "<div class=\"grid-component-wrapper\">\n<p-confirmDialog [style]=\"{ width: '50vw' }\" *ngIf=\"useInlineCRUD\" key=\"handleInlineCRUD\"></p-confirmDialog>\n<p-confirmDialog class=\"grid-component-confirm-dialog\" *ngIf=\"columnActions.length > 0\"\n key=\"handlecolumnActions\"></p-confirmDialog>\n<div class=\"p-mb-2 p-d-flex p-ai-center\" *ngIf=\"\n allowColumnToggle ||\n rowActions.length > 0 ||\n useInlineCRUD ||\n allowExportToExcel ||\n allowExportToPdf ||\n clearGridFilter\n \">\n <!-- button for apply value on Grid -->\n <button *ngIf=\"filtering && !hideFilter\" pButton type=\"button\" icon=\"pi pi-search\" (click)=\"applyGirdFilterBtn()\"\n [class]=\"\n searchGridFilter ? 'p-button-success' : 'hide-clear-filter-button'\n \"></button>\n\n <!-- button for clear value on Grid -->\n <button *ngIf=\"filtering && !hideFilter\" pButton id=\"clearGridFilterValuesButton\" type=\"button\"\n icon=\"pi pi-replay\" (click)=\"cleargridFiltersValue()\" [class]=\"\n clearGridFilter ? '' : 'hide-clear-filter-button'\n \" class='global-refresh global-btn p-mr-2 p-ml-2'\n ></button>\n\n <!-- button for edit all grid at once -->\n <!-- <button\n pButton\n *ngIf=\"hideEditAllRowsBtn && editAllRows\"\n id=\"editBtnGlobalvalues\"\n type=\"button\"\n [label]=\"'Edit'\"\n class=\"p-mr-2 ui-button-info\"\n icon=\"pi pi-pencil\"\n [class]=\"editRowPermission ? '' : 'p-disabled'\"\n (click)=\"editAllRowsAtOnce()\"\n ></button> -->\n\n <!-- button for save all grid at once -->\n <button pButton *ngIf=\"editAllRows && editRowPermission\" id=\"saveAllGridValues\"\n icon=\"pi pi-check\" [label]=\"'Save'\"\n [class]=\"hideGridSaveButton ? 'hide-clear-filter-button' : 'p-mr-2 p-ml-2 ui-button-info'\" type=\"button\"\n (click)=\"saveAllRowsAtOnce()\"></button>\n\n <!-- button for cancel all grid at once -->\n <button pButton *ngIf=\"editAllRows && !hideGridCancelButton\" id=\"editBtnGlobalvalues\" type=\"button\" [label]=\"'Cancel'\"\n icon=\"pi pi-times\" class=\"p-mr-2 ui-button-info\" (click)=\"cancelAllRowsAtOnce()\"></button>\n\n <!-- header Button for multiSelect on Grid -->\n <span *ngIf=\"allowColumnToggle\">\n <p-multiSelect [showToggleAll]=\"false\" [options]=\"columns\" [(ngModel)]=\"selectedColumns\" optionLabel=\"header\"\n selectedItemsLabel=\"{0} columns selected\" class=\"grid-component-multiselect-header-button p-mr-2 p-ml-2\" placeholder=\"Choose Columns\">\n </p-multiSelect>\n </span>\n\n <!-- <button\n pButton\n *ngIf=\"showRefreshBtn\"\n type=\"button\"\n [label]=\"'Refresh'\"\n icon=\"pi pi-refresh\"\n (click)=\"refresh()\"\n class=\"ui-button-info p-mr-2\"\n></button> -->\n\n <!-- header Button for Adding new Row on Grid -->\n <button pButton *ngIf=\"useInlineCRUD && addRowPermission && !hideAddBtn\" type=\"button\" [label]=\"'Add'\" pAddRow\n [table]=\"componentTableRef\" [newRow]=\"newGridRow\" [id]=\"dataKey\" pTooltip=\"Add New Row\" tooltipPosition=\"bottom\"\n icon=\"pi pi-plus\" class=\"ui-button-info global-add-btn p-ml-3\" (click)=\"addNewRow(newGridRow, true)\" pRipple></button>\n\n <div *ngFor=\"let reportButton of reportButtons\" class=\"ui-button-info p-mr-2 p-ml-2\">\n <se-generate-report-btn *ngIf =\"!reportButton.hidden\"[repId]=\"reportButton.reportId\" [label]=\"reportButton.label\" [params]=\"reportButton.params\"\n [showDialog]=\"reportButton.showDialog\"></se-generate-report-btn>\n </div>\n\n <!-- header Button for Excel File on Grid -->\n <button *ngIf=\"allowExportToExcel\" type=\"button\" pButton icon=\"pi pi-file-excel\" (click)=\"exportExcel()\"\n class=\"p-button-success p-mt-0 p-mr-2 p-ml-2\" pTooltip=\"Export to Excel\" tooltipPosition=\"bottom\" pRipple></button>\n\n <!-- header Button for PDF File on Grid -->\n <button *ngIf=\"allowExportToPdf\" type=\"button\" pButton icon=\"pi pi-file-pdf\" (click)=\"exportPdf()\"\n class=\"p-button-warning p-mr-2 p-ml-2\" pTooltip=\"Export to Pdf\" tooltipPosition=\"bottom\" pRipple></button>\n <ng-content></ng-content>\n</div>\n\n<p-table *ngIf=\"!isGridHidden\" id=\"my-table\" [value]=\"rowsData\" [columns]=\"selectedColumns\" sortMode=\"multiple\"\n [lazy]=\"useServerSideEvents\" [paginator]=\"pagination\" [alwaysShowPaginator]=\"false\" [class]=\"pagination || !rowsData.length ? 'pagination' : ''\"\n class=\"grid-component-main-table\"\n [rows]=\"defaultRows\" [totalRecords]=\"totalRecords\" [rowsPerPageOptions]=\"setPaginationLength\"\n [showCurrentPageReport]=\"showCurrentPageReport\" currentPageReportTemplate=\"Showing {first} to {last} of {{\n totalRecords\n }} entries\" [loading]=\"autoLoadData && !setGridRefreshTime ? loading : false\"\n (onSort)=\"sortDisabled ?? handleSortChange($event)\" (onFilter)=\"handleFilterChange($event)\"\n (onLazyLoad)=\"autoLoadData ? handleServerSideEvents($event) : ''\" (onPage)=\"handleServerSidePagination($event)\" #dt\n [dataKey]=\"dataKey\" [(selection)]=\"selectedRows\" selectionMode=\"multiple\" [scrollable]=\"scrollable\" [scrollHeight]=\"scrollHeight\"\n editMode=\"row\" [editingRowKeys]=\"editingRowKeys\" [autoLayout]=\"true\" [rowHover]=\"rowHover\"\n [ngClass]=\"{'horizontal-scroll': horizontalScroll === true ? true : false}\">\n <!-- header Button for Action on Grid -->\n <div *ngIf=\"rowActions.length > 0 && rowActions.length > 0\" class=\"p-d-flex p-jc-end\">\n <span *ngFor=\"let rowAction of rowActions\">\n <button pButton type=\"button\" [label]=\"rowAction.title\" [class]=\"rowAction.class\"\n (click)=\"rowAction.onClick(selectedRows)\"></button>\n </span>\n </div>\n\n <!-- header columns on Grid -->\n <ng-template pTemplate=\"header\" let-cols>\n <tr>\n <th *ngIf=\"allowSelection && selectionType === 'multiple'\" class=\"grid-component-selection\">\n <div class=\"grid-component-table-header-inner-div-2\n table-header-inner-div div-last-inner-html-is-icon\">\n <span class=\"flex-grow-1\"> {{allowSelectionHeader}} </span>\n <p-tableHeaderCheckbox *ngIf=\"selectionType === 'multiple'\" binary=\"true\"\n (click)=\"multiCheckBoxOnclick(rowsData, $event)\"></p-tableHeaderCheckbox>\n </div>\n </th>\n <th *ngIf=\"allowSelection && selectionType === 'single'\" \n class=\"grid-component-selection\">\n Select\n </th>\n <th\n *ngIf=\"setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n Actions\n </th>\n <th *ngFor=\"let column of cols\" [pSortableColumn]=\"column.field\"\n [class]=\"column.type === 'boolean' ? 'checkbox-th' : ''\"\n [pSortableColumnDisabled]=\"sortDisabled && useServerSideEvents ? true : column.sorting === false\"\n class=\"column?.type === 'multiple' ? 'grid-component-select-th-column-type-multiple' : ''\">\n <div class=\"grid-component-table-header-inner-div-1 table-header-inner-div div-last-inner-html-is-icon\"> \n <span [class]=\"'flex-grow-1'\">{{ column.header }}</span>\n <span *ngIf=\"column.isRequired\" class=\"grid-component required-star\">*</span>\n <p-sortIcon *ngIf=\"column.sorting !== false && column?.type !== 'multiple'\"\n [field]=\"column.field\"></p-sortIcon>\n </div>\n </th>\n <th\n *ngIf=\"!setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">Actions</th>\n </tr>\n <tr *ngIf=\"filtering && !hideFilter\">\n <th *ngIf=\"allowSelection\" [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></th>\n <th *ngIf=\"setActionColumnAsFirst && !disabledSaveBtn\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n </th>\n <th *ngFor=\"let column of cols\" [ngSwitch]=\"column?.filter?.type\" [style]=\"column.style\"\n [class]=\"hideFilterOptions ? 'hide-table-filter' : ''\">\n <span *ngIf=\"column.filtering !== false\" [class]=\"column.filter?.showFilter ? '' : 'hide-filter-icon'\">\n <!-- Text input on Header For Filter-->\n <p-columnFilter [type]=\"'text'\" [field]=\"column.field\" *ngSwitchCase=\"'input'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <input type=\"text\" [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\" pInputText />\n </ng-template>\n </p-columnFilter>\n\n <!-- Numeric input on Header For Filter-->\n <p-columnFilter [type]=\"'numeric'\" [field]=\"column.field\" *ngSwitchCase=\"'numeric_input'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-inputNumber [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (onBlur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\"></p-inputNumber>\n </ng-template>\n </p-columnFilter>\n\n <!-- lookup input on Header For Filter-->\n <p-columnFilter\n [type]=\"'text'\"\n [field]=\"column.field\"\n *ngSwitchCase=\"'lookup_input'\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filter=\"filterCallback\"\n >\n <div class=\"close-icon-wrapper grid-component lookup-filter-wrapper\">\n <input\n id=\"lookUp_filter\"\n class=\"grid-component lookup-filter\"\n autocomplete=\"off\"\n type=\"text\"\n [(ngModel)]=\"column.filterValue\"\n (click)=\"setFilterLookup(column)\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\"\n (keydown)=\"backspaceEvent($event, column)\"\n (keyup)=\"removingFilters($event, column)\"\n pInputText\n />\n <div><button\n *ngIf=\"column.filterValue\"\n icon=\"pi pi-times\"\n pButton\n type=\"button\"\n (click)=\"lookupClearValue(column)\"\n ></button></div>\n </div>\n </ng-template>\n </p-columnFilter>\n\n <!-- checkbox on Header For Filter-->\n <p-columnFilter type=\"boolean\" [field]=\"column.field\" *ngSwitchCase=\"'checkbox'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-checkbox [binary]=\"true\" [disabled]=\"column.disabled\" [(ngModel)]=\"column.filterValue\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\"\n (onChange)=\"setFilterFocusOut(column, filter, $event)\" (click)=\"clickCheckBoxFilter(column)\"\n (keydown)=\"backspaceEvent($event, column)\">\n </p-checkbox>\n </ng-template>\n </p-columnFilter>\n\n <!-- multiSelect on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'multi-select'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"column.filterValue\" [options]=\"column.filter.data || []\" (onChange)=\"filter($event.value)\"\n (blur)=\"setFilterFocusOut(column, filter, $event)\" (keydown)=\"backspaceEvent($event, column)\"\n placeholder=\"Any\" optionLabel=\"label\">\n </p-multiSelect>\n </ng-template>\n </p-columnFilter>\n\n <!-- dropdown on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'dropdown'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-dropdown [showClear]=\"true\" [placeholder]=\"'Select'\" [filter]=\"column.allowSearch\"\n [(ngModel)]=\"column.filterValue\" (keyup.enter)=\"applyDropdownFilter(filter, $event)\"\n [options]=\"column.filter.data || []\"\n (onChange)=\"searchDropdownFilter(filter, $event, column)\"></p-dropdown>\n </ng-template>\n </p-columnFilter>\n\n <!-- calendar on Header For Filter-->\n <p-columnFilter [field]=\"column.field\" matchMode=\"in\" [showMenu]=\"false\" *ngSwitchCase=\"'calendar'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-calendar [placeholder]=\"'Select-Date'\" [(ngModel)]=\"column.filterValue\"\n (keyup.enter)=\"applyEnterEvent(filter, $event, column)\" appendTo=\"body\" (onSelect)=\"selectDate(column)\"\n [inputId]=\"column.field\" hourFormat=\"12\" (keyup.backspace)=\"removeNullCalendar(column, filter, $event)\"\n [showButtonBar]=\"true\" (onClose)=\"setFilterFocusOut(column, filter, $event)\"\n (keydown)=\"backspaceEvent($event, column)\" (onClearClick)=\"backspaceEvent($event, column)\">\n </p-calendar>\n </ng-template>\n </p-columnFilter>\n\n <!-- Default Filter For Header -->\n <p-columnFilter [type]=\"\n column.type && column.type !== 'link' ? column.type : 'text'\n \" [field]=\"column.field\" display=\"menu\" *ngSwitchDefault>\n </p-columnFilter>\n </span>\n </th>\n <th\n *ngIf=\"!setActionColumnAsFirst && !disabledSaveBtn && columns?.length > 0 && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></th>\n </tr>\n </ng-template>\n\n <!-- Body columns on Grid -->\n <ng-template pTemplate=\"body\" let-row let-editing=\"editing\" let-ri=\"rowIndex\">\n <tr [ngClass]=\"row?.highlightrow ? 'highlighted-row' : ''\"\n [class]=\"wordWrap ? 'p-selectable-row' : 'noWrap p-selectable-row'\" (click)=\"!editing && handleRowClick(row)\"\n [pEditableRow]=\"row\" #gridRow [id]=\"row[dataKey]\">\n <td *ngIf=\"allowSelection\" class=\"grid-component-selection\">\n <p-tableRadioButton [value]=\"row\" *ngIf=\"selectionType === 'single'\"\n (click)=\"multiCheckBoxOnclick(row , $event, true)\"></p-tableRadioButton>\n <p-tableCheckbox [value]=\"row\" *ngIf=\"selectionType === 'multiple'\"\n (click)=\"multiCheckBoxOnclick(row, $event)\"></p-tableCheckbox>\n </td>\n\n <!-- first actions column -->\n <td *ngIf=\"setActionColumnAsFirst && columnActions.length > 0\">\n <span class=\"action-btn\" *ngFor=\"let action of columnActions\">\n <i [title]=\"action.tooltip\" [class]=\"action.icon\" (click)=\"handleActionClick($event, action, row)\"></i>\n </span>\n </td>\n <td *ngIf=\"setActionColumnAsFirst && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\">\n <span class=\"setActionColumnWidth\">\n <se-grid-row-actions [editing]=\"editing\" [editRowPermission]=\"editRowPermission\"\n [deleteRowPermission]=\"deleteRowPermission\" [hideDeleteBtn]=\"hideDeleteBtn\" [hideEditBtn]=\"hideEditBtn\"\n [row]=\"row\" (onRowEditInitBtn)=\"onRowEditInit($event)\" (deleteRecordBtn)=\"deleteRecord($event)\"\n (onRowEditSaveBtn)=\"onRowEditSave($event)\" (onRowEditCancelBtn)=\"onRowEditCancel($event, ri)\"\n [editAllRows]=\"editAllRows\">\n </se-grid-row-actions>\n </span>\n </td>\n\n <!-- Grid Rows Data Bindings Start -->\n <td *ngFor=\"let column of selectedColumns\" [ngSwitch]=\"column.type\" >\n\n <!-- Boolean column on Grid -->\n <span *ngSwitchCase=\"'boolean'\">\n <td *ngIf=\"!editing\">\n <p-checkbox [disabled]=\"!column.allowEdit ?? true\" [binary]=\"true\" (click)=\"onClickEvent(column, row)\"\n (ngModelChange)=\"checkBoxChangeEvent($event, column, row)\" (blur)=\"onFocusOutEvent(column, row)\" \n [(ngModel)]=\" \n row[column.field] &&\n (row[column.field].toString() === '1' ||\n row[column.field].toString().toLowerCase() === 'true' ||\n row[column.field].toString().toLowerCase() === 'y'||\n ( row[column.field].text && (row[column.field]?.text?.toString() === '1' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'true' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'y')))\n ? Checked\n : unChecked\n \">\n </p-checkbox>\n </td>\n <td *ngIf=\"editing\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <!-- for edit checkBox -->\n <p-checkbox (click)=\"onClickEvent(column, row)\" (ngModelChange)=\"checkBoxChangeEvent($event, column, row)\"\n [disabled]=\"allowDisabled(column,row)\" [binary]=\"true\" [(ngModel)]=\"\n row[column.field] && \n (row[column.field].toString() === '1' ||\n row[column.field].toString().toLowerCase() === 'true' ||\n row[column.field].toString().toLowerCase() === 'y' ||\n ( row[column.field].text && (row[column.field]?.text?.toString() === '1' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'true' ||\n row[column.field]?.text?.toString()?.toLowerCase() === 'y')))\n ? editModeChecked\n : editModeunCkecked\n \" (blur)=\"onFocusOutEvent(column, row)\"></p-checkbox>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ row[column.field] }}\n </ng-template>\n </p-cellEditor>\n </td>\n </span>\n\n <!-- link column on Grid -->\n <span *ngSwitchCase=\"'link'\">\n <!-- link column for HyperLink Case -->\n <span *ngIf=\"column.allowSave === false\">\n <span *ngIf=\"column.target !== '_self'\" (click)=\"onClickEvent(column, row)\"\n [title]=\"setConditionBaseValue(row, column)\" class=\"custom-link\"\n [class]=\"allowDisabled(column,row) ? 'disable-link' : ''\">\n\n <a *ngIf=\"!column.disabled; else disabled\" [href]=\"row[column.field + '_obj']?.hyperlink\" target=\"_blank\">\n <i *ngIf=\"column.icon &&!row[column.field]?.action?.hideFieldValue; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled >\n <i *ngIf=\"column.icon &&!row[column.field]?.action?.hideFieldValue; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </ng-template>\n </span>\n <span *ngIf=\"column.target === '_self'\" (click)=\"onClickEvent(column, row)\"\n [title]=\"setConditionBaseValue(row, column)\"class=\"custom-link\"\n [class]=\" allowDisabled(column,row) ? 'disable-link' : ''\">\n\n <a *ngIf=\"!column.disabled; else disabled\" [href]=\"row[column.field + '_obj']?.hyperlink\">\n <i *ngIf=\"column.icon &&!row[column.field]?.action?.hideFieldValue; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled >\n <i *ngIf=\"column.icon &&!row[column.field]?.action?.hideFieldValue; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </ng-template>\n </span>\n </span>\n <!-- link column for Edit Case -->\n <span *ngIf=\"column.allowSave || column.allowSave === undefined\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <span\n *ngIf=\"(column.editable === true || column.editable === undefined) && (column.editLink === true || column.editLink === undefined)\">\n <input *ngIf=\"!row.isNew\" pInputText (click)=\"onClickEvent(column, row)\" type=\"text\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.hideFieldValue?'':row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" (blur)=\"onFocusOutEvent(column, row)\"\n (change)=\"onChangeEvent(column, row)\" />\n <input pInputText *ngIf=\"row.isNew\" type=\"text\" (click)=\"onClickEvent(column, row)\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" (blur)=\"onFocusOutEvent(column, row)\"\n (change)=\"onChangeEvent(column, row)\" />\n </span>\n <span *ngIf=\"column.editable === false\"\n [class]=\"allowDisabled(column,row) ? 'disable-link' : 'hyperlink'\">\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </span>\n <span *ngIf=\"column.editLink === false\">\n <a (click)=\"onClickEvent(column, row)\" [href]=\"row[column.field + '_obj']?.hyperlink\" target=\"_blank\"\n [class]=\"column.editable === false ? '' : allowDisabled(column,row) ? 'disable-link' : ''\">\n <i *ngIf=\"column.icon && !row[column.field]?.action?.hideFieldValue; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n \n </a>\n </span>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span class=\"custom-link\" [class]=\"column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\">\n <a *ngIf=\"!column.disabled; else disabled\" (click)=\"onClickEvent(column, row)\" [href]=\"row[column.field + '_obj']?.hyperlink\" [target]=\"column.target\"\n >\n <i *ngIf=\"column.icon&& !row[column.field]?.action?.hideFieldValue; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n </a>\n <ng-template #disabled>\n\n <i *ngIf=\"column.icon&& !row[column.field]?.action?.hideFieldValue; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field]?.action?.hideFieldValue?'':\n setConditionBaseValue(row, column)\n }}\n </ng-template>\n\n </ng-template>\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n </span>\n\n <!-- Iframe column on Grid -->\n <span *ngSwitchCase=\"'iframe'\">\n <span class=\"custom-link\" (click)=\"gridIFrame(column, row[column.field + '_obj']?.hyperlink, row)\" [title]=\"\n row[column.field + '_obj'] &&\n (row[column.field + '_obj'].displayText === null || row[column.field + '_obj'].displayText === '')\n ? row[column.field] : row[column.field + '_obj']?.displayText\n ? row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : row[column.field]\n\n \"\n > \n <i *ngIf=\"column.icon; else noIcon\"[class]=\"column.icon\"></i>\n <ng-template #noIcon>\n {{\n row[column.field + '_obj'] &&\n (row[column.field + '_obj'].displayText === null || row[column.field + '_obj'].displayText === '')\n ? row[column.field] : row[column.field + '_obj']?.displayText\n ? row[column.field + '_obj'].displayText\n : column.displayText ? column.displayText : row[column.field]\n }}\n </ng-template>\n </span>\n </span>\n\n <!-- dialog column on Grid -->\n <span *ngSwitchCase=\"'dialog'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <span\n *ngIf=\"row[column.field + '_secondType'] !== 'date' && !row.hidegridbtn\" \n [title]=\"setConditionBaseValue(row, column) \"\n >\n <span *ngIf=\"column.editable === true\">\n <input\n readonly\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n type=\"text\"\n pInputText\n (click)=\"selectLookupField(column, row)\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [name]=\"row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\"\n (blur)=\"onFocusOutEvent(column, row)\"\n />\n </span>\n <span\n *ngIf=\"column.editable === false || column.editable === undefined\n \" class=\"custom-link\"\n [class]=\"\n allowDisabled(column,row) ? 'disable-link' : ''\n \" (click)=\"openGridDialog(column, row)\">\n\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>{{ !column.displayText && row.isNew ? '' : setConditionBaseValue(row, column)\n }}</ng-template>\n\n\n </span>\n </span>\n\n <span *ngIf=\"row[column.field + '_secondType'] === 'date'\" [title]=\"\n row[column.field]\n | date: (column.format ? column.format : 'MM/dd/YY')\n \">\n <p-calendar [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (onClose)=\"onFocusOutEvent(column, row)\"\n [appendTo]=\"'body'\" hourFormat=\"12\" [showTime]=\"column.showTime\" (click)=\"onClickEvent(column, row)\"\n [timeOnly]=\"column.timeOnly\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\"></p-calendar>\n </span>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span class=\"custom-link\"\n [class]=\"row.disabled || column.editable === false || allowDisabled(column,row) ? 'disable-link' : ''\"\n (click)=\"openGridDialog(column, row)\" *ngIf=\"!row[column.field + '_secondType'] && !row.hidegridbtn\"\n [title]=\"setConditionBaseValue(row, column)\">\n <i *ngIf=\"column.icon; else noIcon\" [class]=\"column.icon\"></i>\n <ng-template #noIcon>{{ setConditionBaseValue(row, column) }}</ng-template>\n\n <!-- {{ setConditionBaseValue(row, column) }} -->\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- lookup Input column on Grid -->\n <span *ngSwitchCase=\"'lookup_input'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <div class=\"close-icon-wrapper\">\n <input readonly type=\"text\" pInputText\n [(ngModel)]=\"(column.disabled || column.editable === false) && column.displayField ? row[column.displayField] : typeOf(row[column.field]) === 'object' ?\n row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [name]=\"row[column.field]\"\n\n (keyup.tab)=\"selectLookupField(column, row)\" [disabled]=\"allowDisabled(column,row)\"\n (click)=\"selectLookupField(column, row)\" [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\" (blur)=\"onFocusOutEvent(column, row)\" />\n <div *ngIf=\"!allowDisabled(column,row)\"><button *ngIf=\"row[column.field] && typeOf(row[column.field]) === 'object'\n ? row[column.field].text\n : row[column.field] && !column.disabled\" icon=\"pi pi-times\" pButton type=\"button\"\n (click)=\"lookupClearValue(column,row)\"></button></div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"column.linkId\">\n <a [href]=\"row[column.field + '_obj']?.hyperlink\" [target]=\"column.target === '_self' ? '' : '_blank'\">\n {{\n row[column.field]?.action ? row[column.field]?.text :\n typeOf(row[column.field]) === 'object' ? row[column.field]?.text : row[column.displayField]\n ? typeOf(row[column.displayField]) === 'object' ? row[column.displayField]?.text : row[column.displayField] : row[column.field]\n }}\n </a>\n </span>\n <span *ngIf=\"!column.linkId\" [class]=\"column.component && column.editLink === true ? 'custom-link' : ''\"\n (click)=\"openLookupHyperlink(column, row)\">\n {{\n row[column.field]?.action ? row[column.field]?.text :\n typeOf(row[column.field]) === 'object' ? row[column.field]?.text : row[column.displayField]\n ? typeOf(row[column.displayField]) === 'object' ? row[column.displayField]?.text : row[column.displayField] : row[column.field]\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- Numeric Input column on Grid -->\n <span *ngSwitchCase=\"'numeric'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <!-- for Currency && Decimal && Percent -->\n <span class=\"input-number\">\n <p-inputNumber [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" [class]=\"\n column.errorMessage\n ? 'ng-invalid ng-dirty'\n : 'form-control'\n \" [showButtons]=\"!column.format ? true : false\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [name]=\"column.field\"\n [disabled]=\"allowDisabled(column,row)\" (ngModelChange)=\"onChangeEvent(column, row)\"\n (onBlur)=\"onFocusOutEvent(column, row)\" [mode]=\"\n column.format &&\n column.format.type === 'currency'\n ? 'currency'\n : 'decimal'\n \" [currency]=\"\n column.format &&\n column.format.type === 'currency' &&\n column.format.formatParams &&\n column.format.formatParams.currency\n ? column.format.formatParams.currency\n : 'USD'\n \" [locale]=\"\n column.format &&\n column.format.type === 'currency' &&\n column.format.formatParams &&\n column.format.formatParams.locale\n ? column.format.formatParams.locale\n : 'en-US'\n \" [minFractionDigits]=\"column.format ? setNumericMinMxFraction(column) : '0'\"\n [maxFractionDigits]=\"column.format ? setNumericMinMxFraction(column) : '0'\" [suffix]=\"\n column.format &&\n column.format.type === 'percent' && \n '%'\n \n \">\n </p-inputNumber>\n </span>\n <ng-template #locked_field><span *ngIf=\"!row.isNew\" [title]=\"row[column.field]\">\n {{ row[column.field] }}\n </span></ng-template>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span [title]=\"setNumericFormat(column, row)\">\n {{\n setNumericFormat(column, row)\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- Button column on Grid -->\n <span>\n <div *ngSwitchCase=\"'add_button'\">\n <button *ngIf=\"!row.hidegridbtn\" pButton type=\"button\"\n [icon]=\"row[column.field]?.action?.icon ? row[column.field]?.action?.icon : column.icon\"\n [name]=\"column.header\" class=\"merge-btn\" [disabled]=\"allowDisabled(column,row)\"\n [label]=\"row[column.field]?.action?.displayText ? row[column.field]?.action?.displayText : column.value\"\n class=\"grid-component-grid-add-btn\" (click)=\"onClickButton(column, row)\"></button>\n </div>\n </span>\n\n <!-- Date column on Grid -->\n <span *ngSwitchCase=\"'date'\" [title]=\"setConditionBaseValue(row,column)\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-calendar\n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty ' + column.field + row[dataKey] : column.field + row[dataKey]\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (onClose)=\"onFocusOutEvent(column, row)\"\n [appendTo]=\"'body'\" hourFormat=\"12\" [defaultDate]=\"defaultDate\"\n [stepMinute]=\"column.minutesInterval ? column.minutesInterval : 1\" [showTime]=\"column.showTime\"\n [timeOnly]=\"column.timeOnly\" [dateFormat]=\"column.format ? column.format.type : calendarFormat\"\n (keyup)=\"calenderInputValue(column, row)\" (onShow)=\"onClickEvent(column, row)\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n [showButtonBar]=\"!column.timeOnly\"></p-calendar>\n <!-- [todayButtonStyleClass]=\"column.timeOnly ? 'hide-today-btn' : 'show-today-btn'\" -->\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ setConditionBaseValue(row,column) }}\n </ng-template>\n </p-cellEditor>\n </span>\n <span *ngSwitchDefault>\n <span [ngSwitch]=\"column.type\">\n <!-- Dropdown column on Grid -->\n <span *ngSwitchCase=\"'dropdown'\" [class]=\"dropdownInput ? '' : 'output-dropdown'\" [title]=\"\n setDropdwonReadOnlyValue(row, column)\n \">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-dropdown *ngIf=\"!row[column.field]?.action?.hidden\" [options]=\"\n row[column.field+'_data']\n ? row[column.field+'_data']\n : column.data\n \"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\"\n [disabled]=\"allowDisabled(column,row)\" [placeholder]=\"row[column.displayField]\n ? row[column.displayField]\n : row[column.field] ? row[column.field] : 'Select'\" [showClear]=\"row[column.field] ? true : false\"\n [optionLabel]=\"column.optionLabel\" (click)=\"onClickEvent(column, row)\"\n [optionValue]=\"column.optionValue\" [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" (blur)=\"onFocusOutEvent(column, row)\"\n (onChange)=\"onChangeEvent(column, row)\" [filter]=\"column.allowSearch\"></p-dropdown>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"!row[column.field]?.action?.hidden\">\n {{\n setDropdwonReadOnlyValue(row, column)\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- MultiSelect column on Grid -->\n <span *ngSwitchCase=\"'multi-select'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-multiSelect [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" type=\"text\"\n [(ngModel)]=\"typeOf(row[column.field]) === 'object' && row[column.field]?.action ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n [options]=\"column.data\" [optionLabel]=\"column.optionLabel\" [optionValue]=\"column.optionValue\"\n (onChange)=\"onChangeEvent(column, row)\" (onPanelShow)=\"showOption(column, row)\"\n (click)=\"onClickEvent(column, row)\" [appendTo]=\"'body'\" (blur)=\"onFocusOutEvent(column, row)\">\n </p-multiSelect>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span [title]=\"\n row[column.displayField]\n ? row[column.displayField]\n : setMultiSelectData(column, row[column.field])\n \">\n {{\n row[column.displayField]\n ? row[column.displayField] :\n setMultiSelectData(column, row[column.field])\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <!-- AutoComplete Search -->\n <span *ngSwitchCase=\"'AutoComplete'\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-autoComplete \n [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\" \n [name]=\"column.header\"\n [suggestions]=\"column.data\" \n (onSelect)=\"autoCompleteSelectedValue(row, column, $event)\"\n [field]=\"column.optionLabel ? column.optionLabel?.toLowerCase() : column.displayField ? column.displayField?.toLowerCase() : column.field?.toLowerCase()\"\n [(ngModel)]=\"row[column.field]?.action && row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] :\n typeOf(row[column.field]) === 'object' && row[column.field]?.text ?\n row[column.field]?.text :\n row[column.field]\"\n [dropdown]=\"column.showOption\" \n (ngModelChange)=\"onChangeEvent(column, row)\"\n (click)=\"onClickEvent(column, row)\" \n (completeMethod)=\"autoSearch($event, column, row)\"\n (onBlur)=\"onFocusOutEvent(column, row)\" \n [disabled]=\"allowDisabled(column,row)\" \n [multiple]=\"true\"\n (keydown.enter)=\"onAutoCompleteFocusOut($event, column, row)\">\n </p-autoComplete>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span *ngIf=\"row[column.field] && row[column.field][0] && row[column.field][0][column.displayField]\">\n <span *ngFor=\"let value of row[column.field]; let i = index\">\n {{ row[column.field] && row[column.field].length > 1 ? row[column.field].length -1 === i ?\n value[column.displayField] : value[column.displayField] + ';' : value[column.displayField] }}\n </span>\n </span>\n <span *ngIf=\"row[column.field] && row[column.field][0] && row[column.field][0][column.field] && !column.displayField\">\n <span *ngFor=\"let value of row[column.field]; let i = index\">\n {{ row[column.field] && row[column.field].length > 1 ? row[column.field].length -1 === i ?\n value[column.field] : value[column.field] + ';' : value[column.field] }}\n </span>\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n <!-- Add Generate Report Button -->\n <span *ngSwitchCase=\"'report'\">\n <p-cellEditor>\n <ng-template pTemplate=\"output\">\n <se-generate-report-btn [repId]=\"column.reportId\" [label]=\"column.label\" [params]=\"column.params\"\n [showDialog]=\"column.showDialog\"></se-generate-report-btn>\n </ng-template>\n <ng-template pTemplate=\"input\">\n <se-generate-report-btn [repId]=\"column.reportId\" [label]=\"column.label\" [params]=\"column.params\"\n [showDialog]=\"column.showDialog\"></se-generate-report-btn>\n </ng-template>\n </p-cellEditor>\n </span>\n\n <span *ngSwitchDefault>\n <!-- Input column on Grid -->\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input pInputText type=\"text\" [class]=\"column.errorMessage ? 'ng-invalid ng-dirty' : ''\"\n [id]=\"allowDisabled(column,row) ? 'hide-border' : ''\"\n [(ngModel)]=\"row.undefined||row[column.field]?.action?.hideFieldValue? '' : allowDisabled(column,row) && row[column.displayField] ? row[column.displayField] : typeOf(row[column.field]) === 'object' && (row[column.field]?.action || row[column.field]?.text) ? row[column.field]?.action?.displayField?.toLowerCase() ?\n row[row[column.field]?.action?.displayField.toLowerCase()] : row[column.field]?.text : row[column.field]\" [disabled]=\"allowDisabled(column,row)\"\n (blur)=\"onFocusOutEvent(column, row)\" (change)=\"onChangeEvent(column, row)\"\n (click)=\"onClickButton(column, row)\" *ngIf=\"column.field !== dataKey; else locked_field\" />\n <ng-template #locked_field><span *ngIf=\"!row.isNew\" [title]=\"row[column.field]\">\n {{ row[column.field] }}\n </span></ng-template>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <span (click)=\"onClickEvent(column, row)\" [title]=\"\n column.displayText ? column.displayText : \n row[column.displayField]\n ? row[column.displayField]\n : row[column.field]\n \"> \n {{\n row[column.field]?.action?.hideFieldValue?'':\n row[column.field]?.action ? row[column.field]?.text : column.displayText ? column.displayText :\n row[column.displayField]\n ? row[column.displayField]\n : row[column.field]\n }}\n </span>\n </ng-template>\n </p-cellEditor>\n </span>\n </span>\n </span>\n </td>\n <!-- Grid Rows Data Bindings End -->\n\n <!-- Action column on Grid -->\n <td *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && columnActions.length > 0\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\">\n <span class=\"action-btn\" *ngFor=\"let action of columnActions\">\n <i [title]=\"action.tooltip\" [class]=\"action.icon\" (click)=\"handleActionClick($event, action, row)\"></i>\n </span>\n </td>\n <td\n *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\">\n <span class='setActionColumnWidth'>\n <se-grid-row-actions [editing]=\"editing\" [editRowPermission]=\"editRowPermission\"\n [deleteRowPermission]=\"deleteRowPermission\" [hideDeleteBtn]=\"hideDeleteBtn\" [hideEditBtn]=\"hideEditBtn\"\n [row]=\"row\" (onRowEditInitBtn)=\"onRowEditInit($event)\" (deleteRecordBtn)=\"deleteRecord($event)\"\n (onRowEditSaveBtn)=\"onRowEditSave($event)\" (onRowEditCancelBtn)=\"onRowEditCancel($event, ri)\"\n [editAllRows]=\"editAllRows\">\n </se-grid-row-actions>\n </span>\n </td>\n </tr>\n </ng-template>\n\n <!-- Footer columns on Grid -->\n <ng-template pTemplate=\"footer\">\n <tr *ngIf=\"aggregateFooter\">\n <td\n *ngIf=\"setActionColumnAsFirst && (columnActions.length > 0 || (useInlineCRUD && (deleteRowPermission || editRowPermission)))\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></td>\n <td *ngIf=\"allowSelection\" [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"></td>\n <td *ngFor=\"let outerColumn of selectedColumns\" class=\"grid-component-outer-column\">\n <div *ngFor=\"let innerColumn of selectedColumns\">\n <div *ngFor=\"let aggr of innerColumn?.aggregate\">\n <div\n *ngIf=\"aggr.aggrValue?.length && ((!aggr.displayField && innerColumn.field?.toLowerCase() === outerColumn.field?.toLowerCase()) || aggr.displayField && aggr.displayField?.toLowerCase() === outerColumn.field?.toLowerCase())\">\n <div [innerHTML]=\"aggr.aggrValue\">\n </div>\n </div>\n </div>\n </div>\n </td>\n <td\n *ngIf=\"!setActionColumnAsFirst && columns?.length > 0 && useInlineCRUD && (deleteRowPermission || editRowPermission)\"\n [class]=\"inEditMode ? 'three-action-btn' : 'two-action-btn'\"\n [ngClass]=\"disabledSaveBtn ? 'hide-clear-filter-button' : ''\"></td>\n </tr>\n </ng-template>\n\n <!-- Footer for Empty Message columns on Grid -->\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"grid-component no-records-found\">\n <td [attr.colspan]=\"selectedColumns?.length + 1\">No records found.</td>\n </tr>\n </ng-template>\n</p-table>\n</div>",
|
|
5628
5629
|
styles: [":host ::ng-deep .p-calendar .p-inputtext{width:100%!important}:host ::ng-deep .p-column-filter-clear-button{display:none}:host ::ng-deep .hide-table-filter .pi-filter:before{display:none}:host ::ng-deep .hide-filter-icon .p-column-filter-menu-button{display:none}.disable-link{opacity:.5}.custom-link{color:#205dcf;font-size:12px}.custom-link:not(.disable-link){cursor:pointer}.mr-2{margin-right:10px;display:block}.highlighted-row{background-color:#dee2e6!important}.hide-clear-filter-button{display:none!important}\n"]
|
|
5629
5630
|
},] }
|
|
5630
5631
|
];
|
|
@@ -7761,7 +7762,6 @@ class SidebarComponent {
|
|
|
7761
7762
|
onReturn: x.onReturn,
|
|
7762
7763
|
disabled: x.disabled,
|
|
7763
7764
|
}));
|
|
7764
|
-
console.log('menu items', this.menuItems);
|
|
7765
7765
|
}
|
|
7766
7766
|
//ref link: https://medium.com/@saranya.thangaraj/open-angular-component-in-a-new-tab-without-bootstrapping-the-whole-app-again-e329af460e92
|
|
7767
7767
|
navigateComponentToNewTab(menu, onNewTab = true) {
|