@firestitch/common 12.4.0 → 12.4.2

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 (217) hide show
  1. package/app/directives/autofocus.directive.d.ts +13 -9
  2. package/app/directives/prevent-default.directive.d.ts +6 -6
  3. package/app/directives/stop-propagation.directive.d.ts +6 -6
  4. package/app/fs-common.module.d.ts +18 -18
  5. package/app/pipes/bytes.pipe.d.ts +7 -7
  6. package/app/pipes/currency.pipe.d.ts +9 -9
  7. package/app/pipes/index.d.ts +2 -0
  8. package/app/pipes/number.pipe.d.ts +7 -7
  9. package/app/pipes/ordinal-number.pipe.d.ts +7 -7
  10. package/app/pipes/truncate.pipe.d.ts +8 -8
  11. package/app/pipes/util.pipe.d.ts +24 -24
  12. package/app/services/array.service.d.ts +61 -61
  13. package/app/services/math.service.d.ts +9 -9
  14. package/app/services/util.service.d.ts +89 -89
  15. package/app/services/vaildate.service.d.ts +16 -16
  16. package/bundles/firestitch-common.umd.js +1914 -1887
  17. package/bundles/firestitch-common.umd.js.map +1 -1
  18. package/esm2015/app/directives/autofocus.directive.js +41 -21
  19. package/esm2015/app/directives/prevent-default.directive.js +18 -18
  20. package/esm2015/app/directives/stop-propagation.directive.js +18 -18
  21. package/esm2015/app/fs-common.module.js +93 -93
  22. package/esm2015/app/pipes/bytes.pipe.js +17 -17
  23. package/esm2015/app/pipes/currency.pipe.js +23 -23
  24. package/esm2015/app/pipes/index.js +3 -0
  25. package/esm2015/app/pipes/number.pipe.js +16 -16
  26. package/esm2015/app/pipes/ordinal-number.pipe.js +16 -16
  27. package/esm2015/app/pipes/truncate.pipe.js +17 -17
  28. package/esm2015/app/pipes/util.pipe.js +59 -59
  29. package/esm2015/app/services/array.service.js +224 -224
  30. package/esm2015/app/services/math.service.js +20 -20
  31. package/esm2015/app/services/util.service.js +250 -250
  32. package/esm2015/app/services/vaildate.service.js +27 -27
  33. package/esm2015/firestitch-common.js +4 -4
  34. package/esm2015/libs/array/compare/compare.js +7 -7
  35. package/esm2015/libs/array/compare/index.js +1 -1
  36. package/esm2015/libs/array/filter/filter.js +26 -26
  37. package/esm2015/libs/array/filter/index.js +1 -1
  38. package/esm2015/libs/array/find/find.js +5 -5
  39. package/esm2015/libs/array/find/index.js +1 -1
  40. package/esm2015/libs/array/inArray/inArray.js +11 -11
  41. package/esm2015/libs/array/inArray/index.js +1 -1
  42. package/esm2015/libs/array/index/index.js +7 -7
  43. package/esm2015/libs/array/index.js +13 -13
  44. package/esm2015/libs/array/indexOf/index.js +1 -1
  45. package/esm2015/libs/array/indexOf/indexOf.js +15 -15
  46. package/esm2015/libs/array/keyExists/index.js +1 -1
  47. package/esm2015/libs/array/keyExists/keyExists.js +3 -3
  48. package/esm2015/libs/array/ksort/index.js +1 -1
  49. package/esm2015/libs/array/ksort/ksort.js +7 -7
  50. package/esm2015/libs/array/list/index.js +1 -1
  51. package/esm2015/libs/array/list/list.js +12 -12
  52. package/esm2015/libs/array/nameValue/index.js +1 -1
  53. package/esm2015/libs/array/nameValue/nameValue.js +20 -20
  54. package/esm2015/libs/array/remove/index.js +1 -1
  55. package/esm2015/libs/array/remove/remove.js +8 -8
  56. package/esm2015/libs/array/rsort/index.js +1 -1
  57. package/esm2015/libs/array/rsort/rsort.js +4 -4
  58. package/esm2015/libs/array/sort/index.js +1 -1
  59. package/esm2015/libs/array/sort/sort.js +26 -26
  60. package/esm2015/libs/format/acronym/acronym.js +21 -21
  61. package/esm2015/libs/format/acronym/index.js +1 -1
  62. package/esm2015/libs/format/bytes/bytes.js +18 -12
  63. package/esm2015/libs/format/bytes/index.js +1 -1
  64. package/esm2015/libs/format/currency/currency.js +5 -5
  65. package/esm2015/libs/format/currency/index.js +1 -1
  66. package/esm2015/libs/format/index.js +5 -5
  67. package/esm2015/libs/format/number/index.js +1 -1
  68. package/esm2015/libs/format/number/number.js +3 -3
  69. package/esm2015/libs/format/truncate/index.js +1 -1
  70. package/esm2015/libs/format/truncate/truncate.js +11 -11
  71. package/esm2015/libs/index.js +5 -5
  72. package/esm2015/libs/rxjs/delayedRetry.js +19 -19
  73. package/esm2015/libs/rxjs/keyboard-shortcut.js +17 -17
  74. package/esm2015/libs/util/boolean/boolean.js +3 -3
  75. package/esm2015/libs/util/boolean/index.js +1 -1
  76. package/esm2015/libs/util/clone/clone.js +20 -20
  77. package/esm2015/libs/util/clone/index.js +1 -1
  78. package/esm2015/libs/util/debounce/debounce.js +16 -16
  79. package/esm2015/libs/util/debounce/index.js +1 -1
  80. package/esm2015/libs/util/get-normalized-path/get-normalized-path.js +5 -5
  81. package/esm2015/libs/util/get-normalized-path/index.js +1 -1
  82. package/esm2015/libs/util/guid/guid.js +18 -18
  83. package/esm2015/libs/util/guid/index.js +1 -1
  84. package/esm2015/libs/util/index.js +21 -21
  85. package/esm2015/libs/util/is-array-equal/is-array-equal.js +21 -21
  86. package/esm2015/libs/util/isClass/index.js +1 -1
  87. package/esm2015/libs/util/isClass/isClass.js +17 -17
  88. package/esm2015/libs/util/isEmpty/index.js +1 -1
  89. package/esm2015/libs/util/isEmpty/isEmpty.js +11 -11
  90. package/esm2015/libs/util/isNumeric/index.js +1 -1
  91. package/esm2015/libs/util/isNumeric/isNumeric.js +4 -4
  92. package/esm2015/libs/util/keys/index.js +1 -1
  93. package/esm2015/libs/util/keys/keys.js +37 -37
  94. package/esm2015/libs/util/length/index.js +1 -1
  95. package/esm2015/libs/util/length/length.js +9 -9
  96. package/esm2015/libs/util/ordinal-number/ordinal-number.js +7 -7
  97. package/esm2015/libs/util/queue/index.js +2 -2
  98. package/esm2015/libs/util/queue/operation.js +14 -14
  99. package/esm2015/libs/util/queue/queue.enum.js +5 -5
  100. package/esm2015/libs/util/queue/queue.js +136 -136
  101. package/esm2015/libs/util/remove-query-params/index.js +1 -1
  102. package/esm2015/libs/util/remove-query-params/remove-query-params.js +3 -3
  103. package/esm2015/libs/util/resolve/index.js +1 -1
  104. package/esm2015/libs/util/resolve/resolve.js +9 -9
  105. package/esm2015/libs/util/round/index.js +1 -1
  106. package/esm2015/libs/util/round/round.js +4 -4
  107. package/esm2015/libs/util/source-loader/source-loader.js +144 -144
  108. package/esm2015/libs/util/stringify/index.js +1 -1
  109. package/esm2015/libs/util/stringify/stringify.js +3 -3
  110. package/esm2015/libs/util/throttle/index.js +1 -1
  111. package/esm2015/libs/util/throttle/throttle.js +12 -12
  112. package/esm2015/libs/util/uuid/index.js +1 -1
  113. package/esm2015/libs/util/uuid/uuid.js +4 -4
  114. package/esm2015/libs/util/value/index.js +1 -1
  115. package/esm2015/libs/util/value/value.js +8 -8
  116. package/esm2015/libs/validate/email/email.js +3 -3
  117. package/esm2015/libs/validate/email/index.js +1 -1
  118. package/esm2015/libs/validate/index.js +3 -3
  119. package/esm2015/libs/validate/phone/index.js +1 -1
  120. package/esm2015/libs/validate/phone/phone.js +4 -4
  121. package/esm2015/libs/validate/url/index.js +1 -1
  122. package/esm2015/libs/validate/url/url.js +11 -11
  123. package/esm2015/public_api.js +22 -22
  124. package/fesm2015/firestitch-common.js +1485 -1461
  125. package/fesm2015/firestitch-common.js.map +1 -1
  126. package/firestitch-common.d.ts +5 -5
  127. package/libs/array/compare/compare.d.ts +1 -1
  128. package/libs/array/compare/index.d.ts +1 -1
  129. package/libs/array/filter/filter.d.ts +1 -1
  130. package/libs/array/filter/index.d.ts +1 -1
  131. package/libs/array/find/find.d.ts +1 -1
  132. package/libs/array/find/index.d.ts +1 -1
  133. package/libs/array/inArray/inArray.d.ts +1 -1
  134. package/libs/array/inArray/index.d.ts +1 -1
  135. package/libs/array/index/index.d.ts +1 -1
  136. package/libs/array/index.d.ts +13 -13
  137. package/libs/array/indexOf/index.d.ts +1 -1
  138. package/libs/array/indexOf/indexOf.d.ts +1 -1
  139. package/libs/array/keyExists/index.d.ts +1 -1
  140. package/libs/array/keyExists/keyExists.d.ts +1 -1
  141. package/libs/array/ksort/index.d.ts +1 -1
  142. package/libs/array/ksort/ksort.d.ts +1 -1
  143. package/libs/array/list/index.d.ts +1 -1
  144. package/libs/array/list/list.d.ts +1 -1
  145. package/libs/array/nameValue/index.d.ts +1 -1
  146. package/libs/array/nameValue/nameValue.d.ts +1 -1
  147. package/libs/array/remove/index.d.ts +1 -1
  148. package/libs/array/remove/remove.d.ts +1 -1
  149. package/libs/array/rsort/index.d.ts +1 -1
  150. package/libs/array/rsort/rsort.d.ts +1 -1
  151. package/libs/array/sort/index.d.ts +1 -1
  152. package/libs/array/sort/sort.d.ts +1 -1
  153. package/libs/format/acronym/acronym.d.ts +1 -1
  154. package/libs/format/acronym/index.d.ts +1 -1
  155. package/libs/format/bytes/bytes.d.ts +1 -1
  156. package/libs/format/bytes/index.d.ts +1 -1
  157. package/libs/format/currency/currency.d.ts +1 -1
  158. package/libs/format/currency/index.d.ts +1 -1
  159. package/libs/format/index.d.ts +5 -5
  160. package/libs/format/number/index.d.ts +1 -1
  161. package/libs/format/number/number.d.ts +1 -1
  162. package/libs/format/truncate/index.d.ts +1 -1
  163. package/libs/format/truncate/truncate.d.ts +1 -1
  164. package/libs/index.d.ts +5 -5
  165. package/libs/rxjs/delayedRetry.d.ts +2 -2
  166. package/libs/rxjs/keyboard-shortcut.d.ts +2 -2
  167. package/libs/util/boolean/boolean.d.ts +1 -1
  168. package/libs/util/boolean/index.d.ts +1 -1
  169. package/libs/util/clone/clone.d.ts +1 -1
  170. package/libs/util/clone/index.d.ts +1 -1
  171. package/libs/util/debounce/debounce.d.ts +1 -1
  172. package/libs/util/debounce/index.d.ts +1 -1
  173. package/libs/util/get-normalized-path/get-normalized-path.d.ts +2 -2
  174. package/libs/util/get-normalized-path/index.d.ts +1 -1
  175. package/libs/util/guid/guid.d.ts +1 -1
  176. package/libs/util/guid/index.d.ts +1 -1
  177. package/libs/util/index.d.ts +21 -21
  178. package/libs/util/is-array-equal/is-array-equal.d.ts +1 -1
  179. package/libs/util/isClass/index.d.ts +1 -1
  180. package/libs/util/isClass/isClass.d.ts +1 -1
  181. package/libs/util/isEmpty/index.d.ts +1 -1
  182. package/libs/util/isEmpty/isEmpty.d.ts +1 -1
  183. package/libs/util/isNumeric/index.d.ts +1 -1
  184. package/libs/util/isNumeric/isNumeric.d.ts +1 -1
  185. package/libs/util/keys/index.d.ts +1 -1
  186. package/libs/util/keys/keys.d.ts +37 -37
  187. package/libs/util/length/index.d.ts +1 -1
  188. package/libs/util/length/length.d.ts +1 -1
  189. package/libs/util/ordinal-number/ordinal-number.d.ts +1 -1
  190. package/libs/util/queue/index.d.ts +2 -2
  191. package/libs/util/queue/operation.d.ts +7 -7
  192. package/libs/util/queue/queue.d.ts +32 -32
  193. package/libs/util/queue/queue.enum.d.ts +4 -4
  194. package/libs/util/remove-query-params/index.d.ts +1 -1
  195. package/libs/util/remove-query-params/remove-query-params.d.ts +1 -1
  196. package/libs/util/resolve/index.d.ts +1 -1
  197. package/libs/util/resolve/resolve.d.ts +1 -1
  198. package/libs/util/round/index.d.ts +1 -1
  199. package/libs/util/round/round.d.ts +1 -1
  200. package/libs/util/source-loader/source-loader.d.ts +7 -7
  201. package/libs/util/stringify/index.d.ts +1 -1
  202. package/libs/util/stringify/stringify.d.ts +1 -1
  203. package/libs/util/throttle/index.d.ts +1 -1
  204. package/libs/util/throttle/throttle.d.ts +1 -1
  205. package/libs/util/uuid/index.d.ts +1 -1
  206. package/libs/util/uuid/uuid.d.ts +1 -1
  207. package/libs/util/value/index.d.ts +1 -1
  208. package/libs/util/value/value.d.ts +1 -1
  209. package/libs/validate/email/email.d.ts +1 -1
  210. package/libs/validate/email/index.d.ts +1 -1
  211. package/libs/validate/index.d.ts +3 -3
  212. package/libs/validate/phone/index.d.ts +1 -1
  213. package/libs/validate/phone/phone.d.ts +1 -1
  214. package/libs/validate/url/index.d.ts +1 -1
  215. package/libs/validate/url/url.d.ts +7 -7
  216. package/package.json +1 -1
  217. package/public_api.d.ts +16 -16
@@ -1,1584 +1,1608 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Pipe, LOCALE_ID, Inject, Directive, HostListener, NgModule } from '@angular/core';
2
+ import { Injectable, Pipe, LOCALE_ID, Inject, Directive, HostListener, Optional, Host, Input, NgModule } from '@angular/core';
3
3
  import { CurrencyPipe, CommonModule } from '@angular/common';
4
+ import * as i1 from '@angular/material/input';
4
5
  import { Subject, Observable, of, combineLatest, iif, throwError, timer, fromEvent, merge } from 'rxjs';
5
6
  import { takeUntil, delay, shareReplay, retryWhen, tap, concatMap, distinctUntilChanged, share, filter as filter$1 } from 'rxjs/operators';
6
7
 
