@stemy/ngx-utils 13.6.13 → 13.6.14

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.
Files changed (103) hide show
  1. package/assets/ng.mjs +5 -0
  2. package/package.json +1 -1
  3. package/bundles/stemy-ngx-utils.umd.js +0 -6380
  4. package/bundles/stemy-ngx-utils.umd.js.map +0 -1
  5. package/esm2015/ngx-utils/common-types.js +0 -121
  6. package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +0 -139
  7. package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +0 -96
  8. package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +0 -51
  9. package/esm2015/ngx-utils/directives/async-method.base.js +0 -66
  10. package/esm2015/ngx-utils/directives/async-method.directive.js +0 -17
  11. package/esm2015/ngx-utils/directives/background.directive.js +0 -51
  12. package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +0 -19
  13. package/esm2015/ngx-utils/directives/global-template.directive.js +0 -27
  14. package/esm2015/ngx-utils/directives/icon.directive.js +0 -59
  15. package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +0 -88
  16. package/esm2015/ngx-utils/directives/pagination-item.directive.js +0 -33
  17. package/esm2015/ngx-utils/directives/pagination.directive.js +0 -76
  18. package/esm2015/ngx-utils/directives/resource-if.directive.js +0 -51
  19. package/esm2015/ngx-utils/directives/sticky-class.directive.js +0 -35
  20. package/esm2015/ngx-utils/directives/sticky.directive.js +0 -48
  21. package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +0 -70
  22. package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +0 -26
  23. package/esm2015/ngx-utils/ngx-utils.module.js +0 -246
  24. package/esm2015/ngx-utils/pipes/chunk.pipe.js +0 -21
  25. package/esm2015/ngx-utils/pipes/entries.pipe.js +0 -24
  26. package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +0 -27
  27. package/esm2015/ngx-utils/pipes/filter.pipe.js +0 -33
  28. package/esm2015/ngx-utils/pipes/find.pipe.js +0 -25
  29. package/esm2015/ngx-utils/pipes/format-number.pipe.js +0 -19
  30. package/esm2015/ngx-utils/pipes/get-offset.pipe.js +0 -13
  31. package/esm2015/ngx-utils/pipes/get-type.pipe.js +0 -12
  32. package/esm2015/ngx-utils/pipes/global-template.pipe.js +0 -37
  33. package/esm2015/ngx-utils/pipes/group-by.pipe.js +0 -23
  34. package/esm2015/ngx-utils/pipes/is-type.pipe.js +0 -12
  35. package/esm2015/ngx-utils/pipes/join.pipe.js +0 -15
  36. package/esm2015/ngx-utils/pipes/keys.pipe.js +0 -18
  37. package/esm2015/ngx-utils/pipes/map.pipe.js +0 -25
  38. package/esm2015/ngx-utils/pipes/max.pipe.js +0 -22
  39. package/esm2015/ngx-utils/pipes/min.pipe.js +0 -22
  40. package/esm2015/ngx-utils/pipes/pop.pipe.js +0 -12
  41. package/esm2015/ngx-utils/pipes/reduce.pipe.js +0 -26
  42. package/esm2015/ngx-utils/pipes/remap.pipe.js +0 -28
  43. package/esm2015/ngx-utils/pipes/replace.pipe.js +0 -13
  44. package/esm2015/ngx-utils/pipes/reverse.pipe.js +0 -20
  45. package/esm2015/ngx-utils/pipes/round.pipe.js +0 -19
  46. package/esm2015/ngx-utils/pipes/safe-html.pipe.js +0 -32
  47. package/esm2015/ngx-utils/pipes/shift.pipe.js +0 -12
  48. package/esm2015/ngx-utils/pipes/split.pipe.js +0 -12
  49. package/esm2015/ngx-utils/pipes/translate.pipe.js +0 -81
  50. package/esm2015/ngx-utils/pipes/values.pipe.js +0 -18
  51. package/esm2015/ngx-utils/plugins/resize-event.plugin.js +0 -56
  52. package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +0 -36
  53. package/esm2015/ngx-utils/services/acl.service.js +0 -81
  54. package/esm2015/ngx-utils/services/api.service.js +0 -39
  55. package/esm2015/ngx-utils/services/auth.service.js +0 -14
  56. package/esm2015/ngx-utils/services/base-http.client.js +0 -46
  57. package/esm2015/ngx-utils/services/base-http.service.js +0 -284
  58. package/esm2015/ngx-utils/services/config.service.js +0 -137
  59. package/esm2015/ngx-utils/services/error-handler.service.js +0 -49
  60. package/esm2015/ngx-utils/services/events.service.js +0 -24
  61. package/esm2015/ngx-utils/services/formatter.service.js +0 -46
  62. package/esm2015/ngx-utils/services/global-template.service.js +0 -35
  63. package/esm2015/ngx-utils/services/icon.service.js +0 -24
  64. package/esm2015/ngx-utils/services/language.service.js +0 -129
  65. package/esm2015/ngx-utils/services/open-api.service.js +0 -41
  66. package/esm2015/ngx-utils/services/promise.service.js +0 -52
  67. package/esm2015/ngx-utils/services/state.service.js +0 -181
  68. package/esm2015/ngx-utils/services/static-language.service.js +0 -152
  69. package/esm2015/ngx-utils/services/storage.service.js +0 -48
  70. package/esm2015/ngx-utils/services/toaster.service.js +0 -29
  71. package/esm2015/ngx-utils/services/translated-url.serializer.js +0 -70
  72. package/esm2015/ngx-utils/services/universal.service.js +0 -78
  73. package/esm2015/ngx-utils/utils/ajax-request-handler.js +0 -40
  74. package/esm2015/ngx-utils/utils/array.utils.js +0 -107
  75. package/esm2015/ngx-utils/utils/auth.guard.js +0 -156
  76. package/esm2015/ngx-utils/utils/canvas.utils.js +0 -388
  77. package/esm2015/ngx-utils/utils/date.utils.js +0 -29
  78. package/esm2015/ngx-utils/utils/file-system.js +0 -25
  79. package/esm2015/ngx-utils/utils/file.utils.js +0 -90
  80. package/esm2015/ngx-utils/utils/generic-value.js +0 -20
  81. package/esm2015/ngx-utils/utils/geometry.js +0 -132
  82. package/esm2015/ngx-utils/utils/initializer.js +0 -20
  83. package/esm2015/ngx-utils/utils/loader.utils.js +0 -55
  84. package/esm2015/ngx-utils/utils/math.utils.js +0 -45
  85. package/esm2015/ngx-utils/utils/object.utils.js +0 -320
  86. package/esm2015/ngx-utils/utils/observable.utils.js +0 -63
  87. package/esm2015/ngx-utils/utils/reflect.utils.js +0 -33
  88. package/esm2015/ngx-utils/utils/set.utils.js +0 -20
  89. package/esm2015/ngx-utils/utils/string.utils.js +0 -28
  90. package/esm2015/ngx-utils/utils/timer.utils.js +0 -52
  91. package/esm2015/ngx-utils/utils/unique.utils.js +0 -24
  92. package/esm2015/ngx-utils/utils/vector.js +0 -77
  93. package/esm2015/public_api.js +0 -89
  94. package/esm2015/stemy-ngx-utils.js +0 -7
  95. package/fesm2015/stemy-ngx-utils.js +0 -5060
  96. package/fesm2015/stemy-ngx-utils.js.map +0 -1
  97. package/stemy-ngx-utils.metadata.json +0 -1
  98. package/tools/circular.js +0 -117
  99. package/tools/circular.js.map +0 -1
  100. package/tools/config.js +0 -79
  101. package/tools/config.js.map +0 -1
  102. package/tools/icons.js +0 -14
  103. package/tools/icons.js.map +0 -1
