@firestitch/common 12.4.1 → 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.
- package/app/directives/autofocus.directive.d.ts +13 -9
- package/app/directives/prevent-default.directive.d.ts +6 -6
- package/app/directives/stop-propagation.directive.d.ts +6 -6
- package/app/fs-common.module.d.ts +18 -18
- package/app/pipes/bytes.pipe.d.ts +7 -7
- package/app/pipes/currency.pipe.d.ts +9 -9
- package/app/pipes/index.d.ts +2 -2
- package/app/pipes/number.pipe.d.ts +7 -7
- package/app/pipes/ordinal-number.pipe.d.ts +7 -7
- package/app/pipes/truncate.pipe.d.ts +8 -8
- package/app/pipes/util.pipe.d.ts +24 -24
- package/app/services/array.service.d.ts +61 -61
- package/app/services/math.service.d.ts +9 -9
- package/app/services/util.service.d.ts +89 -89
- package/app/services/vaildate.service.d.ts +16 -16
- package/bundles/firestitch-common.umd.js +1909 -1888
- package/bundles/firestitch-common.umd.js.map +1 -1
- package/esm2015/app/directives/autofocus.directive.js +41 -21
- package/esm2015/app/directives/prevent-default.directive.js +18 -18
- package/esm2015/app/directives/stop-propagation.directive.js +18 -18
- package/esm2015/app/fs-common.module.js +93 -93
- package/esm2015/app/pipes/bytes.pipe.js +16 -16
- package/esm2015/app/pipes/currency.pipe.js +22 -22
- package/esm2015/app/pipes/index.js +2 -2
- package/esm2015/app/pipes/number.pipe.js +16 -16
- package/esm2015/app/pipes/ordinal-number.pipe.js +16 -16
- package/esm2015/app/pipes/truncate.pipe.js +17 -17
- package/esm2015/app/pipes/util.pipe.js +59 -59
- package/esm2015/app/services/array.service.js +224 -224
- package/esm2015/app/services/math.service.js +20 -20
- package/esm2015/app/services/util.service.js +250 -250
- package/esm2015/app/services/vaildate.service.js +27 -27
- package/esm2015/firestitch-common.js +4 -4
- package/esm2015/libs/array/compare/compare.js +7 -7
- package/esm2015/libs/array/compare/index.js +1 -1
- package/esm2015/libs/array/filter/filter.js +26 -26
- package/esm2015/libs/array/filter/index.js +1 -1
- package/esm2015/libs/array/find/find.js +5 -5
- package/esm2015/libs/array/find/index.js +1 -1
- package/esm2015/libs/array/inArray/inArray.js +11 -11
- package/esm2015/libs/array/inArray/index.js +1 -1
- package/esm2015/libs/array/index/index.js +7 -7
- package/esm2015/libs/array/index.js +13 -13
- package/esm2015/libs/array/indexOf/index.js +1 -1
- package/esm2015/libs/array/indexOf/indexOf.js +15 -15
- package/esm2015/libs/array/keyExists/index.js +1 -1
- package/esm2015/libs/array/keyExists/keyExists.js +3 -3
- package/esm2015/libs/array/ksort/index.js +1 -1
- package/esm2015/libs/array/ksort/ksort.js +7 -7
- package/esm2015/libs/array/list/index.js +1 -1
- package/esm2015/libs/array/list/list.js +12 -12
- package/esm2015/libs/array/nameValue/index.js +1 -1
- package/esm2015/libs/array/nameValue/nameValue.js +20 -20
- package/esm2015/libs/array/remove/index.js +1 -1
- package/esm2015/libs/array/remove/remove.js +8 -8
- package/esm2015/libs/array/rsort/index.js +1 -1
- package/esm2015/libs/array/rsort/rsort.js +4 -4
- package/esm2015/libs/array/sort/index.js +1 -1
- package/esm2015/libs/array/sort/sort.js +26 -26
- package/esm2015/libs/format/acronym/acronym.js +21 -21
- package/esm2015/libs/format/acronym/index.js +1 -1
- package/esm2015/libs/format/bytes/bytes.js +17 -17
- package/esm2015/libs/format/bytes/index.js +1 -1
- package/esm2015/libs/format/currency/currency.js +5 -5
- package/esm2015/libs/format/currency/index.js +1 -1
- package/esm2015/libs/format/index.js +5 -5
- package/esm2015/libs/format/number/index.js +1 -1
- package/esm2015/libs/format/number/number.js +3 -3
- package/esm2015/libs/format/truncate/index.js +1 -1
- package/esm2015/libs/format/truncate/truncate.js +11 -11
- package/esm2015/libs/index.js +5 -5
- package/esm2015/libs/rxjs/delayedRetry.js +19 -19
- package/esm2015/libs/rxjs/keyboard-shortcut.js +17 -17
- package/esm2015/libs/util/boolean/boolean.js +3 -3
- package/esm2015/libs/util/boolean/index.js +1 -1
- package/esm2015/libs/util/clone/clone.js +20 -20
- package/esm2015/libs/util/clone/index.js +1 -1
- package/esm2015/libs/util/debounce/debounce.js +16 -16
- package/esm2015/libs/util/debounce/index.js +1 -1
- package/esm2015/libs/util/get-normalized-path/get-normalized-path.js +5 -5
- package/esm2015/libs/util/get-normalized-path/index.js +1 -1
- package/esm2015/libs/util/guid/guid.js +18 -18
- package/esm2015/libs/util/guid/index.js +1 -1
- package/esm2015/libs/util/index.js +21 -21
- package/esm2015/libs/util/is-array-equal/is-array-equal.js +21 -21
- package/esm2015/libs/util/isClass/index.js +1 -1
- package/esm2015/libs/util/isClass/isClass.js +17 -17
- package/esm2015/libs/util/isEmpty/index.js +1 -1
- package/esm2015/libs/util/isEmpty/isEmpty.js +11 -11
- package/esm2015/libs/util/isNumeric/index.js +1 -1
- package/esm2015/libs/util/isNumeric/isNumeric.js +4 -4
- package/esm2015/libs/util/keys/index.js +1 -1
- package/esm2015/libs/util/keys/keys.js +37 -37
- package/esm2015/libs/util/length/index.js +1 -1
- package/esm2015/libs/util/length/length.js +9 -9
- package/esm2015/libs/util/ordinal-number/ordinal-number.js +7 -7
- package/esm2015/libs/util/queue/index.js +2 -2
- package/esm2015/libs/util/queue/operation.js +14 -14
- package/esm2015/libs/util/queue/queue.enum.js +5 -5
- package/esm2015/libs/util/queue/queue.js +136 -136
- package/esm2015/libs/util/remove-query-params/index.js +1 -1
- package/esm2015/libs/util/remove-query-params/remove-query-params.js +3 -3
- package/esm2015/libs/util/resolve/index.js +1 -1
- package/esm2015/libs/util/resolve/resolve.js +9 -9
- package/esm2015/libs/util/round/index.js +1 -1
- package/esm2015/libs/util/round/round.js +4 -4
- package/esm2015/libs/util/source-loader/source-loader.js +144 -144
- package/esm2015/libs/util/stringify/index.js +1 -1
- package/esm2015/libs/util/stringify/stringify.js +3 -3
- package/esm2015/libs/util/throttle/index.js +1 -1
- package/esm2015/libs/util/throttle/throttle.js +12 -12
- package/esm2015/libs/util/uuid/index.js +1 -1
- package/esm2015/libs/util/uuid/uuid.js +4 -4
- package/esm2015/libs/util/value/index.js +1 -1
- package/esm2015/libs/util/value/value.js +8 -8
- package/esm2015/libs/validate/email/email.js +3 -3
- package/esm2015/libs/validate/email/index.js +1 -1
- package/esm2015/libs/validate/index.js +3 -3
- package/esm2015/libs/validate/phone/index.js +1 -1
- package/esm2015/libs/validate/phone/phone.js +4 -4
- package/esm2015/libs/validate/url/index.js +1 -1
- package/esm2015/libs/validate/url/url.js +11 -11
- package/esm2015/public_api.js +22 -22
- package/fesm2015/firestitch-common.js +1479 -1460
- package/fesm2015/firestitch-common.js.map +1 -1
- package/firestitch-common.d.ts +5 -5
- package/libs/array/compare/compare.d.ts +1 -1
- package/libs/array/compare/index.d.ts +1 -1
- package/libs/array/filter/filter.d.ts +1 -1
- package/libs/array/filter/index.d.ts +1 -1
- package/libs/array/find/find.d.ts +1 -1
- package/libs/array/find/index.d.ts +1 -1
- package/libs/array/inArray/inArray.d.ts +1 -1
- package/libs/array/inArray/index.d.ts +1 -1
- package/libs/array/index/index.d.ts +1 -1
- package/libs/array/index.d.ts +13 -13
- package/libs/array/indexOf/index.d.ts +1 -1
- package/libs/array/indexOf/indexOf.d.ts +1 -1
- package/libs/array/keyExists/index.d.ts +1 -1
- package/libs/array/keyExists/keyExists.d.ts +1 -1
- package/libs/array/ksort/index.d.ts +1 -1
- package/libs/array/ksort/ksort.d.ts +1 -1
- package/libs/array/list/index.d.ts +1 -1
- package/libs/array/list/list.d.ts +1 -1
- package/libs/array/nameValue/index.d.ts +1 -1
- package/libs/array/nameValue/nameValue.d.ts +1 -1
- package/libs/array/remove/index.d.ts +1 -1
- package/libs/array/remove/remove.d.ts +1 -1
- package/libs/array/rsort/index.d.ts +1 -1
- package/libs/array/rsort/rsort.d.ts +1 -1
- package/libs/array/sort/index.d.ts +1 -1
- package/libs/array/sort/sort.d.ts +1 -1
- package/libs/format/acronym/acronym.d.ts +1 -1
- package/libs/format/acronym/index.d.ts +1 -1
- package/libs/format/bytes/bytes.d.ts +1 -1
- package/libs/format/bytes/index.d.ts +1 -1
- package/libs/format/currency/currency.d.ts +1 -1
- package/libs/format/currency/index.d.ts +1 -1
- package/libs/format/index.d.ts +5 -5
- package/libs/format/number/index.d.ts +1 -1
- package/libs/format/number/number.d.ts +1 -1
- package/libs/format/truncate/index.d.ts +1 -1
- package/libs/format/truncate/truncate.d.ts +1 -1
- package/libs/index.d.ts +5 -5
- package/libs/rxjs/delayedRetry.d.ts +2 -2
- package/libs/rxjs/keyboard-shortcut.d.ts +2 -2
- package/libs/util/boolean/boolean.d.ts +1 -1
- package/libs/util/boolean/index.d.ts +1 -1
- package/libs/util/clone/clone.d.ts +1 -1
- package/libs/util/clone/index.d.ts +1 -1
- package/libs/util/debounce/debounce.d.ts +1 -1
- package/libs/util/debounce/index.d.ts +1 -1
- package/libs/util/get-normalized-path/get-normalized-path.d.ts +2 -2
- package/libs/util/get-normalized-path/index.d.ts +1 -1
- package/libs/util/guid/guid.d.ts +1 -1
- package/libs/util/guid/index.d.ts +1 -1
- package/libs/util/index.d.ts +21 -21
- package/libs/util/is-array-equal/is-array-equal.d.ts +1 -1
- package/libs/util/isClass/index.d.ts +1 -1
- package/libs/util/isClass/isClass.d.ts +1 -1
- package/libs/util/isEmpty/index.d.ts +1 -1
- package/libs/util/isEmpty/isEmpty.d.ts +1 -1
- package/libs/util/isNumeric/index.d.ts +1 -1
- package/libs/util/isNumeric/isNumeric.d.ts +1 -1
- package/libs/util/keys/index.d.ts +1 -1
- package/libs/util/keys/keys.d.ts +37 -37
- package/libs/util/length/index.d.ts +1 -1
- package/libs/util/length/length.d.ts +1 -1
- package/libs/util/ordinal-number/ordinal-number.d.ts +1 -1
- package/libs/util/queue/index.d.ts +2 -2
- package/libs/util/queue/operation.d.ts +7 -7
- package/libs/util/queue/queue.d.ts +32 -32
- package/libs/util/queue/queue.enum.d.ts +4 -4
- package/libs/util/remove-query-params/index.d.ts +1 -1
- package/libs/util/remove-query-params/remove-query-params.d.ts +1 -1
- package/libs/util/resolve/index.d.ts +1 -1
- package/libs/util/resolve/resolve.d.ts +1 -1
- package/libs/util/round/index.d.ts +1 -1
- package/libs/util/round/round.d.ts +1 -1
- package/libs/util/source-loader/source-loader.d.ts +7 -7
- package/libs/util/stringify/index.d.ts +1 -1
- package/libs/util/stringify/stringify.d.ts +1 -1
- package/libs/util/throttle/index.d.ts +1 -1
- package/libs/util/throttle/throttle.d.ts +1 -1
- package/libs/util/uuid/index.d.ts +1 -1
- package/libs/util/uuid/uuid.d.ts +1 -1
- package/libs/util/value/index.d.ts +1 -1
- package/libs/util/value/value.d.ts +1 -1
- package/libs/validate/email/email.d.ts +1 -1
- package/libs/validate/email/index.d.ts +1 -1
- package/libs/validate/index.d.ts +3 -3
- package/libs/validate/phone/index.d.ts +1 -1
- package/libs/validate/phone/phone.d.ts +1 -1
- package/libs/validate/url/index.d.ts +1 -1
- package/libs/validate/url/url.d.ts +7 -7
- package/package.json +1 -1
- package/public_api.d.ts +16 -16
|
@@ -1,1589 +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 = 2, 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
|
-
class FsStopPropagationDirective {
|
|
683
|
-
preventClick(event) {
|
|
684
|
-
event.stopPropagation();
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
FsStopPropagationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
688
|
-
FsStopPropagationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsStopPropagationDirective, selector: "[fsStopPropagation]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
|
|
689
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStopPropagationDirective, decorators: [{
|
|
690
|
-
type: Directive,
|
|
691
|
-
args: [{
|
|
692
|
-
selector: '[fsStopPropagation]',
|
|
693
|
-
}]
|
|
694
|
-
}], propDecorators: { preventClick: [{
|
|
695
|
-
type: HostListener,
|
|
696
|
-
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']]
|
|
697
698
|
}] } });
|
|
698
699
|
|
|
699
|
-
class FsPreventDefaultDirective {
|
|
700
|
-
preventClick(event) {
|
|
701
|
-
event.preventDefault();
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
FsPreventDefaultDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
705
|
-
FsPreventDefaultDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsPreventDefaultDirective, selector: "[fsPreventDefault]", host: { listeners: { "click": "preventClick($event)" } }, ngImport: i0 });
|
|
706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPreventDefaultDirective, decorators: [{
|
|
707
|
-
type: Directive,
|
|
708
|
-
args: [{
|
|
709
|
-
selector: '[fsPreventDefault]',
|
|
710
|
-
}]
|
|
711
|
-
}], propDecorators: { preventClick: [{
|
|
712
|
-
type: HostListener,
|
|
713
|
-
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']]
|
|
714
715
|
}] } });
|
|
715
716
|
|
|
716
|
-
class FsAutofocusDirective {
|
|
717
|
-
constructor(_el) {
|
|
718
|
-
this.
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
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
|
+
}] } });
|
|
734
753
|
|
|
735
|
-
function ordinalNumber(value) {
|
|
736
|
-
value = String(value);
|
|
737
|
-
const index = value.match `1?.$`;
|
|
738
|
-
const endings = [, 'st', 'nd', 'rd'];
|
|
739
|
-
const ending = endings[index] || 'th';
|
|
740
|
-
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;
|
|
741
760
|
}
|
|
742
761
|
|
|
743
|
-
class FsFormatOrdinalNumberPipe {
|
|
744
|
-
transform(value) {
|
|
745
|
-
return ordinalNumber(value);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
FsFormatOrdinalNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
749
|
-
FsFormatOrdinalNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, name: "fsFormatOrdinalNumber" });
|
|
750
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatOrdinalNumberPipe, decorators: [{
|
|
751
|
-
type: Pipe,
|
|
752
|
-
args: [{
|
|
753
|
-
name: 'fsFormatOrdinalNumber',
|
|
754
|
-
}]
|
|
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
|
+
}]
|
|
755
774
|
}] });
|
|
756
775
|
|
|
757
|
-
function email(value) {
|
|
758
|
-
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,}))$/);
|
|
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,}))$/);
|
|
759
778
|
}
|
|
760
779
|
|
|
761
|
-
function phone(value) {
|
|
762
|
-
const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4}/.test(value);
|
|
763
|
-
return valid || !String(value).length;
|
|
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;
|
|
764
783
|
}
|
|
765
784
|
|
|
766
|
-
/**
|
|
767
|
-
* Check validity of the url.
|
|
768
|
-
* Protocol (http/https) isn't required.
|
|
769
|
-
* @param value
|
|
770
|
-
* @returns {boolean}
|
|
771
|
-
*/
|
|
772
|
-
function url(value) {
|
|
773
|
-
const expression = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#%[\]@!\$&'\(\)\*\+,;=.]+$/gm;
|
|
774
|
-
const regexp = new RegExp(expression);
|
|
775
|
-
return !!String(value).match(regexp);
|
|
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);
|
|
776
795
|
}
|
|
777
796
|
|
|
778
|
-
function compare(query, item) {
|
|
779
|
-
let value = true;
|
|
780
|
-
for (const key in query) {
|
|
781
|
-
value = value && item[key] == query[key];
|
|
782
|
-
}
|
|
783
|
-
return value;
|
|
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;
|
|
784
803
|
}
|
|
785
804
|
|
|
786
|
-
function filter(array, query) {
|
|
787
|
-
if (typeof query !== 'function') {
|
|
788
|
-
const queryObj = query;
|
|
789
|
-
query = (item) => {
|
|
790
|
-
return compare(queryObj, item);
|
|
791
|
-
};
|
|
792
|
-
}
|
|
793
|
-
const isarray = Array.isArray(array);
|
|
794
|
-
const list = isarray ? [] : {};
|
|
795
|
-
if (isarray) {
|
|
796
|
-
array.forEach(function (item, idx) {
|
|
797
|
-
if (query(item)) {
|
|
798
|
-
list.push(item);
|
|
799
|
-
}
|
|
800
|
-
});
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
Object.keys(array).forEach(key => {
|
|
804
|
-
if (query(array[key])) {
|
|
805
|
-
list[key] = array[key];
|
|
806
|
-
}
|
|
807
|
-
});
|
|
808
|
-
}
|
|
809
|
-
return list;
|
|
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;
|
|
810
829
|
}
|
|
811
830
|
|
|
812
|
-
function inArray(values, array) {
|
|
813
|
-
if (!Array.isArray(values)) {
|
|
814
|
-
values = [values];
|
|
815
|
-
}
|
|
816
|
-
for (let i = 0, len = values.length; i < len; i++) {
|
|
817
|
-
if (array.indexOf(values[i]) >= 0) {
|
|
818
|
-
return true;
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
return false;
|
|
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;
|
|
822
841
|
}
|
|
823
842
|
|
|
824
|
-
function index(array, name, value = null) {
|
|
825
|
-
const list = {};
|
|
826
|
-
array.forEach(function (item) {
|
|
827
|
-
list[item[name]] = value ? item[value] : item;
|
|
828
|
-
});
|
|
829
|
-
return list;
|
|
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;
|
|
830
849
|
}
|
|
831
850
|
|
|
832
|
-
function indexOf(array, query) {
|
|
833
|
-
if (typeof query !== 'function') {
|
|
834
|
-
const queryObj = query;
|
|
835
|
-
query = (item) => {
|
|
836
|
-
return compare(queryObj, item);
|
|
837
|
-
};
|
|
838
|
-
}
|
|
839
|
-
for (let i = 0, len = array.length; i < len; i++) {
|
|
840
|
-
if (query(array[i])) {
|
|
841
|
-
return i;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
return -1;
|
|
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;
|
|
845
864
|
}
|
|
846
865
|
|
|
847
|
-
function keyExists(array, key) {
|
|
848
|
-
return array.hasOwnProperty(key);
|
|
866
|
+
function keyExists(array, key) {
|
|
867
|
+
return array.hasOwnProperty(key);
|
|
849
868
|
}
|
|
850
869
|
|
|
851
|
-
function ksort(unordered) {
|
|
852
|
-
Object.keys(unordered).sort().forEach(function (key) {
|
|
853
|
-
const value = unordered[key];
|
|
854
|
-
delete unordered[key];
|
|
855
|
-
unordered[key] = value;
|
|
856
|
-
});
|
|
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
|
+
});
|
|
857
876
|
}
|
|
858
877
|
|
|
859
|
-
function list(array, property, index = null) {
|
|
860
|
-
const resultList = index ? {} : [];
|
|
861
|
-
array.forEach(function (item, idx) {
|
|
862
|
-
if (index) {
|
|
863
|
-
resultList[item[index]] = item[property];
|
|
864
|
-
}
|
|
865
|
-
else {
|
|
866
|
-
resultList.push(item[property]);
|
|
867
|
-
}
|
|
868
|
-
});
|
|
869
|
-
return resultList;
|
|
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;
|
|
870
889
|
}
|
|
871
890
|
|
|
872
|
-
function nameValue(array, name, value) {
|
|
873
|
-
const list = [];
|
|
874
|
-
if (name || value) {
|
|
875
|
-
const nameFn = typeof name === 'function' ? name : function (item) {
|
|
876
|
-
return item[name];
|
|
877
|
-
};
|
|
878
|
-
const valueFn = typeof value === 'function' ? value : function (item) {
|
|
879
|
-
return item[value];
|
|
880
|
-
};
|
|
881
|
-
array.forEach(function (item) {
|
|
882
|
-
list.push({ name: nameFn(item), value: valueFn(item) });
|
|
883
|
-
});
|
|
884
|
-
}
|
|
885
|
-
else {
|
|
886
|
-
array.forEach(function (n, v) {
|
|
887
|
-
list.push({ name: n, value: v });
|
|
888
|
-
});
|
|
889
|
-
}
|
|
890
|
-
return list;
|
|
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;
|
|
891
910
|
}
|
|
892
911
|
|
|
893
|
-
function remove(array, query) {
|
|
894
|
-
const idx = indexOf(array, query);
|
|
895
|
-
if (idx >= 0) {
|
|
896
|
-
return array.splice(idx, 1);
|
|
897
|
-
}
|
|
898
|
-
return idx;
|
|
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;
|
|
899
918
|
}
|
|
900
919
|
|
|
901
|
-
function sort(array, query, reverse = false) {
|
|
902
|
-
if (typeof query !== 'function') {
|
|
903
|
-
const queryStr = query;
|
|
904
|
-
query = function (a, b) {
|
|
905
|
-
if (reverse) {
|
|
906
|
-
if (a[queryStr] < b[queryStr]) {
|
|
907
|
-
return 1;
|
|
908
|
-
}
|
|
909
|
-
else if (a[queryStr] > b[queryStr]) {
|
|
910
|
-
return -1;
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
else {
|
|
914
|
-
if (a[queryStr] > b[queryStr]) {
|
|
915
|
-
return 1;
|
|
916
|
-
}
|
|
917
|
-
else if (a[queryStr] < b[queryStr]) {
|
|
918
|
-
return -1;
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
return 0;
|
|
922
|
-
};
|
|
923
|
-
}
|
|
924
|
-
array.sort(query);
|
|
925
|
-
return array;
|
|
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;
|
|
926
945
|
}
|
|
927
946
|
|
|
928
|
-
function rsort(array, query) {
|
|
929
|
-
return sort(array, query, true);
|
|
947
|
+
function rsort(array, query) {
|
|
948
|
+
return sort(array, query, true);
|
|
930
949
|
}
|
|
931
950
|
|
|
932
|
-
function find(array, query) {
|
|
933
|
-
const data = filter(array, query);
|
|
934
|
-
return data.length ? data[0] : null;
|
|
951
|
+
function find(array, query) {
|
|
952
|
+
const data = filter(array, query);
|
|
953
|
+
return data.length ? data[0] : null;
|
|
935
954
|
}
|
|
936
955
|
|
|
937
|
-
function boolean(value) {
|
|
938
|
-
return String(value).toLowerCase() !== 'false' && !!value;
|
|
956
|
+
function boolean(value) {
|
|
957
|
+
return String(value).toLowerCase() !== 'false' && !!value;
|
|
939
958
|
}
|
|
940
959
|
|
|
941
|
-
function debounce(func, wait, immediate) {
|
|
942
|
-
let timeout;
|
|
943
|
-
return function () {
|
|
944
|
-
const context = this, args = arguments;
|
|
945
|
-
const later = function () {
|
|
946
|
-
timeout = null;
|
|
947
|
-
if (!immediate)
|
|
948
|
-
func.apply(context, args);
|
|
949
|
-
};
|
|
950
|
-
const callNow = immediate && !timeout;
|
|
951
|
-
clearTimeout(timeout);
|
|
952
|
-
timeout = setTimeout(later, wait);
|
|
953
|
-
if (callNow)
|
|
954
|
-
func.apply(context, args);
|
|
955
|
-
};
|
|
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
|
+
};
|
|
956
975
|
}
|
|
957
976
|
|
|
958
|
-
const KEY_CANCEL = 3;
|
|
959
|
-
const KEY_HELP = 6;
|
|
960
|
-
const KEY_BACKSPACE = 8;
|
|
961
|
-
const KEY_TAB = 9;
|
|
962
|
-
const KEY_CLEAR = 12;
|
|
963
|
-
const KEY_RETURN = 13;
|
|
964
|
-
const KEY_ENTER = 14;
|
|
965
|
-
const KEY_SHIFT = 16;
|
|
966
|
-
const KEY_CONTROL = 17;
|
|
967
|
-
const KEY_ALT = 18;
|
|
968
|
-
const KEY_PAUSE = 19;
|
|
969
|
-
const KEY_CAPS_LOCK = 20;
|
|
970
|
-
const KEY_ESCAPE = 27;
|
|
971
|
-
const KEY_SPACE = 32;
|
|
972
|
-
const KEY_PAGE_UP = 33;
|
|
973
|
-
const KEY_PAGE_DOWN = 34;
|
|
974
|
-
const KEY_END = 35;
|
|
975
|
-
const KEY_HOME = 36;
|
|
976
|
-
const KEY_LEFT = 37;
|
|
977
|
-
const KEY_UP = 38;
|
|
978
|
-
const KEY_RIGHT = 39;
|
|
979
|
-
const KEY_DOWN = 40;
|
|
980
|
-
const KEY_PRINTSCREEN = 44;
|
|
981
|
-
const KEY_INSERT = 45;
|
|
982
|
-
const KEY_DELETE = 46;
|
|
983
|
-
const KEY_0 = 48;
|
|
984
|
-
const KEY_1 = 49;
|
|
985
|
-
const KEY_2 = 50;
|
|
986
|
-
const KEY_3 = 51;
|
|
987
|
-
const KEY_4 = 52;
|
|
988
|
-
const KEY_5 = 53;
|
|
989
|
-
const KEY_6 = 54;
|
|
990
|
-
const KEY_7 = 55;
|
|
991
|
-
const KEY_8 = 56;
|
|
992
|
-
const KEY_9 = 57;
|
|
993
|
-
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;
|
|
994
1013
|
const KEY_EQUALS = 61;
|
|
995
1014
|
|
|
996
|
-
function length(object) {
|
|
997
|
-
if (Array.isArray(object)) {
|
|
998
|
-
return object.length;
|
|
999
|
-
}
|
|
1000
|
-
if (object instanceof Object) {
|
|
1001
|
-
return Object.keys(object).length;
|
|
1002
|
-
}
|
|
1003
|
-
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;
|
|
1004
1023
|
}
|
|
1005
1024
|
|
|
1006
|
-
function resolve(promise, defaults = []) {
|
|
1007
|
-
const result = defaults;
|
|
1008
|
-
return new Promise(resolve => {
|
|
1009
|
-
promise.then(function (data) {
|
|
1010
|
-
Object.keys(data).forEach(key => result[key] = data[key]);
|
|
1011
|
-
resolve(result);
|
|
1012
|
-
});
|
|
1013
|
-
});
|
|
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
|
+
});
|
|
1014
1033
|
}
|
|
1015
1034
|
|
|
1016
|
-
function uuid() {
|
|
1017
|
-
return guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
|
1035
|
+
function uuid() {
|
|
1036
|
+
return guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
|
1018
1037
|
}
|
|
1019
1038
|
|
|
1020
|
-
function value(object, key, def) {
|
|
1021
|
-
if (typeof object === 'object' || Array.isArray(object)) {
|
|
1022
|
-
if (object.hasOwnProperty(key)) {
|
|
1023
|
-
return object[key];
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
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;
|
|
1027
1046
|
}
|
|
1028
1047
|
|
|
1029
|
-
function isClass(value, cls) {
|
|
1030
|
-
if (typeof value === 'object') {
|
|
1031
|
-
if (typeof cls === 'string') {
|
|
1032
|
-
if (value.constructor) {
|
|
1033
|
-
if (value.constructor.name === cls) {
|
|
1034
|
-
return true;
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
else {
|
|
1039
|
-
if (value instanceof cls) {
|
|
1040
|
-
return true;
|
|
1041
|
-
}
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
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;
|
|
1045
1064
|
}
|
|
1046
1065
|
|
|
1047
|
-
function isNumeric(value) {
|
|
1048
|
-
const str = String(value);
|
|
1049
|
-
return str.length && !!str.match(/^-?\d*\.?\d*$/);
|
|
1066
|
+
function isNumeric(value) {
|
|
1067
|
+
const str = String(value);
|
|
1068
|
+
return str.length && !!str.match(/^-?\d*\.?\d*$/);
|
|
1050
1069
|
}
|
|
1051
1070
|
|
|
1052
|
-
function throttle(func, wait) {
|
|
1053
|
-
let waiting = false; // Initially, we're not waiting
|
|
1054
|
-
return function () {
|
|
1055
|
-
if (!waiting) { // If we're not waiting
|
|
1056
|
-
func.apply(null, arguments); // Execute users function
|
|
1057
|
-
waiting = true; // Prevent future invocations
|
|
1058
|
-
setTimeout(function () {
|
|
1059
|
-
waiting = false; // And allow future invocations
|
|
1060
|
-
}, wait);
|
|
1061
|
-
}
|
|
1062
|
-
};
|
|
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
|
+
};
|
|
1063
1082
|
}
|
|
1064
1083
|
|
|
1065
|
-
class Operation {
|
|
1066
|
-
constructor(target, name) {
|
|
1067
|
-
this.ready$ = new Subject();
|
|
1068
|
-
this.name = name ? name : guid();
|
|
1069
|
-
if (target instanceof Observable) {
|
|
1070
|
-
this.target = target;
|
|
1071
|
-
}
|
|
1072
|
-
else {
|
|
1073
|
-
this.target = of(target);
|
|
1074
|
-
}
|
|
1075
|
-
}
|
|
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
|
+
}
|
|
1076
1095
|
}
|
|
1077
1096
|
|
|
1078
|
-
var QueueState;
|
|
1079
|
-
(function (QueueState) {
|
|
1080
|
-
QueueState["Idle"] = "idle";
|
|
1081
|
-
QueueState["Processing"] = "processing";
|
|
1097
|
+
var QueueState;
|
|
1098
|
+
(function (QueueState) {
|
|
1099
|
+
QueueState["Idle"] = "idle";
|
|
1100
|
+
QueueState["Processing"] = "processing";
|
|
1082
1101
|
})(QueueState || (QueueState = {}));
|
|
1083
1102
|
|
|
1084
|
-
class Queue {
|
|
1085
|
-
constructor(_limit = Infinity) {
|
|
1086
|
-
this._limit = _limit;
|
|
1087
|
-
this._done = new Subject();
|
|
1088
|
-
this._queue = [];
|
|
1089
|
-
this._inProgress = [];
|
|
1090
|
-
this._total = 0;
|
|
1091
|
-
this._completed = 0;
|
|
1092
|
-
this._errors = 0;
|
|
1093
|
-
this._state = QueueState.Idle;
|
|
1094
|
-
this._destroy$ = new Subject();
|
|
1095
|
-
}
|
|
1096
|
-
get total() {
|
|
1097
|
-
return this._total;
|
|
1098
|
-
}
|
|
1099
|
-
get completed() {
|
|
1100
|
-
return this._completed;
|
|
1101
|
-
}
|
|
1102
|
-
get pending() {
|
|
1103
|
-
return this._queue.length;
|
|
1104
|
-
}
|
|
1105
|
-
get inProgress() {
|
|
1106
|
-
return this._inProgress.length;
|
|
1107
|
-
}
|
|
1108
|
-
get errors() {
|
|
1109
|
-
return this._errors;
|
|
1110
|
-
}
|
|
1111
|
-
get state() {
|
|
1112
|
-
return this._state;
|
|
1113
|
-
}
|
|
1114
|
-
get empty() {
|
|
1115
|
-
return !this._queue.length && !this._inProgress.length;
|
|
1116
|
-
}
|
|
1117
|
-
get pendingOperations() {
|
|
1118
|
-
return this._queue
|
|
1119
|
-
.map((operation) => operation.name);
|
|
1120
|
-
}
|
|
1121
|
-
get inProgressOperations() {
|
|
1122
|
-
return this._inProgress
|
|
1123
|
-
.map((operation) => operation.name);
|
|
1124
|
-
}
|
|
1125
|
-
isProcessing() {
|
|
1126
|
-
return this._state === QueueState.Processing;
|
|
1127
|
-
}
|
|
1128
|
-
isIdle() {
|
|
1129
|
-
return this._state === QueueState.Idle;
|
|
1130
|
-
}
|
|
1131
|
-
setLimit(value) {
|
|
1132
|
-
this._limit = value;
|
|
1133
|
-
}
|
|
1134
|
-
subscribe(fun, err, complete) {
|
|
1135
|
-
this._done
|
|
1136
|
-
.pipe(takeUntil(this._destroy$))
|
|
1137
|
-
.subscribe(fun, err, complete);
|
|
1138
|
-
}
|
|
1139
|
-
complete(fun, err, complete) {
|
|
1140
|
-
Observable.create(observer => {
|
|
1141
|
-
if (!this.isProcessing()) {
|
|
1142
|
-
observer.next();
|
|
1143
|
-
observer.complete();
|
|
1144
|
-
return;
|
|
1145
|
-
}
|
|
1146
|
-
this.subscribe(() => {
|
|
1147
|
-
observer.next();
|
|
1148
|
-
observer.complete();
|
|
1149
|
-
}, (error) => {
|
|
1150
|
-
observer.error(error);
|
|
1151
|
-
this.clear();
|
|
1152
|
-
});
|
|
1153
|
-
}).subscribe(fun, err, complete);
|
|
1154
|
-
}
|
|
1155
|
-
push(target, name) {
|
|
1156
|
-
const operation = new Operation(target, name);
|
|
1157
|
-
this._total++;
|
|
1158
|
-
this._state = QueueState.Processing;
|
|
1159
|
-
if (this._inProgress.length < this._limit) {
|
|
1160
|
-
this._processOperation(operation);
|
|
1161
|
-
}
|
|
1162
|
-
else {
|
|
1163
|
-
this._queue.push(operation);
|
|
1164
|
-
}
|
|
1165
|
-
return operation.ready$;
|
|
1166
|
-
}
|
|
1167
|
-
clear() {
|
|
1168
|
-
this._queue = [];
|
|
1169
|
-
this._total = 0;
|
|
1170
|
-
this._errors = 0;
|
|
1171
|
-
this._completed = 0;
|
|
1172
|
-
this._state = QueueState.Idle;
|
|
1173
|
-
this._done = new Subject();
|
|
1174
|
-
}
|
|
1175
|
-
destroy() {
|
|
1176
|
-
this.clear();
|
|
1177
|
-
this._done.complete();
|
|
1178
|
-
}
|
|
1179
|
-
_processOperation(operation) {
|
|
1180
|
-
this._inProgress.push(operation);
|
|
1181
|
-
operation.target
|
|
1182
|
-
.pipe(delay(200), // Hack to prevent extra quick proccess execution
|
|
1183
|
-
takeUntil(this._destroy$)).subscribe({
|
|
1184
|
-
next: (data) => {
|
|
1185
|
-
operation.ready$.next(data);
|
|
1186
|
-
},
|
|
1187
|
-
error: (error) => {
|
|
1188
|
-
const opIndex = this._inProgress.indexOf(operation);
|
|
1189
|
-
this._inProgress.splice(opIndex, 1);
|
|
1190
|
-
this._errors++;
|
|
1191
|
-
operation.ready$.error(error);
|
|
1192
|
-
if (this.empty) {
|
|
1193
|
-
this._state = QueueState.Idle;
|
|
1194
|
-
this._done.error(error);
|
|
1195
|
-
}
|
|
1196
|
-
},
|
|
1197
|
-
complete: () => {
|
|
1198
|
-
const opIndex = this._inProgress.indexOf(operation);
|
|
1199
|
-
this._inProgress.splice(opIndex, 1);
|
|
1200
|
-
this._completed++;
|
|
1201
|
-
operation.ready$.complete();
|
|
1202
|
-
if (this.empty) {
|
|
1203
|
-
this._state = QueueState.Idle;
|
|
1204
|
-
this._done.next();
|
|
1205
|
-
}
|
|
1206
|
-
else {
|
|
1207
|
-
if (this._queue.length) {
|
|
1208
|
-
const queueItem = this._queue.shift();
|
|
1209
|
-
this._processOperation(queueItem);
|
|
1210
|
-
}
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
|
-
});
|
|
1214
|
-
}
|
|
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
|
+
}
|
|
1215
1234
|
}
|
|
1216
1235
|
|
|
1217
|
-
function removeQueryParams(path) {
|
|
1218
|
-
return path.split('?')[0];
|
|
1236
|
+
function removeQueryParams(path) {
|
|
1237
|
+
return path.split('?')[0];
|
|
1219
1238
|
}
|
|
1220
1239
|
|
|
1221
|
-
function getNormalizedPath(locationSrv) {
|
|
1222
|
-
const path = locationSrv.prepareExternalUrl(locationSrv.path());
|
|
1223
|
-
return removeQueryParams(path);
|
|
1240
|
+
function getNormalizedPath(locationSrv) {
|
|
1241
|
+
const path = locationSrv.prepareExternalUrl(locationSrv.path());
|
|
1242
|
+
return removeQueryParams(path);
|
|
1224
1243
|
}
|
|
1225
1244
|
|
|
1226
|
-
function round(num, decimalPlaces = 0) {
|
|
1227
|
-
const p = Math.pow(10, decimalPlaces);
|
|
1228
|
-
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;
|
|
1229
1248
|
}
|
|
1230
1249
|
|
|
1231
|
-
function clone(obj) {
|
|
1232
|
-
if (obj instanceof Date) {
|
|
1233
|
-
return new Date(obj);
|
|
1234
|
-
}
|
|
1235
|
-
else if (Array.isArray(obj)) {
|
|
1236
|
-
const arr = [];
|
|
1237
|
-
for (let i = 0; i < obj.length; i++) {
|
|
1238
|
-
arr[i] = clone(obj[i]);
|
|
1239
|
-
}
|
|
1240
|
-
return arr;
|
|
1241
|
-
}
|
|
1242
|
-
else if (typeof (obj) === 'object') {
|
|
1243
|
-
const cloned = {};
|
|
1244
|
-
for (let key in obj) {
|
|
1245
|
-
cloned[key] = clone(obj[key]);
|
|
1246
|
-
}
|
|
1247
|
-
return cloned;
|
|
1248
|
-
}
|
|
1249
|
-
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;
|
|
1250
1269
|
}
|
|
1251
1270
|
|
|
1252
|
-
function isArrayEqual(arr1, arr2) {
|
|
1253
|
-
if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {
|
|
1254
|
-
return false;
|
|
1255
|
-
}
|
|
1256
|
-
const sortFn = (a, b) => {
|
|
1257
|
-
if (a < b) {
|
|
1258
|
-
return -1;
|
|
1259
|
-
}
|
|
1260
|
-
else if (a > b) {
|
|
1261
|
-
return 1;
|
|
1262
|
-
}
|
|
1263
|
-
else {
|
|
1264
|
-
return 0;
|
|
1265
|
-
}
|
|
1266
|
-
};
|
|
1267
|
-
arr1 = [...arr1].sort(sortFn);
|
|
1268
|
-
arr2 = [...arr2].sort(sortFn);
|
|
1269
|
-
return arr1.every((value, index) => {
|
|
1270
|
-
return value === arr2[index];
|
|
1271
|
-
});
|
|
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
|
+
});
|
|
1272
1291
|
}
|
|
1273
1292
|
|
|
1274
|
-
const fsSourceLoader = (function () {
|
|
1275
|
-
let _document;
|
|
1276
|
-
let _headElement;
|
|
1277
|
-
const _sources = new Map();
|
|
1278
|
-
const _loadedResources = new Map();
|
|
1279
|
-
// bad way but don't want to bother developer
|
|
1280
|
-
setDocument(document);
|
|
1281
|
-
// but developer can set document at any time
|
|
1282
|
-
function setDocument(document) {
|
|
1283
|
-
_document = document;
|
|
1284
|
-
_headElement = _document === null || _document === void 0 ? void 0 : _document.head;
|
|
1285
|
-
}
|
|
1286
|
-
/**
|
|
1287
|
-
* register a list of the resources for future loading
|
|
1288
|
-
*
|
|
1289
|
-
* example:
|
|
1290
|
-
* sourceLoader.registerResources({
|
|
1291
|
-
* froala: [
|
|
1292
|
-
* '/assets/js/froala/froala_editor.min.js',
|
|
1293
|
-
* '/assets/css/froala_editor.pkgd.min.css',
|
|
1294
|
-
* ],
|
|
1295
|
-
* froala_align: '/assets/js/froala/plugins/align.min.js',
|
|
1296
|
-
* froala_colors: '/assets/js/froala/plugins/colors.min.js',
|
|
1297
|
-
* froala_image: '/assets/js/froala/plugins/image.min.js',
|
|
1298
|
-
* });
|
|
1299
|
-
*
|
|
1300
|
-
*/
|
|
1301
|
-
function registerResources(resources) {
|
|
1302
|
-
Object.entries(resources)
|
|
1303
|
-
.forEach(([name, path]) => {
|
|
1304
|
-
if (typeof path === 'string') {
|
|
1305
|
-
path = [path];
|
|
1306
|
-
}
|
|
1307
|
-
if (!_sources.has(name)) {
|
|
1308
|
-
_sources.set(name, new Set());
|
|
1309
|
-
}
|
|
1310
|
-
const resourcesList = _sources.get(name);
|
|
1311
|
-
path.forEach((p) => {
|
|
1312
|
-
resourcesList.add(p);
|
|
1313
|
-
});
|
|
1314
|
-
});
|
|
1315
|
-
}
|
|
1316
|
-
/**
|
|
1317
|
-
* load any resource previously registered
|
|
1318
|
-
*
|
|
1319
|
-
* sourceLoader.loadResource('froala')
|
|
1320
|
-
*
|
|
1321
|
-
* or load any js/css file
|
|
1322
|
-
*
|
|
1323
|
-
* sourceLoader.loadResource('/assets/my-source.js')
|
|
1324
|
-
*
|
|
1325
|
-
*/
|
|
1326
|
-
function loadResource(name) {
|
|
1327
|
-
if (_loadedResources.has(name)) {
|
|
1328
|
-
return _loadedResources.get(name);
|
|
1329
|
-
}
|
|
1330
|
-
if (_sources.has(name)) {
|
|
1331
|
-
const sourcesForLoading = [..._sources.get(name)]
|
|
1332
|
-
.map((path) => {
|
|
1333
|
-
return _loadResource(path);
|
|
1334
|
-
})
|
|
1335
|
-
.filter((v) => !!v);
|
|
1336
|
-
return combineLatest(sourcesForLoading);
|
|
1337
|
-
}
|
|
1338
|
-
return _loadResource(name);
|
|
1339
|
-
}
|
|
1340
|
-
/**
|
|
1341
|
-
* the same as `loadResource` but you can pass list of the resources for loading
|
|
1342
|
-
*/
|
|
1343
|
-
function loadResources(listOfResources) {
|
|
1344
|
-
const resourcesToLoad = listOfResources
|
|
1345
|
-
.reduce((acc, name) => {
|
|
1346
|
-
const loading$ = loadResource(name);
|
|
1347
|
-
if (loading$) {
|
|
1348
|
-
acc.push(loading$);
|
|
1349
|
-
}
|
|
1350
|
-
return acc;
|
|
1351
|
-
}, []);
|
|
1352
|
-
return combineLatest(resourcesToLoad);
|
|
1353
|
-
}
|
|
1354
|
-
///
|
|
1355
|
-
function _loadResource(path) {
|
|
1356
|
-
if (_isStylesUrl(path)) {
|
|
1357
|
-
return _loadStyles(path);
|
|
1358
|
-
}
|
|
1359
|
-
if (_isJavascriptUrl(path)) {
|
|
1360
|
-
return _loadJs(path);
|
|
1361
|
-
}
|
|
1362
|
-
console.warn(`Resource ${path} can not be identified and loaded`);
|
|
1363
|
-
return null;
|
|
1364
|
-
}
|
|
1365
|
-
function _loadJs(scriptPath) {
|
|
1366
|
-
if (!_loadedResources.has(scriptPath)) {
|
|
1367
|
-
const obs$ = new Observable((obs) => {
|
|
1368
|
-
const script = document.createElement('script');
|
|
1369
|
-
script.src = scriptPath;
|
|
1370
|
-
_headElement.appendChild(script);
|
|
1371
|
-
script.onload = () => {
|
|
1372
|
-
obs.next();
|
|
1373
|
-
obs.complete();
|
|
1374
|
-
};
|
|
1375
|
-
script.onerror = (err) => {
|
|
1376
|
-
obs.error(err);
|
|
1377
|
-
};
|
|
1378
|
-
}).pipe(shareReplay(1));
|
|
1379
|
-
_loadedResources.set(scriptPath, obs$);
|
|
1380
|
-
}
|
|
1381
|
-
return _loadedResources.get(scriptPath);
|
|
1382
|
-
}
|
|
1383
|
-
function _loadStyles(stylePath) {
|
|
1384
|
-
if (!_loadedResources.has(stylePath)) {
|
|
1385
|
-
const obs$ = new Observable((obs) => {
|
|
1386
|
-
const style = document.createElement('link');
|
|
1387
|
-
style.id = stylePath;
|
|
1388
|
-
style.rel = 'stylesheet';
|
|
1389
|
-
style.href = `${stylePath}`;
|
|
1390
|
-
_headElement.appendChild(style);
|
|
1391
|
-
style.onload = () => {
|
|
1392
|
-
obs.next();
|
|
1393
|
-
obs.complete();
|
|
1394
|
-
};
|
|
1395
|
-
style.onerror = (err) => {
|
|
1396
|
-
obs.error(err);
|
|
1397
|
-
};
|
|
1398
|
-
});
|
|
1399
|
-
_loadedResources.set(stylePath, obs$);
|
|
1400
|
-
}
|
|
1401
|
-
return _loadedResources.get(stylePath);
|
|
1402
|
-
}
|
|
1403
|
-
function _isJavascriptUrl(url) {
|
|
1404
|
-
return url.endsWith('.js');
|
|
1405
|
-
}
|
|
1406
|
-
function _isStylesUrl(url) {
|
|
1407
|
-
return url.endsWith('.css');
|
|
1408
|
-
}
|
|
1409
|
-
return {
|
|
1410
|
-
setDocument,
|
|
1411
|
-
registerResources,
|
|
1412
|
-
loadResource,
|
|
1413
|
-
loadResources,
|
|
1414
|
-
};
|
|
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
|
+
};
|
|
1415
1434
|
})();
|
|
1416
1435
|
|
|
1417
|
-
function acronym(str, length = 2) {
|
|
1418
|
-
const splittedString = str
|
|
1419
|
-
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
1420
|
-
.split(' ');
|
|
1421
|
-
let result = '';
|
|
1422
|
-
for (let i = 0; i < length; i++) {
|
|
1423
|
-
if (!splittedString[i]) {
|
|
1424
|
-
if (splittedString.length === 1) {
|
|
1425
|
-
for (let j = 1; j < length; j++) {
|
|
1426
|
-
if (!splittedString[i - 1][j]) {
|
|
1427
|
-
break;
|
|
1428
|
-
}
|
|
1429
|
-
result += splittedString[i - 1][j].toUpperCase();
|
|
1430
|
-
}
|
|
1431
|
-
}
|
|
1432
|
-
break;
|
|
1433
|
-
}
|
|
1434
|
-
result += splittedString[i][0].toUpperCase();
|
|
1435
|
-
}
|
|
1436
|
-
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;
|
|
1437
1456
|
}
|
|
1438
1457
|
|
|
1439
|
-
function delayedRetry(delayMs, maxRetry = 5, message) {
|
|
1440
|
-
let retries = 0;
|
|
1441
|
-
return (src) => src.pipe(retryWhen((errors) => errors.pipe(tap(() => {
|
|
1442
|
-
retries++;
|
|
1443
|
-
if (retries <= maxRetry) {
|
|
1444
|
-
console.info(`Failed to load Resource. Retry in ${delayMs / 1000} sec. ${retries}/${maxRetry} times...`);
|
|
1445
|
-
}
|
|
1446
|
-
}), concatMap((error) => iif(() => retries > maxRetry, throwError(getErrorMessage(maxRetry, message)), timer(delayMs))))));
|
|
1447
|
-
}
|
|
1448
|
-
const getErrorMessage = (maxRetry, defaultMessage) => {
|
|
1449
|
-
if (!defaultMessage) {
|
|
1450
|
-
return `Failed to load Resource for ${maxRetry} times. Giving up.`;
|
|
1451
|
-
}
|
|
1452
|
-
else {
|
|
1453
|
-
return defaultMessage;
|
|
1454
|
-
}
|
|
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
|
+
}
|
|
1455
1474
|
};
|
|
1456
1475
|
|
|
1457
|
-
function bytes(bytes, decimals, unit) {
|
|
1458
|
-
if (!bytes) {
|
|
1459
|
-
return '0 MB';
|
|
1460
|
-
}
|
|
1461
|
-
const e = typeof unit === 'string' ?
|
|
1462
|
-
'KMGTP'.indexOf(unit.replace('B', '')) + 1 :
|
|
1463
|
-
Math.floor(Math.log(bytes) / Math.log(1024));
|
|
1464
|
-
if (!isNumeric(decimals)) {
|
|
1465
|
-
decimals = (bytes / 1024) > 1000 ? 2 : 0;
|
|
1466
|
-
}
|
|
1467
|
-
return `${(bytes / Math.pow(1024, e))
|
|
1468
|
-
.toFixed(decimals)}`
|
|
1469
|
-
.replace(/\.00/, '')
|
|
1470
|
-
+ ' '
|
|
1471
|
-
+ (e ? ' KMGTP'.charAt(e) : '') + 'B';
|
|
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';
|
|
1472
1491
|
}
|
|
1473
1492
|
|
|
1474
|
-
class FsFormatBytesPipe {
|
|
1475
|
-
transform(value, decimals, unit) {
|
|
1476
|
-
return bytes(value, decimals, unit);
|
|
1477
|
-
}
|
|
1478
|
-
}
|
|
1479
|
-
FsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1480
|
-
FsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, name: "fsFormatBytes" });
|
|
1481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFormatBytesPipe, decorators: [{
|
|
1482
|
-
type: Pipe,
|
|
1483
|
-
args: [{
|
|
1484
|
-
name: 'fsFormatBytes',
|
|
1485
|
-
}]
|
|
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
|
+
}]
|
|
1486
1505
|
}] });
|
|
1487
1506
|
|
|
1488
|
-
class FsCommonModule {
|
|
1489
|
-
static forRoot() {
|
|
1490
|
-
return {
|
|
1491
|
-
ngModule: FsCommonModule,
|
|
1492
|
-
providers: [
|
|
1493
|
-
FsArray,
|
|
1494
|
-
FsMath,
|
|
1495
|
-
FsUtil,
|
|
1496
|
-
FsValidate
|
|
1497
|
-
]
|
|
1498
|
-
};
|
|
1499
|
-
}
|
|
1500
|
-
}
|
|
1501
|
-
FsCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1502
|
-
FsCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, declarations: [FsStopPropagationDirective,
|
|
1503
|
-
FsPreventDefaultDirective,
|
|
1504
|
-
FsAutofocusDirective,
|
|
1505
|
-
FsUtilGuidPipe,
|
|
1506
|
-
FsUtilIsEmptyPipe,
|
|
1507
|
-
FsUtilIsNotEmptyPipe,
|
|
1508
|
-
FsUtilStringifyPipe,
|
|
1509
|
-
FsFormatNumberPipe,
|
|
1510
|
-
FsFormatCurrencyPipe,
|
|
1511
|
-
FsFormatTruncatePipe,
|
|
1512
|
-
FsFormatBytesPipe,
|
|
1513
|
-
FsFormatOrdinalNumberPipe], imports: [CommonModule], exports: [FsStopPropagationDirective,
|
|
1514
|
-
FsPreventDefaultDirective,
|
|
1515
|
-
FsAutofocusDirective,
|
|
1516
|
-
FsUtilGuidPipe,
|
|
1517
|
-
FsUtilStringifyPipe,
|
|
1518
|
-
FsFormatNumberPipe,
|
|
1519
|
-
FsFormatCurrencyPipe,
|
|
1520
|
-
FsFormatTruncatePipe,
|
|
1521
|
-
FsUtilIsEmptyPipe,
|
|
1522
|
-
FsUtilIsNotEmptyPipe,
|
|
1523
|
-
FsFormatBytesPipe,
|
|
1524
|
-
FsFormatOrdinalNumberPipe] });
|
|
1525
|
-
FsCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, imports: [[
|
|
1526
|
-
CommonModule,
|
|
1527
|
-
]] });
|
|
1528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCommonModule, decorators: [{
|
|
1529
|
-
type: NgModule,
|
|
1530
|
-
args: [{
|
|
1531
|
-
imports: [
|
|
1532
|
-
CommonModule,
|
|
1533
|
-
],
|
|
1534
|
-
|
|
1535
|
-
FsStopPropagationDirective,
|
|
1536
|
-
FsPreventDefaultDirective,
|
|
1537
|
-
FsAutofocusDirective,
|
|
1538
|
-
FsUtilGuidPipe,
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
FsFormatBytesPipe,
|
|
1546
|
-
FsFormatOrdinalNumberPipe,
|
|
1547
|
-
],
|
|
1548
|
-
|
|
1549
|
-
FsStopPropagationDirective,
|
|
1550
|
-
FsPreventDefaultDirective,
|
|
1551
|
-
FsAutofocusDirective,
|
|
1552
|
-
FsUtilGuidPipe,
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
FsFormatBytesPipe,
|
|
1560
|
-
FsFormatOrdinalNumberPipe,
|
|
1561
|
-
],
|
|
1562
|
-
}]
|
|
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
|
+
}]
|
|
1563
1582
|
}] });
|
|
1564
1583
|
|
|
1565
|
-
const keyboardShortcut = (shortcut) => {
|
|
1566
|
-
// Observables for all keydown and keyup events
|
|
1567
|
-
const keyDown$ = fromEvent(document, 'keydown');
|
|
1568
|
-
const keyUp$ = fromEvent(document, 'keyup');
|
|
1569
|
-
// All KeyboardEvents - emitted only when KeyboardEvent changes (key or type)
|
|
1570
|
-
const keyEvents$ = merge(keyDown$, keyUp$).pipe(distinctUntilChanged((a, b) => a.code === b.code && a.type === b.type), share());
|
|
1571
|
-
// Create KeyboardEvent Observable for specified KeyCode
|
|
1572
|
-
const createKeyPressStream = (charCode) => keyEvents$.pipe(filter$1((event) => event.keyCode === charCode));
|
|
1573
|
-
// Create Event Stream for every KeyCode in shortcut
|
|
1574
|
-
const keyCodeEvents$ = shortcut.map((s) => createKeyPressStream(s));
|
|
1575
|
-
// Emit when specified keys are pressed (keydown).
|
|
1576
|
-
// Emit only when all specified keys are pressed at the same time.
|
|
1577
|
-
// More on combineLatest below
|
|
1578
|
-
return combineLatest(keyCodeEvents$).pipe(filter$1((arr) => arr.every((a) => a.type === 'keydown')));
|
|
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')));
|
|
1579
1598
|
};
|
|
1580
1599
|
|
|
1581
|
-
/*
|
|
1582
|
-
* Public API Surface of fs-menu
|
|
1600
|
+
/*
|
|
1601
|
+
* Public API Surface of fs-menu
|
|
1583
1602
|
*/
|
|
1584
1603
|
|
|
1585
|
-
/**
|
|
1586
|
-
* Generated bundle index. Do not edit.
|
|
1604
|
+
/**
|
|
1605
|
+
* Generated bundle index. Do not edit.
|
|
1587
1606
|
*/
|
|
1588
1607
|
|
|
1589
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 };
|