7
- class FsArray {
8
- /**
9
- * @deprecated use import { nameValue } from @firestitch/common/array; instead
10
- */
11
- nameValue(array, name, value) {
12
- console.warn('@deprecated use import { nameValue } from @firestitch/common/array; instead');
13
- let list = [];
14
- if (name || value) {
15
- let nameFn = typeof name === 'function' ? name : function (item) { return item[name]; };
16
- let valueFn = typeof value === 'function' ? value : function (item) { return item[value]; };
17
- array.forEach(function (item) {
18
- list.push({ name: nameFn(item), value: valueFn(item) });
19
- });
20
- }
21
- else {
22
- array.forEach(function (name, value) {
23
- list.push({ name: name, value: value });
24
- });
25
- }
26
- return list;
27
- }
28
- /**
29
- * @deprecated use import { remove } from @firestitch/common/array; instead
30
- */
31
- remove(array, query) {
32
- console.warn('@deprecated use import { remove } from @firestitch/common/array; instead');
33
- let idx = this.indexOf(array, query);
34
- if (idx >= 0) {
35
- return array.splice(idx, 1);
36
- }
37
- return idx;
38
- }
39
- /**
40
- * @deprecated use import { indexOf } from @firestitch/common/array; instead
41
- */
42
- indexOf(array, query) {
43
- console.warn('@deprecated use import { indexOf } from @firestitch/common/array; instead');
44
- if (typeof query !== 'function') {
45
- let queryObj = query;
46
- query = (item) => {
47
- return this.compare(queryObj, item);
48
- };
49
- }
50
- for (let i = 0, len = array.length; i < len; i++) {
51
- if (query(array[i])) {
52
- return i;
53
- }
54
- }
55
- return -1;
56
- }
57
- /**
58
- * @deprecated use import { compare } from @firestitch/common/array; instead
59
- */
60
- compare(query, item) {
61
- console.warn('@deprecated use import { compare } from @firestitch/common/array; instead');
62
- let value = true;
63
- for (let key in query) {
64
- value = value && item[key] == query[key];
65
- }
66
- return value;
67
- }
68
- /**
69
- * @deprecated use import { filter } from @firestitch/common/array; instead
70
- */
71
- filter(array, query) {
72
- console.warn('@deprecated use import { filter } from @firestitch/common/array; instead');
73
- if (typeof query !== 'function') {
74
- let queryObj = query;
75
- query = (item) => {
76
- return this.compare(queryObj, item);
77
- };
78
- }
79
- let isarray = Array.isArray(array);
80
- let list = isarray ? [] : {};
81
- if (isarray)
82
- array.forEach(function (item, idx) {
83
- if (query(item)) {
84
- list.push(item);
85
- }
86
- });
87
- else
88
- Object.keys(array).forEach(key => {
89
- if (query(array[key])) {
90
- list[key] = array[key];
91
- }
92
- });
93
- return list;
94
- }
95
- /**
96
- * @deprecated use import { index } from @firestitch/common/array; instead
97
- */
98
- index(array, property) {
99
- console.warn('@deprecated use import { index } from @firestitch/common/array; instead');
100
- let list = {};
101
- array.forEach(function (item, idx) {
102
- list[item[property]] = item;
103
- });
104
- return list;
105
- }
106
- /**
107
- * @deprecated use import { sort } from @firestitch/common/array; instead
108
- */
109
- sort(array, query, reverse = false) {
110
- console.warn('@deprecated use import { sort } from @firestitch/common/array; instead');
111
- if (typeof query !== 'function') {
112
- let queryStr = query;
113
- query = function (a, b) {
114
- if (reverse) {
115
- if (a[queryStr] < b[queryStr]) {
116
- return 1;
117
- }
118
- else if (a[queryStr] > b[queryStr]) {
119
- return -1;
120
- }
121
- }
122
- else {
123
- if (a[queryStr] > b[queryStr]) {
124
- return 1;
125
- }
126
- else if (a[queryStr] < b[queryStr]) {
127
- return -1;
128
- }
129
- }
130
- return 0;
131
- };
132
- }
133
- array.sort(query);
134
- return array;
135
- }
136
- /**
137
- * @deprecated use import { rsort } from @firestitch/common/array; instead
138
- */
139
- rsort(array, query) {
140
- console.warn('@deprecated use import { rsort } from @firestitch/common/array; instead');
141
- return this.sort(array, query, true);
142
- }
143
- /**
144
- * @deprecated use import { list } from @firestitch/common/array; instead
145
- */
146
- list(array, property, index = null) {
147
- console.warn('@deprecated use import { list } from @firestitch/common/array; instead');
148
- let list = index ? {} : [];
149
- array.forEach(function (item, idx) {
150
- if (index) {
151
- list[item[index]] = item[property];
152
- }
153
- else {
154
- list.push(item[property]);
155
- }
156
- });
157
- return list;
158
- }
159
- /**
160
- * @deprecated use import { applyDepth } from @firestitch/common/array; instead
161
- */
162
- applyDepth(objects, parent_property, id_property = 'id', depth_property = 'depth') {
163
- console.warn('@deprecated use import { applyDepth } from @firestitch/common/array; instead');
164
- let keyed = {};
165
- objects.forEach(function (object) {
166
- if (!object[parent_property]) {
167
- object[depth_property] = 0;
168
- }
169
- keyed[object[id_property]] = object;
170
- });
171
- Object.keys(keyed).forEach(key => {
172
- Object.keys(keyed).forEach(key => {
173
- let object = keyed[key];
174
- if (!keyed[key][depth_property]) {
175
- if (keyed[key][parent_property]) {
176
- keyed[key][depth_property] = keyed[keyed[key][parent_property]][depth_property] + 1;
177
- }
178
- }
179
- });
180
- });
181
- return keyed;
182
- }
183
- /**
184
- * @deprecated use import { inArray } from @firestitch/common/array; instead
185
- */
186
- inArray(values, array) {
187
- console.warn('@deprecated use import { inArray } from @firestitch/common/array; instead');
188
- if (!Array.isArray(values)) {
189
- values = [values];
190
- }
191
- for (let i = 0, len = values.length; i < len; i++) {
192
- if (array.indexOf(values[i]) >= 0) {
193
- return true;
194
- }
195
- }
196
- return false;
197
- }
198
- /**
199
- * @deprecated use import { keyExists } from @firestitch/common/array; instead
200
- */
201
- keyExists(array, key) {
202
- console.warn('@deprecated use import { keyExists } from @firestitch/common/array; instead');
203
- return array.hasOwnProperty(key);
204
- }
205
- /**
206
- * @deprecated use import { length } from @firestitch/common/array; instead
207
- */
208
- length(array) {
209
- console.warn('@deprecated use import { length } from @firestitch/common/array; instead');
210
- return array.length;
211
- }
212
- /**
213
- * @deprecated use import { ksort } from @firestitch/common/array; instead
214
- */
215
- ksort(unordered) {
216
- console.warn('@deprecated use import { ksort } from @firestitch/common/array; instead');
217
- Object.keys(unordered).sort().forEach(function (key) {
218
- let value = unordered[key];
219
- delete unordered[key];
220
- unordered[key] = value;
221
- });
222
- }
223
- }
224
- FsArray.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
- FsArray.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray });
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray, decorators: [{
227
- type: Injectable
8
+ class FsArray {
9
+ /**
10
+ * @deprecated use import { nameValue } from @firestitch/common/array; instead
11
+ */
12
+ nameValue(array, name, value) {
13
+ console.warn('@deprecated use import { nameValue } from @firestitch/common/array; instead');
14
+ let list = [];
15
+ if (name || value) {
16
+ let nameFn = typeof name === 'function' ? name : function (item) { return item[name]; };
17
+ let valueFn = typeof value === 'function' ? value : function (item) { return item[value]; };
18
+ array.forEach(function (item) {
19
+ list.push({ name: nameFn(item), value: valueFn(item) });
20
+ });
21
+ }
22
+ else {
23
+ array.forEach(function (name, value) {
24
+ list.push({ name: name, value: value });
25
+ });
26
+ }
27
+ return list;
28
+ }
29
+ /**
30
+ * @deprecated use import { remove } from @firestitch/common/array; instead
31
+ */
32
+ remove(array, query) {
33
+ console.warn('@deprecated use import { remove } from @firestitch/common/array; instead');
34
+ let idx = this.indexOf(array, query);
35
+ if (idx >= 0) {
36
+ return array.splice(idx, 1);
37
+ }
38
+ return idx;
39
+ }
40
+ /**
41
+ * @deprecated use import { indexOf } from @firestitch/common/array; instead
42
+ */
43
+ indexOf(array, query) {
44
+ console.warn('@deprecated use import { indexOf } from @firestitch/common/array; instead');
45
+ if (typeof query !== 'function') {
46
+ let queryObj = query;
47
+ query = (item) => {
48
+ return this.compare(queryObj, item);
49
+ };
50
+ }
51
+ for (let i = 0, len = array.length; i < len; i++) {
52
+ if (query(array[i])) {
53
+ return i;
54
+ }
55
+ }
56
+ return -1;
57
+ }
58
+ /**
59
+ * @deprecated use import { compare } from @firestitch/common/array; instead
60
+ */
61
+ compare(query, item) {
62
+ console.warn('@deprecated use import { compare } from @firestitch/common/array; instead');
63
+ let value = true;
64
+ for (let key in query) {
65
+ value = value && item[key] == query[key];
66
+ }
67
+ return value;
68
+ }
69
+ /**
70
+ * @deprecated use import { filter } from @firestitch/common/array; instead
71
+ */
72
+ filter(array, query) {
73
+ console.warn('@deprecated use import { filter } from @firestitch/common/array; instead');
74
+ if (typeof query !== 'function') {
75
+ let queryObj = query;
76
+ query = (item) => {
77
+ return this.compare(queryObj, item);
78
+ };
79
+ }
80
+ let isarray = Array.isArray(array);
81
+ let list = isarray ? [] : {};
82
+ if (isarray)
83
+ array.forEach(function (item, idx) {
84
+ if (query(item)) {
85
+ list.push(item);
86
+ }
87
+ });
88
+ else
89
+ Object.keys(array).forEach(key => {
90
+ if (query(array[key])) {
91
+ list[key] = array[key];
92
+ }
93
+ });
94
+ return list;
95
+ }
96
+ /**
97
+ * @deprecated use import { index } from @firestitch/common/array; instead
98
+ */
99
+ index(array, property) {
100
+ console.warn('@deprecated use import { index } from @firestitch/common/array; instead');
101
+ let list = {};
102
+ array.forEach(function (item, idx) {
103
+ list[item[property]] = item;
104
+ });
105
+ return list;
106
+ }
107
+ /**
108
+ * @deprecated use import { sort } from @firestitch/common/array; instead
109
+ */
110
+ sort(array, query, reverse = false) {
111
+ console.warn('@deprecated use import { sort } from @firestitch/common/array; instead');
112
+ if (typeof query !== 'function') {
113
+ let queryStr = query;
114
+ query = function (a, b) {
115
+ if (reverse) {
116
+ if (a[queryStr] < b[queryStr]) {
117
+ return 1;
118
+ }
119
+ else if (a[queryStr] > b[queryStr]) {
120
+ return -1;
121
+ }
122
+ }
123
+ else {
124
+ if (a[queryStr] > b[queryStr]) {
125
+ return 1;
126
+ }
127
+ else if (a[queryStr] < b[queryStr]) {
128
+ return -1;
129
+ }
130
+ }
131
+ return 0;
132
+ };
133
+ }
134
+ array.sort(query);
135
+ return array;
136
+ }
137
+ /**
138
+ * @deprecated use import { rsort } from @firestitch/common/array; instead
139
+ */
140
+ rsort(array, query) {
141
+ console.warn('@deprecated use import { rsort } from @firestitch/common/array; instead');
142
+ return this.sort(array, query, true);
143
+ }
144
+ /**
145
+ * @deprecated use import { list } from @firestitch/common/array; instead
146
+ */
147
+ list(array, property, index = null) {
148
+ console.warn('@deprecated use import { list } from @firestitch/common/array; instead');
149
+ let list = index ? {} : [];
150
+ array.forEach(function (item, idx) {
151
+ if (index) {
152
+ list[item[index]] = item[property];
153
+ }
154
+ else {
155
+ list.push(item[property]);
156
+ }
157
+ });
158
+ return list;
159
+ }
160
+ /**
161
+ * @deprecated use import { applyDepth } from @firestitch/common/array; instead
162
+ */
163
+ applyDepth(objects, parent_property, id_property = 'id', depth_property = 'depth') {
164
+ console.warn('@deprecated use import { applyDepth } from @firestitch/common/array; instead');
165
+ let keyed = {};
166
+ objects.forEach(function (object) {
167
+ if (!object[parent_property]) {
168
+ object[depth_property] = 0;
169
+ }
170
+ keyed[object[id_property]] = object;
171
+ });
172
+ Object.keys(keyed).forEach(key => {
173
+ Object.keys(keyed).forEach(key => {
174
+ let object = keyed[key];
175
+ if (!keyed[key][depth_property]) {
176
+ if (keyed[key][parent_property]) {
177
+ keyed[key][depth_property] = keyed[keyed[key][parent_property]][depth_property] + 1;
178
+ }
179
+ }
180
+ });
181
+ });
182
+ return keyed;
183
+ }
184
+ /**
185
+ * @deprecated use import { inArray } from @firestitch/common/array; instead
186
+ */
187
+ inArray(values, array) {
188
+ console.warn('@deprecated use import { inArray } from @firestitch/common/array; instead');
189
+ if (!Array.isArray(values)) {
190
+ values = [values];
191
+ }
192
+ for (let i = 0, len = values.length; i < len; i++) {
193
+ if (array.indexOf(values[i]) >= 0) {
194
+ return true;
195
+ }
196
+ }
197
+ return false;
198
+ }
199
+ /**
200
+ * @deprecated use import { keyExists } from @firestitch/common/array; instead
201
+ */
202
+ keyExists(array, key) {
203
+ console.warn('@deprecated use import { keyExists } from @firestitch/common/array; instead');
204
+ return array.hasOwnProperty(key);
205
+ }
206
+ /**
207
+ * @deprecated use import { length } from @firestitch/common/array; instead
208
+ */
209
+ length(array) {
210
+ console.warn('@deprecated use import { length } from @firestitch/common/array; instead');
211
+ return array.length;
212
+ }
213
+ /**
214
+ * @deprecated use import { ksort } from @firestitch/common/array; instead
215
+ */
216
+ ksort(unordered) {
217
+ console.warn('@deprecated use import { ksort } from @firestitch/common/array; instead');
218
+ Object.keys(unordered).sort().forEach(function (key) {
219
+ let value = unordered[key];
220
+ delete unordered[key];
221
+ unordered[key] = value;
222
+ });
223
+ }
224
+ }
225
+ FsArray.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
226
+ FsArray.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray });
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsArray, decorators: [{
228
+ type: Injectable
228
229
  }] });
229
230
 
230
- class FsMath {
231
- /**
232
- * @deprecated use _.round() instead {@link https://lodash.com/docs/4.17.5#round}
233
- */
234
- round(number, precision) {
235
- console.warn('@deprecated use _.round() instead {@link https://lodash.com/docs/4.17.5#round}');
236
- precision = precision || 0;
237
- let factor = Math.pow(10, precision);
238
- let tempNumber = number * factor;
239
- let roundedTempNumber = Math.round(tempNumber);
240
- return roundedTempNumber / factor;
241
- }
242
- }
243
- FsMath.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
244
- FsMath.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath });
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath, decorators: [{
246
- type: Injectable
231
+ class FsMath {
232
+ /**
233
+ * @deprecated use _.round() instead {@link https://lodash.com/docs/4.17.5#round}
234
+ */
235
+ round(number, precision) {
236
+ console.warn('@deprecated use _.round() instead {@link https://lodash.com/docs/4.17.5#round}');
237
+ precision = precision || 0;
238
+ let factor = Math.pow(10, precision);
239
+ let tempNumber = number * factor;
240
+ let roundedTempNumber = Math.round(tempNumber);
241
+ return roundedTempNumber / factor;
242
+ }
243
+ }
244
+ FsMath.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
245
+ FsMath.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath });
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsMath, decorators: [{
247
+ type: Injectable
247
248
  }] });
