ngx-ode-ui 4.6.0-dev.0 → 4.6.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/esm2020/lib/components/datepicker/datepicker.component.mjs +148 -0
  2. package/esm2020/lib/components/dropdown/dropdown.component.mjs +55 -0
  3. package/esm2020/lib/components/ellipsis/ellipsis.component.mjs +53 -0
  4. package/esm2020/lib/components/form-errors/form-errors.component.mjs +35 -0
  5. package/esm2020/lib/components/form-field/form-field.component.mjs +24 -0
  6. package/esm2020/lib/components/item-tree/item-tree.component.mjs +170 -0
  7. package/esm2020/lib/components/lightbox/lightbox.component.mjs +70 -0
  8. package/esm2020/lib/components/lightbox-confirm/lightbox-confirm.component.mjs +43 -0
  9. package/esm2020/lib/components/list/list.component.mjs +88 -0
  10. package/esm2020/lib/components/list-checkable/list-checkable.component.mjs +79 -0
  11. package/esm2020/lib/components/message-box/message-box.component.mjs +92 -0
  12. package/esm2020/lib/components/message-sticker/message-sticker.component.mjs +51 -0
  13. package/esm2020/lib/components/mono-select/mono-select.component.mjs +83 -0
  14. package/esm2020/lib/components/multi-combo/multi-combo.component.mjs +166 -0
  15. package/esm2020/lib/components/multi-select/multi-select.component.mjs +104 -0
  16. package/esm2020/lib/components/panel-section/panel-section.component.mjs +23 -0
  17. package/esm2020/lib/components/portal/portal.component.mjs +15 -0
  18. package/esm2020/lib/components/push-panel/push-panel.component.mjs +43 -0
  19. package/esm2020/lib/components/search-input/search-input.component.mjs +87 -0
  20. package/esm2020/lib/components/search-toolbar/search-toolbar.component.mjs +56 -0
  21. package/esm2020/lib/components/side-layout/side-layout.component.mjs +23 -0
  22. package/esm2020/lib/components/side-panel/side-panel.component.mjs +41 -0
  23. package/esm2020/lib/components/spinner-cube/spinner-cube.component.mjs +31 -0
  24. package/esm2020/lib/components/table/pager.component.mjs +48 -0
  25. package/esm2020/lib/components/tooltip/tooltip.component.mjs +104 -0
  26. package/esm2020/lib/components/upload-files/upload-files.component.mjs +59 -0
  27. package/esm2020/lib/components/value-editable/simple-select.component.mjs +29 -0
  28. package/esm2020/lib/components/wizard/wizard.component.mjs +152 -0
  29. package/esm2020/lib/directives/anchor.directive.mjs +27 -0
  30. package/esm2020/lib/directives/drag-and-drop-files.directive.mjs +82 -0
  31. package/esm2020/lib/directives/dynamic-component/component-descriptor.model.mjs +15 -0
  32. package/esm2020/lib/directives/dynamic-component/dynamic-component.directive.mjs +58 -0
  33. package/esm2020/lib/directives/dynamictemplate.directive.mjs +83 -0
  34. package/esm2020/lib/directives/object-url.directive.mjs +28 -0
  35. package/esm2020/lib/ngx-ode-ui.module.mjs +282 -0
  36. package/esm2020/lib/pipes/bytes.pipe.mjs +20 -0
  37. package/esm2020/lib/pipes/filter.pipe.mjs +97 -0
  38. package/esm2020/lib/pipes/flattenObjArray.pipe.mjs +35 -0
  39. package/esm2020/lib/pipes/keys.pipe.mjs +20 -0
  40. package/esm2020/lib/pipes/length.pipe.mjs +17 -0
  41. package/esm2020/lib/pipes/limit.pipe.mjs +17 -0
  42. package/esm2020/lib/pipes/localizedDate.pipe.mjs +23 -0
  43. package/esm2020/lib/pipes/orderBy.pipe.mjs +161 -0
  44. package/esm2020/lib/pipes/replace.pipe.mjs +20 -0
  45. package/esm2020/lib/pipes/store.pipe.mjs +17 -0
  46. package/esm2020/lib/services/dynamicModuleImports.service.mjs +13 -0
  47. package/esm2020/lib/services/inputFile.service.mjs +56 -0
  48. package/esm2020/lib/services/labels.service.mjs +32 -0
  49. package/esm2020/lib/services/spinner.service.mjs +76 -0
  50. package/esm2020/lib/utils/math.mjs +19 -0
  51. package/esm2020/lib/utils/string.mjs +11 -0
  52. package/esm2020/lib/utils/testing.mjs +7 -0
  53. package/esm2020/ngx-ode-ui.mjs +5 -0
  54. package/esm2020/public-api.mjs +57 -0
  55. package/fesm2015/ngx-ode-ui.mjs +2954 -0
  56. package/fesm2015/ngx-ode-ui.mjs.map +1 -0
  57. package/fesm2020/ngx-ode-ui.mjs +2952 -0
  58. package/fesm2020/ngx-ode-ui.mjs.map +1 -0
  59. package/index.d.ts +5 -0
  60. package/lib/components/datepicker/datepicker.component.d.ts +7 -2
  61. package/lib/components/dropdown/dropdown.component.d.ts +3 -0
  62. package/lib/components/ellipsis/ellipsis.component.d.ts +4 -1
  63. package/lib/components/form-errors/form-errors.component.d.ts +3 -0
  64. package/lib/components/form-field/form-field.component.d.ts +3 -0
  65. package/lib/components/item-tree/item-tree.component.d.ts +5 -1
  66. package/lib/components/lightbox/lightbox.component.d.ts +5 -1
  67. package/lib/components/lightbox-confirm/lightbox-confirm.component.d.ts +3 -0
  68. package/lib/components/list/list.component.d.ts +5 -1
  69. package/lib/components/list-checkable/list-checkable.component.d.ts +5 -1
  70. package/lib/components/message-box/message-box.component.d.ts +8 -4
  71. package/lib/components/message-sticker/message-sticker.component.d.ts +3 -0
  72. package/lib/components/mono-select/mono-select.component.d.ts +3 -0
  73. package/lib/components/multi-combo/multi-combo.component.d.ts +4 -1
  74. package/lib/components/multi-select/multi-select.component.d.ts +3 -0
  75. package/lib/components/panel-section/panel-section.component.d.ts +3 -0
  76. package/lib/components/portal/portal.component.d.ts +3 -0
  77. package/lib/components/push-panel/push-panel.component.d.ts +4 -1
  78. package/lib/components/search-input/search-input.component.d.ts +5 -1
  79. package/lib/components/search-toolbar/search-toolbar.component.d.ts +3 -0
  80. package/lib/components/side-layout/side-layout.component.d.ts +3 -0
  81. package/lib/components/side-panel/side-panel.component.d.ts +4 -1
  82. package/lib/components/spinner-cube/spinner-cube.component.d.ts +5 -1
  83. package/lib/components/table/pager.component.d.ts +3 -0
  84. package/lib/components/tooltip/tooltip.component.d.ts +3 -0
  85. package/lib/components/upload-files/upload-files.component.d.ts +3 -0
  86. package/lib/components/value-editable/simple-select.component.d.ts +3 -0
  87. package/lib/components/wizard/wizard.component.d.ts +5 -0
  88. package/lib/directives/anchor.directive.d.ts +3 -0
  89. package/lib/directives/drag-and-drop-files.directive.d.ts +3 -0
  90. package/lib/directives/dynamic-component/dynamic-component.directive.d.ts +3 -0
  91. package/lib/directives/dynamictemplate.directive.d.ts +4 -1
  92. package/lib/directives/object-url.directive.d.ts +3 -0
  93. package/lib/ngx-ode-ui.module.d.ts +53 -2
  94. package/lib/pipes/bytes.pipe.d.ts +3 -0
  95. package/lib/pipes/filter.pipe.d.ts +3 -0
  96. package/lib/pipes/flattenObjArray.pipe.d.ts +3 -0
  97. package/lib/pipes/keys.pipe.d.ts +3 -0
  98. package/lib/pipes/length.pipe.d.ts +3 -0
  99. package/lib/pipes/limit.pipe.d.ts +3 -0
  100. package/lib/pipes/localizedDate.pipe.d.ts +3 -0
  101. package/lib/pipes/orderBy.pipe.d.ts +3 -0
  102. package/lib/pipes/replace.pipe.d.ts +8 -0
  103. package/lib/pipes/store.pipe.d.ts +3 -0
  104. package/lib/services/dynamicModuleImports.service.d.ts +3 -0
  105. package/lib/services/inputFile.service.d.ts +3 -0
  106. package/lib/services/labels.service.d.ts +3 -0
  107. package/lib/services/spinner.service.d.ts +4 -1
  108. package/package.json +29 -17
  109. package/public-api.d.ts +3 -0
  110. package/CHANGELOG.md +0 -14
  111. package/bundles/ngx-ode-ui.umd.js +0 -5805
  112. package/bundles/ngx-ode-ui.umd.js.map +0 -1
  113. package/bundles/ngx-ode-ui.umd.min.js +0 -17
  114. package/bundles/ngx-ode-ui.umd.min.js.map +0 -1
  115. package/esm2015/lib/components/datepicker/datepicker.component.js +0 -261
  116. package/esm2015/lib/components/dropdown/dropdown.component.js +0 -76
  117. package/esm2015/lib/components/ellipsis/ellipsis.component.js +0 -98
  118. package/esm2015/lib/components/form-errors/form-errors.component.js +0 -65
  119. package/esm2015/lib/components/form-field/form-field.component.js +0 -40
  120. package/esm2015/lib/components/item-tree/item-tree.component.js +0 -289
  121. package/esm2015/lib/components/lightbox/lightbox.component.js +0 -129
  122. package/esm2015/lib/components/lightbox-confirm/lightbox-confirm.component.js +0 -65
  123. package/esm2015/lib/components/list/list.component.js +0 -140
  124. package/esm2015/lib/components/list-checkable/list-checkable.component.js +0 -137
  125. package/esm2015/lib/components/message-box/message-box.component.js +0 -153
  126. package/esm2015/lib/components/message-sticker/message-sticker.component.js +0 -81
  127. package/esm2015/lib/components/mono-select/mono-select.component.js +0 -164
  128. package/esm2015/lib/components/multi-combo/multi-combo.component.js +0 -255
  129. package/esm2015/lib/components/multi-select/multi-select.component.js +0 -214
  130. package/esm2015/lib/components/panel-section/panel-section.component.js +0 -38
  131. package/esm2015/lib/components/portal/portal.component.js +0 -27
  132. package/esm2015/lib/components/push-panel/push-panel.component.js +0 -81
  133. package/esm2015/lib/components/search-input/search-input.component.js +0 -177
  134. package/esm2015/lib/components/search-toolbar/search-toolbar.component.js +0 -84
  135. package/esm2015/lib/components/side-layout/side-layout.component.js +0 -39
  136. package/esm2015/lib/components/side-panel/side-panel.component.js +0 -76
  137. package/esm2015/lib/components/spinner-cube/spinner-cube.component.js +0 -67
  138. package/esm2015/lib/components/table/pager.component.js +0 -95
  139. package/esm2015/lib/components/tooltip/tooltip.component.js +0 -172
  140. package/esm2015/lib/components/upload-files/upload-files.component.js +0 -112
  141. package/esm2015/lib/components/value-editable/simple-select.component.js +0 -57
  142. package/esm2015/lib/components/wizard/wizard.component.js +0 -225
  143. package/esm2015/lib/directives/anchor.directive.js +0 -34
  144. package/esm2015/lib/directives/drag-and-drop-files.directive.js +0 -126
  145. package/esm2015/lib/directives/dynamic-component/component-descriptor.model.js +0 -34
  146. package/esm2015/lib/directives/dynamic-component/dynamic-component.directive.js +0 -100
  147. package/esm2015/lib/directives/dynamictemplate.directive.js +0 -159
  148. package/esm2015/lib/directives/object-url.directive.js +0 -53
  149. package/esm2015/lib/ngx-ode-ui.module.js +0 -188
  150. package/esm2015/lib/pipes/bytes.pipe.js +0 -27
  151. package/esm2015/lib/pipes/filter.pipe.js +0 -141
  152. package/esm2015/lib/pipes/flattenObjArray.pipe.js +0 -52
  153. package/esm2015/lib/pipes/keys.pipe.js +0 -27
  154. package/esm2015/lib/pipes/length.pipe.js +0 -22
  155. package/esm2015/lib/pipes/limit.pipe.js +0 -24
  156. package/esm2015/lib/pipes/localizedDate.pipe.js +0 -44
  157. package/esm2015/lib/pipes/orderBy.pipe.js +0 -269
  158. package/esm2015/lib/pipes/store.pipe.js +0 -24
  159. package/esm2015/lib/services/dynamicModuleImports.service.js +0 -19
  160. package/esm2015/lib/services/inputFile.service.js +0 -80
  161. package/esm2015/lib/services/labels.service.js +0 -54
  162. package/esm2015/lib/services/spinner.service.js +0 -163
  163. package/esm2015/lib/utils/math.js +0 -49
  164. package/esm2015/lib/utils/string.js +0 -29
  165. package/esm2015/lib/utils/testing.js +0 -20
  166. package/esm2015/ngx-ode-ui.js +0 -12
  167. package/esm2015/public-api.js +0 -59
  168. package/esm5/lib/components/datepicker/datepicker.component.js +0 -292
  169. package/esm5/lib/components/dropdown/dropdown.component.js +0 -81
  170. package/esm5/lib/components/ellipsis/ellipsis.component.js +0 -106
  171. package/esm5/lib/components/form-errors/form-errors.component.js +0 -73
  172. package/esm5/lib/components/form-field/form-field.component.js +0 -41
  173. package/esm5/lib/components/item-tree/item-tree.component.js +0 -345
  174. package/esm5/lib/components/lightbox/lightbox.component.js +0 -141
  175. package/esm5/lib/components/lightbox-confirm/lightbox-confirm.component.js +0 -67
  176. package/esm5/lib/components/list/list.component.js +0 -146
  177. package/esm5/lib/components/list-checkable/list-checkable.component.js +0 -148
  178. package/esm5/lib/components/message-box/message-box.component.js +0 -190
  179. package/esm5/lib/components/message-sticker/message-sticker.component.js +0 -92
  180. package/esm5/lib/components/mono-select/mono-select.component.js +0 -192
  181. package/esm5/lib/components/multi-combo/multi-combo.component.js +0 -294
  182. package/esm5/lib/components/multi-select/multi-select.component.js +0 -258
  183. package/esm5/lib/components/panel-section/panel-section.component.js +0 -40
  184. package/esm5/lib/components/portal/portal.component.js +0 -28
  185. package/esm5/lib/components/push-panel/push-panel.component.js +0 -91
  186. package/esm5/lib/components/search-input/search-input.component.js +0 -200
  187. package/esm5/lib/components/search-toolbar/search-toolbar.component.js +0 -93
  188. package/esm5/lib/components/side-layout/side-layout.component.js +0 -41
  189. package/esm5/lib/components/side-panel/side-panel.component.js +0 -85
  190. package/esm5/lib/components/spinner-cube/spinner-cube.component.js +0 -76
  191. package/esm5/lib/components/table/pager.component.js +0 -113
  192. package/esm5/lib/components/tooltip/tooltip.component.js +0 -188
  193. package/esm5/lib/components/upload-files/upload-files.component.js +0 -133
  194. package/esm5/lib/components/value-editable/simple-select.component.js +0 -59
  195. package/esm5/lib/components/wizard/wizard.component.js +0 -161
  196. package/esm5/lib/directives/anchor.directive.js +0 -39
  197. package/esm5/lib/directives/drag-and-drop-files.directive.js +0 -146
  198. package/esm5/lib/directives/dynamic-component/component-descriptor.model.js +0 -44
  199. package/esm5/lib/directives/dynamic-component/dynamic-component.directive.js +0 -109
  200. package/esm5/lib/directives/dynamictemplate.directive.js +0 -175
  201. package/esm5/lib/directives/object-url.directive.js +0 -62
  202. package/esm5/lib/ngx-ode-ui.module.js +0 -199
  203. package/esm5/lib/pipes/bytes.pipe.js +0 -37
  204. package/esm5/lib/pipes/filter.pipe.js +0 -179
  205. package/esm5/lib/pipes/flattenObjArray.pipe.js +0 -62
  206. package/esm5/lib/pipes/keys.pipe.js +0 -36
  207. package/esm5/lib/pipes/length.pipe.js +0 -30
  208. package/esm5/lib/pipes/limit.pipe.js +0 -35
  209. package/esm5/lib/pipes/localizedDate.pipe.js +0 -49
  210. package/esm5/lib/pipes/orderBy.pipe.js +0 -280
  211. package/esm5/lib/pipes/store.pipe.js +0 -35
  212. package/esm5/lib/services/dynamicModuleImports.service.js +0 -21
  213. package/esm5/lib/services/inputFile.service.js +0 -98
  214. package/esm5/lib/services/labels.service.js +0 -68
  215. package/esm5/lib/services/spinner.service.js +0 -195
  216. package/esm5/lib/utils/math.js +0 -49
  217. package/esm5/lib/utils/string.js +0 -29
  218. package/esm5/lib/utils/testing.js +0 -20
  219. package/esm5/ngx-ode-ui.js +0 -12
  220. package/esm5/public-api.js +0 -59
  221. package/fesm2015/ngx-ode-ui.js +0 -5028
  222. package/fesm2015/ngx-ode-ui.js.map +0 -1
  223. package/fesm5/ngx-ode-ui.js +0 -5561
  224. package/fesm5/ngx-ode-ui.js.map +0 -1
  225. package/ngx-ode-ui.d.ts +0 -6
  226. package/ngx-ode-ui.metadata.json +0 -1