@@ -1,121 +0,0 @@
1
- import { InjectionToken, TemplateRef } from "@angular/core";
2
- import { ReflectUtils } from "./utils/reflect.utils";
3
- import { ObjectUtils } from "./utils/object.utils";
4
- export class CanvasColor {
5
- constructor(r, g, b, a = 255) {
6
- this.r = r;
7
- this.g = g;
8
- this.b = b;
9
- this.a = a;
10
- }
11
- }
12
- export const ICON_SERVICE = new InjectionToken("icon-service");
13
- export const LANGUAGE_SERVICE = new InjectionToken("language-service");
14
- export const AUTH_SERVICE = new InjectionToken("auth-service");
15
- // --- Storage Service ---
16
- export var StorageMode;
17
- (function (StorageMode) {
18
- StorageMode[StorageMode["Local"] = 0] = "Local";
19
- StorageMode[StorageMode["Session"] = 1] = "Session";
20
- })(StorageMode || (StorageMode = {}));
21
- export const TOASTER_SERVICE = new InjectionToken("toaster-service");
22
- export const PROMISE_SERVICE = new InjectionToken("promise-service");
23
- // --- Unordered list ---
24
- export class UnorederedListTemplate extends TemplateRef {
25
- }
26
- // --- Reflect utils ---
27
- export function FactoryDependencies(...dependencies) {
28
- return function (target, method) {
29
- ReflectUtils.defineMetadata("factoryDependencies", dependencies, target, method);
30
- };
31
- }
32
- export function ObjectType(type) {
33
- return function (target) {
34
- ReflectUtils.defineMetadata("objectType", type, target);
35
- };
36
- }
37
- export class PaginationItemContext {
38
- constructor(item, parallelItem, count, index, dataIndex) {
39
- this.item = item;
40
- this.parallelItem = parallelItem;
41
- this.count = count;
42
- this.index = index;
43
- this.dataIndex = dataIndex;
44
- }
45
- get first() {
46
- return this.index === 0;
47
- }
48
- get last() {
49
- return this.index === this.count - 1;
50
- }
51
- get even() {
52
- return this.index % 2 === 0;
53
- }
54
- get odd() {
55
- return !this.even;
56
- }
57
- // Support for old dynamic table implementation
58
- get row() {
59
- console.log("DynamicTable row is deprecated use item instead");
60
- return this.item;
61
- }
62
- // Support for old dynamic table implementation
63
- get parallelRow() {
64
- console.log("DynamicTable parallelRow is deprecated use parallelItem instead");
65
- return this.parallelItem;
66
- }
67
- filter(filterRx) {
68
- const keys = Object.keys(this.item);
69
- for (const key of keys) {
70
- const value = this.item[key];
71
- if (ObjectUtils.isNullOrUndefined(value) || ObjectUtils.isObject(value))
72
- continue;
73
- const testValue = ObjectUtils.isString(value) ? value : value.toString();
74
- if (testValue.match(filterRx))
75
- return true;
76
- }
77
- return false;
78
- }
79
- }
80
- export class HttpPromise extends Promise {
81
- constructor(rejectHandler, executor) {
82
- super(executor);
83
- this.rejectHandler = rejectHandler;
84
- this.attachCount = 0;
85
- this.runCount = 0;
86
- }
87
- then(onFulfilled, onRejected) {
88
- this.attachCount++;
89
- return super.then(value => {
90
- this.runCount++;
91
- return onFulfilled ? onFulfilled(value) : null;
92
- }, (reason) => {
93
- const result = onRejected ? onRejected(reason) : null;
94
- this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);
95
- this.runCount++;
96
- this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);
97
- return result;
98
- });
99
- }
100
- catch(onRejected) {
101
- return this.then(null, onRejected);
102
- }
103
- }
104
- export const EXPRESS_REQUEST = new InjectionToken("express-request");
105
- export const API_SERVICE = new InjectionToken("api-service");
106
- // --- Resource if ---
107
- export class ResourceIfContext {
108
- }
109
- // --- ConfigService ---
110
- export class IConfiguration {
111
- }
112
- export const CONFIG_SERVICE = new InjectionToken("config-service");
113
- export const BASE_CONFIG = new InjectionToken("base-config");
114
- export const SCRIPT_PARAMS = new InjectionToken("script-params");
115
- export const ROOT_ELEMENT = new InjectionToken("app-root-element");
116
- export const ERROR_HANDLER = new InjectionToken("error-handler-callback");
117
- export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
118
- // --- Valued promise ---
119
- export class ValuedPromise extends Promise {
120
- }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQXlDM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLE9BQU8sY0FBYztDQUsxQjtBQVlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdDLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFLN0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBY2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUF1QixrQkFBa0IsQ0FBQyxDQUFDO0FBaUI3Rix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGFBQWlCLFNBQVEsT0FBVTtDQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE5nWm9uZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbi8vIC0tLSBVdGlsc1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICBmdW5jOiBGdW5jdGlvbjtcclxuICAgIHR5cGU/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBhbnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBJY29uIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBpY29uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBMYW5ndWFnZSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XHJcbiAgICBsYW5nOiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmcge1xyXG4gICAgdW5hdmFpbGFibGU/OiBzdHJpbmc7XHJcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcclxuICAgIGxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZXZMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBzZXR0aW5ncz86IHtbbGFuZzogc3RyaW5nXTogSUxhbmd1YWdlU2V0dGluZ307XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2VydmljZSB7XHJcbiAgICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIGVkaXRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGlzYWJsZVRyYW5zbGF0aW9uczogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGljdGlvbmFyeTogSVRyYW5zbGF0aW9ucztcclxuICAgIHJlYWRvbmx5IGxhbmd1YWdlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xyXG4gICAgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICAgIHJlcGxhY2VMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBhZGRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZztcclxuICAgIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+O1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tT2JqZWN0KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9ucywgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25bXSwgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4oXCJsYW5ndWFnZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEF1dGggU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXV0aFNlcnZpY2Uge1xyXG4gICAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xyXG4gICAgdXNlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgY2hlY2tBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJvdXRlVmFsaWRhdG9yID0gKGF1dGg6IElBdXRoU2VydmljZSwgcm91dGU/OiBJUm91dGUsIG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVEYXRhIGV4dGVuZHMgRGF0YSB7XHJcbiAgICByZXR1cm5TdGF0ZT86IHN0cmluZ1tdO1xyXG4gICAgZ3VhcmRzPzogQXJyYXk8SVJlc29sdmVGYWN0b3J5IHwgUm91dGVWYWxpZGF0b3I+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZSBleHRlbmRzIFJvdXRlIHtcclxuICAgIGRhdGE/OiBJUm91dGVEYXRhO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4oXCJhdXRoLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQWNsIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFjbENvbXBvbmVudCB7XHJcbiAgICBvblVzZXJJbml0aWFsaXplZCgpOiB2b2lkO1xyXG4gICAgb25Vc2VyQ2hhbmdlZCgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVN0YXRlSW5mbyB7XHJcbiAgICByb3V0ZTogSVJvdXRlO1xyXG4gICAgZ3VhcmQ6IGFueTtcclxuICAgIGRpcnR5OiBib29sZWFuO1xyXG4gICAgZmlyc3Q6IGJvb2xlYW47XHJcbiAgICBjb21wb25lbnQ/OiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBTdGF0ZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVXJsUGFyYW0gPSBhbnlbXSB8IHN0cmluZyB8IFVybFRyZWU7XHJcblxyXG4vLyAtLS0gU3RvcmFnZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgZW51bSBTdG9yYWdlTW9kZSB7XHJcbiAgICBMb2NhbCxcclxuICAgIFNlc3Npb25cclxufVxyXG5cclxuLy8gLS0tIFRvYXN0ZXIgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVG9hc3RlclNlcnZpY2Uge1xyXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFRPQVNURVJfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SVRvYXN0ZXJTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+KFwidG9hc3Rlci1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFByb21pc2UgU2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb21pc2VTZXJ2aWNlIHtcclxuICAgIHpvbmU6IE5nWm9uZTtcclxuICAgIGNvdW50OiBudW1iZXI7XHJcbiAgICBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xyXG4gICAgY3JlYXRlPFQ+KGV4ZWN1dG9yOiAocmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQpOiBQcm9taXNlPFQ+O1xyXG4gICAgYWxsKHByb21pc2VzOiBQcm9taXNlPGFueT5bXSk6IFByb21pc2U8YW55PjtcclxuICAgIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbiAgICByZWplY3Q8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBQUk9NSVNFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVByb21pc2VTZXJ2aWNlPihcInByb21pc2Utc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBc3luYyBtZXRob2QgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzeW5jTWVzc2FnZSB7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBjb250ZXh0PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZCA9IChjb250ZXh0PzogYW55KSA9PiBQcm9taXNlPElBc3luY01lc3NhZ2U+O1xyXG5cclxuLy8gLS0tIFVub3JkZXJlZCBsaXN0IC0tLVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5vcmVkZXJlZExpc3RUZW1wbGF0ZSBleHRlbmRzIFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xyXG4gICAgYWJzdHJhY3Qgc2VsZWN0b3I6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVbm9yZGVyZWRMaXN0VGVtcGxhdGVzIHtcclxuICAgIFt0eXBlOiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVbm9yZGVyZWRMaXN0U3R5bGUgPSBcInRhYmxlXCIgfCBcImxpc3RcIjtcclxuXHJcbi8vIC0tLSBBamF4IHJlcXVlc3QgIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBamF4UmVxdWVzdERldGFpbHMge1xyXG4gICAgcmVxdWVzdDogWE1MSHR0cFJlcXVlc3QsXHJcbiAgICBtZXRob2Q6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBamF4UmVxdWVzdENhbGxiYWNrID0gKGRldGFpbHM6IElBamF4UmVxdWVzdERldGFpbHMsIHBhcmFtczogYW55KSA9PiB2b2lkO1xyXG5cclxuLy8gLS0tIExvYWRlciB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJU2NyaXB0UHJvbWlzZXMge1xyXG4gICAgW3NyYzogc3RyaW5nXTogUHJvbWlzZTxIVE1MU2NyaXB0RWxlbWVudD47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJU3R5bGVQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxMaW5rRWxlbWVudD47XHJcbn1cclxuXHJcbi8vIC0tLSBPYnNlcnZhYmxlIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hPYnNlcnZhYmxlIHtcclxuICAgIHNlYXJjaDogc3RyaW5nO1xyXG4gICAgZ2V0U2VhcmNoUmVzdWx0cyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT47XHJcbn1cclxuXHJcbi8vIC0tLSBSZWZsZWN0IHV0aWxzIC0tLVxyXG5leHBvcnQgZnVuY3Rpb24gRmFjdG9yeURlcGVuZGVuY2llcyguLi5kZXBlbmRlbmNpZXM6IEFycmF5PEluamVjdGlvblRva2VuPGFueT4gfCBQcm92aWRlcj4pOiBNZXRob2REZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgbWV0aG9kOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJmYWN0b3J5RGVwZW5kZW5jaWVzXCIsIGRlcGVuZGVuY2llcywgdGFyZ2V0LCBtZXRob2QpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE9iamVjdFR5cGUodHlwZTogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcIm9iamVjdFR5cGVcIiwgdHlwZSwgdGFyZ2V0KTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8vIC0tLSBUaW1lciB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVGltZXIge1xyXG4gICAgaWQ/OiBhbnk7XHJcbiAgICBmdW5jPzogRnVuY3Rpb247XHJcbiAgICB0aW1lPzogbnVtYmVyO1xyXG4gICAgcnVuPzogKCkgPT4gdm9pZDtcclxuICAgIHNldD86IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB2b2lkO1xyXG4gICAgY2xlYXI/OiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG4vLyAtLS0gRXh0cmFJdGVtUHJvcGVydGllcyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJRXh0cmFQcm9wZXJ0aWVzIHtcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBHcm91cCBieSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBNYXAge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gVHJhbnNsYXRlIC0tLVxyXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvblF1ZXJ5ID0gc3RyaW5nIHwgSVRyYW5zbGF0aW9ucyB8IElUcmFuc2xhdGlvbltdO1xyXG5cclxuLy8gLS0tIFBhZ2luYXRpb24gLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2VJbmZvIHtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICAgIG51bWJlcjogbnVtYmVyO1xyXG4gICAgYWN0aXZlOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uRGF0YSB7XHJcbiAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgaXRlbXM6IGFueVtdO1xyXG4gICAgbWV0YT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvbkRhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcikgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25JdGVtQ29udGV4dCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGl0ZW06IGFueSwgcHVibGljIHBhcmFsbGVsSXRlbTogYW55LCBwdWJsaWMgY291bnQ6IG51bWJlciwgcHVibGljIGluZGV4OiBudW1iZXIsIHB1YmxpYyBkYXRhSW5kZXg6IG51bWJlcikge1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmaXJzdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFzdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gdGhpcy5jb3VudCAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV2ZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBvZGQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmV2ZW47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cclxuICAgIGdldCByb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSByb3cgaXMgZGVwcmVjYXRlZCB1c2UgaXRlbSBpbnN0ZWFkXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cclxuICAgIGdldCBwYXJhbGxlbFJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHBhcmFsbGVsUm93IGlzIGRlcHJlY2F0ZWQgdXNlIHBhcmFsbGVsSXRlbSBpbnN0ZWFkXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFsbGVsSXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXIoZmlsdGVyUng6IFJlZ0V4cCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLml0ZW0pO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLml0ZW1ba2V5XTtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB8fCBPYmplY3RVdGlscy5pc09iamVjdCh2YWx1ZSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCB0ZXN0VmFsdWUgPSBPYmplY3RVdGlscy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGlmICh0ZXN0VmFsdWUubWF0Y2goZmlsdGVyUngpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyAtLS0gSHR0cCBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwSGVhZGVycyB7XHJcbiAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFBhcmFtcyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3RPcHRpb25zIHtcclxuICAgIG1ldGhvZD86IHN0cmluZztcclxuICAgIGJvZHk/OiBhbnk7XHJcbiAgICBoZWFkZXJzPzogSUh0dHBIZWFkZXJzIHwgSHR0cEhlYWRlcnM7XHJcbiAgICBvcmlnaW5hbEhlYWRlcnM/OiBJSHR0cEhlYWRlcnM7XHJcbiAgICBwYXJhbXM/OiBJSHR0cFBhcmFtcztcclxuICAgIG9ic2VydmU/OiBcImJvZHlcIiB8IFwicmVzcG9uc2VcIjtcclxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcclxuICAgIHJlc3BvbnNlVHlwZT86IFwiYXJyYXlidWZmZXJcIiB8IFwiYmxvYlwiIHwgXCJqc29uXCIgfCBcInRleHRcIjtcclxuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XHJcbiAgICB0aW1lb3V0PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJc3N1ZUNvbnRleHQge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2dyZXNzIHtcclxuICAgIHBlcmNlbnRhZ2U/OiBudW1iZXI7XHJcbiAgICBsb2FkZWQ/OiBudW1iZXI7XHJcbiAgICB0b3RhbD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NMaXN0ZW5lciA9IChwcm9ncmVzczogSVByb2dyZXNzKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvbWlzZUV4ZWN1dG9yID0gKHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCBjbGFzcyBIdHRwUHJvbWlzZSBleHRlbmRzIFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZDtcclxuICAgIHByb3RlY3RlZCBoYXNSZWplY3RIYW5kbGVyOiBib29sZWFuO1xyXG4gICAgcHJvdGVjdGVkIGF0dGFjaENvdW50OiBudW1iZXI7XHJcbiAgICBwcm90ZWN0ZWQgcnVuQ291bnQ6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsIGV4ZWN1dG9yOiBQcm9taXNlRXhlY3V0b3IpIHtcclxuICAgICAgICBzdXBlcihleGVjdXRvcik7XHJcbiAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyID0gcmVqZWN0SGFuZGxlcjtcclxuICAgICAgICB0aGlzLmF0dGFjaENvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnJ1bkNvdW50ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGVuPFRSZXN1bHQxLCBUUmVzdWx0Mj4ob25GdWxmaWxsZWQ/OiAoKHZhbHVlOiBhbnkpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBUUmVzdWx0MSkpIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDI+IHwgVFJlc3VsdDIpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcclxuICAgICAgICB0aGlzLmF0dGFjaENvdW50Kys7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLnRoZW4odmFsdWUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkNvdW50Kys7XHJcbiAgICAgICAgICAgIHJldHVybiBvbkZ1bGZpbGxlZCA/IG9uRnVsZmlsbGVkKHZhbHVlKSA6IG51bGw7XHJcbiAgICAgICAgfSwgKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBvblJlamVjdGVkID8gb25SZWplY3RlZChyZWFzb24pIDogbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5oYXNSZWplY3RIYW5kbGVyID0gdGhpcy5oYXNSZWplY3RIYW5kbGVyIHx8IChvblJlamVjdGVkICYmIHJlc3VsdCAhPT0gZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkNvdW50Kys7XHJcbiAgICAgICAgICAgIHRoaXMucmVqZWN0SGFuZGxlcih0aGlzLnJ1bkNvdW50ID09IHRoaXMuYXR0YWNoQ291bnQgJiYgIXRoaXMuaGFzUmVqZWN0SGFuZGxlciA/IHJlYXNvbiA6IG51bGwpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNhdGNoPFRSZXN1bHQgPSBuZXZlcj4ob25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQ+IHwgVFJlc3VsdCkpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8YW55IHwgVFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBTZXJ2aWNlIHtcclxuICAgIGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlO1xyXG4gICAgdXJsKHVybDogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeT86IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nPzogYm9vbGVhbiwgZmlsdGVyPzogc3RyaW5nKTogSUh0dHBQYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBFWFBSRVNTX1JFUVVFU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWVzdD4oXCJleHByZXNzLXJlcXVlc3RcIik7XHJcblxyXG4vLyAtLS0gQXBpIHNlcnZpY2UgLS0tXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBcGlTZXJ2aWNlIGV4dGVuZHMgSUh0dHBTZXJ2aWNlIHtcclxuICAgIGNhY2hlOiBhbnk7XHJcbiAgICBjbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgICBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBkZWxldGUodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcHV0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcGF0Y2godXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICB1cGxvYWQodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbGlzdCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFQSV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+KFwiYXBpLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gT3BlbkFwaSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hUHJvcGVydHkge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBjb2x1bW4/OiBib29sZWFuO1xyXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM/OiBhbnk7XHJcbiAgICAkcmVmPzogc3RyaW5nO1xyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1ucyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29sdW1uOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHB1cmU6IGJvb2xlYW47XHJcbiAgICByZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGVzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZVRlbXBsYXRlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZURhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCByb3dzUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiwgZmlsdGVyOiBzdHJpbmcpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbi8vIC0tLSBSZXNvdXJjZSBpZiAtLS1cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWZDb250ZXh0IHtcclxuICAgIHJlc291cmNlOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIENvbmZpZ1NlcnZpY2UgLS0tXHJcbmV4cG9ydCBjbGFzcyBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gICAgYmFzZURvbWFpbj86IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uVXJsPzogc3RyaW5nO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdTZXJ2aWNlIHtcclxuICAgIGNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICByZWFkb25seSBsb2FkOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHJlYWRvbmx5IHJvb3RFbGVtZW50OiBhbnk7XHJcbiAgICBjbG9uZVJvb3RFbGVtKCk6IGFueTtcclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnk7XHJcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTkZJR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWdTZXJ2aWNlPihcImNvbmZpZy1zZXJ2aWNlXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWd1cmF0aW9uPihcImJhc2UtY29uZmlnXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUklQVF9QQVJBTVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PihcInNjcmlwdC1wYXJhbXNcIik7XHJcblxyXG5leHBvcnQgY29uc3QgUk9PVF9FTEVNRU5UOiBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+KFwiYXBwLXJvb3QtZWxlbWVudFwiKTtcclxuXHJcbi8vIC0tLSBFcnJvciBoYW5kbGVyIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlckNhbGxiYWNrID0gKGVycm9yOiBzdHJpbmcpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBFUlJPUl9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImVycm9yLWhhbmRsZXItY2FsbGJhY2tcIik7XHJcblxyXG4vLyAtLS0gR2xvYmFsIHRlbXBsYXRlcyBzZXJ2aWNlXHJcblxyXG5leHBvcnQgdHlwZSBHbG9iYWxDb21wb25lbnRNb2RpZmllciA9IChjb21wb25lbnQ6IGFueSkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2xvYmFsVGVtcGxhdGVzIHtcclxuICAgIHJlYWRvbmx5IHRlbXBsYXRlc1VwZGF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgYWRkKGlkOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZDtcclxuICAgIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZDtcclxuICAgIGFkZENvbXBvbmVudE1vZGlmaWVyKGlkOiBzdHJpbmcsIG1vZGlmaWVyOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBHTE9CQUxfVEVNUExBVEVTID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImdsb2JhbC10ZW1wbGF0ZXNcIik7XHJcblxyXG4vLyAtLS0gTW9kdWxlIC0tLVxyXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsaXplckZ1bmMgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1vZHVsZUNvbmZpZyB7XHJcbiAgICBhcGlTZXJ2aWNlPzogVHlwZTxJQXBpU2VydmljZT5cclxuICAgIGF1dGhTZXJ2aWNlPzogVHlwZTxJQXV0aFNlcnZpY2U+O1xyXG4gICAgaWNvblNlcnZpY2U/OiBUeXBlPElJY29uU2VydmljZT47XHJcbiAgICBsYW5ndWFnZVNlcnZpY2U/OiBUeXBlPElMYW5ndWFnZVNlcnZpY2U+O1xyXG4gICAgdG9hc3RlclNlcnZpY2U/OiBUeXBlPElUb2FzdGVyU2VydmljZT47XHJcbiAgICBwcm9taXNlU2VydmljZT86IFR5cGU8SVByb21pc2VTZXJ2aWNlPjtcclxuICAgIGNvbmZpZ1NlcnZpY2U/OiBUeXBlPElDb25maWdTZXJ2aWNlPjtcclxuICAgIGdsb2JhbFRlbXBsYXRlcz86IFR5cGU8SUdsb2JhbFRlbXBsYXRlcz47XHJcbiAgICBpbml0aWFsaXplQXBwPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQXBwSW5pdGlhbGl6ZXJGdW5jO1xyXG59XHJcblxyXG4vLyAtLS0gVmFsdWVkIHByb21pc2UgLS0tXHJcbmV4cG9ydCBjbGFzcyBWYWx1ZWRQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiB7XHJcbiAgICB2YWx1ZTogVDtcclxufVxyXG4iXX0=
@@ -1,139 +0,0 @@
1
- import { Component, ContentChild, ContentChildren, Input, ViewChild } from "@angular/core";
2
- import { PaginationItemContext } from "../../common-types";
3
- import { ObjectUtils } from "../../utils/object.utils";
4
- import { DynamicTableTemplateDirective } from "../../directives/dynamic-table-template.directive";
5
- import { UniqueUtils } from "../../utils/unique.utils";
6
- export class DynamicTableComponent {
7
- constructor() {
8
- this.loadData = (page, itemsPerPage) => {
9
- const orderBy = this.orders[this.orderBy];
10
- return this.dataLoader(page, itemsPerPage, orderBy, this.orderDescending, this.filter);
11
- };
12
- this.dataLoader = this.loadLocalData;
13
- this.placeholder = "";
14
- this.tableId = UniqueUtils.uuid();
15
- this.templates = {};
16
- this.filter = "";
17
- this.orders = {};
18
- }
19
- get items() {
20
- return !this.pagination ? [] : this.pagination.items;
21
- }
22
- static compare(orderBy, a, b) {
23
- a = a.item ? a.item[orderBy] : null;
24
- b = b.item ? b.item[orderBy] : null;
25
- return ObjectUtils.compare(a, b);
26
- }
27
- ngAfterContentInit() {
28
- this.templates = this.templateDirectives.reduce((result, directive) => {
29
- if (ObjectUtils.isArray(directive.column)) {
30
- directive.column.forEach(column => {
31
- result[column] = directive;
32
- });
33
- return result;
34
- }
35
- if (!ObjectUtils.isString(directive.column) || directive.column.length == 0)
36
- return result;
37
- result[directive.column] = directive;
38
- return result;
39
- }, {});
40
- }
41
- ngAfterViewInit() {
42
- this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;
43
- this.filterTemplate = this.filterTemplate || this.defaultFilterTemplate;
44
- }
45
- ngOnChanges(changes) {
46
- if (changes.columns) {
47
- const columns = changes.columns.currentValue || [];
48
- this.orders = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {
49
- result[column] = column;
50
- return result;
51
- }, {}) : columns;
52
- this.cols = Object.keys(this.orders);
53
- this.orderBy = this.orderBy in this.orders ? this.orderBy : this.columns[0];
54
- }
55
- if (changes.orderBy && this.orders) {
56
- this.orderBy = this.orderBy in this.orders ? this.orderBy : this.columns[0];
57
- }
58
- if (!changes.data && !changes.parallelData && !changes.itemsPerPage && !changes.orderBy && !changes.orderDescending)
59
- return;
60
- this.refresh();
61
- }
62
- refresh() {
63
- if (!this.pagination)
64
- return;
65
- this.pagination.refresh();
66
- }
67
- setFilter(filter) {
68
- this.filter = filter;
69
- this.refresh();
70
- }
71
- setOrder(column) {
72
- this.orderDescending = column == this.orderBy && !this.orderDescending;
73
- this.orderBy = column;
74
- this.refresh();
75
- }
76
- loadLocalData(page, rowsPerPage, orderBy, orderDescending, filter) {
77
- if (!this.data) {
78
- return Promise.resolve({
79
- total: 0,
80
- items: []
81
- });
82
- }
83
- const compare = orderDescending
84
- ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)
85
- : (a, b) => DynamicTableComponent.compare(orderBy, a, b);
86
- const from = (page - 1) * rowsPerPage;
87
- const dataLength = this.data.length;
88
- const length = Math.min(rowsPerPage, dataLength - from);
89
- const parallelData = this.parallelData || [];
90
- let data = this.data.map((item, ix) => {
91
- return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);
92
- });
93
- if (ObjectUtils.isString(filter) && filter.length > 0) {
94
- const filterRx = new RegExp(filter, "gi");
95
- data = data.filter(c => c.filter(filterRx));
96
- }
97
- const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);
98
- items.forEach((context, ix) => {
99
- context.index = from + ix;
100
- });
101
- return Promise.resolve({
102
- total: dataLength,
103
- items: items
104
- });
105
- }
106
- }
107
- DynamicTableComponent.decorators = [
108
- { type: Component, args: [{
109
- selector: "dynamic-table",
110
- template: "<div class=\"dynamic-table\" #pagination=\"pagination\" [pagination]=\"loadData\" [itemsPerPage]=\"itemsPerPage\" [updateTime]=\"updateTime\">\r\n <ng-template #defaultFilterTemplate let-table>\r\n <div class=\"table-search\" *ngIf=\"table.showFilter\">\r\n <label *ngIf=\"label\" [attr.for]=\"tableId\">{{ label | translate }}</label>\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n [attr.id]=\"tableId\"\r\n [placeholder]=\"placeholder | translate\"\r\n [ngModel]=\"table.filter\"\r\n (ngModelChange)=\"table.setFilter($event)\"/>\r\n </div>\r\n </ng-template>\r\n <ng-container [ngxTemplateOutlet]=\"filterTemplate || defaultFilterTemplate\" [context]=\"this\"></ng-container>\r\n <pagination-menu [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n <div class=\"table-responsive\">\r\n\r\n <ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\r\n <ng-template #defaultTemplate let-column=\"column\" let-item=\"item\">\r\n <span>{{ item[column] == undefined || item[column] == null ? '-' : item[column] }}</span>\r\n </ng-template>\r\n <ng-template #pureTemplate>\r\n <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\r\n </ng-template>\r\n <td [ngClass]=\"'column-' + column\" *ngIf=\"!template || !template.pure; else pureTemplate\">\r\n <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\" [context]=\"context\"></ng-container>\r\n </td>\r\n </ng-template>\r\n\r\n <ng-template #columnsTemplate let-context>\r\n <ng-container *ngFor=\"let column of cols\"\r\n [ngxTemplateOutlet]=\"columnTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"{\r\n template: templates[column],\r\n column: column\r\n }\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template #defaultRowTemplate let-context>\r\n <tr>\r\n <ng-container [ngxTemplateOutlet]=\"columnsTemplate\" [context]=\"context\"></ng-container>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template #defaultWrapperTemplate>\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of cols\" [ngClass]=\"'column-' + column\">\r\n <a *ngIf=\"orders[column]\" (click)=\"setOrder(column)\">\r\n <span>{{ 'label.' + column | translate }}</span>\r\n <i *ngIf=\"orderBy == column\"\r\n [icon]=\"orderDescending ? 'sort-desc' : 'sort-asc'\"\r\n [ngClass]=\"orderBy == column ? (orderDescending ? 'sort-desc': 'sort-asc') : ''\"></i>\r\n </a>\r\n <span *ngIf=\"!orders[column]\">{{ 'label.' + column | translate }}</span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *paginationItem=\"let context\"\r\n [ngxTemplateOutlet]=\"rowTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"this\"></ng-container>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n\r\n <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n [context]=\"this\"></ng-container>\r\n </div>\r\n <pagination-menu [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n</div>\r\n"
111
- },] }
112
- ];
113
- DynamicTableComponent.ctorParameters = () => [];
114
- DynamicTableComponent.propDecorators = {
115
- label: [{ type: Input }],
116
- placeholder: [{ type: Input }],
117
- dataLoader: [{ type: Input }],
118
- data: [{ type: Input }],
119
- parallelData: [{ type: Input }],
120
- columns: [{ type: Input }],
121
- showFilter: [{ type: Input }],
122
- itemsPerPage: [{ type: Input }],
123
- updateTime: [{ type: Input }],
124
- maxPages: [{ type: Input }],
125
- directionLinks: [{ type: Input }],
126
- boundaryLinks: [{ type: Input }],
127
- orderBy: [{ type: Input }],
128
- orderDescending: [{ type: Input }],
129
- rowTemplate: [{ type: ContentChild, args: ["rowTemplate", { static: true },] }],
130
- wrapperTemplate: [{ type: ContentChild, args: ["wrapperTemplate", { static: true },] }],
131
- filterTemplate: [{ type: ContentChild, args: ["filterTemplate", { static: true },] }],
132
- columnsTemplate: [{ type: ViewChild, args: ["columnsTemplate", { static: true },] }],
133
- defaultRowTemplate: [{ type: ViewChild, args: ["defaultRowTemplate", { static: true },] }],
134
- defaultWrapperTemplate: [{ type: ViewChild, args: ["defaultWrapperTemplate", { static: true },] }],
135
- defaultFilterTemplate: [{ type: ViewChild, args: ["defaultFilterTemplate", { static: true },] }],
136
- pagination: [{ type: ViewChild, args: ["pagination",] }],
137
- templateDirectives: [{ type: ContentChildren, args: [DynamicTableTemplateDirective,] }]
138
- };
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsS0FBSyxFQUtMLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUgscUJBQXFCLEVBRXhCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRWhHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQU1yRCxNQUFNLE9BQU8scUJBQXFCO0lBNEQ5QjtRQTZEQSxhQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsWUFBb0IsRUFBNEIsRUFBRTtZQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDO1FBL0RFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFH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LFNBQVMsU0FBQyx3QkFBd0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7b0NBR2xELFNBQVMsU0FBQyx1QkFBdUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7eUJBR2pELFNBQVMsU0FBQyxZQUFZO2lDQUd0QixlQUFlLFNBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJUGFnaW5hdGlvbkRhdGEsXHJcbiAgICBJVGFibGVDb2x1bW5zLFxyXG4gICAgSVRhYmxlVGVtcGxhdGVzLFxyXG4gICAgUGFnaW5hdGlvbkl0ZW1Db250ZXh0LFxyXG4gICAgVGFibGVEYXRhTG9hZGVyXHJcbn0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7RHluYW1pY1RhYmxlVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtdGFibGUtdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvbkRpcmVjdGl2ZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtVbmlxdWVVdGlsc30gZnJvbSBcIi4uLy4uL3V0aWxzL3VuaXF1ZS51dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWxcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkYXRhTG9hZGVyOiBUYWJsZURhdGFMb2FkZXI7XHJcbiAgICBASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIHBhcmFsbGVsRGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBJVGFibGVDb2x1bW5zIHwgc3RyaW5nW107XHJcbiAgICBASW5wdXQoKSBzaG93RmlsdGVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXRlbXNQZXJQYWdlOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSB1cGRhdGVUaW1lOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBtYXhQYWdlczogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgZGlyZWN0aW9uTGlua3M6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBib3VuZGFyeUxpbmtzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgb3JkZXJCeTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHRhYmxlSWQ6IHN0cmluZztcclxuICAgIHRlbXBsYXRlczogSVRhYmxlVGVtcGxhdGVzO1xyXG4gICAgZmlsdGVyOiBzdHJpbmc7XHJcbiAgICBvcmRlcnM6IElUYWJsZUNvbHVtbnM7XHJcbiAgICBjb2xzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBnZXQgaXRlbXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5wYWdpbmF0aW9uID8gW10gOiB0aGlzLnBhZ2luYXRpb24uaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChcInJvd1RlbXBsYXRlXCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgcm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChcIndyYXBwZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIHdyYXBwZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkKFwiZmlsdGVyVGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBmaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwiY29sdW1uc1RlbXBsYXRlXCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgY29sdW1uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJkZWZhdWx0Um93VGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBkZWZhdWx0Um93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRXcmFwcGVyVGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBkZWZhdWx0V3JhcHBlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJkZWZhdWx0RmlsdGVyVGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBkZWZhdWx0RmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcInBhZ2luYXRpb25cIilcclxuICAgIHByaXZhdGUgcGFnaW5hdGlvbjogUGFnaW5hdGlvbkRpcmVjdGl2ZTtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKER5bmFtaWNUYWJsZVRlbXBsYXRlRGlyZWN0aXZlKVxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZURpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29tcGFyZShvcmRlckJ5OiBzdHJpbmcsIGE6IFBhZ2luYXRpb25JdGVtQ29udGV4dCwgYjogUGFnaW5hdGlvbkl0ZW1Db250ZXh0KTogbnVtYmVyIHtcclxuICAgICAgICBhID0gYS5pdGVtID8gYS5pdGVtW29yZGVyQnldIDogbnVsbDtcclxuICAgICAgICBiID0gYi5pdGVtID8gYi5pdGVtW29yZGVyQnldIDogbnVsbDtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29tcGFyZShhLCBiKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmRhdGFMb2FkZXIgPSB0aGlzLmxvYWRMb2NhbERhdGE7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy50YWJsZUlkID0gVW5pcXVlVXRpbHMudXVpZCgpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0ge307XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMub3JkZXJzID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0gdGhpcy50ZW1wbGF0ZURpcmVjdGl2ZXMucmVkdWNlKChyZXN1bHQsIGRpcmVjdGl2ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShkaXJlY3RpdmUuY29sdW1uKSkge1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlLmNvbHVtbi5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2NvbHVtbl0gPSBkaXJlY3RpdmU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc1N0cmluZyhkaXJlY3RpdmUuY29sdW1uKSB8fCBkaXJlY3RpdmUuY29sdW1uLmxlbmd0aCA9PSAwKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICByZXN1bHRbZGlyZWN0aXZlLmNvbHVtbl0gPSBkaXJlY3RpdmU7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd1RlbXBsYXRlID0gdGhpcy5yb3dUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRSb3dUZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmZpbHRlclRlbXBsYXRlID0gdGhpcy5maWx0ZXJUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRGaWx0ZXJUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSB8fCBbXTtcclxuICAgICAgICAgICAgdGhpcy5vcmRlcnMgPSBPYmplY3RVdGlscy5pc0FycmF5KGNvbHVtbnMpID8gY29sdW1ucy5yZWR1Y2UoKHJlc3VsdCwgY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbY29sdW1uXSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0sIHt9KSA6IGNvbHVtbnM7XHJcbiAgICAgICAgICAgIHRoaXMuY29scyA9IE9iamVjdC5rZXlzKHRoaXMub3JkZXJzKTtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckJ5ID0gdGhpcy5vcmRlckJ5IGluIHRoaXMub3JkZXJzID8gdGhpcy5vcmRlckJ5IDogdGhpcy5jb2x1bW5zWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmRlckJ5ICYmIHRoaXMub3JkZXJzKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJCeSA9IHRoaXMub3JkZXJCeSBpbiB0aGlzLm9yZGVycyA/IHRoaXMub3JkZXJCeSA6IHRoaXMuY29sdW1uc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmRhdGEgJiYgIWNoYW5nZXMucGFyYWxsZWxEYXRhICYmICFjaGFuZ2VzLml0ZW1zUGVyUGFnZSAmJiAhY2hhbmdlcy5vcmRlckJ5ICYmICFjaGFuZ2VzLm9yZGVyRGVzY2VuZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2goKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRpb24pIHJldHVybjtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24ucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZpbHRlcihmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE9yZGVyKGNvbHVtbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcmRlckRlc2NlbmRpbmcgPSBjb2x1bW4gPT0gdGhpcy5vcmRlckJ5ICYmICF0aGlzLm9yZGVyRGVzY2VuZGluZztcclxuICAgICAgICB0aGlzLm9yZGVyQnkgPSBjb2x1bW47XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZERhdGEgPSAocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcik6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXJCeSA9IHRoaXMub3JkZXJzW3RoaXMub3JkZXJCeV07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUxvYWRlcihwYWdlLCBpdGVtc1BlclBhZ2UsIG9yZGVyQnksIHRoaXMub3JkZXJEZXNjZW5kaW5nLCB0aGlzLmZpbHRlcik7XHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgbG9hZExvY2FsRGF0YShwYWdlOiBudW1iZXIsIHJvd3NQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuLCBmaWx0ZXI6IHN0cmluZyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29tcGFyZTogKGE6IGFueSwgYjogYW55KSA9PiBudW1iZXIgPSBvcmRlckRlc2NlbmRpbmdcclxuICAgICAgICAgICAgPyAoYSwgYikgPT4gRHluYW1pY1RhYmxlQ29tcG9uZW50LmNvbXBhcmUob3JkZXJCeSwgYiwgYSlcclxuICAgICAgICAgICAgOiAoYSwgYikgPT4gRHluYW1pY1RhYmxlQ29tcG9uZW50LmNvbXBhcmUob3JkZXJCeSwgYSwgYik7XHJcbiAgICAgICAgY29uc3QgZnJvbSA9IChwYWdlIC0gMSkgKiByb3dzUGVyUGFnZTtcclxuICAgICAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihyb3dzUGVyUGFnZSwgZGF0YUxlbmd0aCAtIGZyb20pO1xyXG4gICAgICAgIGNvbnN0IHBhcmFsbGVsRGF0YSA9IHRoaXMucGFyYWxsZWxEYXRhIHx8IFtdO1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhLm1hcCgoaXRlbSwgaXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWdpbmF0aW9uSXRlbUNvbnRleHQoaXRlbSwgcGFyYWxsZWxEYXRhW2l4XSB8fCB7fSwgZGF0YUxlbmd0aCwgaXgsIGl4KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNTdHJpbmcoZmlsdGVyKSAmJiBmaWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJSeCA9IG5ldyBSZWdFeHAoZmlsdGVyLCBcImdpXCIpO1xyXG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoYyA9PiBjLmZpbHRlcihmaWx0ZXJSeCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpdGVtcyA9IG9yZGVyQnkgPyBkYXRhLnNvcnQoY29tcGFyZSkuc3BsaWNlKGZyb20sIGxlbmd0aCkgOiBkYXRhLnNwbGljZShmcm9tLCBsZW5ndGgpO1xyXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGNvbnRleHQsIGl4KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5kZXggPSBmcm9tICsgaXg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgIHRvdGFsOiBkYXRhTGVuZ3RoLFxyXG4gICAgICAgICAgICBpdGVtczogaXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,96 +0,0 @@
1
- import { Component, Inject, Input } from "@angular/core";
2
- import { ObjectUtils } from "../../utils/object.utils";
3
- import { StateService } from "../../services/state.service";
4
- import { PaginationDirective } from "../../directives/pagination.directive";
5
- import { ICON_SERVICE } from "../../common-types";
6
- export class PaginationMenuComponent {
7
- constructor(state, pagination, icons) {
8
- this.state = state;
9
- this.pagination = pagination;
10
- this.icons = icons;
11
- this.maxSize = 5;
12
- this.directionLinks = true;
13
- this.boundaryLinks = true;
14
- this.firstLabel = `<<`;
15
- this.prevLabel = `<`;
16
- this.nextLabel = `>`;
17
- this.lastLabel = `>>`;
18
- }
19
- get hasPrev() {
20
- return this.pagination.page > 1;
21
- }
22
- get hasNext() {
23
- return this.pagination.page < this.pagination.maxPage;
24
- }
25
- ngOnInit() {
26
- this.onRefresh = this.pagination.onRefresh.subscribe(() => this.setPages());
27
- this.setIcon("firstLabel", "first-page");
28
- this.setIcon("prevLabel", "prev-page");
29
- this.setIcon("nextLabel", "next-page");
30
- this.setIcon("lastLabel", "last-page");
31
- }
32
- ngOnDestroy() {
33
- if (!this.onRefresh)
34
- return;
35
- this.onRefresh.unsubscribe();
36
- }
37
- ngOnChanges(changes) {
38
- this.maxSize = isNaN(this.maxSize) || this.maxSize <= 0 ? 5 : this.maxSize;
39
- this.directionLinks = ObjectUtils.isBoolean(this.directionLinks) ? this.directionLinks : true;
40
- this.boundaryLinks = ObjectUtils.isBoolean(this.boundaryLinks) ? this.boundaryLinks : true;
41
- this.setPages();
42
- }
43
- paginate(page) {
44
- if (this.pagination.page == page || this.pagination.maxPage < page || page < 1)
45
- return;
46
- if (!this.urlParam) {
47
- this.pagination.paginate(page);
48
- return;
49
- }
50
- const params = Object.assign({}, this.state.params);
51
- params[this.urlParam] = page.toString();
52
- const path = StateService.toPath(this.state.route, params);
53
- this.state.navigateByUrl(path);
54
- }
55
- setIcon(labelName, icon) {
56
- this.icons.getIcon(icon, icon, false).then(i => {
57
- if (i == icon)
58
- return;
59
- this[labelName] = i;
60
- });
61
- }
62
- setPages() {
63
- if (!this.pagination)
64
- return;
65
- const totalPages = this.pagination.maxPage;
66
- let startPage = Math.max(this.pagination.page - Math.floor(this.maxSize / 2), 1);
67
- let endPage = startPage + this.maxSize - 1;
68
- if (endPage > totalPages) {
69
- endPage = totalPages;
70
- startPage = Math.max(endPage - this.maxSize + 1, 1);
71
- }
72
- const pages = [];
73
- for (let num = startPage; num <= endPage; num++) {
74
- pages.push(num);
75
- }
76
- this.pages = pages;
77
- }
78
- }
79
- PaginationMenuComponent.decorators = [
80
- { type: Component, args: [{
81
- selector: "pagination-menu",
82
- template: "<div class=\"pagination-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(1)\" [innerHTML]=\"firstLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page - 1)\" [innerHTML]=\"prevLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\r\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page + 1)\" [innerHTML]=\"nextLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.maxPage)\" [innerHTML]=\"lastLabel | safe\"></a>\r\n </li>\r\n </ul>\r\n</div>\r\n"
83
- },] }
84
- ];
85
- PaginationMenuComponent.ctorParameters = () => [
86
- { type: StateService },
87
- { type: PaginationDirective },
88
- { type: undefined, decorators: [{ type: Inject, args: [ICON_SERVICE,] }] }
89
- ];
90
- PaginationMenuComponent.propDecorators = {
91
- maxSize: [{ type: Input }],
92
- urlParam: [{ type: Input }],
93
- directionLinks: [{ type: Input }],
94
- boundaryLinks: [{ type: Input }]
95
- };
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvY29tcG9uZW50cy9wYWdpbmF0aW9uLW1lbnUvcGFnaW5hdGlvbi1tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFDLFlBQVksRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBTTlELE1BQU0sT0FBTyx1QkFBdUI7SUF1QmhDLFlBQW1CLEtBQW1CLEVBQVMsVUFBK0IsRUFBK0IsS0FBbUI7UUFBN0csVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFTLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQStCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDNUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQWxCRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNw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WUFBRSxPQUFPO1FBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzNDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksT0FBTyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLE9BQU8sR0FBRyxVQUFVLEVBQUU7WUFDdEIsT0FBTyxHQUFHLFVBQVUsQ0FBQztZQUNyQixTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7O1lBMUZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixzeUNBQStDO2FBQ2xEOzs7WUFQTyxZQUFZO1lBQ1osbUJBQW1COzRDQThCMEQsTUFBTSxTQUFDLFlBQVk7OztzQkFyQm5HLEtBQUs7dUJBQ0wsS0FBSzs2QkFDTCxLQUFLOzRCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlc30gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtTdGF0ZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvbkRpcmVjdGl2ZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtJQ09OX1NFUlZJQ0UsIElJY29uU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJwYWdpbmF0aW9uLW1lbnVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGFnaW5hdGlvbi1tZW51LmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25NZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblxyXG4gICAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdXJsUGFyYW06IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgYm91bmRhcnlMaW5rczogYm9vbGVhbjtcclxuXHJcbiAgICBwYWdlczogbnVtYmVyW107XHJcbiAgICBmaXJzdExhYmVsOiBzdHJpbmc7XHJcbiAgICBwcmV2TGFiZWw6IHN0cmluZztcclxuICAgIG5leHRMYWJlbDogc3RyaW5nO1xyXG4gICAgbGFzdExhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgZ2V0IGhhc1ByZXYoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi5wYWdlID4gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaGFzTmV4dCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uLnBhZ2UgPCB0aGlzLnBhZ2luYXRpb24ubWF4UGFnZVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25SZWZyZXNoOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHN0YXRlOiBTdGF0ZVNlcnZpY2UsIHB1YmxpYyBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uRGlyZWN0aXZlLCBASW5qZWN0KElDT05fU0VSVklDRSkgcHVibGljIGljb25zOiBJSWNvblNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLm1heFNpemUgPSA1O1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uTGlua3MgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYm91bmRhcnlMaW5rcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maXJzdExhYmVsID0gYDw8YDtcclxuICAgICAgICB0aGlzLnByZXZMYWJlbCA9IGA8YDtcclxuICAgICAgICB0aGlzLm5leHRMYWJlbCA9IGA+YDtcclxuICAgICAgICB0aGlzLmxhc3RMYWJlbCA9IGA+PmA7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblJlZnJlc2ggPSB0aGlzLnBhZ2luYXRpb24ub25SZWZyZXNoLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldFBhZ2VzKCkpO1xyXG4gICAgICAgIHRoaXMuc2V0SWNvbihcImZpcnN0TGFiZWxcIiwgXCJmaXJzdC1wYWdlXCIpO1xyXG4gICAgICAgIHRoaXMuc2V0SWNvbihcInByZXZMYWJlbFwiLCBcInByZXYtcGFnZVwiKTtcclxuICAgICAgICB0aGlzLnNldEljb24oXCJuZXh0TGFiZWxcIiwgXCJuZXh0LXBhZ2VcIik7XHJcbiAgICAgICAgdGhpcy5zZXRJY29uKFwibGFzdExhYmVsXCIsIFwibGFzdC1wYWdlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5vblJlZnJlc2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLm9uUmVmcmVzaC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1heFNpemUgPSBpc05hTih0aGlzLm1heFNpemUpIHx8IHRoaXMubWF4U2l6ZSA8PSAwID8gNSA6IHRoaXMubWF4U2l6ZTtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbkxpbmtzID0gT2JqZWN0VXRpbHMuaXNCb29sZWFuKHRoaXMuZGlyZWN0aW9uTGlua3MpID8gdGhpcy5kaXJlY3Rpb25MaW5rcyA6IHRydWU7XHJcbiAgICAgICAgdGhpcy5ib3VuZGFyeUxpbmtzID0gT2JqZWN0VXRpbHMuaXNCb29sZWFuKHRoaXMuYm91bmRhcnlMaW5rcykgPyB0aGlzLmJvdW5kYXJ5TGlua3MgOiB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0UGFnZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdpbmF0ZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uLnBhZ2UgPT0gcGFnZSB8fCB0aGlzLnBhZ2luYXRpb24ubWF4UGFnZSA8IHBhZ2UgfHwgcGFnZSA8IDEpIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMudXJsUGFyYW0pIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2luYXRlKHBhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGUucGFyYW1zKTtcclxuICAgICAgICBwYXJhbXNbdGhpcy51cmxQYXJhbV0gPSBwYWdlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IFN0YXRlU2VydmljZS50b1BhdGgodGhpcy5zdGF0ZS5yb3V0ZSwgcGFyYW1zKTtcclxuICAgICAgICB0aGlzLnN0YXRlLm5hdmlnYXRlQnlVcmwocGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldEljb24obGFiZWxOYW1lOiBzdHJpbmcsIGljb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaWNvbnMuZ2V0SWNvbihpY29uLCBpY29uLCBmYWxzZSkudGhlbihpID0+IHtcclxuICAgICAgICAgICAgaWYgKGkgPT0gaWNvbikgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzW2xhYmVsTmFtZV0gPSBpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRQYWdlcygpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9IHRoaXMucGFnaW5hdGlvbi5tYXhQYWdlO1xyXG4gICAgICAgIGxldCBzdGFydFBhZ2UgPSBNYXRoLm1heCh0aGlzLnBhZ2luYXRpb24ucGFnZSAtIE1hdGguZmxvb3IodGhpcy5tYXhTaXplIC8gMiksIDEpO1xyXG4gICAgICAgIGxldCBlbmRQYWdlID0gc3RhcnRQYWdlICsgdGhpcy5tYXhTaXplIC0gMTtcclxuICAgICAgICBpZiAoZW5kUGFnZSA+IHRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgZW5kUGFnZSA9IHRvdGFsUGFnZXM7XHJcbiAgICAgICAgICAgIHN0YXJ0UGFnZSA9IE1hdGgubWF4KGVuZFBhZ2UgLSB0aGlzLm1heFNpemUgKyAxLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFnZXM6IG51bWJlcltdID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgbnVtID0gc3RhcnRQYWdlOyBudW0gPD0gZW5kUGFnZTsgbnVtKyspIHtcclxuICAgICAgICAgICAgcGFnZXMucHVzaChudW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBhZ2VzID0gcGFnZXM7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,51 +0,0 @@
1
- import { ChangeDetectorRef, Component, ContentChildren, Input, ViewChild } from "@angular/core";
2
- import { ObjectUtils } from "../../utils/object.utils";
3
- import { UnorderedListTemplateDirective } from "../../directives/unordered-list-template.directive";
4
- export class UnorderedListComponent {
5
- constructor(cdr) {
6
- this.cdr = cdr;
7
- this.keyPrefix = "";
8
- this.listStyle = "table";
9
- this.path = "";
10
- this.level = 0;
11
- }
12
- ngOnChanges(changes) {
13
- this.isArray = ObjectUtils.isArray(this.data);
14
- this.isObject = ObjectUtils.isObject(this.data);
15
- }
16
- ngAfterContentInit() {
17
- const templates = this.templateDirectives.toArray();
18
- this.templates = this.templates ? this.templates.concat(templates) : templates;
19
- this.cdr.detectChanges();
20
- }
21
- ngAfterViewInit() {
22
- this.defaultTemplates = {
23
- key: this.defaultKeyTemplate,
24
- value: this.defaultValueTemplate,
25
- item: this.defaultItemTemplate
26
- };
27
- this.cdr.detectChanges();
28
- }
29
- }
30
- UnorderedListComponent.decorators = [
31
- { type: Component, args: [{
32
- selector: "unordered-list",
33
- template: "<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" let-isArray=\"isArray\" #defaultKeyTemplate>\r\n {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\r\n</ng-template>\r\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-val=\"item.value\" let-path=\"path\"\r\n let-templates=\"templates\" let-isObject=\"valueIsObject\" let-isArray=\"valueIsArray\" #defaultValueTemplate>\r\n <ng-template #value>\r\n <span [innerHTML]=\"val\"></span>\r\n </ng-template>\r\n <unordered-list [data]=\"val\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level + 1\"\r\n [templates]=\"templates\"\r\n *ngIf=\"(isObject || isArray); else value\"></unordered-list>\r\n</ng-template>\r\n<ng-template let-item=\"item\" let-data=\"data\" let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-path=\"path\" let-level=\"level\" let-templates=\"templates\" #defaultItemTemplate>\r\n <ng-template #itemKey>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"key\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-template #itemValue>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"value\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-container *ngIf=\"!isArray\">\r\n <th *ngIf=\"listStyle == 'table'; else itemKey\">\r\n <ng-container [ngTemplateOutlet]=\"itemKey\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <td *ngIf=\"listStyle == 'table'; else itemValue\">\r\n <ng-container [ngTemplateOutlet]=\"itemValue\"></ng-container>\r\n </td>\r\n</ng-template>\r\n<ng-template #value>\r\n <span [innerHTML]=\"data\"></span>\r\n</ng-template>\r\n<ng-container *ngIf=\"(isObject || isArray); else value\" [ngSwitch]=\"listStyle\">\r\n <ul [ngClass]=\"'level-' + level\" *ngSwitchCase=\"'list'\">\r\n <li *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </li>\r\n </ul>\r\n <table [ngClass]=\"'level-' + level\" *ngSwitchDefault>\r\n <tr *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </tr>\r\n </table>\r\n</ng-container>\r\n"
34
- },] }
35
- ];
36
- UnorderedListComponent.ctorParameters = () => [
37
- { type: ChangeDetectorRef }
38
- ];
39
- UnorderedListComponent.propDecorators = {
40
- data: [{ type: Input }],
41
- keyPrefix: [{ type: Input }],
42
- listStyle: [{ type: Input }],
43
- path: [{ type: Input }],
44
- level: [{ type: Input }],
45
- templates: [{ type: Input }],
46
- templateDirectives: [{ type: ContentChildren, args: [UnorderedListTemplateDirective,] }],
47
- defaultKeyTemplate: [{ type: ViewChild, args: ["defaultKeyTemplate",] }],
48
- defaultValueTemplate: [{ type: ViewChild, args: ["defaultValueTemplate",] }],
49
- defaultItemTemplate: [{ type: ViewChild, args: ["defaultItemTemplate",] }]
50
- };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5vcmRlcmVkLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21wb25lbnRzL3Vub3JkZXJlZC1saXN0L3Vub3JkZXJlZC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUd1QixTQUFTLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQU1sRyxNQUFNLE9BQU8sc0JBQXNCO0lBdUIvQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7UUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9FLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDakMsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7O1lBcERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQiw2L0hBQThDO2FBQ2pEOzs7WUFmRyxpQkFBaUI7OzttQkFrQmhCLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDTCxLQUFLO2lDQU1MLGVBQWUsU0FBQyw4QkFBOEI7aUNBRzlDLFNBQVMsU0FBQyxvQkFBb0I7bUNBRTlCLFNBQVMsU0FBQyxzQkFBc0I7a0NBRWhDLFNBQVMsU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VW5vcmRlcmVkTGlzdFN0eWxlLCBVbm9yZGVyZWRMaXN0VGVtcGxhdGVzLCBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtVbm9yZGVyZWRMaXN0VGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Vub3JkZXJlZC1saXN0LXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ1bm9yZGVyZWQtbGlzdFwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi91bm9yZGVyZWQtbGlzdC5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVbm9yZGVyZWRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBrZXlQcmVmaXg6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGxpc3RTdHlsZTogVW5vcmRlcmVkTGlzdFN0eWxlO1xyXG4gICAgQElucHV0KCkgcGF0aDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogVW5vcmVkZXJlZExpc3RUZW1wbGF0ZVtdO1xyXG5cclxuICAgIGlzQXJyYXk6IGJvb2xlYW47XHJcbiAgICBpc09iamVjdDogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRUZW1wbGF0ZXM6IFVub3JkZXJlZExpc3RUZW1wbGF0ZXM7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihVbm9yZGVyZWRMaXN0VGVtcGxhdGVEaXJlY3RpdmUpXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlRGlyZWN0aXZlczogUXVlcnlMaXN0PFVub3JkZXJlZExpc3RUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRLZXlUZW1wbGF0ZVwiKVxyXG4gICAgcHJpdmF0ZSBkZWZhdWx0S2V5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKFwiZGVmYXVsdFZhbHVlVGVtcGxhdGVcIilcclxuICAgIHByaXZhdGUgZGVmYXVsdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKFwiZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiKVxyXG4gICAgcHJpdmF0ZSBkZWZhdWx0SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHRoaXMua2V5UHJlZml4ID0gXCJcIjtcclxuICAgICAgICB0aGlzLmxpc3RTdHlsZSA9IFwidGFibGVcIjtcclxuICAgICAgICB0aGlzLnBhdGggPSBcIlwiO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzQXJyYXkgPSBPYmplY3RVdGlscy5pc0FycmF5KHRoaXMuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5pc09iamVjdCA9IE9iamVjdFV0aWxzLmlzT2JqZWN0KHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMudGVtcGxhdGVEaXJlY3RpdmVzLnRvQXJyYXkoKTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHRoaXMudGVtcGxhdGVzID8gdGhpcy50ZW1wbGF0ZXMuY29uY2F0KHRlbXBsYXRlcykgOiB0ZW1wbGF0ZXM7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRUZW1wbGF0ZXMgPSB7XHJcbiAgICAgICAgICAgIGtleTogdGhpcy5kZWZhdWx0S2V5VGVtcGxhdGUsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmRlZmF1bHRWYWx1ZVRlbXBsYXRlLFxyXG4gICAgICAgICAgICBpdGVtOiB0aGlzLmRlZmF1bHRJdGVtVGVtcGxhdGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,66 +0,0 @@
1
- import { Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from "@angular/core";
2
- import { TOASTER_SERVICE } from "../common-types";
3
- export class AsyncMethodBase {
4
- constructor(toaster) {
5
- this.toaster = toaster;
6
- this.onSuccess = new EventEmitter();
7
- this.onError = new EventEmitter();
8
- }
9
- get isDisabled() {
10
- return this.disabled;
11
- }
12
- get isLoading() {
13
- return this.loading;
14
- }
15
- getMethod() {
16
- return null;
17
- }
18
- click() {
19
- if (this.disabled)
20
- return;
21
- this.callMethod();
22
- }
23
- callMethod() {
24
- if (this.loading)
25
- return true;
26
- this.loading = true;
27
- const method = this.getMethod();
28
- const result = !method ? null : method(this.context);
29
- if (!(result instanceof Promise)) {
30
- this.loading = false;
31
- return false;
32
- }
33
- result.then(result => {
34
- this.loading = false;
35
- if (result) {
36
- this.onSuccess.emit(result);
37
- this.toaster.success(result.message, result.context);
38
- }
39
- }, reason => {
40
- if (!reason || !reason.message)
41
- throw new Error("Reason must implement IAsyncMessage interface");
42
- this.loading = false;
43
- this.onError.emit(reason);
44
- this.toaster.error(reason.message, reason.context);
45
- });
46
- return true;
47
- }
48
- }
49
- AsyncMethodBase.decorators = [
50
- { type: Directive, args: [{
51
- selector: "[_abstract_asyncMethodBase]"
52
- },] }
53
- ];
54
- AsyncMethodBase.ctorParameters = () => [
55
- { type: undefined, decorators: [{ type: Inject, args: [TOASTER_SERVICE,] }] }
56
- ];
57
- AsyncMethodBase.propDecorators = {
58
- disabled: [{ type: Input }],
59
- context: [{ type: Input }],
60
- onSuccess: [{ type: Output }],
61
- onError: [{ type: Output }],
62
- isDisabled: [{ type: HostBinding, args: ["class.disabled",] }],
63
- isLoading: [{ type: HostBinding, args: ["class.loading",] }],
64
- click: [{ type: HostListener, args: ["click",] }]
65
- };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtbWV0aG9kLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2RpcmVjdGl2ZXMvYXN5bmMtbWV0aG9kLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQThDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdGLE1BQU0sT0FBTyxlQUFlO0lBb0J4QixZQUE4QyxPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDckQsQ0FBQztJQWJELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFPUyxTQUFTO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLE1BQU0sRUFBRTtnQkFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEQ7UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OztZQTdESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjthQUMxQzs7OzRDQXFCZ0IsTUFBTSxTQUFDLGVBQWU7Ozt1QkFsQmxDLEtBQUs7c0JBQ0wsS0FBSzt3QkFFTCxNQUFNO3NCQUNOLE1BQU07eUJBSU4sV0FBVyxTQUFDLGdCQUFnQjt3QkFLNUIsV0FBVyxTQUFDLGVBQWU7b0JBYzNCLFlBQVksU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FzeW5jTWV0aG9kLCBJQXN5bmNNZXNzYWdlLCBJVG9hc3RlclNlcnZpY2UsIFRPQVNURVJfU0VSVklDRX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbX2Fic3RyYWN0X2FzeW5jTWV0aG9kQmFzZV1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXN5bmNNZXRob2RCYXNlIHtcclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25TdWNjZXNzOiBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT47XHJcbiAgICBAT3V0cHV0KCkgb25FcnJvcjogRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+O1xyXG5cclxuICAgIHByb3RlY3RlZCBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmRpc2FibGVkXCIpXHJcbiAgICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5sb2FkaW5nXCIpXHJcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChUT0FTVEVSX1NFUlZJQ0UpIHJlYWRvbmx5IHRvYXN0ZXI6IElUb2FzdGVyU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMub25TdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPigpO1xyXG4gICAgICAgIHRoaXMub25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT4oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TWV0aG9kKCk6IEFzeW5jTWV0aG9kIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIilcclxuICAgIGNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jYWxsTWV0aG9kKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbE1ldGhvZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TWV0aG9kKCk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gIW1ldGhvZCA/IG51bGwgOiBtZXRob2QodGhpcy5jb250ZXh0KTtcclxuICAgICAgICBpZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3MuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UsIHJlc3VsdC5jb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHJlYXNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVhc29uIHx8ICFyZWFzb24ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBtdXN0IGltcGxlbWVudCBJQXN5bmNNZXNzYWdlIGludGVyZmFjZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KHJlYXNvbik7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uLmNvbnRleHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==