248
249
 
249
- const KEY_CANCEL$1 = 3, KEY_HELP$1 = 6, KEY_BACKSPACE$1 = 8, KEY_TAB$1 = 9, KEY_CLEAR$1 = 12, KEY_RETURN$1 = 13, KEY_ENTER$1 = 14, KEY_SHIFT$1 = 16, KEY_CONTROL$1 = 17, KEY_ALT$1 = 18, KEY_PAUSE$1 = 19, KEY_CAPS_LOCK$1 = 20, KEY_ESCAPE$1 = 27, KEY_SPACE$1 = 32, KEY_PAGE_UP$1 = 33, KEY_PAGE_DOWN$1 = 34, KEY_END$1 = 35, KEY_HOME$1 = 36, KEY_LEFT$1 = 37, KEY_UP$1 = 38, KEY_RIGHT$1 = 39, KEY_DOWN$1 = 40, KEY_PRINTSCREEN$1 = 44, KEY_INSERT$1 = 45, KEY_DELETE$1 = 46, KEY_0$1 = 48, KEY_1$1 = 49, KEY_2$1 = 50, KEY_3$1 = 51, KEY_4$1 = 52, KEY_5$1 = 53, KEY_6$1 = 54, KEY_7$1 = 55, KEY_8$1 = 56, KEY_9$1 = 57, KEY_SEMICOLON$1 = 59, KEY_EQUALS$1 = 61;
250
- /*
251
- Basically, just copy-pasted functionality from fs-boilerplate v1.x, with some small changes (like we dont have angular.bind anymore, had to go with a workaround)
252
- There might be a better way to organise constatns but I need to know use-cases
253
- */
254
- class FsUtil {
255
- constructor() {
256
- this.intervals = {};
257
- }
258
- /**
259
- * @deprecated use @firestitch/common/util/guid instead
260
- */
261
- guid(pattern) {
262
- console.warn('@deprecated use @firestitch/common/util/guid instead');
263
- pattern = pattern || 'xxxxxx';
264
- return pattern.replace(/[xy]/g, function (c) {
265
- var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
266
- return v.toString(16);
267
- });
268
- }
269
- /**
270
- * @deprecated use import { uuid } from @firestitch/common/util; instead
271
- */
272
- uuid() {
273
- console.warn('@deprecated use @firestitch/common/util/uuid instead');
274
- return this.guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
275
- }
276
- /**
277
- * @deprecated use import { resolve } from @firestitch/common/util; instead
278
- */
279
- resolve(promise, defaults = []) {
280
- console.warn('@deprecated use @firestitch/common/util/resolve instead');
281
- const result = defaults;
282
- return new Promise(resolve => {
283
- promise.then(function (data) {
284
- Object.keys(data).forEach(key => result[key] = data[key]);
285
- resolve(result);
286
- });
287
- });
288
- }
289
- /**
290
- * @deprecated use _.toInteger() instead
291
- */
292
- int(value) {
293
- console.warn('@deprecated use _.toInteger() instead');
294
- value = parseInt(value);
295
- if (isNaN(value)) {
296
- value = 0;
297
- }
298
- return value;
299
- }
300
- /**
301
- * @deprecated use _.toFinite() instead
302
- */
303
- float(value) {
304
- console.warn('@deprecated use _.toFinite() instead');
305
- value = parseFloat(value);
306
- if (isNaN(value)) {
307
- value = 0;
308
- }
309
- return value;
310
- }
311
- /**
312
- * @deprecated use _.toString() instead
313
- */
314
- string(string) {
315
- console.warn('@deprecated use _.toString() instead');
316
- if (string === null || string === undefined) {
317
- string = '';
318
- }
319
- return (string).toString();
320
- }
321
- /**
322
- * @deprecated use import { isEmpty } from @firestitch/common/util; instead
323
- */
324
- isEmpty(value, options) {
325
- console.warn('@deprecated use import { isEmpty } from @firestitch/common/util; instead');
326
- options = options || {};
327
- return value === undefined ||
328
- value === null ||
329
- value === false ||
330
- value === '' ||
331
- !this.string(value).length ||
332
- (this.isObject(value) &&
333
- (value.constructor.name === 'Object' && !Object.keys(value).length)) ||
334
- (!options.zero && (value === 0 || value === '0'));
335
- }
336
- /**
337
- * @deprecated use _.isInteger() instead
338
- */
339
- isInt(value, type) {
340
- console.warn('@deprecated use _.isInteger() instead');
341
- const int = !!this.string(value).match(/^\d+$/);
342
- if (!int) {
343
- return false;
344
- }
345
- if (type) {
346
- return Number.isInteger(value);
347
- }
348
- return true;
349
- }
350
- /**
351
- * @deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}
352
- */
353
- each(object, func) {
354
- console.warn('@deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}');
355
- if (!this.isArray(object) && !this.isObject(object)) {
356
- return;
357
- }
358
- Object.keys(object).forEach(function (key) {
359
- func(object[key], key);
360
- });
361
- }
362
- /**
363
- * @deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject}
364
- * or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead
365
- */
366
- isObject(value) {
367
- console.warn('@deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject} or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead');
368
- return value !== null && typeof value === 'object' && !this.isArray(value);
369
- }
370
- /**
371
- * @deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}
372
- */
373
- isString(value) {
374
- console.warn('@deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}');
375
- return typeof value === 'string' || value instanceof String;
376
- }
377
- /**
378
- * @deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}
379
- */
380
- isArray(value) {
381
- console.warn('@deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}');
382
- return value instanceof Array;
383
- }
384
- /**
385
- * @deprecated use import { isNumeric } from @firestitch/common/util; instead
386
- */
387
- isNumeric(value) {
388
- console.warn('@deprecated use import { isNumeric } from @firestitch/common/util; instead');
389
- return this.string(value).length && !!this.string(value).match(/^-?\d*\.?\d*$/);
390
- }
391
- /**
392
- * @deprecated use import { isClass } from @firestitch/common/util; instead
393
- */
394
- isClass(value, cls) {
395
- console.warn('@deprecated use import { isClass } from @firestitch/common/util; instead');
396
- if (this.isObject(value)) {
397
- if (this.isString(cls)) {
398
- if (value.constructor) {
399
- if (value.constructor.name === cls) {
400
- return true;
401
- }
402
- }
403
- }
404
- else {
405
- if (value instanceof cls) {
406
- return true;
407
- }
408
- }
409
- }
410
- return false;
411
- }
412
- /**
413
- * @deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}
414
- */
415
- isBoolean(value) {
416
- console.warn('@deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}');
417
- return value === true || value === false;
418
- }
419
- /**
420
- * @deprecated use import { value } from @firestitch/common/util; instead
421
- */
422
- value(object, key, def) {
423
- console.warn('@deprecated use import { value } from @firestitch/common/util; instead');
424
- if (this.isObject(object) || this.isArray(object)) {
425
- if (object.hasOwnProperty(key)) {
426
- return object[key];
427
- }
428
- }
429
- return def;
430
- }
431
- throttle(func, wait) {
432
- console.warn('@deprecated use import { throttle } from @firestitch/common/util; instead');
433
- let waiting = false; // Initially, we're not waiting
434
- return function () {
435
- if (!waiting) { // If we're not waiting
436
- func.apply(null, arguments); // Execute users function
437
- waiting = true; // Prevent future invocations
438
- setTimeout(function () {
439
- waiting = false; // And allow future invocations
440
- }, wait);
441
- }
442
- };
443
- }
444
- /**
445
- * @deprecated use import { debounce } from @firestitch/common/util; instead
446
- */
447
- debounce(func, wait, immediate) {
448
- console.warn('@deprecated use import { debounce } from @firestitch/common/util; instead');
449
- var timeout;
450
- return function () {
451
- var context = this, args = arguments;
452
- var later = function () {
453
- timeout = null;
454
- if (!immediate)
455
- func.apply(context, args);
456
- };
457
- var callNow = immediate && !timeout;
458
- clearTimeout(timeout);
459
- timeout = setTimeout(later, wait);
460
- if (callNow)
461
- func.apply(context, args);
462
- };
463
- }
464
- /**
465
- * @deprecated use import { length } from @firestitch/common/util; instead
466
- */
467
- length(object) {
468
- console.warn('@deprecated use import { length } from @firestitch/common/util; instead');
469
- if (this.isObject(object)) {
470
- return Object.keys(object).length;
471
- }
472
- if (this.isArray(object)) {
473
- return object.length;
474
- }
475
- return 0;
476
- }
477
- /**
478
- * @deprecated use import { boolean } from @firestitch/common/util; instead
479
- */
480
- boolean(value) {
481
- console.warn('@deprecated use import { boolean } from @firestitch/common/util; instead');
482
- return this.string(value).toLowerCase() !== 'false' && !!value;
483
- }
484
- /**
485
- * @deprecated use import { stringify } from @firestitch/common/util; instead
486
- */
487
- stringify(value) {
488
- console.warn('@deprecated use import { stringify } from @firestitch/common/util; instead');
489
- return JSON.stringify(value);
490
- }
491
- }
492
- FsUtil.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
493
- FsUtil.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil });
494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil, decorators: [{
495
- type: Injectable
250
+ const KEY_CANCEL$1 = 3, KEY_HELP$1 = 6, KEY_BACKSPACE$1 = 8, KEY_TAB$1 = 9, KEY_CLEAR$1 = 12, KEY_RETURN$1 = 13, KEY_ENTER$1 = 14, KEY_SHIFT$1 = 16, KEY_CONTROL$1 = 17, KEY_ALT$1 = 18, KEY_PAUSE$1 = 19, KEY_CAPS_LOCK$1 = 20, KEY_ESCAPE$1 = 27, KEY_SPACE$1 = 32, KEY_PAGE_UP$1 = 33, KEY_PAGE_DOWN$1 = 34, KEY_END$1 = 35, KEY_HOME$1 = 36, KEY_LEFT$1 = 37, KEY_UP$1 = 38, KEY_RIGHT$1 = 39, KEY_DOWN$1 = 40, KEY_PRINTSCREEN$1 = 44, KEY_INSERT$1 = 45, KEY_DELETE$1 = 46, KEY_0$1 = 48, KEY_1$1 = 49, KEY_2$1 = 50, KEY_3$1 = 51, KEY_4$1 = 52, KEY_5$1 = 53, KEY_6$1 = 54, KEY_7$1 = 55, KEY_8$1 = 56, KEY_9$1 = 57, KEY_SEMICOLON$1 = 59, KEY_EQUALS$1 = 61;
251
+ /*
252
+ Basically, just copy-pasted functionality from fs-boilerplate v1.x, with some small changes (like we dont have angular.bind anymore, had to go with a workaround)
253
+ There might be a better way to organise constatns but I need to know use-cases
254
+ */
255
+ class FsUtil {
256
+ constructor() {
257
+ this.intervals = {};
258
+ }
259
+ /**
260
+ * @deprecated use @firestitch/common/util/guid instead
261
+ */
262
+ guid(pattern) {
263
+ console.warn('@deprecated use @firestitch/common/util/guid instead');
264
+ pattern = pattern || 'xxxxxx';
265
+ return pattern.replace(/[xy]/g, function (c) {
266
+ var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
267
+ return v.toString(16);
268
+ });
269
+ }
270
+ /**
271
+ * @deprecated use import { uuid } from @firestitch/common/util; instead
272
+ */
273
+ uuid() {
274
+ console.warn('@deprecated use @firestitch/common/util/uuid instead');
275
+ return this.guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
276
+ }
277
+ /**
278
+ * @deprecated use import { resolve } from @firestitch/common/util; instead
279
+ */
280
+ resolve(promise, defaults = []) {
281
+ console.warn('@deprecated use @firestitch/common/util/resolve instead');
282
+ const result = defaults;
283
+ return new Promise(resolve => {
284
+ promise.then(function (data) {
285
+ Object.keys(data).forEach(key => result[key] = data[key]);
286
+ resolve(result);
287
+ });
288
+ });
289
+ }
290
+ /**
291
+ * @deprecated use _.toInteger() instead
292
+ */
293
+ int(value) {
294
+ console.warn('@deprecated use _.toInteger() instead');
295
+ value = parseInt(value);
296
+ if (isNaN(value)) {
297
+ value = 0;
298
+ }
299
+ return value;
300
+ }
301
+ /**
302
+ * @deprecated use _.toFinite() instead
303
+ */
304
+ float(value) {
305
+ console.warn('@deprecated use _.toFinite() instead');
306
+ value = parseFloat(value);
307
+ if (isNaN(value)) {
308
+ value = 0;
309
+ }
310
+ return value;
311
+ }
312
+ /**
313
+ * @deprecated use _.toString() instead
314
+ */
315
+ string(string) {
316
+ console.warn('@deprecated use _.toString() instead');
317
+ if (string === null || string === undefined) {
318
+ string = '';
319
+ }
320
+ return (string).toString();
321
+ }
322
+ /**
323
+ * @deprecated use import { isEmpty } from @firestitch/common/util; instead
324
+ */
325
+ isEmpty(value, options) {
326
+ console.warn('@deprecated use import { isEmpty } from @firestitch/common/util; instead');
327
+ options = options || {};
328
+ return value === undefined ||
329
+ value === null ||
330
+ value === false ||
331
+ value === '' ||
332
+ !this.string(value).length ||
333
+ (this.isObject(value) &&
334
+ (value.constructor.name === 'Object' && !Object.keys(value).length)) ||
335
+ (!options.zero && (value === 0 || value === '0'));
336
+ }
337
+ /**
338
+ * @deprecated use _.isInteger() instead
339
+ */
340
+ isInt(value, type) {
341
+ console.warn('@deprecated use _.isInteger() instead');
342
+ const int = !!this.string(value).match(/^\d+$/);
343
+ if (!int) {
344
+ return false;
345
+ }
346
+ if (type) {
347
+ return Number.isInteger(value);
348
+ }
349
+ return true;
350
+ }
351
+ /**
352
+ * @deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}
353
+ */
354
+ each(object, func) {
355
+ console.warn('@deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}');
356
+ if (!this.isArray(object) && !this.isObject(object)) {
357
+ return;
358
+ }
359
+ Object.keys(object).forEach(function (key) {
360
+ func(object[key], key);
361
+ });
362
+ }
363
+ /**
364
+ * @deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject}
365
+ * or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead
366
+ */
367
+ isObject(value) {
368
+ console.warn('@deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject} or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead');
369
+ return value !== null && typeof value === 'object' && !this.isArray(value);
370
+ }
371
+ /**
372
+ * @deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}
373
+ */
374
+ isString(value) {
375
+ console.warn('@deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}');
376
+ return typeof value === 'string' || value instanceof String;
377
+ }
378
+ /**
379
+ * @deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}
380
+ */
381
+ isArray(value) {
382
+ console.warn('@deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}');
383
+ return value instanceof Array;
384
+ }
385
+ /**
386
+ * @deprecated use import { isNumeric } from @firestitch/common/util; instead
387
+ */
388
+ isNumeric(value) {
389
+ console.warn('@deprecated use import { isNumeric } from @firestitch/common/util; instead');
390
+ return this.string(value).length && !!this.string(value).match(/^-?\d*\.?\d*$/);
391
+ }
392
+ /**
393
+ * @deprecated use import { isClass } from @firestitch/common/util; instead
394
+ */
395
+ isClass(value, cls) {
396
+ console.warn('@deprecated use import { isClass } from @firestitch/common/util; instead');
397
+ if (this.isObject(value)) {
398
+ if (this.isString(cls)) {
399
+ if (value.constructor) {
400
+ if (value.constructor.name === cls) {
401
+ return true;
402
+ }
403
+ }
404
+ }
405
+ else {
406
+ if (value instanceof cls) {
407
+ return true;
408
+ }
409
+ }
410
+ }
411
+ return false;
412
+ }
413
+ /**
414
+ * @deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}
415
+ */
416
+ isBoolean(value) {
417
+ console.warn('@deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}');
418
+ return value === true || value === false;
419
+ }
420
+ /**
421
+ * @deprecated use import { value } from @firestitch/common/util; instead
422
+ */
423
+ value(object, key, def) {
424
+ console.warn('@deprecated use import { value } from @firestitch/common/util; instead');
425
+ if (this.isObject(object) || this.isArray(object)) {
426
+ if (object.hasOwnProperty(key)) {
427
+ return object[key];
428
+ }
429
+ }
430
+ return def;
431
+ }
432
+ throttle(func, wait) {
433
+ console.warn('@deprecated use import { throttle } from @firestitch/common/util; instead');
434
+ let waiting = false; // Initially, we're not waiting
435
+ return function () {
436
+ if (!waiting) { // If we're not waiting
437
+ func.apply(null, arguments); // Execute users function
438
+ waiting = true; // Prevent future invocations
439
+ setTimeout(function () {
440
+ waiting = false; // And allow future invocations
441
+ }, wait);
442
+ }
443
+ };
444
+ }
445
+ /**
446
+ * @deprecated use import { debounce } from @firestitch/common/util; instead
447
+ */
448
+ debounce(func, wait, immediate) {
449
+ console.warn('@deprecated use import { debounce } from @firestitch/common/util; instead');
450
+ var timeout;
451
+ return function () {
452
+ var context = this, args = arguments;
453
+ var later = function () {
454
+ timeout = null;
455
+ if (!immediate)
456
+ func.apply(context, args);
457
+ };
458
+ var callNow = immediate && !timeout;
459
+ clearTimeout(timeout);
460
+ timeout = setTimeout(later, wait);
461
+ if (callNow)
462
+ func.apply(context, args);
463
+ };
464
+ }
465
+ /**
466
+ * @deprecated use import { length } from @firestitch/common/util; instead
467
+ */
468
+ length(object) {
469
+ console.warn('@deprecated use import { length } from @firestitch/common/util; instead');
470
+ if (this.isObject(object)) {
471
+ return Object.keys(object).length;
472
+ }
473
+ if (this.isArray(object)) {
474
+ return object.length;
475
+ }
476
+ return 0;
477
+ }
478
+ /**
479
+ * @deprecated use import { boolean } from @firestitch/common/util; instead
480
+ */
481
+ boolean(value) {
482
+ console.warn('@deprecated use import { boolean } from @firestitch/common/util; instead');
483
+ return this.string(value).toLowerCase() !== 'false' && !!value;
484
+ }
485
+ /**
486
+ * @deprecated use import { stringify } from @firestitch/common/util; instead
487
+ */
488
+ stringify(value) {
489
+ console.warn('@deprecated use import { stringify } from @firestitch/common/util; instead');
490
+ return JSON.stringify(value);
491
+ }
492
+ }
493
+ FsUtil.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
494
+ FsUtil.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil });
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtil, decorators: [{
496
+ type: Injectable
496
497
  }] });