@@ -0,0 +1,161 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class OrderPipe {
4
+ transform(array, sortPredicate, reverseOrder, compareFn) {
5
+ if (array == null || !sortPredicate) {
6
+ return array;
7
+ }
8
+ /*** ***/
9
+ const isString = (value) => {
10
+ return typeof value === 'string';
11
+ };
12
+ const isFunction = (value) => {
13
+ return typeof value === 'function';
14
+ };
15
+ const isArray = (value) => {
16
+ return value && value instanceof Array;
17
+ };
18
+ const isObject = (value) => {
19
+ return typeof value === 'object';
20
+ };
21
+ const isPrimitive = (value) => {
22
+ switch (typeof value) {
23
+ case 'number': /* falls through */
24
+ case 'boolean': /* falls through */
25
+ case 'string':
26
+ return true;
27
+ default:
28
+ return false;
29
+ }
30
+ };
31
+ const hasCustomToString = (value) => {
32
+ return value &&
33
+ typeof value.toString === 'function' &&
34
+ value.toString !== Object.prototype.toString;
35
+ };
36
+ const getComparisonObject = (value, index) => {
37
+ // NOTE: We are adding an extra `tieBreaker` value based on the element's index.
38
+ // This will be used to keep the sort stable when none of the input predicates can
39
+ // distinguish between two elements.
40
+ return {
41
+ value,
42
+ tieBreaker: { value: index, type: 'number', index },
43
+ predicateValues: predicates.map(function (predicate) {
44
+ return getPredicateValue(predicate.get(value), index);
45
+ })
46
+ };
47
+ };
48
+ const doComparison = (v1, v2) => {
49
+ for (let i = 0, ii = predicates.length; i < ii; i++) {
50
+ const result = compare(v1.predicateValues[i], v2.predicateValues[i]);
51
+ if (result) {
52
+ return result * predicates[i].descending * descending;
53
+ }
54
+ }
55
+ return compare(v1.tieBreaker, v2.tieBreaker) * descending;
56
+ };
57
+ const processPredicates = (sortPredicates) => {
58
+ return sortPredicates.map(function (predicate) {
59
+ let descending = 1, get = (value) => value;
60
+ if (isFunction(predicate)) {
61
+ get = predicate;
62
+ }
63
+ else if (isString(predicate)) {
64
+ if ((predicate.charAt(0) === '+' || predicate.charAt(0) === '-')) {
65
+ descending = predicate.charAt(0) === '-' ? -1 : 1;
66
+ predicate = predicate.substring(1);
67
+ }
68
+ if (predicate !== '') {
69
+ get = (value) => value[predicate];
70
+ }
71
+ }
72
+ return { get, descending };
73
+ });
74
+ };
75
+ const objectValue = (value) => {
76
+ // If `valueOf` is a valid function use that
77
+ if (isFunction(value.valueOf)) {
78
+ value = value.valueOf();
79
+ if (isPrimitive(value)) {
80
+ return value;
81
+ }
82
+ }
83
+ // If `toString` is a valid function and not the one from `Object.prototype` use that
84
+ if (hasCustomToString(value)) {
85
+ value = value.toString();
86
+ if (isPrimitive(value)) {
87
+ return value;
88
+ }
89
+ }
90
+ return value;
91
+ };
92
+ const getPredicateValue = (value, index) => {
93
+ let type = typeof value;
94
+ if (value === null) {
95
+ type = 'string';
96
+ value = 'null';
97
+ }
98
+ else if (type === 'object') {
99
+ value = objectValue(value);
100
+ }
101
+ return { value, type, index };
102
+ };
103
+ const defaultCompare = (v1, v2) => {
104
+ let result = 0;
105
+ const type1 = v1.type;
106
+ const type2 = v2.type;
107
+ if (type1 === type2) {
108
+ let value1 = v1.value;
109
+ let value2 = v2.value;
110
+ if (type1 === 'string') {
111
+ // Compare strings case-insensitively
112
+ value1 = value1.toLowerCase();
113
+ value2 = value2.toLowerCase();
114
+ result = value1.localeCompare(value2);
115
+ }
116
+ else if (type1 === 'object') {
117
+ // For basic objects, use the position of the object
118
+ // in the collection instead of the value
119
+ if (isObject(value1)) {
120
+ value1 = v1.index;
121
+ }
122
+ if (isObject(value2)) {
123
+ value2 = v2.index;
124
+ }
125
+ if (value1 !== value2) {
126
+ result = value1 < value2 ? -1 : 1;
127
+ }
128
+ }
129
+ }
130
+ else {
131
+ result = type1 < type2 ? -1 : 1;
132
+ }
133
+ return result;
134
+ };
135
+ /*** ***/
136
+ if (!isArray(sortPredicate)) {
137
+ sortPredicate = [sortPredicate];
138
+ }
139
+ if (sortPredicate.length === 0) {
140
+ sortPredicate = ['+'];
141
+ }
142
+ const predicates = processPredicates(sortPredicate);
143
+ const descending = reverseOrder ? -1 : 1;
144
+ // Define the `compare()` function. Use a default comparator if none is specified.
145
+ const compare = isFunction(compareFn) ? compareFn : defaultCompare;
146
+ // The next three lines are a version of a Swartzian Transform idiom from Perl
147
+ // (sometimes called the Decorate-Sort-Undecorate idiom)
148
+ // See https://en.wikipedia.org/wiki/Schwartzian_transform
149
+ const compareValues = Array.prototype.map.call(array, getComparisonObject);
150
+ compareValues.sort(doComparison);
151
+ array = compareValues.map(function (item) { return item.value; });
152
+ return array;
153
+ }
154
+ }
155
+ OrderPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: OrderPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
156
+ OrderPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: OrderPipe, name: "orderBy" });
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: OrderPipe, decorators: [{
158
+ type: Pipe,
159
+ args: [{ name: 'orderBy' }]
160
+ }] });
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJCeS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL3BpcGVzL29yZGVyQnkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7QUFHbEQsTUFBTSxPQUFPLFNBQVM7SUFFbEIsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBYSxFQUFFLFNBQVU7UUFDckQsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUV0RCxTQUFTO1FBQ1QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pCLE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxLQUFLLElBQUksS0FBSyxZQUFZLEtBQUssQ0FBQztRQUMzQyxDQUFDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO1FBQ3JDLENBQUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUIsUUFBUSxPQUFPLEtBQUssRUFBRTtnQkFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxtQkFBbUI7Z0JBQ2xDLEtBQUssU0FBUyxDQUFDLENBQUMsbUJBQW1CO2dCQUNuQyxLQUFLLFFBQVE7b0JBQ1QsT0FBTyxJQUFJLENBQUM7Z0JB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QU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6QyxrRkFBa0Y7UUFDbEYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUVuRSw4RUFBOEU7UUFDOUUsd0RBQXdEO1FBQ3hELDBEQUEwRDtRQUMxRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDM0UsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFTLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztzR0FuS1EsU0FBUztvR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoeyBuYW1lOiAnb3JkZXJCeScgfSlcbmV4cG9ydCBjbGFzcyBPcmRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybShhcnJheSwgc29ydFByZWRpY2F0ZSwgcmV2ZXJzZU9yZGVyPywgY29tcGFyZUZuPykge1xuICAgICAgICBpZiAoYXJyYXkgPT0gbnVsbCB8fCAhc29ydFByZWRpY2F0ZSkgeyByZXR1cm4gYXJyYXk7IH1cblxuICAgICAgICAvKioqICoqKi9cbiAgICAgICAgY29uc3QgaXNTdHJpbmcgPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzRnVuY3Rpb24gPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNBcnJheSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNPYmplY3QgPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzUHJpbWl0aXZlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6IC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzogLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoYXNDdXN0b21Ub1N0cmluZyA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGdldENvbXBhcmlzb25PYmplY3QgPSAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAvLyBOT1RFOiBXZSBhcmUgYWRkaW5nIGFuIGV4dHJhIGB0aWVCcmVha2VyYCB2YWx1ZSBiYXNlZCBvbiB0aGUgZWxlbWVudCdzIGluZGV4LlxuICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgdG8ga2VlcCB0aGUgc29ydCBzdGFibGUgd2hlbiBub25lIG9mIHRoZSBpbnB1dCBwcmVkaWNhdGVzIGNhblxuICAgICAgICAgICAgLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0d28gZWxlbWVudHMuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHRpZUJyZWFrZXI6IHsgdmFsdWU6IGluZGV4LCB0eXBlOiAnbnVtYmVyJywgaW5kZXggfSxcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVWYWx1ZXM6IHByZWRpY2F0ZXMubWFwKGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJlZGljYXRlVmFsdWUocHJlZGljYXRlLmdldCh2YWx1ZSksIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb0NvbXBhcmlzb24gPSAodjEsIHYyKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBwcmVkaWNhdGVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb21wYXJlKHYxLnByZWRpY2F0ZVZhbHVlc1tpXSwgdjIucHJlZGljYXRlVmFsdWVzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKiBwcmVkaWNhdGVzW2ldLmRlc2NlbmRpbmcgKiBkZXNjZW5kaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmUodjEudGllQnJlYWtlciwgdjIudGllQnJlYWtlcikgKiBkZXNjZW5kaW5nO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHByb2Nlc3NQcmVkaWNhdGVzID0gKHNvcnRQcmVkaWNhdGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc29ydFByZWRpY2F0ZXMubWFwKGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkZXNjZW5kaW5nID0gMSwgZ2V0ID0gKHZhbHVlKSA9PiB2YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0ID0gcHJlZGljYXRlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHByZWRpY2F0ZS5jaGFyQXQoMCkgPT09ICcrJyB8fCBwcmVkaWNhdGUuY2hhckF0KDApID09PSAnLScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjZW5kaW5nID0gcHJlZGljYXRlLmNoYXJBdCgwKSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlID0gcHJlZGljYXRlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocHJlZGljYXRlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0ID0gKHZhbHVlKSA9PiB2YWx1ZVtwcmVkaWNhdGVdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdldCwgZGVzY2VuZGluZyB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb2JqZWN0VmFsdWUgPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIC8vIElmIGB2YWx1ZU9mYCBpcyBhIHZhbGlkIGZ1bmN0aW9uIHVzZSB0aGF0XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZS52YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIGlmIChpc1ByaW1pdGl2ZSh2YWx1ZSkpIHsgcmV0dXJuIHZhbHVlOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBgdG9TdHJpbmdgIGlzIGEgdmFsaWQgZnVuY3Rpb24gYW5kIG5vdCB0aGUgb25lIGZyb20gYE9iamVjdC5wcm90b3R5cGVgIHVzZSB0aGF0XG4gICAgICAgICAgICBpZiAoaGFzQ3VzdG9tVG9TdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGlmIChpc1ByaW1pdGl2ZSh2YWx1ZSkpIHsgcmV0dXJuIHZhbHVlOyB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXRQcmVkaWNhdGVWYWx1ZSA9ICh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9ICdzdHJpbmcnO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gJ251bGwnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIHR5cGUsIGluZGV4IH07XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdENvbXBhcmUgPSAodjEsIHYyKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUxID0gdjEudHlwZTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUyID0gdjIudHlwZTtcblxuICAgICAgICAgICAgaWYgKHR5cGUxID09PSB0eXBlMikge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZTEgPSB2MS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUyID0gdjIudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZTEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHlcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUxID0gdmFsdWUxLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlMiA9IHZhbHVlMi50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlMSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGJhc2ljIG9iamVjdHMsIHVzZSB0aGUgcG9zaXRpb24gb2YgdGhlIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY29sbGVjdGlvbiBpbnN0ZWFkIG9mIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QodmFsdWUxKSkgeyB2YWx1ZTEgPSB2MS5pbmRleDsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QodmFsdWUyKSkgeyB2YWx1ZTIgPSB2Mi5pbmRleDsgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZTEgIT09IHZhbHVlMikge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHlwZTEgPCB0eXBlMiA/IC0xIDogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqKiAqKiovXG5cbiAgICAgICAgaWYgKCFpc0FycmF5KHNvcnRQcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICBzb3J0UHJlZGljYXRlID0gW3NvcnRQcmVkaWNhdGVdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3J0UHJlZGljYXRlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc29ydFByZWRpY2F0ZSA9IFsnKyddO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlZGljYXRlcyA9IHByb2Nlc3NQcmVkaWNhdGVzKHNvcnRQcmVkaWNhdGUpO1xuXG4gICAgICAgIGNvbnN0IGRlc2NlbmRpbmcgPSByZXZlcnNlT3JkZXIgPyAtMSA6IDE7XG5cbiAgICAgICAgLy8gRGVmaW5lIHRoZSBgY29tcGFyZSgpYCBmdW5jdGlvbi4gVXNlIGEgZGVmYXVsdCBjb21wYXJhdG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLlxuICAgICAgICBjb25zdCBjb21wYXJlID0gaXNGdW5jdGlvbihjb21wYXJlRm4pID8gY29tcGFyZUZuIDogZGVmYXVsdENvbXBhcmU7XG5cbiAgICAgICAgLy8gVGhlIG5leHQgdGhyZWUgbGluZXMgYXJlIGEgdmVyc2lvbiBvZiBhIFN3YXJ0emlhbiBUcmFuc2Zvcm0gaWRpb20gZnJvbSBQZXJsXG4gICAgICAgIC8vIChzb21ldGltZXMgY2FsbGVkIHRoZSBEZWNvcmF0ZS1Tb3J0LVVuZGVjb3JhdGUgaWRpb20pXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2h3YXJ0emlhbl90cmFuc2Zvcm1cbiAgICAgICAgY29uc3QgY29tcGFyZVZhbHVlcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhcnJheSwgZ2V0Q29tcGFyaXNvbk9iamVjdCk7XG4gICAgICAgIGNvbXBhcmVWYWx1ZXMuc29ydChkb0NvbXBhcmlzb24pO1xuICAgICAgICBhcnJheSA9IGNvbXBhcmVWYWx1ZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHsgcmV0dXJuIGl0ZW0udmFsdWU7IH0pO1xuXG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ReplacePipe {
4
+ transform(value, strToReplace, replacementStr) {
5
+ if (!value || !strToReplace || !replacementStr) {
6
+ return value;
7
+ }
8
+ return value.replace(new RegExp(this.escapeStr(strToReplace), 'g'), '' + replacementStr);
9
+ }
10
+ escapeStr(str) {
11
+ return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
12
+ }
13
+ }
14
+ ReplacePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
+ ReplacePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: ReplacePipe, name: "replace" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ReplacePipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{ name: 'replace' }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL3BpcGVzL3JlcGxhY2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsU0FBUyxDQUFDLEtBQWEsRUFBRSxZQUFvQixFQUFFLGNBQStCO1FBRTFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDNUMsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUFHO1FBQ2pCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDOzt3R0FaTSxXQUFXO3NHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHsgbmFtZTogJ3JlcGxhY2UnIH0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgc3RyVG9SZXBsYWNlOiBzdHJpbmcsIHJlcGxhY2VtZW50U3RyOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgICAgIGlmICghdmFsdWUgfHwgIXN0clRvUmVwbGFjZSB8fCAhcmVwbGFjZW1lbnRTdHIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodGhpcy5lc2NhcGVTdHIoc3RyVG9SZXBsYWNlKSwgJ2cnKSwgJycgKyByZXBsYWNlbWVudFN0cik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlc2NhcGVTdHIoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gICAgICB9XG59Il19
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class StorePipe {
4
+ transform(value, context, prop = '_storedRef') {
5
+ context[prop] = value;
6
+ return value;
7
+ }
8
+ }
9
+ StorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: StorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ StorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: StorePipe, name: "store" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: StorePipe, decorators: [{
12
+ type: Pipe,
13
+ args: [{
14
+ name: 'store'
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9waXBlcy9zdG9yZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUtsRCxNQUFNLE9BQU8sU0FBUztJQUVsQixTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsWUFBWTtRQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O3NHQUxRLFNBQVM7b0dBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUhyQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxPQUFPO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3RvcmUnXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgdHJhbnNmb3JtKHZhbHVlLCBjb250ZXh0LCBwcm9wID0gJ19zdG9yZWRSZWYnKSB7XG4gICAgICAgIGNvbnRleHRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DynamicModuleImportsService {
4
+ constructor() {
5
+ this.imports = [];
6
+ }
7
+ }
8
+ DynamicModuleImportsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicModuleImportsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
+ DynamicModuleImportsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicModuleImportsService });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: DynamicModuleImportsService, decorators: [{
11
+ type: Injectable
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY01vZHVsZUltcG9ydHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi9zZXJ2aWNlcy9keW5hbWljTW9kdWxlSW1wb3J0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR3pDLE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFFSSxZQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ2hCOzt3SEFGWSwyQkFBMkI7NEhBQTNCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2R1bGVJbXBvcnRzU2VydmljZSB7XG4gICAgaW1wb3J0cyA9IFtdO1xufVxuIl19
@@ -0,0 +1,56 @@
1
+ import { throwError as observableThrowError, Observable } from 'rxjs';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class InputFileService {
5
+ validateFiles(files, maxFilesNumber, allowedExtensions) {
6
+ if (!files) {
7
+ return observableThrowError('files is empty');
8
+ }
9
+ if (files.length > maxFilesNumber) {
10
+ return observableThrowError(`Only ${maxFilesNumber} file(s) allowed`);
11
+ }
12
+ const validFiles = [];
13
+ const invalidFiles = [];
14
+ for (let i = 0; i < files.length; i++) {
15
+ const filenameSplit = files[i].name.split('.');
16
+ const ext = filenameSplit[filenameSplit.length - 1];
17
+ if (allowedExtensions.lastIndexOf(ext.toLowerCase()) !== -1) {
18
+ validFiles.push(files[i]);
19
+ }
20
+ else {
21
+ invalidFiles.push(files[i]);
22
+ }
23
+ }
24
+ return new Observable(observer => {
25
+ if (validFiles.length > 0) {
26
+ observer.next(validFiles);
27
+ }
28
+ if (invalidFiles.length > 0) {
29
+ observer.error(`Extension not allowed. Allowed extensions: ${allowedExtensions}`);
30
+ }
31
+ observer.complete();
32
+ });
33
+ }
34
+ isSrcExternalUrl(src) {
35
+ if (src) {
36
+ return src.startsWith('http://') || src.startsWith('https://');
37
+ }
38
+ else {
39
+ return false;
40
+ }
41
+ }
42
+ isSrcWorkspace(src) {
43
+ if (src) {
44
+ return src.startsWith('/workspace');
45
+ }
46
+ else {
47
+ return false;
48
+ }
49
+ }
50
+ }
51
+ InputFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InputFileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ InputFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InputFileService });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InputFileService, decorators: [{
54
+ type: Injectable
55
+ }] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRGaWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvc2VydmljZXMvaW5wdXRGaWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixhQUFhLENBQUMsS0FBZSxFQUFFLGNBQXNCLEVBQUUsaUJBQTJCO1FBQ3JGLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFO1lBQy9CLE9BQU8sb0JBQW9CLENBQUMsUUFBUSxjQUFjLGtCQUFrQixDQUFDLENBQUM7U0FDekU7UUFFRCxNQUFNLFVBQVUsR0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6RCxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7U0FDSjtRQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QjtZQUNELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLFFBQVEsQ0FBQyxLQUFLLENBQUMsOENBQThDLGlCQUFpQixFQUFFLENBQUMsQ0FBQzthQUNyRjtZQUNELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxHQUFXO1FBQy9CLElBQUksR0FBRyxFQUFFO1lBQ0wsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEU7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxHQUFXO1FBQzdCLElBQUksR0FBRyxFQUFFO1lBQ0wsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZDO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7OzZHQTlDUSxnQkFBZ0I7aUhBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge3Rocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElucHV0RmlsZVNlcnZpY2Uge1xuICAgIHB1YmxpYyB2YWxpZGF0ZUZpbGVzKGZpbGVzOiBGaWxlTGlzdCwgbWF4RmlsZXNOdW1iZXI6IG51bWJlciwgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxGaWxlW10+IHtcbiAgICAgICAgaWYgKCFmaWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdmaWxlcyBpcyBlbXB0eScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiBtYXhGaWxlc051bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGBPbmx5ICR7bWF4RmlsZXNOdW1iZXJ9IGZpbGUocykgYWxsb3dlZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsaWRGaWxlczogRmlsZVtdID0gW107XG4gICAgICAgIGNvbnN0IGludmFsaWRGaWxlczogRmlsZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lU3BsaXQgPSBmaWxlc1tpXS5uYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBleHQgPSBmaWxlbmFtZVNwbGl0W2ZpbGVuYW1lU3BsaXQubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoYWxsb3dlZEV4dGVuc2lvbnMubGFzdEluZGV4T2YoZXh0LnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHZhbGlkRmlsZXMucHVzaChmaWxlc1tpXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGludmFsaWRGaWxlcy5wdXNoKGZpbGVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICBpZiAodmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWxpZEZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbnZhbGlkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGBFeHRlbnNpb24gbm90IGFsbG93ZWQuIEFsbG93ZWQgZXh0ZW5zaW9uczogJHthbGxvd2VkRXh0ZW5zaW9uc31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NyY0V4dGVybmFsVXJsKHNyYzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmMuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHNyYy5zdGFydHNXaXRoKCdodHRwczovLycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzU3JjV29ya3NwYWNlKHNyYzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmMuc3RhcnRzV2l0aCgnL3dvcmtzcGFjZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LabelsService {
4
+ constructor() {
5
+ this.labels = {
6
+ 'select.all': 'Select all',
7
+ 'deselect.all': 'Deselect all',
8
+ search: 'Search'
9
+ };
10
+ }
11
+ static withLabels(labels) {
12
+ const newService = new LabelsService();
13
+ for (const prop in labels) {
14
+ newService.labels[prop] = labels[prop];
15
+ }
16
+ return newService;
17
+ }
18
+ getLabel(label) {
19
+ return this.labels[label] || label;
20
+ }
21
+ mixin(labels) {
22
+ for (const property in labels) {
23
+ this.labels[property] = labels[property];
24
+ }
25
+ }
26
+ }
27
+ LabelsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: LabelsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ LabelsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: LabelsService });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: LabelsService, decorators: [{
30
+ type: Injectable
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvc2VydmljZXMvbGFiZWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFHWSxXQUFNLEdBQUc7WUFDYixZQUFZLEVBQUUsWUFBWTtZQUMxQixjQUFjLEVBQUUsY0FBYztZQUM5QixNQUFNLEVBQUUsUUFBUTtTQUNuQixDQUFDO0tBbUJMO0lBakJHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBYztRQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ3ZCLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFjO1FBQ2hCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQzs7MEdBeEJRLGFBQWE7OEdBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExhYmVsc1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBsYWJlbHMgPSB7XG4gICAgICAgICdzZWxlY3QuYWxsJzogJ1NlbGVjdCBhbGwnLFxuICAgICAgICAnZGVzZWxlY3QuYWxsJzogJ0Rlc2VsZWN0IGFsbCcsXG4gICAgICAgIHNlYXJjaDogJ1NlYXJjaCdcbiAgICB9O1xuXG4gICAgc3RhdGljIHdpdGhMYWJlbHMobGFiZWxzOiBPYmplY3QpIHtcbiAgICAgICAgY29uc3QgbmV3U2VydmljZSA9IG5ldyBMYWJlbHNTZXJ2aWNlKCk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBsYWJlbHMpIHtcbiAgICAgICAgICAgIG5ld1NlcnZpY2UubGFiZWxzW3Byb3BdID0gbGFiZWxzW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTZXJ2aWNlO1xuICAgIH1cblxuICAgIGdldExhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxzW2xhYmVsXSB8fCBsYWJlbDtcbiAgICB9XG5cbiAgICBtaXhpbihsYWJlbHM6IE9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxhYmVscykge1xuICAgICAgICAgICAgdGhpcy5sYWJlbHNbcHJvcGVydHldID0gbGFiZWxzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class SpinnerService {
5
+ constructor(appRef) {
6
+ this.appRef = appRef;
7
+ this.timer = 250;
8
+ this.loading = new Set();
9
+ this.timers = new Map();
10
+ this._trigger = new Subject();
11
+ this.wrap = (func, label, props = {}, ...args) => {
12
+ this.load(label, props.delay);
13
+ const promise = props.binding ?
14
+ func.bind(props.binding)(...args) :
15
+ func(...args);
16
+ promise.catch((err) => {
17
+ this.done(label);
18
+ throw err;
19
+ }).then(_ => {
20
+ this.done(label);
21
+ return _;
22
+ });
23
+ if (props.cdRef) {
24
+ props.cdRef.markForCheck();
25
+ }
26
+ return promise;
27
+ };
28
+ }
29
+ get trigger() {
30
+ return this._trigger;
31
+ }
32
+ isLoading(something, pending = false) {
33
+ return this.loading.has(something) ||
34
+ (pending && this.timers.has(something));
35
+ }
36
+ perform(something, promise, timer) {
37
+ this.load(something, timer);
38
+ return promise.catch(err => {
39
+ this.done(something);
40
+ throw err;
41
+ }).then(_ => {
42
+ this.done(something);
43
+ return _;
44
+ });
45
+ }
46
+ load(something, timer) {
47
+ if (this.timers.has(something)) {
48
+ window.clearTimeout(this.timers.get(something));
49
+ }
50
+ const addToQueue = () => {
51
+ this.loading.add(something);
52
+ this.timers.delete(something);
53
+ this.appRef.tick();
54
+ this.trigger.next(true);
55
+ };
56
+ if (timer === 0) {
57
+ addToQueue();
58
+ }
59
+ else {
60
+ this.timers.set(something, window.setTimeout(addToQueue, timer || this.timer));
61
+ }
62
+ }
63
+ done(something) {
64
+ window.clearTimeout(this.timers.get(something));
65
+ this.timers.delete(something);
66
+ this.loading.delete(something);
67
+ this.trigger.next(true);
68
+ this.appRef.tick();
69
+ }
70
+ }
71
+ SpinnerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SpinnerService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
72
+ SpinnerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SpinnerService });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SpinnerService, decorators: [{
74
+ type: Injectable
75
+ }], ctorParameters: function () { return [{ type: i0.ApplicationRef }]; } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL3NlcnZpY2VzL3NwaW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUc3QixNQUFNLE9BQU8sY0FBYztJQUV2QixZQUFvQixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUUxQyxVQUFLLEdBQUcsR0FBRyxDQUFDO1FBRUosWUFBTyxHQUFHLElBQUksR0FBRyxFQUFPLENBQUM7UUFDekIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFFaEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFnRGpDLFNBQUksR0FBRyxDQUFDLElBQWlDLEVBQUUsS0FBYSxFQUNoRCxRQUFzRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUV6RixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRWxCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakIsTUFBTSxHQUFHLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakIsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQUU7WUFFaEQsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQyxDQUFBO0lBekU0QyxDQUFDO0lBUTlDLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUM5QixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLENBQUksU0FBYyxFQUFFLE9BQW1CLEVBQUUsS0FBYztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUUsR0FBRyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQixNQUFNLEdBQUcsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckIsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBYyxFQUFFLEtBQWM7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFFRixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDYixVQUFVLEVBQUUsQ0FBQztTQUNoQjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRjtJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUztRQUNWLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OzJHQXZEUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb25SZWYsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTcGlubmVyU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHt9XG5cbiAgICB0aW1lciA9IDI1MDtcblxuICAgIHByaXZhdGUgbG9hZGluZyA9IG5ldyBTZXQ8YW55PigpO1xuICAgIHByaXZhdGUgdGltZXJzID0gbmV3IE1hcDxhbnksIG51bWJlcj4oKTtcblxuICAgIHByaXZhdGUgX3RyaWdnZXIgPSBuZXcgU3ViamVjdCgpO1xuICAgIGdldCB0cmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcjtcbiAgICB9XG5cbiAgICBpc0xvYWRpbmcoc29tZXRoaW5nLCBwZW5kaW5nID0gZmFsc2UpOiBib29sZWFuICB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmcuaGFzKHNvbWV0aGluZykgfHxcbiAgICAgICAgICAgIChwZW5kaW5nICYmIHRoaXMudGltZXJzLmhhcyhzb21ldGhpbmcpKTtcbiAgICB9XG5cbiAgICBwZXJmb3JtPFQ+KHNvbWV0aGluZzogYW55LCBwcm9taXNlOiBQcm9taXNlPFQ+LCB0aW1lcj86IG51bWJlcik6IFByb21pc2U8VD4ge1xuICAgICAgICB0aGlzLmxvYWQoc29tZXRoaW5nLCB0aW1lcik7XG4gICAgICAgIHJldHVybiBwcm9taXNlLmNhdGNoKCBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5kb25lKHNvbWV0aGluZyk7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pLnRoZW4oIF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5kb25lKHNvbWV0aGluZyk7XG4gICAgICAgICAgICByZXR1cm4gXztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZChzb21ldGhpbmc6IGFueSwgdGltZXI/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXJzLmhhcyhzb21ldGhpbmcpKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXJzLmdldChzb21ldGhpbmcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZFRvUXVldWUgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcuYWRkKHNvbWV0aGluZyk7XG4gICAgICAgICAgICB0aGlzLnRpbWVycy5kZWxldGUoc29tZXRoaW5nKTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlci5uZXh0KHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aW1lciA9PT0gMCkge1xuICAgICAgICAgICAgYWRkVG9RdWV1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aW1lcnMuc2V0KHNvbWV0aGluZywgd2luZG93LnNldFRpbWVvdXQoYWRkVG9RdWV1ZSwgdGltZXIgfHwgdGhpcy50aW1lcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZG9uZShzb21ldGhpbmcpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVycy5nZXQoc29tZXRoaW5nKSk7XG4gICAgICAgIHRoaXMudGltZXJzLmRlbGV0ZShzb21ldGhpbmcpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuZGVsZXRlKHNvbWV0aGluZyk7XG4gICAgICAgIHRoaXMudHJpZ2dlci5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgfVxuXG4gICAgd3JhcCA9IChmdW5jOiAoLi4ucGFyYW1zKSA9PiBQcm9taXNlPGFueT4sIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgICAgICBwcm9wczogeyBkZWxheT86IG51bWJlciwgYmluZGluZz86IGFueSwgY2RSZWY/OiBDaGFuZ2VEZXRlY3RvclJlZiB9ID0ge30sIC4uLmFyZ3MpID0+IHtcblxuICAgICAgICB0aGlzLmxvYWQobGFiZWwsIHByb3BzLmRlbGF5KTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHByb3BzLmJpbmRpbmcgP1xuICAgICAgICAgICAgZnVuYy5iaW5kKHByb3BzLmJpbmRpbmcpKC4uLmFyZ3MpIDpcbiAgICAgICAgICAgIGZ1bmMoLi4uYXJncyk7XG5cbiAgICAgICAgcHJvbWlzZS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvbmUobGFiZWwpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KS50aGVuKF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5kb25lKGxhYmVsKTtcbiAgICAgICAgICAgIHJldHVybiBfO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3BzLmNkUmVmKSB7IHByb3BzLmNkUmVmLm1hcmtGb3JDaGVjaygpOyB9XG5cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ export const UNITS = [
2
+ { label: "quota.byte", value: 1 },
3
+ { label: "quota.kilobyte", value: 1024 },
4
+ { label: "quota.megabyte", value: Math.pow(1024, 2) },
5
+ { label: "quota.gigabyte", value: Math.pow(1024, 3) }
6
+ ];
7
+ export function toDecimal(value, decimal) {
8
+ return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);
9
+ }
10
+ export function getUnit(bytes) {
11
+ let unit = 0;
12
+ let finalValue = bytes;
13
+ while (finalValue >= 1024 && unit < 3) {
14
+ finalValue = finalValue / 1024;
15
+ unit++;
16
+ }
17
+ return UNITS[unit];
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi91dGlscy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBZ0I7SUFDOUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDakMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN4QyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDckQsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0NBQ3hELENBQUM7QUFFRixNQUFNLFVBQVUsU0FBUyxDQUFFLEtBQWEsRUFBRSxPQUFlO0lBQ3JELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhO0lBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFNLFVBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUNsQyxVQUFVLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLEVBQUUsQ0FBQztLQUNWO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVW5pdCB7XG4gICAgLyoqIGkxOG4ga2V5IG9mIHVuaXQgdHJhbnNsYXRpb24uICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgVU5JVFM6IEFycmF5PFVuaXQ+ID0gW1xuICAgIHsgbGFiZWw6IFwicXVvdGEuYnl0ZVwiLCB2YWx1ZTogMSB9LFxuICAgIHsgbGFiZWw6IFwicXVvdGEua2lsb2J5dGVcIiwgdmFsdWU6IDEwMjQgfSxcbiAgICB7IGxhYmVsOiBcInF1b3RhLm1lZ2FieXRlXCIsIHZhbHVlOiBNYXRoLnBvdygxMDI0LCAyKSB9LFxuICAgIHsgbGFiZWw6IFwicXVvdGEuZ2lnYWJ5dGVcIiwgdmFsdWU6IE1hdGgucG93KDEwMjQsIDMpIH1cbl07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RlY2ltYWwgKHZhbHVlOiBudW1iZXIsIGRlY2ltYWw6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBNYXRoLnBvdygxMCwgZGVjaW1hbCkpIC8gTWF0aC5wb3coMTAsIGRlY2ltYWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pdChieXRlczogbnVtYmVyKTogVW5pdCB7XG4gICAgbGV0IHVuaXQgPSAwO1xuICAgIGxldCBmaW5hbFZhbHVlID0gYnl0ZXM7XG4gICAgd2hpbGUoZmluYWxWYWx1ZSA+PSAxMDI0ICYmIHVuaXQgPCAzKSB7XG4gICAgICAgIGZpbmFsVmFsdWUgPSBmaW5hbFZhbHVlIC8gMTAyNDtcbiAgICAgICAgdW5pdCsrO1xuICAgIH1cbiAgICByZXR1cm4gVU5JVFNbdW5pdF07XG59Il19
@@ -0,0 +1,11 @@
1
+ export function trim(text) {
2
+ if (text && text.length > 0) {
3
+ return text.trim();
4
+ }
5
+ return text;
6
+ }
7
+ export function standardise(str) {
8
+ return removeAccents(str != null ? str : '').toLowerCase().replace('\\s+', ' ');
9
+ }
10
+ export const removeAccents = (str) => str.normalize("NFD").replace(/\p{Diacritic}/gu, '');
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL3V0aWxzL3N0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQVk7SUFDN0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDdEI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sYUFBYSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0cmltKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRleHQgJiYgdGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFuZGFyZGlzZShzdHI6IHN0cmluZyk6IHN0cmluZ3tcbiAgcmV0dXJuIHJlbW92ZUFjY2VudHMoc3RyICE9IG51bGwgPyBzdHIgOiAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdcXFxccysnLCAnICcpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlQWNjZW50cyA9IChzdHI6IHN0cmluZykgPT4gc3RyLm5vcm1hbGl6ZShcIk5GRFwiKS5yZXBsYWNlKC9cXHB7RGlhY3JpdGljfS9ndSwgJycpO1xuIl19
@@ -0,0 +1,7 @@
1
+ export function getText(el) {
2
+ return el.nativeElement.textContent.trim();
3
+ }
4
+ export function clickOn(el) {
5
+ return el.triggerEventHandler('click', null);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL2xpYi91dGlscy90ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxPQUFPLENBQUMsRUFBZ0I7SUFDcEMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxFQUFnQjtJQUNwQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dChlbDogRGVidWdFbGVtZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGlja09uKGVsOiBEZWJ1Z0VsZW1lbnQpOiB2b2lkIHtcbiAgICByZXR1cm4gZWwudHJpZ2dlckV2ZW50SGFuZGxlcignY2xpY2snLCBudWxsKTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW9kZS11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL25neC1vZGUtdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Public API Surface of ngx-ode-ui
3
+ */
4
+ export * from './lib/services/dynamicModuleImports.service';
5
+ export * from './lib/services/inputFile.service';
6
+ export * from './lib/services/labels.service';
7
+ export * from './lib/services/spinner.service';
8
+ export * from './lib/components/datepicker/datepicker.component';
9
+ export * from './lib/components/ellipsis/ellipsis.component';
10
+ export * from './lib/components/form-errors/form-errors.component';
11
+ export * from './lib/components/form-field/form-field.component';
12
+ export * from './lib/components/item-tree/item-tree.component';
13
+ export * from './lib/components/lightbox/lightbox.component';
14
+ export * from './lib/components/lightbox-confirm/lightbox-confirm.component';
15
+ export * from './lib/components/list/list.component';
16
+ export * from './lib/components/list-checkable/list-checkable.component';
17
+ export * from './lib/components/message-box/message-box.component';
18
+ export * from './lib/components/message-sticker/message-sticker.component';
19
+ export * from './lib/components/mono-select/mono-select.component';
20
+ export * from './lib/components/multi-combo/multi-combo.component';
21
+ export * from './lib/components/multi-select/multi-select.component';
22
+ export * from './lib/components/panel-section/panel-section.component';
23
+ export * from './lib/components/portal/portal.component';
24
+ export * from './lib/components/push-panel/push-panel.component';
25
+ export * from './lib/components/search-input/search-input.component';
26
+ export * from './lib/components/side-layout/side-layout.component';
27
+ export * from './lib/components/side-panel/side-panel.component';
28
+ export * from './lib/components/spinner-cube/spinner-cube.component';
29
+ export * from './lib/components/table/pager.component';
30
+ export * from './lib/components/tooltip/tooltip.component';
31
+ export * from './lib/components/upload-files/upload-files.component';
32
+ export * from './lib/components/value-editable/simple-select.component';
33
+ export * from './lib/components/wizard/wizard.component';
34
+ export * from './lib/components/dropdown/dropdown.component';
35
+ export * from './lib/components/search-toolbar/search-toolbar.component';
36
+ export * from './lib/directives/dynamic-component/dynamic-component.directive';
37
+ export * from './lib/directives/dynamic-component/component-descriptor.model';
38
+ export * from './lib/directives/anchor.directive';
39
+ export * from './lib/directives/drag-and-drop-files.directive';
40
+ export * from './lib/directives/dynamictemplate.directive';
41
+ export * from './lib/directives/object-url.directive';
42
+ export * from './lib/pipes/bytes.pipe';
43
+ export * from './lib/pipes/filter.pipe';
44
+ export * from './lib/pipes/flattenObjArray.pipe';
45
+ export * from './lib/pipes/keys.pipe';
46
+ export * from './lib/pipes/limit.pipe';
47
+ export * from './lib/pipes/localizedDate.pipe';
48
+ export * from './lib/pipes/orderBy.pipe';
49
+ export * from './lib/pipes/store.pipe';
50
+ export * from './lib/pipes/length.pipe';
51
+ export * from './lib/pipes/replace.pipe';
52
+ export * from './lib/utils/math';
53
+ export * from './lib/utils/string';
54
+ export * from './lib/utils/testing';
55
+ // export * from './lib/helpers/accents.helper'; // Deprecated. './lib/utils/string' has its own removeAccents()
56
+ export * from './lib/ngx-ode-ui.module';
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1vZGUtdWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBRS9DLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMERBQTBELENBQUE7QUFFeEUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxnSEFBZ0g7QUFFaEgsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LW9kZS11aVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2R5bmFtaWNNb2R1bGVJbXBvcnRzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaW5wdXRGaWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGFiZWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc3Bpbm5lci5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxsaXBzaXMvZWxsaXBzaXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybS1lcnJvcnMvZm9ybS1lcnJvcnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2l0ZW0tdHJlZS9pdGVtLXRyZWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlnaHRib3gvbGlnaHRib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlnaHRib3gtY29uZmlybS9saWdodGJveC1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LWNoZWNrYWJsZS9saXN0LWNoZWNrYWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZXNzYWdlLWJveC9tZXNzYWdlLWJveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZXNzYWdlLXN0aWNrZXIvbWVzc2FnZS1zdGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbm8tc2VsZWN0L21vbm8tc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL211bHRpLWNvbWJvL211bHRpLWNvbWJvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFuZWwtc2VjdGlvbi9wYW5lbC1zZWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcnRhbC9wb3J0YWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcHVzaC1wYW5lbC9wdXNoLXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1sYXlvdXQvc2lkZS1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1wYW5lbC9zaWRlLXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NwaW5uZXItY3ViZS9zcGlubmVyLWN1YmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFibGUvcGFnZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VwbG9hZC1maWxlcy91cGxvYWQtZmlsZXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmFsdWUtZWRpdGFibGUvc2ltcGxlLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy93aXphcmQvd2l6YXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlYXJjaC10b29sYmFyL3NlYXJjaC10b29sYmFyLmNvbXBvbmVudCdcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9keW5hbWljLWNvbXBvbmVudC9jb21wb25lbnQtZGVzY3JpcHRvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FuY2hvci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9kcmFnLWFuZC1kcm9wLWZpbGVzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2R5bmFtaWN0ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9vYmplY3QtdXJsLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2J5dGVzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZmlsdGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZmxhdHRlbk9iakFycmF5LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMva2V5cy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2xpbWl0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbG9jYWxpemVkRGF0ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL29yZGVyQnkucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9zdG9yZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2xlbmd0aC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3JlcGxhY2UucGlwZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL21hdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc3RyaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3Rlc3RpbmcnO1xuXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2FjY2VudHMuaGVscGVyJzsgLy8gRGVwcmVjYXRlZC4gJy4vbGliL3V0aWxzL3N0cmluZycgaGFzIGl0cyBvd24gcmVtb3ZlQWNjZW50cygpXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1vZGUtdWkubW9kdWxlJztcbiJdfQ==