497
498
 
498
- class FsValidate {
499
- constructor(fsUtil) {
500
- this.fsUtil = fsUtil;
501
- }
502
- /**
503
- * @deprecated use import { email } from @firestitch/common/validate; instead
504
- */
505
- phone(value) {
506
- const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/.test(value);
507
- return valid || !String(value).length;
508
- }
509
- /**
510
- * @deprecated use import { email } from @firestitch/common/validate; instead
511
- */
512
- email(value) {
513
- return !!this.fsUtil.string(value).match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
514
- }
515
- }
516
- FsValidate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate, deps: [{ token: FsUtil }], target: i0.ɵɵFactoryTarget.Injectable });
517
- FsValidate.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate });
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate, decorators: [{
519
- type: Injectable
499
+ class FsValidate {
500
+ constructor(fsUtil) {
501
+ this.fsUtil = fsUtil;
502
+ }
503
+ /**
504
+ * @deprecated use import { email } from @firestitch/common/validate; instead
505
+ */
506
+ phone(value) {
507
+ const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/.test(value);
508
+ return valid || !String(value).length;
509
+ }
510
+ /**
511
+ * @deprecated use import { email } from @firestitch/common/validate; instead
512
+ */
513
+ email(value) {
514
+ return !!this.fsUtil.string(value).match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
515
+ }
516
+ }
517
+ FsValidate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate, deps: [{ token: FsUtil }], target: i0.ɵɵFactoryTarget.Injectable });
518
+ FsValidate.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate });
519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsValidate, decorators: [{
520
+ type: Injectable
520
521
  }], ctorParameters: function () { return [{ type: FsUtil }]; } });
521
522
 
522
- function stringify(value) {
523
- return JSON.stringify(value);
523
+ function stringify(value) {
524
+ return JSON.stringify(value);
524
525
  }
525
526
 
526
- function guid(pattern, options = { case: 'lower', numbers: true }) {
527
- pattern = pattern || 'xxxxxx';
528
- let s = '';
529
- if (options.numbers !== false) {
530
- s = '0123456789';
531
- }
532
- if (!options.case || options.case === 'lower' || options.case === 'mixed') {
533
- s = s.concat('abcdefghijklmnopqrstuvwxyz');
534
- }
535
- if (options.case === 'upper' || options.case === 'mixed') {
536
- s = s.concat('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
537
- }
538
- const chars = s.match(/(.{1,1})/g);
539
- return pattern.replace(/[x]/g, function (c) {
540
- const i = (Math.random() * chars.length) | 0;
541
- return chars[i];
542
- });
527
+ function guid(pattern, options = { case: 'lower', numbers: true }) {
528
+ pattern = pattern || 'xxxxxx';
529
+ let s = '';
530
+ if (options.numbers !== false) {
531
+ s = '0123456789';
532
+ }
533
+ if (!options.case || options.case === 'lower' || options.case === 'mixed') {
534
+ s = s.concat('abcdefghijklmnopqrstuvwxyz');
535
+ }
536
+ if (options.case === 'upper' || options.case === 'mixed') {
537
+ s = s.concat('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
538
+ }
539
+ const chars = s.match(/(.{1,1})/g);
540
+ return pattern.replace(/[x]/g, function (c) {
541
+ const i = (Math.random() * chars.length) | 0;
542
+ return chars[i];
543
+ });
543
544
  }
544
545
 
545
- function isEmpty(value, options) {
546
- options = options || {};
547
- return value === undefined ||
548
- value === null ||
549
- value === false ||
550
- value === '' ||
551
- String(value).length === 0 ||
552
- (Array.isArray(value) && value.length === 0) ||
553
- (value instanceof Object && (value.constructor.name === 'Object' && !Object.keys(value).length)) ||
554
- (!options.zero && (value === 0 || value === '0'));
546
+ function isEmpty(value, options) {
547
+ options = options || {};
548
+ return value === undefined ||
549
+ value === null ||
550
+ value === false ||
551
+ value === '' ||
552
+ String(value).length === 0 ||
553
+ (Array.isArray(value) && value.length === 0) ||
554
+ (value instanceof Object && (value.constructor.name === 'Object' && !Object.keys(value).length)) ||
555
+ (!options.zero && (value === 0 || value === '0'));
555
556
  }
556
557
 
557
- class FsUtilStringifyPipe {
558
- constructor() { }
559
- transform(value) {
560
- return stringify(value);
561
- }
562
- }
563
- FsUtilStringifyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
564
- FsUtilStringifyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, name: "fsUtilStringify" });
565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, decorators: [{
566
- type: Pipe,
567
- args: [{
568
- name: 'fsUtilStringify'
569
- }]
570
- }], ctorParameters: function () { return []; } });
571
- class FsUtilGuidPipe {
572
- constructor() { }
573
- transform() {
574
- return guid();
575
- }
576
- }
577
- FsUtilGuidPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
578
- FsUtilGuidPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, name: "fsUtilGuid" });
579
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, decorators: [{
580
- type: Pipe,
581
- args: [{
582
- name: 'fsUtilGuid'
583
- }]
584
- }], ctorParameters: function () { return []; } });
585
- class FsUtilIsEmptyPipe {
586
- transform(value) {
587
- return isEmpty(value);
588
- }
589
- }
590
- FsUtilIsEmptyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
591
- FsUtilIsEmptyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, name: "fsUtilIsEmpty" });
592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, decorators: [{
593
- type: Pipe,
594
- args: [{
595
- name: 'fsUtilIsEmpty'
596
- }]
597
- }] });
598
- class FsUtilIsNotEmptyPipe {
599
- transform(value) {
600
- return !isEmpty(value);
601
- }
602
- }
603
- FsUtilIsNotEmptyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
604
- FsUtilIsNotEmptyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, name: "fsUtilIsNotEmpty" });
605
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, decorators: [{
606
- type: Pipe,
607
- args: [{
608
- name: 'fsUtilIsNotEmpty'
609
- }]
558
+ class FsUtilStringifyPipe {
559
+ constructor() { }
560
+ transform(value) {
561
+ return stringify(value);
562
+ }
563
+ }
564
+ FsUtilStringifyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
565
+ FsUtilStringifyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, name: "fsUtilStringify" });
566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilStringifyPipe, decorators: [{
567
+ type: Pipe,
568
+ args: [{
569
+ name: 'fsUtilStringify'
570
+ }]
571
+ }], ctorParameters: function () { return []; } });
572
+ class FsUtilGuidPipe {
573
+ constructor() { }
574
+ transform() {
575
+ return guid();
576
+ }
577
+ }
578
+ FsUtilGuidPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
579
+ FsUtilGuidPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, name: "fsUtilGuid" });
580
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilGuidPipe, decorators: [{
581
+ type: Pipe,
582
+ args: [{
583
+ name: 'fsUtilGuid'
584
+ }]
585
+ }], ctorParameters: function () { return []; } });
586
+ class FsUtilIsEmptyPipe {
587
+ transform(value) {
588
+ return isEmpty(value);
589
+ }
590
+ }
591
+ FsUtilIsEmptyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
592
+ FsUtilIsEmptyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, name: "fsUtilIsEmpty" });
593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsEmptyPipe, decorators: [{
594
+ type: Pipe,
595
+ args: [{
596
+ name: 'fsUtilIsEmpty'
597
+ }]
598
+ }] });
599
+ class FsUtilIsNotEmptyPipe {
600
+ transform(value) {
601
+ return !isEmpty(value);
602
+ }
603
+ }
604
+ FsUtilIsNotEmptyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
605
+ FsUtilIsNotEmptyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, name: "fsUtilIsNotEmpty" });
606
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsUtilIsNotEmptyPipe, decorators: [{
607
+ type: Pipe,
608
+ args: [{
609
+ name: 'fsUtilIsNotEmpty'
610
+ }]
610
611
  }] });
611
612
 
612
- function number(value, decimals) {
613
- return Number(value || 0).toLocaleString(undefined, { maximumFractionDigits: decimals });
613
+ function number(value, decimals) {
614
+ return Number(value || 0).toLocaleString(undefined, { maximumFractionDigits: decimals });
614
615
  }
615
616
 
616
- class FsFormatNumberPipe {
617
- transform(value, decimals) {
618
- return number(value, decimals);
619
- }
620
- }
621
- FsFormatNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
622
- FsFormatNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, name: "fsFormatNumber" });
623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, decorators: [{
624
- type: Pipe,
625
- args: [{
626
- name: 'fsFormatNumber'
627
- }]
617
+ class FsFormatNumberPipe {
618
+ transform(value, decimals) {
619
+ return number(value, decimals);
620
+ }
621
+ }
622
+ FsFormatNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
623
+ FsFormatNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, name: "fsFormatNumber" });
624
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatNumberPipe, decorators: [{
625
+ type: Pipe,
626
+ args: [{
627
+ name: 'fsFormatNumber'
628
+ }]
628
629
  }] });
629
630
 
630
- function currency(amount, precision = [2, 10], currencyCode = 'USD', locale = 'en-US') {
631
- const digitsInfo = Array.isArray(precision) ? precision : [precision, precision];
632
- return new CurrencyPipe(locale).transform(amount, currencyCode, 'symbol', `1.${digitsInfo[0]}-${digitsInfo[1]}`);
631
+ function currency(amount, precision = [2, 10], currencyCode = 'USD', locale = 'en-US') {
632
+ const digitsInfo = Array.isArray(precision) ? precision : [precision, precision];
633
+ return new CurrencyPipe(locale).transform(amount, currencyCode, 'symbol', `1.${digitsInfo[0]}-${digitsInfo[1]}`);
633
634
  }
634
635
 
635
- class FsFormatCurrencyPipe {
636
- constructor(locale) {
637
- this.locale = locale;
638
- }
639
- transform(amount, precision, currencyCode) {
640
- return currency(amount, precision, currencyCode);
641
- }
642
- }
643
- FsFormatCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
644
- FsFormatCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, name: "fsFormatCurrency" });
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, decorators: [{
646
- type: Pipe,
647
- args: [{
648
- name: 'fsFormatCurrency'
649
- }]
650
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
651
- type: Inject,
652
- args: [LOCALE_ID]
636
+ class FsFormatCurrencyPipe {
637
+ constructor(locale) {
638
+ this.locale = locale;
639
+ }
640
+ transform(amount, precision = 2, currencyCode) {
641
+ return currency(amount, precision, currencyCode);
642
+ }
643
+ }
644
+ FsFormatCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
645
+ FsFormatCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, name: "fsFormatCurrency" });
646
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatCurrencyPipe, decorators: [{
647
+ type: Pipe,
648
+ args: [{
649
+ name: 'fsFormatCurrency'
650
+ }]
651
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
652
+ type: Inject,
653
+ args: [LOCALE_ID]
653
654
  }] }]; } });
654
655
 
655
- function truncate(value, limit = 100, completeWords = false, ellipsis = '...') {
656
- value = value || '';
657
- if (completeWords) {
658
- limit = value.substr(0, limit).lastIndexOf(' ');
659
- }
660
- let result = `${value.substr(0, limit)}`;
661
- if (result !== value) {
662
- result += ellipsis;
663
- }
664
- return result;
656
+ function truncate(value, limit = 100, completeWords = false, ellipsis = '...') {
657
+ value = value || '';
658
+ if (completeWords) {
659
+ limit = value.substr(0, limit).lastIndexOf(' ');
660
+ }
661
+ let result = `${value.substr(0, limit)}`;
662
+ if (result !== value) {
663
+ result += ellipsis;
664
+ }
665
+ return result;
665
666
  }
666
667
 
667
- class FsFormatTruncatePipe {
668
- constructor() { }
669
- transform(value, limit, completeWords, ellipsis) {
670
- return truncate(value, limit, completeWords, ellipsis);
671
- }
672
- }
673
- FsFormatTruncatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
674
- FsFormatTruncatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, name: "fsFormatTruncate" });
675
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, decorators: [{
676
- type: Pipe,
677
- args: [{
678
- name: 'fsFormatTruncate'
679
- }]
668
+ class FsFormatTruncatePipe {
669
+ constructor() { }
670
+ transform(value, limit, completeWords, ellipsis) {
671
+ return truncate(value, limit, completeWords, ellipsis);
672
+ }
673
+ }
674
+ FsFormatTruncatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
675
+ FsFormatTruncatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, name: "fsFormatTruncate" });
676
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatTruncatePipe, decorators: [{
677
+ type: Pipe,
678
+ args: [{
679
+ name: 'fsFormatTruncate'
680
+ }]
680
681
  }], ctorParameters: function () { return []; } });
681
682
 
682
- function bytes(bytes) {
683
- if (!bytes) {
684
- return '0.00 B';
685
- }
686
- const e = Math.floor(Math.log(bytes) / Math.log(1024));
687
- const decimals = (bytes / 1024) > 1000 ? 2 : 0;
688
- console.log(bytes, (bytes / 1024), decimals);
689
- return `${(bytes / Math.pow(1024, e)).toFixed(decimals)}`.replace(/\.00/, '')
690
- + ' '
691
- + (e ? ' KMGTP'.charAt(e) : '') + 'B';
692
- }
693
-
694
- class FsFormatBytesPipe {
695
- transform(value) {
696
- return bytes(value);
697
- }
698
- }
699
- FsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
700
- FsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, name: "fsFormatBytes" });
701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, decorators: [{
702
- type: Pipe,
703
- args: [{
704
- name: 'fsFormatBytes',
705
- }]
706
- }] });
707
-
708
- class FsStopPropagationDirective {
709
- preventClick(event) {
710
- event.stopPropagation();
711
- }
712
- }
713
- FsStopPropagationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
714
- FsStopPropagationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsStopPropagationDirective, selector: "[fsStopPropagation]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, decorators: [{
716
- type: Directive,
717
- args: [{
718
- selector: '[fsStopPropagation]',
719
- }]
720
- }], propDecorators: { preventClick: [{
721
- type: HostListener,
722
- args: ['click', ['$event']]
683
+ class FsStopPropagationDirective {
684
+ preventClick(event) {
685
+ event.stopPropagation();
686
+ }
687
+ }
688
+ FsStopPropagationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
689
+ FsStopPropagationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsStopPropagationDirective, selector: "[fsStopPropagation]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, decorators: [{
691
+ type: Directive,
692
+ args: [{
693
+ selector: '[fsStopPropagation]',
694
+ }]
695
+ }], propDecorators: { preventClick: [{
696
+ type: HostListener,
697
+ args: ['click', ['$event']]
723
698
  }] } });
724
699
 
725
- class FsPreventDefaultDirective {
726
- preventClick(event) {
727
- event.preventDefault();
728
- }
729
- }
730
- FsPreventDefaultDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
731
- FsPreventDefaultDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsPreventDefaultDirective, selector: "[fsPreventDefault]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
732
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, decorators: [{
733
- type: Directive,
734
- args: [{
735
- selector: '[fsPreventDefault]',
736
- }]
737
- }], propDecorators: { preventClick: [{
738
- type: HostListener,
739
- args: ['click', ['$event']]
700
+ class FsPreventDefaultDirective {
701
+ preventClick(event) {
702
+ event.preventDefault();
703
+ }
704
+ }
705
+ FsPreventDefaultDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
706
+ FsPreventDefaultDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsPreventDefaultDirective, selector: "[fsPreventDefault]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
707
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, decorators: [{
708
+ type: Directive,
709
+ args: [{
710
+ selector: '[fsPreventDefault]',
711
+ }]
712
+ }], propDecorators: { preventClick: [{
713
+ type: HostListener,
714
+ args: ['click', ['$event']]
740
715
  }] } });
741
716
 
742
- class FsAutofocusDirective {
743
- constructor(_el) {
744
- this._el = _el;
745
- }
746
- ngAfterViewInit() {
747
- setTimeout(() => {
748
- this._el.nativeElement.focus();
749
- });
750
- }
751
- }
752
- FsAutofocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAutofocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
753
- FsAutofocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsAutofocusDirective, selector: "[autofocus]", ngImport: i0 });
754
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAutofocusDirective, decorators: [{
755
- type: Directive,
756
- args: [{
757
- selector: '[autofocus]',
758
- }]
759
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
717
+ class FsAutofocusDirective {
718
+ constructor(_matInput, _el) {
719
+ this._matInput = _matInput;
720
+ this._el = _el;
721
+ this.fsAutofocus = true;
722
+ }
723
+ ngAfterViewInit() {
724
+ if (this.fsAutofocus !== false) {
725
+ setTimeout(() => {
726
+ this.focus();
727
+ }, 100);
728
+ }
729
+ }
730
+ focus() {
731
+ if (this._matInput) {
732
+ this._matInput.focus();
733
+ }
734
+ else if (this._el.nativeElement.focus) {
735
+ this._el.nativeElement.focus();
736
+ }
737
+ }
738
+ }
739
+ FsAutofocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAutofocusDirective, deps: [{ token: i1.MatInput, host: true, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
740
+ FsAutofocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsAutofocusDirective, selector: "[fsAutofocus],[autofocus]", inputs: { fsAutofocus: "fsAutofocus" }, ngImport: i0 });
741
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAutofocusDirective, decorators: [{
742
+ type: Directive,
743
+ args: [{
744
+ selector: '[fsAutofocus],[autofocus]',
745
+ }]
746
+ }], ctorParameters: function () { return [{ type: i1.MatInput, decorators: [{
747
+ type: Optional
748
+ }, {
749
+ type: Host
750
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { fsAutofocus: [{
751
+ type: Input
752
+ }] } });
760
753
 
761
- function ordinalNumber(value) {
762
- value = String(value);
763
- const index = value.match `1?.$`;
764
- const endings = [, 'st', 'nd', 'rd'];
765
- const ending = endings[index] || 'th';
766
- return value + ending;
754
+ function ordinalNumber(value) {
755
+ value = String(value);
756
+ const index = value.match `1?.$`;
757
+ const endings = [, 'st', 'nd', 'rd'];
758
+ const ending = endings[index] || 'th';
759
+ return value + ending;
767
760
  }
768
761
 
769
- class FsFormatOrdinalNumberPipe {
770
- transform(value) {
771
- return ordinalNumber(value);
772
- }
773
- }
774
- FsFormatOrdinalNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
775
- FsFormatOrdinalNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, name: "fsFormatOrdinalNumber" });
776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, decorators: [{
777
- type: Pipe,
778
- args: [{
779
- name: 'fsFormatOrdinalNumber',
780
- }]
762
+ class FsFormatOrdinalNumberPipe {
763
+ transform(value) {
764
+ return ordinalNumber(value);
765
+ }
766
+ }
767
+ FsFormatOrdinalNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
768
+ FsFormatOrdinalNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, name: "fsFormatOrdinalNumber" });
769
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, decorators: [{
770
+ type: Pipe,
771
+ args: [{
772
+ name: 'fsFormatOrdinalNumber',
773
+ }]
781
774
  }] });
782
775
 
783
- class FsCommonModule {
784
- static forRoot() {
785
- return {
786
- ngModule: FsCommonModule,
787
- providers: [
788
- FsArray,
789
- FsMath,
790
- FsUtil,
791
- FsValidate
792
- ]
793
- };
794
- }
776
+ function email(value) {
777
+ return !!String(value).match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
795
778
  }
796
- FsCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
797
- FsCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, declarations: [FsStopPropagationDirective,
798
- FsPreventDefaultDirective,
799
- FsAutofocusDirective,
800
- FsUtilGuidPipe,
801
- FsUtilIsEmptyPipe,
802
- FsUtilIsNotEmptyPipe,
803
- FsUtilStringifyPipe,
804
- FsFormatNumberPipe,
805
- FsFormatCurrencyPipe,
806
- FsFormatTruncatePipe,
807
- FsFormatBytesPipe,
808
- FsFormatOrdinalNumberPipe], imports: [CommonModule], exports: [FsStopPropagationDirective,
809
- FsPreventDefaultDirective,
810
- FsAutofocusDirective,
811
- FsUtilGuidPipe,
812
- FsUtilStringifyPipe,
813
- FsFormatNumberPipe,
814
- FsFormatCurrencyPipe,
815
- FsFormatTruncatePipe,
816
- FsUtilIsEmptyPipe,
817
- FsUtilIsNotEmptyPipe,
818
- FsFormatBytesPipe,
819
- FsFormatOrdinalNumberPipe] });
820
- FsCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, imports: [[
821
- CommonModule,
822
- ]] });
823
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, decorators: [{
824
- type: NgModule,
825
- args: [{
826
- imports: [
827
- CommonModule,
828
- ],
829
- exports: [
830
- FsStopPropagationDirective,
831
- FsPreventDefaultDirective,
832
- FsAutofocusDirective,
833
- FsUtilGuidPipe,
834
- FsUtilStringifyPipe,
835
- FsFormatNumberPipe,
836
- FsFormatCurrencyPipe,
837
- FsFormatTruncatePipe,
838
- FsUtilIsEmptyPipe,
839
- FsUtilIsNotEmptyPipe,
840
- FsFormatBytesPipe,
841
- FsFormatOrdinalNumberPipe,
842
- ],
843
- declarations: [
844
- FsStopPropagationDirective,
845
- FsPreventDefaultDirective,
846
- FsAutofocusDirective,
847
- FsUtilGuidPipe,
848
- FsUtilIsEmptyPipe,
849
- FsUtilIsNotEmptyPipe,
850
- FsUtilStringifyPipe,
851
- FsFormatNumberPipe,
852
- FsFormatCurrencyPipe,
853
- FsFormatTruncatePipe,
854
- FsFormatBytesPipe,
855
- FsFormatOrdinalNumberPipe,
856
- ],
857
- }]
858
- }] });
859
779
 
860
- function email(value) {
861
- return !!String(value).match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
780
+ function phone(value) {
781
+ const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4}/.test(value);
782
+ return valid || !String(value).length;
862
783
  }
863
784
 
864
- function phone(value) {
865
- const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4}/.test(value);
866
- return valid || !String(value).length;
785
+ /**
786
+ * Check validity of the url.
787
+ * Protocol (http/https) isn't required.
788
+ * @param value
789
+ * @returns {boolean}
790
+ */
791
+ function url(value) {
792
+ const expression = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#%[\]@!\$&'\(\)\*\+,;=.]+$/gm;
793
+ const regexp = new RegExp(expression);
794
+ return !!String(value).match(regexp);
867
795
  }
868
796
 
869
- /**
870
- * Check validity of the url.
871
- * Protocol (http/https) isn't required.
872
- * @param value
873
- * @returns {boolean}
874
- */
875
- function url(value) {
876
- const expression = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#%[\]@!\$&'\(\)\*\+,;=.]+$/gm;
877
- const regexp = new RegExp(expression);
878
- return !!String(value).match(regexp);
797
+ function compare(query, item) {
798
+ let value = true;
799
+ for (const key in query) {
800
+ value = value && item[key] == query[key];
801
+ }
802
+ return value;
879
803
  }
880
804
 
881
- function compare(query, item) {
882
- let value = true;
883
- for (const key in query) {
884
- value = value && item[key] == query[key];
885
- }
886
- return value;
805
+ function filter(array, query) {
806
+ if (typeof query !== 'function') {
807
+ const queryObj = query;
808
+ query = (item) => {
809
+ return compare(queryObj, item);
810
+ };
811
+ }
812
+ const isarray = Array.isArray(array);
813
+ const list = isarray ? [] : {};
814
+ if (isarray) {
815
+ array.forEach(function (item, idx) {
816
+ if (query(item)) {
817
+ list.push(item);
818
+ }
819
+ });
820
+ }
821
+ else {
822
+ Object.keys(array).forEach(key => {
823
+ if (query(array[key])) {
824
+ list[key] = array[key];
825
+ }
826
+ });
827
+ }
828
+ return list;
887
829
  }
888
830
 
889
- function filter(array, query) {
890
- if (typeof query !== 'function') {
891
- const queryObj = query;
892
- query = (item) => {
893
- return compare(queryObj, item);
894
- };
895
- }
896
- const isarray = Array.isArray(array);
897
- const list = isarray ? [] : {};
898
- if (isarray) {
899
- array.forEach(function (item, idx) {
900
- if (query(item)) {
901
- list.push(item);
902
- }
903
- });
904
- }
905
- else {
906
- Object.keys(array).forEach(key => {
907
- if (query(array[key])) {
908
- list[key] = array[key];
909
- }
910
- });
911
- }
912
- return list;
831
+ function inArray(values, array) {
832
+ if (!Array.isArray(values)) {
833
+ values = [values];
834
+ }
835
+ for (let i = 0, len = values.length; i < len; i++) {
836
+ if (array.indexOf(values[i]) >= 0) {
837
+ return true;
838
+ }
839
+ }
840
+ return false;
913
841
  }
914
842
 
915
- function inArray(values, array) {
916
- if (!Array.isArray(values)) {
917
- values = [values];
918
- }
919
- for (let i = 0, len = values.length; i < len; i++) {
920
- if (array.indexOf(values[i]) >= 0) {
921
- return true;
922
- }
923
- }
924
- return false;
843
+ function index(array, name, value = null) {
844
+ const list = {};
845
+ array.forEach(function (item) {
846
+ list[item[name]] = value ? item[value] : item;
847
+ });
848
+ return list;
925
849
  }
926
850
 
927
- function index(array, name, value = null) {
928
- const list = {};
929
- array.forEach(function (item) {
930
- list[item[name]] = value ? item[value] : item;
931
- });
932
- return list;
851
+ function indexOf(array, query) {
852
+ if (typeof query !== 'function') {
853
+ const queryObj = query;
854
+ query = (item) => {
855
+ return compare(queryObj, item);
856
+ };
857
+ }
858
+ for (let i = 0, len = array.length; i < len; i++) {
859
+ if (query(array[i])) {
860
+ return i;
861
+ }
862
+ }
863
+ return -1;
933
864
  }
934
865
 
935
- function indexOf(array, query) {
936
- if (typeof query !== 'function') {
937
- const queryObj = query;
938
- query = (item) => {
939
- return compare(queryObj, item);
940
- };
941
- }
942
- for (let i = 0, len = array.length; i < len; i++) {
943
- if (query(array[i])) {
944
- return i;
945
- }
946
- }
947
- return -1;
866
+ function keyExists(array, key) {
867
+ return array.hasOwnProperty(key);
948
868
  }
949
869
 
950
- function keyExists(array, key) {
951
- return array.hasOwnProperty(key);
870
+ function ksort(unordered) {
871
+ Object.keys(unordered).sort().forEach(function (key) {
872
+ const value = unordered[key];
873
+ delete unordered[key];
874
+ unordered[key] = value;
875
+ });
952
876
  }
953
877
 
954
- function ksort(unordered) {
955
- Object.keys(unordered).sort().forEach(function (key) {
956
- const value = unordered[key];
957
- delete unordered[key];
958
- unordered[key] = value;
959
- });
878
+ function list(array, property, index = null) {
879
+ const resultList = index ? {} : [];
880
+ array.forEach(function (item, idx) {
881
+ if (index) {
882
+ resultList[item[index]] = item[property];
883
+ }
884
+ else {
885
+ resultList.push(item[property]);
886
+ }
887
+ });
888
+ return resultList;
960
889
  }
961
890
 
962
- function list(array, property, index = null) {
963
- const resultList = index ? {} : [];
964
- array.forEach(function (item, idx) {
965
- if (index) {
966
- resultList[item[index]] = item[property];
967
- }
968
- else {
969
- resultList.push(item[property]);
970
- }
971
- });
972
- return resultList;
891
+ function nameValue(array, name, value) {
892
+ const list = [];
893
+ if (name || value) {
894
+ const nameFn = typeof name === 'function' ? name : function (item) {
895
+ return item[name];
896
+ };
897
+ const valueFn = typeof value === 'function' ? value : function (item) {
898
+ return item[value];
899
+ };
900
+ array.forEach(function (item) {
901
+ list.push({ name: nameFn(item), value: valueFn(item) });
902
+ });
903
+ }
904
+ else {
905
+ array.forEach(function (n, v) {
906
+ list.push({ name: n, value: v });
907
+ });
908
+ }
909
+ return list;
973
910
  }
974
911
 
975
- function nameValue(array, name, value) {
976
- const list = [];
977
- if (name || value) {
978
- const nameFn = typeof name === 'function' ? name : function (item) {
979
- return item[name];
980
- };
981
- const valueFn = typeof value === 'function' ? value : function (item) {
982
- return item[value];
983
- };
984
- array.forEach(function (item) {
985
- list.push({ name: nameFn(item), value: valueFn(item) });
986
- });
987
- }
988
- else {
989
- array.forEach(function (n, v) {
990
- list.push({ name: n, value: v });
991
- });
992
- }
993
- return list;
912
+ function remove(array, query) {
913
+ const idx = indexOf(array, query);
914
+ if (idx >= 0) {
915
+ return array.splice(idx, 1);
916
+ }
917
+ return idx;
994
918
  }
995
919
 
996
- function remove(array, query) {
997
- const idx = indexOf(array, query);
998
- if (idx >= 0) {
999
- return array.splice(idx, 1);
1000
- }
1001
- return idx;
920
+ function sort(array, query, reverse = false) {
921
+ if (typeof query !== 'function') {
922
+ const queryStr = query;
923
+ query = function (a, b) {
924
+ if (reverse) {
925
+ if (a[queryStr] < b[queryStr]) {
926
+ return 1;
927
+ }
928
+ else if (a[queryStr] > b[queryStr]) {
929
+ return -1;
930
+ }
931
+ }
932
+ else {
933
+ if (a[queryStr] > b[queryStr]) {
934
+ return 1;
935
+ }
936
+ else if (a[queryStr] < b[queryStr]) {
937
+ return -1;
938
+ }
939
+ }
940
+ return 0;
941
+ };
942
+ }
943
+ array.sort(query);
944
+ return array;
1002
945
  }
1003
946
 
1004
- function sort(array, query, reverse = false) {
1005
- if (typeof query !== 'function') {
1006
- const queryStr = query;
1007
- query = function (a, b) {
1008
- if (reverse) {
1009
- if (a[queryStr] < b[queryStr]) {
1010
- return 1;
1011
- }
1012
- else if (a[queryStr] > b[queryStr]) {
1013
- return -1;
1014
- }
1015
- }
1016
- else {
1017
- if (a[queryStr] > b[queryStr]) {
1018
- return 1;
1019
- }
1020
- else if (a[queryStr] < b[queryStr]) {
1021
- return -1;
1022
- }
1023
- }
1024
- return 0;
1025
- };
1026
- }
1027
- array.sort(query);
1028
- return array;
947
+ function rsort(array, query) {
948
+ return sort(array, query, true);
1029
949
  }
1030
950
 
1031
- function rsort(array, query) {
1032
- return sort(array, query, true);
951
+ function find(array, query) {
952
+ const data = filter(array, query);
953
+ return data.length ? data[0] : null;
1033
954
  }
1034
955
 
1035
- function find(array, query) {
1036
- const data = filter(array, query);
1037
- return data.length ? data[0] : null;
956
+ function boolean(value) {
957
+ return String(value).toLowerCase() !== 'false' && !!value;
1038
958
  }
1039
959
 
1040
- function boolean(value) {
1041
- return String(value).toLowerCase() !== 'false' && !!value;
960
+ function debounce(func, wait, immediate) {
961
+ let timeout;
962
+ return function () {
963
+ const context = this, args = arguments;
964
+ const later = function () {
965
+ timeout = null;
966
+ if (!immediate)
967
+ func.apply(context, args);
968
+ };
969
+ const callNow = immediate && !timeout;
970
+ clearTimeout(timeout);
971
+ timeout = setTimeout(later, wait);
972
+ if (callNow)
973
+ func.apply(context, args);
974
+ };
1042
975
  }
1043
976
 
1044
- function debounce(func, wait, immediate) {
1045
- let timeout;
1046
- return function () {
1047
- const context = this, args = arguments;
1048
- const later = function () {
1049
- timeout = null;
1050
- if (!immediate)
1051
- func.apply(context, args);
1052
- };
1053
- const callNow = immediate && !timeout;
1054
- clearTimeout(timeout);
1055
- timeout = setTimeout(later, wait);
1056
- if (callNow)
1057
- func.apply(context, args);
1058
- };
1059
- }
1060
-
1061
- const KEY_CANCEL = 3;
1062
- const KEY_HELP = 6;
1063
- const KEY_BACKSPACE = 8;
1064
- const KEY_TAB = 9;
1065
- const KEY_CLEAR = 12;
1066
- const KEY_RETURN = 13;
1067
- const KEY_ENTER = 14;
1068
- const KEY_SHIFT = 16;
1069
- const KEY_CONTROL = 17;
1070
- const KEY_ALT = 18;
1071
- const KEY_PAUSE = 19;
1072
- const KEY_CAPS_LOCK = 20;
1073
- const KEY_ESCAPE = 27;
1074
- const KEY_SPACE = 32;
1075
- const KEY_PAGE_UP = 33;
1076
- const KEY_PAGE_DOWN = 34;
1077
- const KEY_END = 35;
1078
- const KEY_HOME = 36;
1079
- const KEY_LEFT = 37;
1080
- const KEY_UP = 38;
1081
- const KEY_RIGHT = 39;
1082
- const KEY_DOWN = 40;
1083
- const KEY_PRINTSCREEN = 44;
1084
- const KEY_INSERT = 45;
1085
- const KEY_DELETE = 46;
1086
- const KEY_0 = 48;
1087
- const KEY_1 = 49;
1088
- const KEY_2 = 50;
1089
- const KEY_3 = 51;
1090
- const KEY_4 = 52;
1091
- const KEY_5 = 53;
1092
- const KEY_6 = 54;
1093
- const KEY_7 = 55;
1094
- const KEY_8 = 56;
1095
- const KEY_9 = 57;
1096
- const KEY_SEMICOLON = 59;
977
+ const KEY_CANCEL = 3;
978
+ const KEY_HELP = 6;
979
+ const KEY_BACKSPACE = 8;
980
+ const KEY_TAB = 9;
981
+ const KEY_CLEAR = 12;
982
+ const KEY_RETURN = 13;
983
+ const KEY_ENTER = 14;
984
+ const KEY_SHIFT = 16;
985
+ const KEY_CONTROL = 17;
986
+ const KEY_ALT = 18;
987
+ const KEY_PAUSE = 19;
988
+ const KEY_CAPS_LOCK = 20;
989
+ const KEY_ESCAPE = 27;
990
+ const KEY_SPACE = 32;
991
+ const KEY_PAGE_UP = 33;
992
+ const KEY_PAGE_DOWN = 34;
993
+ const KEY_END = 35;
994
+ const KEY_HOME = 36;
995
+ const KEY_LEFT = 37;
996
+ const KEY_UP = 38;
997
+ const KEY_RIGHT = 39;
998
+ const KEY_DOWN = 40;
999
+ const KEY_PRINTSCREEN = 44;
1000
+ const KEY_INSERT = 45;
1001
+ const KEY_DELETE = 46;
1002
+ const KEY_0 = 48;
1003
+ const KEY_1 = 49;
1004
+ const KEY_2 = 50;
1005
+ const KEY_3 = 51;
1006
+ const KEY_4 = 52;
1007
+ const KEY_5 = 53;
1008
+ const KEY_6 = 54;
1009
+ const KEY_7 = 55;
1010
+ const KEY_8 = 56;
1011
+ const KEY_9 = 57;
1012
+ const KEY_SEMICOLON = 59;
1097
1013
  const KEY_EQUALS = 61;
1098
1014
 
1099
- function length(object) {
1100
- if (Array.isArray(object)) {
1101
- return object.length;
1102
- }
1103
- if (object instanceof Object) {
1104
- return Object.keys(object).length;
1105
- }
1106
- return 0;
1015
+ function length(object) {
1016
+ if (Array.isArray(object)) {
1017
+ return object.length;
1018
+ }
1019
+ if (object instanceof Object) {
1020
+ return Object.keys(object).length;
1021
+ }
1022
+ return 0;
1107
1023
  }
1108
1024
 
1109
- function resolve(promise, defaults = []) {
1110
- const result = defaults;
1111
- return new Promise(resolve => {
1112
- promise.then(function (data) {
1113
- Object.keys(data).forEach(key => result[key] = data[key]);
1114
- resolve(result);
1115
- });
1116
- });
1025
+ function resolve(promise, defaults = []) {
1026
+ const result = defaults;
1027
+ return new Promise(resolve => {
1028
+ promise.then(function (data) {
1029
+ Object.keys(data).forEach(key => result[key] = data[key]);
1030
+ resolve(result);
1031
+ });
1032
+ });
1117
1033
  }
1118
1034
 
1119
- function uuid() {
1120
- return guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
1035
+ function uuid() {
1036
+ return guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
1121
1037
  }
1122
1038
 
1123
- function value(object, key, def) {
1124
- if (typeof object === 'object' || Array.isArray(object)) {
1125
- if (object.hasOwnProperty(key)) {
1126
- return object[key];
1127
- }
1128
- }
1129
- return def;
1039
+ function value(object, key, def) {
1040
+ if (typeof object === 'object' || Array.isArray(object)) {
1041
+ if (object.hasOwnProperty(key)) {
1042
+ return object[key];
1043
+ }
1044
+ }
1045
+ return def;
1130
1046
  }
1131
1047
 
1132
- function isClass(value, cls) {
1133
- if (typeof value === 'object') {
1134
- if (typeof cls === 'string') {
1135
- if (value.constructor) {
1136
- if (value.constructor.name === cls) {
1137
- return true;
1138
- }
1139
- }
1140
- }
1141
- else {
1142
- if (value instanceof cls) {
1143
- return true;
1144
- }
1145
- }
1146
- }
1147
- return false;
1048
+ function isClass(value, cls) {
1049
+ if (typeof value === 'object') {
1050
+ if (typeof cls === 'string') {
1051
+ if (value.constructor) {
1052
+ if (value.constructor.name === cls) {
1053
+ return true;
1054
+ }
1055
+ }
1056
+ }
1057
+ else {
1058
+ if (value instanceof cls) {
1059
+ return true;
1060
+ }
1061
+ }
1062
+ }
1063
+ return false;
1148
1064
  }
1149
1065
 
1150
- function isNumeric(value) {
1151
- const str = String(value);
1152
- return str.length && !!str.match(/^-?\d*\.?\d*$/);
1066
+ function isNumeric(value) {
1067
+ const str = String(value);
1068
+ return str.length && !!str.match(/^-?\d*\.?\d*$/);
1153
1069
  }
1154
1070
 
1155
- function throttle(func, wait) {
1156
- let waiting = false; // Initially, we're not waiting
1157
- return function () {
1158
- if (!waiting) { // If we're not waiting
1159
- func.apply(null, arguments); // Execute users function
1160
- waiting = true; // Prevent future invocations
1161
- setTimeout(function () {
1162
- waiting = false; // And allow future invocations
1163
- }, wait);
1164
- }
1165
- };
1071
+ function throttle(func, wait) {
1072
+ let waiting = false; // Initially, we're not waiting
1073
+ return function () {
1074
+ if (!waiting) { // If we're not waiting
1075
+ func.apply(null, arguments); // Execute users function
1076
+ waiting = true; // Prevent future invocations
1077
+ setTimeout(function () {
1078
+ waiting = false; // And allow future invocations
1079
+ }, wait);
1080
+ }
1081
+ };
1166
1082
  }
1167
1083
 
1168
- class Operation {
1169
- constructor(target, name) {
1170
- this.ready$ = new Subject();
1171
- this.name = name ? name : guid();
1172
- if (target instanceof Observable) {
1173
- this.target = target;
1174
- }
1175
- else {
1176
- this.target = of(target);
1177
- }
1178
- }
1084
+ class Operation {
1085
+ constructor(target, name) {
1086
+ this.ready$ = new Subject();
1087
+ this.name = name ? name : guid();
1088
+ if (target instanceof Observable) {
1089
+ this.target = target;
1090
+ }
1091
+ else {
1092
+ this.target = of(target);
1093
+ }
1094
+ }
1179
1095
  }
1180
1096
 
1181
- var QueueState;
1182
- (function (QueueState) {
1183
- QueueState["Idle"] = "idle";
1184
- QueueState["Processing"] = "processing";
1097
+ var QueueState;
1098
+ (function (QueueState) {
1099
+ QueueState["Idle"] = "idle";
1100
+ QueueState["Processing"] = "processing";
1185
1101
  })(QueueState || (QueueState = {}));
1186
1102
 
1187
- class Queue {
1188
- constructor(_limit = Infinity) {
1189
- this._limit = _limit;
1190
- this._done = new Subject();
1191
- this._queue = [];
1192
- this._inProgress = [];
1193
- this._total = 0;
1194
- this._completed = 0;
1195
- this._errors = 0;
1196
- this._state = QueueState.Idle;
1197
- this._destroy$ = new Subject();
1198
- }
1199
- get total() {
1200
- return this._total;
1201
- }
1202
- get completed() {
1203
- return this._completed;
1204
- }
1205
- get pending() {
1206
- return this._queue.length;
1207
- }
1208
- get inProgress() {
1209
- return this._inProgress.length;
1210
- }
1211
- get errors() {
1212
- return this._errors;
1213
- }
1214
- get state() {
1215
- return this._state;
1216
- }
1217
- get empty() {
1218
- return !this._queue.length && !this._inProgress.length;
1219
- }
1220
- get pendingOperations() {
1221
- return this._queue
1222
- .map((operation) => operation.name);
1223
- }
1224
- get inProgressOperations() {
1225
- return this._inProgress
1226
- .map((operation) => operation.name);
1227
- }
1228
- isProcessing() {
1229
- return this._state === QueueState.Processing;
1230
- }
1231
- isIdle() {
1232
- return this._state === QueueState.Idle;
1233
- }
1234
- setLimit(value) {
1235
- this._limit = value;
1236
- }
1237
- subscribe(fun, err, complete) {
1238
- this._done
1239
- .pipe(takeUntil(this._destroy$))
1240
- .subscribe(fun, err, complete);
1241
- }
1242
- complete(fun, err, complete) {
1243
- Observable.create(observer => {
1244
- if (!this.isProcessing()) {
1245
- observer.next();
1246
- observer.complete();
1247
- return;
1248
- }
1249
- this.subscribe(() => {
1250
- observer.next();
1251
- observer.complete();
1252
- }, (error) => {
1253
- observer.error(error);
1254
- this.clear();
1255
- });
1256
- }).subscribe(fun, err, complete);
1257
- }
1258
- push(target, name) {
1259
- const operation = new Operation(target, name);
1260
- this._total++;
1261
- this._state = QueueState.Processing;
1262
- if (this._inProgress.length < this._limit) {
1263
- this._processOperation(operation);
1264
- }
1265
- else {
1266
- this._queue.push(operation);
1267
- }
1268
- return operation.ready$;
1269
- }
1270
- clear() {
1271
- this._queue = [];
1272
- this._total = 0;
1273
- this._errors = 0;
1274
- this._completed = 0;
1275
- this._state = QueueState.Idle;
1276
- this._done = new Subject();
1277
- }
1278
- destroy() {
1279
- this.clear();
1280
- this._done.complete();
1281
- }
1282
- _processOperation(operation) {
1283
- this._inProgress.push(operation);
1284
- operation.target
1285
- .pipe(delay(200), // Hack to prevent extra quick proccess execution
1286
- takeUntil(this._destroy$)).subscribe({
1287
- next: (data) => {
1288
- operation.ready$.next(data);
1289
- },
1290
- error: (error) => {
1291
- const opIndex = this._inProgress.indexOf(operation);
1292
- this._inProgress.splice(opIndex, 1);
1293
- this._errors++;
1294
- operation.ready$.error(error);
1295
- if (this.empty) {
1296
- this._state = QueueState.Idle;
1297
- this._done.error(error);
1298
- }
1299
- },
1300
- complete: () => {
1301
- const opIndex = this._inProgress.indexOf(operation);
1302
- this._inProgress.splice(opIndex, 1);
1303
- this._completed++;
1304
- operation.ready$.complete();
1305
- if (this.empty) {
1306
- this._state = QueueState.Idle;
1307
- this._done.next();
1308
- }
1309
- else {
1310
- if (this._queue.length) {
1311
- const queueItem = this._queue.shift();
1312
- this._processOperation(queueItem);
1313
- }
1314
- }
1315
- }
1316
- });
1317
- }
1103
+ class Queue {
1104
+ constructor(_limit = Infinity) {
1105
+ this._limit = _limit;
1106
+ this._done = new Subject();
1107
+ this._queue = [];
1108
+ this._inProgress = [];
1109
+ this._total = 0;
1110
+ this._completed = 0;
1111
+ this._errors = 0;
1112
+ this._state = QueueState.Idle;
1113
+ this._destroy$ = new Subject();
1114
+ }
1115
+ get total() {
1116
+ return this._total;
1117
+ }
1118
+ get completed() {
1119
+ return this._completed;
1120
+ }
1121
+ get pending() {
1122
+ return this._queue.length;
1123
+ }
1124
+ get inProgress() {
1125
+ return this._inProgress.length;
1126
+ }
1127
+ get errors() {
1128
+ return this._errors;
1129
+ }
1130
+ get state() {
1131
+ return this._state;
1132
+ }
1133
+ get empty() {
1134
+ return !this._queue.length && !this._inProgress.length;
1135
+ }
1136
+ get pendingOperations() {
1137
+ return this._queue
1138
+ .map((operation) => operation.name);
1139
+ }
1140
+ get inProgressOperations() {
1141
+ return this._inProgress
1142
+ .map((operation) => operation.name);
1143
+ }
1144
+ isProcessing() {
1145
+ return this._state === QueueState.Processing;
1146
+ }
1147
+ isIdle() {
1148
+ return this._state === QueueState.Idle;
1149
+ }
1150
+ setLimit(value) {
1151
+ this._limit = value;
1152
+ }
1153
+ subscribe(fun, err, complete) {
1154
+ this._done
1155
+ .pipe(takeUntil(this._destroy$))
1156
+ .subscribe(fun, err, complete);
1157
+ }
1158
+ complete(fun, err, complete) {
1159
+ Observable.create(observer => {
1160
+ if (!this.isProcessing()) {
1161
+ observer.next();
1162
+ observer.complete();
1163
+ return;
1164
+ }
1165
+ this.subscribe(() => {
1166
+ observer.next();
1167
+ observer.complete();
1168
+ }, (error) => {
1169
+ observer.error(error);
1170
+ this.clear();
1171
+ });
1172
+ }).subscribe(fun, err, complete);
1173
+ }
1174
+ push(target, name) {
1175
+ const operation = new Operation(target, name);
1176
+ this._total++;
1177
+ this._state = QueueState.Processing;
1178
+ if (this._inProgress.length < this._limit) {
1179
+ this._processOperation(operation);
1180
+ }
1181
+ else {
1182
+ this._queue.push(operation);
1183
+ }
1184
+ return operation.ready$;
1185
+ }
1186
+ clear() {
1187
+ this._queue = [];
1188
+ this._total = 0;
1189
+ this._errors = 0;
1190
+ this._completed = 0;
1191
+ this._state = QueueState.Idle;
1192
+ this._done = new Subject();
1193
+ }
1194
+ destroy() {
1195
+ this.clear();
1196
+ this._done.complete();
1197
+ }
1198
+ _processOperation(operation) {
1199
+ this._inProgress.push(operation);
1200
+ operation.target
1201
+ .pipe(delay(200), // Hack to prevent extra quick proccess execution
1202
+ takeUntil(this._destroy$)).subscribe({
1203
+ next: (data) => {
1204
+ operation.ready$.next(data);
1205
+ },
1206
+ error: (error) => {
1207
+ const opIndex = this._inProgress.indexOf(operation);
1208
+ this._inProgress.splice(opIndex, 1);
1209
+ this._errors++;
1210
+ operation.ready$.error(error);
1211
+ if (this.empty) {
1212
+ this._state = QueueState.Idle;
1213
+ this._done.error(error);
1214
+ }
1215
+ },
1216
+ complete: () => {
1217
+ const opIndex = this._inProgress.indexOf(operation);
1218
+ this._inProgress.splice(opIndex, 1);
1219
+ this._completed++;
1220
+ operation.ready$.complete();
1221
+ if (this.empty) {
1222
+ this._state = QueueState.Idle;
1223
+ this._done.next();
1224
+ }
1225
+ else {
1226
+ if (this._queue.length) {
1227
+ const queueItem = this._queue.shift();
1228
+ this._processOperation(queueItem);
1229
+ }
1230
+ }
1231
+ }
1232
+ });
1233
+ }
1318
1234
  }
1319
1235
 
1320
- function removeQueryParams(path) {
1321
- return path.split('?')[0];
1236
+ function removeQueryParams(path) {
1237
+ return path.split('?')[0];
1322
1238
  }
1323
1239
 
1324
- function getNormalizedPath(locationSrv) {
1325
- const path = locationSrv.prepareExternalUrl(locationSrv.path());
1326
- return removeQueryParams(path);
1240
+ function getNormalizedPath(locationSrv) {
1241
+ const path = locationSrv.prepareExternalUrl(locationSrv.path());
1242
+ return removeQueryParams(path);
1327
1243
  }
1328
1244
 
1329
- function round(num, decimalPlaces = 0) {
1330
- const p = Math.pow(10, decimalPlaces);
1331
- return Math.round(num * p) / p;
1245
+ function round(num, decimalPlaces = 0) {
1246
+ const p = Math.pow(10, decimalPlaces);
1247
+ return Math.round(num * p) / p;
1332
1248
  }
1333
1249
 
1334
- function clone(obj) {
1335
- if (obj instanceof Date) {
1336
- return new Date(obj);
1337
- }
1338
- else if (Array.isArray(obj)) {
1339
- const arr = [];
1340
- for (let i = 0; i < obj.length; i++) {
1341
- arr[i] = clone(obj[i]);
1342
- }
1343
- return arr;
1344
- }
1345
- else if (typeof (obj) === 'object') {
1346
- const cloned = {};
1347
- for (let key in obj) {
1348
- cloned[key] = clone(obj[key]);
1349
- }
1350
- return cloned;
1351
- }
1352
- return obj;
1250
+ function clone(obj) {
1251
+ if (obj instanceof Date) {
1252
+ return new Date(obj);
1253
+ }
1254
+ else if (Array.isArray(obj)) {
1255
+ const arr = [];
1256
+ for (let i = 0; i < obj.length; i++) {
1257
+ arr[i] = clone(obj[i]);
1258
+ }
1259
+ return arr;
1260
+ }
1261
+ else if (typeof (obj) === 'object') {
1262
+ const cloned = {};
1263
+ for (let key in obj) {
1264
+ cloned[key] = clone(obj[key]);
1265
+ }
1266
+ return cloned;
1267
+ }
1268
+ return obj;
1353
1269
  }
1354
1270
 
1355
- function isArrayEqual(arr1, arr2) {
1356
- if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {
1357
- return false;
1358
- }
1359
- const sortFn = (a, b) => {
1360
- if (a < b) {
1361
- return -1;
1362
- }
1363
- else if (a > b) {
1364
- return 1;
1365
- }
1366
- else {
1367
- return 0;
1368
- }
1369
- };
1370
- arr1 = [...arr1].sort(sortFn);
1371
- arr2 = [...arr2].sort(sortFn);
1372
- return arr1.every((value, index) => {
1373
- return value === arr2[index];
1374
- });
1271
+ function isArrayEqual(arr1, arr2) {
1272
+ if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {
1273
+ return false;
1274
+ }
1275
+ const sortFn = (a, b) => {
1276
+ if (a < b) {
1277
+ return -1;
1278
+ }
1279
+ else if (a > b) {
1280
+ return 1;
1281
+ }
1282
+ else {
1283
+ return 0;
1284
+ }
1285
+ };
1286
+ arr1 = [...arr1].sort(sortFn);
1287
+ arr2 = [...arr2].sort(sortFn);
1288
+ return arr1.every((value, index) => {
1289
+ return value === arr2[index];
1290
+ });
1375
1291
  }
1376
1292
 
1377
- const fsSourceLoader = (function () {
1378
- let _document;
1379
- let _headElement;
1380
- const _sources = new Map();
1381
- const _loadedResources = new Map();
1382
- // bad way but don't want to bother developer
1383
- setDocument(document);
1384
- // but developer can set document at any time
1385
- function setDocument(document) {
1386
- _document = document;
1387
- _headElement = _document === null || _document === void 0 ? void 0 : _document.head;
1388
- }
1389
- /**
1390
- * register a list of the resources for future loading
1391
- *
1392
- * example:
1393
- * sourceLoader.registerResources({
1394
- * froala: [
1395
- * '/assets/js/froala/froala_editor.min.js',
1396
- * '/assets/css/froala_editor.pkgd.min.css',
1397
- * ],
1398
- * froala_align: '/assets/js/froala/plugins/align.min.js',
1399
- * froala_colors: '/assets/js/froala/plugins/colors.min.js',
1400
- * froala_image: '/assets/js/froala/plugins/image.min.js',
1401
- * });
1402
- *
1403
- */
1404
- function registerResources(resources) {
1405
- Object.entries(resources)
1406
- .forEach(([name, path]) => {
1407
- if (typeof path === 'string') {
1408
- path = [path];
1409
- }
1410
- if (!_sources.has(name)) {
1411
- _sources.set(name, new Set());
1412
- }
1413
- const resourcesList = _sources.get(name);
1414
- path.forEach((p) => {
1415
- resourcesList.add(p);
1416
- });
1417
- });
1418
- }
1419
- /**
1420
- * load any resource previously registered
1421
- *
1422
- * sourceLoader.loadResource('froala')
1423
- *
1424
- * or load any js/css file
1425
- *
1426
- * sourceLoader.loadResource('/assets/my-source.js')
1427
- *
1428
- */
1429
- function loadResource(name) {
1430
- if (_loadedResources.has(name)) {
1431
- return _loadedResources.get(name);
1432
- }
1433
- if (_sources.has(name)) {
1434
- const sourcesForLoading = [..._sources.get(name)]
1435
- .map((path) => {
1436
- return _loadResource(path);
1437
- })
1438
- .filter((v) => !!v);
1439
- return combineLatest(sourcesForLoading);
1440
- }
1441
- return _loadResource(name);
1442
- }
1443
- /**
1444
- * the same as `loadResource` but you can pass list of the resources for loading
1445
- */
1446
- function loadResources(listOfResources) {
1447
- const resourcesToLoad = listOfResources
1448
- .reduce((acc, name) => {
1449
- const loading$ = loadResource(name);
1450
- if (loading$) {
1451
- acc.push(loading$);
1452
- }
1453
- return acc;
1454
- }, []);
1455
- return combineLatest(resourcesToLoad);
1456
- }
1457
- ///
1458
- function _loadResource(path) {
1459
- if (_isStylesUrl(path)) {
1460
- return _loadStyles(path);
1461
- }
1462
- if (_isJavascriptUrl(path)) {
1463
- return _loadJs(path);
1464
- }
1465
- console.warn(`Resource ${path} can not be identified and loaded`);
1466
- return null;
1467
- }
1468
- function _loadJs(scriptPath) {
1469
- if (!_loadedResources.has(scriptPath)) {
1470
- const obs$ = new Observable((obs) => {
1471
- const script = document.createElement('script');
1472
- script.src = scriptPath;
1473
- _headElement.appendChild(script);
1474
- script.onload = () => {
1475
- obs.next();
1476
- obs.complete();
1477
- };
1478
- script.onerror = (err) => {
1479
- obs.error(err);
1480
- };
1481
- }).pipe(shareReplay(1));
1482
- _loadedResources.set(scriptPath, obs$);
1483
- }
1484
- return _loadedResources.get(scriptPath);
1485
- }
1486
- function _loadStyles(stylePath) {
1487
- if (!_loadedResources.has(stylePath)) {
1488
- const obs$ = new Observable((obs) => {
1489
- const style = document.createElement('link');
1490
- style.id = stylePath;
1491
- style.rel = 'stylesheet';
1492
- style.href = `${stylePath}`;
1493
- _headElement.appendChild(style);
1494
- style.onload = () => {
1495
- obs.next();
1496
- obs.complete();
1497
- };
1498
- style.onerror = (err) => {
1499
- obs.error(err);
1500
- };
1501
- });
1502
- _loadedResources.set(stylePath, obs$);
1503
- }
1504
- return _loadedResources.get(stylePath);
1505
- }
1506
- function _isJavascriptUrl(url) {
1507
- return url.endsWith('.js');
1508
- }
1509
- function _isStylesUrl(url) {
1510
- return url.endsWith('.css');
1511
- }
1512
- return {
1513
- setDocument,
1514
- registerResources,
1515
- loadResource,
1516
- loadResources,
1517
- };
1293
+ const fsSourceLoader = (function () {
1294
+ let _document;
1295
+ let _headElement;
1296
+ const _sources = new Map();
1297
+ const _loadedResources = new Map();
1298
+ // bad way but don't want to bother developer
1299
+ setDocument(document);
1300
+ // but developer can set document at any time
1301
+ function setDocument(document) {
1302
+ _document = document;
1303
+ _headElement = _document === null || _document === void 0 ? void 0 : _document.head;
1304
+ }
1305
+ /**
1306
+ * register a list of the resources for future loading
1307
+ *
1308
+ * example:
1309
+ * sourceLoader.registerResources({
1310
+ * froala: [
1311
+ * '/assets/js/froala/froala_editor.min.js',
1312
+ * '/assets/css/froala_editor.pkgd.min.css',
1313
+ * ],
1314
+ * froala_align: '/assets/js/froala/plugins/align.min.js',
1315
+ * froala_colors: '/assets/js/froala/plugins/colors.min.js',
1316
+ * froala_image: '/assets/js/froala/plugins/image.min.js',
1317
+ * });
1318
+ *
1319
+ */
1320
+ function registerResources(resources) {
1321
+ Object.entries(resources)
1322
+ .forEach(([name, path]) => {
1323
+ if (typeof path === 'string') {
1324
+ path = [path];
1325
+ }
1326
+ if (!_sources.has(name)) {
1327
+ _sources.set(name, new Set());
1328
+ }
1329
+ const resourcesList = _sources.get(name);
1330
+ path.forEach((p) => {
1331
+ resourcesList.add(p);
1332
+ });
1333
+ });
1334
+ }
1335
+ /**
1336
+ * load any resource previously registered
1337
+ *
1338
+ * sourceLoader.loadResource('froala')
1339
+ *
1340
+ * or load any js/css file
1341
+ *
1342
+ * sourceLoader.loadResource('/assets/my-source.js')
1343
+ *
1344
+ */
1345
+ function loadResource(name) {
1346
+ if (_loadedResources.has(name)) {
1347
+ return _loadedResources.get(name);
1348
+ }
1349
+ if (_sources.has(name)) {
1350
+ const sourcesForLoading = [..._sources.get(name)]
1351
+ .map((path) => {
1352
+ return _loadResource(path);
1353
+ })
1354
+ .filter((v) => !!v);
1355
+ return combineLatest(sourcesForLoading);
1356
+ }
1357
+ return _loadResource(name);
1358
+ }
1359
+ /**
1360
+ * the same as `loadResource` but you can pass list of the resources for loading
1361
+ */
1362
+ function loadResources(listOfResources) {
1363
+ const resourcesToLoad = listOfResources
1364
+ .reduce((acc, name) => {
1365
+ const loading$ = loadResource(name);
1366
+ if (loading$) {
1367
+ acc.push(loading$);
1368
+ }
1369
+ return acc;
1370
+ }, []);
1371
+ return combineLatest(resourcesToLoad);
1372
+ }
1373
+ ///
1374
+ function _loadResource(path) {
1375
+ if (_isStylesUrl(path)) {
1376
+ return _loadStyles(path);
1377
+ }
1378
+ if (_isJavascriptUrl(path)) {
1379
+ return _loadJs(path);
1380
+ }
1381
+ console.warn(`Resource ${path} can not be identified and loaded`);
1382
+ return null;
1383
+ }
1384
+ function _loadJs(scriptPath) {
1385
+ if (!_loadedResources.has(scriptPath)) {
1386
+ const obs$ = new Observable((obs) => {
1387
+ const script = document.createElement('script');
1388
+ script.src = scriptPath;
1389
+ _headElement.appendChild(script);
1390
+ script.onload = () => {
1391
+ obs.next();
1392
+ obs.complete();
1393
+ };
1394
+ script.onerror = (err) => {
1395
+ obs.error(err);
1396
+ };
1397
+ }).pipe(shareReplay(1));
1398
+ _loadedResources.set(scriptPath, obs$);
1399
+ }
1400
+ return _loadedResources.get(scriptPath);
1401
+ }
1402
+ function _loadStyles(stylePath) {
1403
+ if (!_loadedResources.has(stylePath)) {
1404
+ const obs$ = new Observable((obs) => {
1405
+ const style = document.createElement('link');
1406
+ style.id = stylePath;
1407
+ style.rel = 'stylesheet';
1408
+ style.href = `${stylePath}`;
1409
+ _headElement.appendChild(style);
1410
+ style.onload = () => {
1411
+ obs.next();
1412
+ obs.complete();
1413
+ };
1414
+ style.onerror = (err) => {
1415
+ obs.error(err);
1416
+ };
1417
+ });
1418
+ _loadedResources.set(stylePath, obs$);
1419
+ }
1420
+ return _loadedResources.get(stylePath);
1421
+ }
1422
+ function _isJavascriptUrl(url) {
1423
+ return url.endsWith('.js');
1424
+ }
1425
+ function _isStylesUrl(url) {
1426
+ return url.endsWith('.css');
1427
+ }
1428
+ return {
1429
+ setDocument,
1430
+ registerResources,
1431
+ loadResource,
1432
+ loadResources,
1433
+ };
1518
1434
  })();
1519
1435
 
1520
- function acronym(str, length = 2) {
1521
- const splittedString = str
1522
- .replace(/[^a-zA-Z0-9]+/g, ' ')
1523
- .split(' ');
1524
- let result = '';
1525
- for (let i = 0; i < length; i++) {
1526
- if (!splittedString[i]) {
1527
- if (splittedString.length === 1) {
1528
- for (let j = 1; j < length; j++) {
1529
- if (!splittedString[i - 1][j]) {
1530
- break;
1531
- }
1532
- result += splittedString[i - 1][j].toUpperCase();
1533
- }
1534
- }
1535
- break;
1536
- }
1537
- result += splittedString[i][0].toUpperCase();
1538
- }
1539
- return result;
1436
+ function acronym(str, length = 2) {
1437
+ const splittedString = str
1438
+ .replace(/[^a-zA-Z0-9]+/g, ' ')
1439
+ .split(' ');
1440
+ let result = '';
1441
+ for (let i = 0; i < length; i++) {
1442
+ if (!splittedString[i]) {
1443
+ if (splittedString.length === 1) {
1444
+ for (let j = 1; j < length; j++) {
1445
+ if (!splittedString[i - 1][j]) {
1446
+ break;
1447
+ }
1448
+ result += splittedString[i - 1][j].toUpperCase();
1449
+ }
1450
+ }
1451
+ break;
1452
+ }
1453
+ result += splittedString[i][0].toUpperCase();
1454
+ }
1455
+ return result;
1540
1456
  }
1541
1457
 
1542
- function delayedRetry(delayMs, maxRetry = 5, message) {
1543
- let retries = 0;
1544
- return (src) => src.pipe(retryWhen((errors) => errors.pipe(tap(() => {
1545
- retries++;
1546
- if (retries <= maxRetry) {
1547
- console.info(`Failed to load Resource. Retry in ${delayMs / 1000} sec. ${retries}/${maxRetry} times...`);
1548
- }
1549
- }), concatMap((error) => iif(() => retries > maxRetry, throwError(getErrorMessage(maxRetry, message)), timer(delayMs))))));
1550
- }
1551
- const getErrorMessage = (maxRetry, defaultMessage) => {
1552
- if (!defaultMessage) {
1553
- return `Failed to load Resource for ${maxRetry} times. Giving up.`;
1554
- }
1555
- else {
1556
- return defaultMessage;
1557
- }
1458
+ function delayedRetry(delayMs, maxRetry = 5, message) {
1459
+ let retries = 0;
1460
+ return (src) => src.pipe(retryWhen((errors) => errors.pipe(tap(() => {
1461
+ retries++;
1462
+ if (retries <= maxRetry) {
1463
+ console.info(`Failed to load Resource. Retry in ${delayMs / 1000} sec. ${retries}/${maxRetry} times...`);
1464
+ }
1465
+ }), concatMap((error) => iif(() => retries > maxRetry, throwError(getErrorMessage(maxRetry, message)), timer(delayMs))))));
1466
+ }
1467
+ const getErrorMessage = (maxRetry, defaultMessage) => {
1468
+ if (!defaultMessage) {
1469
+ return `Failed to load Resource for ${maxRetry} times. Giving up.`;
1470
+ }
1471
+ else {
1472
+ return defaultMessage;
1473
+ }
1558
1474
  };
1559
1475
 
1560
- const keyboardShortcut = (shortcut) => {
1561
- // Observables for all keydown and keyup events
1562
- const keyDown$ = fromEvent(document, 'keydown');
1563
- const keyUp$ = fromEvent(document, 'keyup');
1564
- // All KeyboardEvents - emitted only when KeyboardEvent changes (key or type)
1565
- const keyEvents$ = merge(keyDown$, keyUp$).pipe(distinctUntilChanged((a, b) => a.code === b.code && a.type === b.type), share());
1566
- // Create KeyboardEvent Observable for specified KeyCode
1567
- const createKeyPressStream = (charCode) => keyEvents$.pipe(filter$1((event) => event.keyCode === charCode));
1568
- // Create Event Stream for every KeyCode in shortcut
1569
- const keyCodeEvents$ = shortcut.map((s) => createKeyPressStream(s));
1570
- // Emit when specified keys are pressed (keydown).
1571
- // Emit only when all specified keys are pressed at the same time.
1572
- // More on combineLatest below
1573
- return combineLatest(keyCodeEvents$).pipe(filter$1((arr) => arr.every((a) => a.type === 'keydown')));
1476
+ function bytes(bytes, decimals, unit) {
1477
+ if (!bytes) {
1478
+ return '0 MB';
1479
+ }
1480
+ const e = typeof unit === 'string' ?
1481
+ 'KMGTP'.indexOf(unit.replace('B', '')) + 1 :
1482
+ Math.floor(Math.log(bytes) / Math.log(1024));
1483
+ if (!isNumeric(decimals)) {
1484
+ decimals = (bytes / 1024) > 1000 ? 2 : 0;
1485
+ }
1486
+ return `${(bytes / Math.pow(1024, e))
1487
+ .toFixed(decimals)}`
1488
+ .replace(/\.00/, '')
1489
+ + ' '
1490
+ + (e ? ' KMGTP'.charAt(e) : '') + 'B';
1491
+ }
1492
+
1493
+ class FsFormatBytesPipe {
1494
+ transform(value, decimals, unit) {
1495
+ return bytes(value, decimals, unit);
1496
+ }
1497
+ }
1498
+ FsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1499
+ FsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, name: "fsFormatBytes" });
1500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, decorators: [{
1501
+ type: Pipe,
1502
+ args: [{
1503
+ name: 'fsFormatBytes',
1504
+ }]
1505
+ }] });
1506
+
1507
+ class FsCommonModule {
1508
+ static forRoot() {
1509
+ return {
1510
+ ngModule: FsCommonModule,
1511
+ providers: [
1512
+ FsArray,
1513
+ FsMath,
1514
+ FsUtil,
1515
+ FsValidate
1516
+ ]
1517
+ };
1518
+ }
1519
+ }
1520
+ FsCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1521
+ FsCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, declarations: [FsStopPropagationDirective,
1522
+ FsPreventDefaultDirective,
1523
+ FsAutofocusDirective,
1524
+ FsUtilGuidPipe,
1525
+ FsUtilIsEmptyPipe,
1526
+ FsUtilIsNotEmptyPipe,
1527
+ FsUtilStringifyPipe,
1528
+ FsFormatNumberPipe,
1529
+ FsFormatCurrencyPipe,
1530
+ FsFormatTruncatePipe,
1531
+ FsFormatBytesPipe,
1532
+ FsFormatOrdinalNumberPipe], imports: [CommonModule], exports: [FsStopPropagationDirective,
1533
+ FsPreventDefaultDirective,
1534
+ FsAutofocusDirective,
1535
+ FsUtilGuidPipe,
1536
+ FsUtilStringifyPipe,
1537
+ FsFormatNumberPipe,
1538
+ FsFormatCurrencyPipe,
1539
+ FsFormatTruncatePipe,
1540
+ FsUtilIsEmptyPipe,
1541
+ FsUtilIsNotEmptyPipe,
1542
+ FsFormatBytesPipe,
1543
+ FsFormatOrdinalNumberPipe] });
1544
+ FsCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, imports: [[
1545
+ CommonModule,
1546
+ ]] });
1547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, decorators: [{
1548
+ type: NgModule,
1549
+ args: [{
1550
+ imports: [
1551
+ CommonModule,
1552
+ ],
1553
+ declarations: [
1554
+ FsStopPropagationDirective,
1555
+ FsPreventDefaultDirective,
1556
+ FsAutofocusDirective,
1557
+ FsUtilGuidPipe,
1558
+ FsUtilIsEmptyPipe,
1559
+ FsUtilIsNotEmptyPipe,
1560
+ FsUtilStringifyPipe,
1561
+ FsFormatNumberPipe,
1562
+ FsFormatCurrencyPipe,
1563
+ FsFormatTruncatePipe,
1564
+ FsFormatBytesPipe,
1565
+ FsFormatOrdinalNumberPipe,
1566
+ ],
1567
+ exports: [
1568
+ FsStopPropagationDirective,
1569
+ FsPreventDefaultDirective,
1570
+ FsAutofocusDirective,
1571
+ FsUtilGuidPipe,
1572
+ FsUtilStringifyPipe,
1573
+ FsFormatNumberPipe,
1574
+ FsFormatCurrencyPipe,
1575
+ FsFormatTruncatePipe,
1576
+ FsUtilIsEmptyPipe,
1577
+ FsUtilIsNotEmptyPipe,
1578
+ FsFormatBytesPipe,
1579
+ FsFormatOrdinalNumberPipe,
1580
+ ],
1581
+ }]
1582
+ }] });
1583
+
1584
+ const keyboardShortcut = (shortcut) => {
1585
+ // Observables for all keydown and keyup events
1586
+ const keyDown$ = fromEvent(document, 'keydown');
1587
+ const keyUp$ = fromEvent(document, 'keyup');
1588
+ // All KeyboardEvents - emitted only when KeyboardEvent changes (key or type)
1589
+ const keyEvents$ = merge(keyDown$, keyUp$).pipe(distinctUntilChanged((a, b) => a.code === b.code && a.type === b.type), share());
1590
+ // Create KeyboardEvent Observable for specified KeyCode
1591
+ const createKeyPressStream = (charCode) => keyEvents$.pipe(filter$1((event) => event.keyCode === charCode));
1592
+ // Create Event Stream for every KeyCode in shortcut
1593
+ const keyCodeEvents$ = shortcut.map((s) => createKeyPressStream(s));
1594
+ // Emit when specified keys are pressed (keydown).
1595
+ // Emit only when all specified keys are pressed at the same time.
1596
+ // More on combineLatest below
1597
+ return combineLatest(keyCodeEvents$).pipe(filter$1((arr) => arr.every((a) => a.type === 'keydown')));
1574
1598
  };
1575
1599
 
1576
- /*
1577
- * Public API Surface of fs-menu
1600
+ /*
1601
+ * Public API Surface of fs-menu
1578
1602
  */
1579
1603
 
1580
- /**
1581
- * Generated bundle index. Do not edit.
1604
+ /**
1605
+ * Generated bundle index. Do not edit.
1582
1606
  */
1583
1607
 
1584
1608
  export { FsArray, FsAutofocusDirective, FsCommonModule, FsFormatBytesPipe, FsFormatCurrencyPipe, FsFormatNumberPipe, FsFormatOrdinalNumberPipe, FsFormatTruncatePipe, FsMath, FsPreventDefaultDirective, FsStopPropagationDirective, FsUtil, FsUtilGuidPipe, FsUtilIsEmptyPipe, FsUtilIsNotEmptyPipe, FsUtilStringifyPipe, FsValidate, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_ALT, KEY_BACKSPACE, KEY_CANCEL, KEY_CAPS_LOCK, KEY_CLEAR, KEY_CONTROL, KEY_DELETE, KEY_DOWN, KEY_END, KEY_ENTER, KEY_EQUALS, KEY_ESCAPE, KEY_HELP, KEY_HOME, KEY_INSERT, KEY_LEFT, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PRINTSCREEN, KEY_RETURN, KEY_RIGHT, KEY_SEMICOLON, KEY_SHIFT, KEY_SPACE, KEY_TAB, KEY_UP, Queue, QueueState, acronym, boolean, bytes, clone, compare, currency, debounce, delayedRetry, email, filter, find, fsSourceLoader, getNormalizedPath, guid, inArray, index, indexOf, isArrayEqual, isClass, isEmpty, isNumeric, keyExists, keyboardShortcut, ksort, length, list, nameValue, number, ordinalNumber, phone, remove, removeQueryParams, resolve, round, rsort, sort, stringify, throttle, truncate, url, uuid, value };