@delon/util 15.2.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/config/abc/pdf.type.d.ts +1 -1
  2. package/esm2022/array/array.service.mjs +279 -0
  3. package/esm2022/browser/cookie.service.mjs +104 -0
  4. package/esm2022/browser/scroll.service.mjs +89 -0
  5. package/esm2022/config/abc/pdf.type.mjs +2 -0
  6. package/esm2022/config/config.service.mjs +39 -0
  7. package/esm2022/format/currency.service.mjs +239 -0
  8. package/esm2022/other/lazy.service.mjs +133 -0
  9. package/esm2022/pipes/currency/cny.pipe.mjs +24 -0
  10. package/esm2022/pipes/currency/mega.pipe.mjs +30 -0
  11. package/esm2022/pipes/currency/module.mjs +20 -0
  12. package/esm2022/pipes/currency/price.pipe.mjs +28 -0
  13. package/esm2022/pipes/filter/filter.pipe.mjs +20 -0
  14. package/esm2022/pipes/filter/module.mjs +18 -0
  15. package/esm2022/pipes/format/mask.pipe.mjs +35 -0
  16. package/esm2022/pipes/format/module.mjs +18 -0
  17. package/{fesm2020 → fesm2022}/array.mjs +3 -3
  18. package/{fesm2015 → fesm2022}/array.mjs.map +1 -1
  19. package/{fesm2020 → fesm2022}/browser.mjs +6 -6
  20. package/{fesm2020 → fesm2022}/browser.mjs.map +1 -1
  21. package/{fesm2020 → fesm2022}/config.mjs +3 -3
  22. package/{fesm2020 → fesm2022}/config.mjs.map +1 -1
  23. package/{fesm2020 → fesm2022}/format.mjs +3 -3
  24. package/{fesm2020 → fesm2022}/format.mjs.map +1 -1
  25. package/{fesm2020 → fesm2022}/other.mjs +3 -3
  26. package/{fesm2020 → fesm2022}/other.mjs.map +1 -1
  27. package/{fesm2020 → fesm2022}/pipe-currency.mjs +13 -13
  28. package/{fesm2020 → fesm2022}/pipe-currency.mjs.map +1 -1
  29. package/fesm2022/pipe-filter.mjs +40 -0
  30. package/{fesm2015 → fesm2022}/pipe-filter.mjs.map +1 -1
  31. package/{fesm2015 → fesm2022}/pipe-format.mjs +7 -7
  32. package/{fesm2015 → fesm2022}/pipe-format.mjs.map +1 -1
  33. package/package.json +53 -87
  34. package/esm2020/array/array.service.mjs +0 -278
  35. package/esm2020/browser/cookie.service.mjs +0 -103
  36. package/esm2020/browser/scroll.service.mjs +0 -88
  37. package/esm2020/config/abc/pdf.type.mjs +0 -2
  38. package/esm2020/config/config.service.mjs +0 -38
  39. package/esm2020/format/currency.service.mjs +0 -238
  40. package/esm2020/other/lazy.service.mjs +0 -132
  41. package/esm2020/pipes/currency/cny.pipe.mjs +0 -23
  42. package/esm2020/pipes/currency/mega.pipe.mjs +0 -29
  43. package/esm2020/pipes/currency/module.mjs +0 -19
  44. package/esm2020/pipes/currency/price.pipe.mjs +0 -27
  45. package/esm2020/pipes/filter/filter.pipe.mjs +0 -19
  46. package/esm2020/pipes/filter/module.mjs +0 -17
  47. package/esm2020/pipes/format/mask.pipe.mjs +0 -34
  48. package/esm2020/pipes/format/module.mjs +0 -17
  49. package/fesm2015/array.mjs +0 -255
  50. package/fesm2015/browser.mjs +0 -283
  51. package/fesm2015/browser.mjs.map +0 -1
  52. package/fesm2015/config.mjs +0 -57
  53. package/fesm2015/config.mjs.map +0 -1
  54. package/fesm2015/date-time.mjs +0 -207
  55. package/fesm2015/date-time.mjs.map +0 -1
  56. package/fesm2015/decorator.mjs +0 -121
  57. package/fesm2015/decorator.mjs.map +0 -1
  58. package/fesm2015/format.mjs +0 -413
  59. package/fesm2015/format.mjs.map +0 -1
  60. package/fesm2015/other.mjs +0 -319
  61. package/fesm2015/other.mjs.map +0 -1
  62. package/fesm2015/pipe-currency.mjs +0 -96
  63. package/fesm2015/pipe-currency.mjs.map +0 -1
  64. package/fesm2015/pipe-filter.mjs +0 -40
  65. package/fesm2020/array.mjs.map +0 -1
  66. package/fesm2020/delon-util.mjs +0 -16
  67. package/fesm2020/delon-util.mjs.map +0 -1
  68. package/fesm2020/form.mjs +0 -118
  69. package/fesm2020/form.mjs.map +0 -1
  70. package/fesm2020/math.mjs +0 -85
  71. package/fesm2020/math.mjs.map +0 -1
  72. package/fesm2020/pipe-filter.mjs +0 -40
  73. package/fesm2020/pipe-filter.mjs.map +0 -1
  74. package/fesm2020/pipe-format.mjs +0 -55
  75. package/fesm2020/pipe-format.mjs.map +0 -1
  76. package/fesm2020/pipes.mjs +0 -8
  77. package/fesm2020/pipes.mjs.map +0 -1
  78. package/fesm2020/token.mjs +0 -37
  79. package/fesm2020/token.mjs.map +0 -1
  80. /package/{esm2020 → esm2022}/array/array-type.service.mjs +0 -0
  81. /package/{esm2020 → esm2022}/array/array.mjs +0 -0
  82. /package/{esm2020 → esm2022}/array/index.mjs +0 -0
  83. /package/{esm2020 → esm2022}/browser/browser.mjs +0 -0
  84. /package/{esm2020 → esm2022}/browser/copy.mjs +0 -0
  85. /package/{esm2020 → esm2022}/browser/index.mjs +0 -0
  86. /package/{esm2020 → esm2022}/browser/is-empty.mjs +0 -0
  87. /package/{esm2020 → esm2022}/browser/style.mjs +0 -0
  88. /package/{esm2020 → esm2022}/config/abc/date-picker.type.mjs +0 -0
  89. /package/{esm2020 → esm2022}/config/abc/error-collect.type.mjs +0 -0
  90. /package/{esm2020 → esm2022}/config/abc/exception.type.mjs +0 -0
  91. /package/{esm2020 → esm2022}/config/abc/image.type.mjs +0 -0
  92. /package/{esm2020 → esm2022}/config/abc/index.mjs +0 -0
  93. /package/{esm2020 → esm2022}/config/abc/loading.type.mjs +0 -0
  94. /package/{esm2020 → esm2022}/config/abc/lodop.type.mjs +0 -0
  95. /package/{esm2020 → esm2022}/config/abc/media.type.mjs +0 -0
  96. /package/{esm2020 → esm2022}/config/abc/onboarding.type.mjs +0 -0
  97. /package/{esm2020 → esm2022}/config/abc/page-header.type.mjs +0 -0
  98. /package/{esm2020 → esm2022}/config/abc/qr.type.mjs +0 -0
  99. /package/{esm2020 → esm2022}/config/abc/se.type.mjs +0 -0
  100. /package/{esm2020 → esm2022}/config/abc/sg.type.mjs +0 -0
  101. /package/{esm2020 → esm2022}/config/abc/st.type.mjs +0 -0
  102. /package/{esm2020 → esm2022}/config/abc/sv.type.mjs +0 -0
  103. /package/{esm2020 → esm2022}/config/abc/xlsx.type.mjs +0 -0
  104. /package/{esm2020 → esm2022}/config/abc/zip.type.mjs +0 -0
  105. /package/{esm2020 → esm2022}/config/acl/acl.type.mjs +0 -0
  106. /package/{esm2020 → esm2022}/config/auth/auth.type.mjs +0 -0
  107. /package/{esm2020 → esm2022}/config/cache/cache.type.mjs +0 -0
  108. /package/{esm2020 → esm2022}/config/chart/chart.type.mjs +0 -0
  109. /package/{esm2020 → esm2022}/config/config.mjs +0 -0
  110. /package/{esm2020 → esm2022}/config/config.types.mjs +0 -0
  111. /package/{esm2020 → esm2022}/config/index.mjs +0 -0
  112. /package/{esm2020 → esm2022}/config/mock/mock.type.mjs +0 -0
  113. /package/{esm2020 → esm2022}/config/sf/sf.type.mjs +0 -0
  114. /package/{esm2020 → esm2022}/config/theme/http.type.mjs +0 -0
  115. /package/{esm2020 → esm2022}/config/theme/i18n.type.mjs +0 -0
  116. /package/{esm2020 → esm2022}/config/theme/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/config/theme/responsive.type.mjs +0 -0
  118. /package/{esm2020 → esm2022}/config/util/array.type.mjs +0 -0
  119. /package/{esm2020 → esm2022}/config/util/currency.type.mjs +0 -0
  120. /package/{esm2020 → esm2022}/date-time/date-time.mjs +0 -0
  121. /package/{esm2020 → esm2022}/date-time/index.mjs +0 -0
  122. /package/{esm2020 → esm2022}/date-time/picker.mjs +0 -0
  123. /package/{esm2020 → esm2022}/date-time/time.mjs +0 -0
  124. /package/{esm2020 → esm2022}/decorator/convert.mjs +0 -0
  125. /package/{esm2020 → esm2022}/decorator/decorator.mjs +0 -0
  126. /package/{esm2020 → esm2022}/decorator/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/decorator/zone-outside.mjs +0 -0
  128. /package/{esm2020 → esm2022}/delon-util.mjs +0 -0
  129. /package/{esm2020 → esm2022}/form/form.mjs +0 -0
  130. /package/{esm2020 → esm2022}/form/index.mjs +0 -0
  131. /package/{esm2020 → esm2022}/form/match-control.mjs +0 -0
  132. /package/{esm2020 → esm2022}/form/validators.mjs +0 -0
  133. /package/{esm2020 → esm2022}/format/currency.types.mjs +0 -0
  134. /package/{esm2020 → esm2022}/format/format.mjs +0 -0
  135. /package/{esm2020 → esm2022}/format/index.mjs +0 -0
  136. /package/{esm2020 → esm2022}/format/string.mjs +0 -0
  137. /package/{esm2020 → esm2022}/format/validate.mjs +0 -0
  138. /package/{esm2020 → esm2022}/index.mjs +0 -0
  139. /package/{esm2020 → esm2022}/math/in-range.mjs +0 -0
  140. /package/{esm2020 → esm2022}/math/index.mjs +0 -0
  141. /package/{esm2020 → esm2022}/math/math.mjs +0 -0
  142. /package/{esm2020 → esm2022}/math/round.mjs +0 -0
  143. /package/{esm2020 → esm2022}/other/assert.mjs +0 -0
  144. /package/{esm2020 → esm2022}/other/deep.mjs +0 -0
  145. /package/{esm2020 → esm2022}/other/index.mjs +0 -0
  146. /package/{esm2020 → esm2022}/other/logger.mjs +0 -0
  147. /package/{esm2020 → esm2022}/other/other.mjs +0 -0
  148. /package/{esm2020 → esm2022}/pipes/currency/index.mjs +0 -0
  149. /package/{esm2020 → esm2022}/pipes/currency/pipe-currency.mjs +0 -0
  150. /package/{esm2020 → esm2022}/pipes/filter/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/pipes/filter/pipe-filter.mjs +0 -0
  152. /package/{esm2020 → esm2022}/pipes/format/index.mjs +0 -0
  153. /package/{esm2020 → esm2022}/pipes/format/pipe-format.mjs +0 -0
  154. /package/{esm2020 → esm2022}/pipes/index.mjs +0 -0
  155. /package/{esm2020 → esm2022}/pipes/pipes.mjs +0 -0
  156. /package/{esm2020 → esm2022}/token/index.mjs +0 -0
  157. /package/{esm2020 → esm2022}/token/page-visibility.mjs +0 -0
  158. /package/{esm2020 → esm2022}/token/token.mjs +0 -0
  159. /package/{esm2020 → esm2022}/token/window.mjs +0 -0
  160. /package/{fesm2020 → fesm2022}/date-time.mjs +0 -0
  161. /package/{fesm2020 → fesm2022}/date-time.mjs.map +0 -0
  162. /package/{fesm2020 → fesm2022}/decorator.mjs +0 -0
  163. /package/{fesm2020 → fesm2022}/decorator.mjs.map +0 -0
  164. /package/{fesm2015 → fesm2022}/delon-util.mjs +0 -0
  165. /package/{fesm2015 → fesm2022}/delon-util.mjs.map +0 -0
  166. /package/{fesm2015 → fesm2022}/form.mjs +0 -0
  167. /package/{fesm2015 → fesm2022}/form.mjs.map +0 -0
  168. /package/{fesm2015 → fesm2022}/math.mjs +0 -0
  169. /package/{fesm2015 → fesm2022}/math.mjs.map +0 -0
  170. /package/{fesm2015 → fesm2022}/pipes.mjs +0 -0
  171. /package/{fesm2015 → fesm2022}/pipes.mjs.map +0 -0
  172. /package/{fesm2015 → fesm2022}/token.mjs +0 -0
  173. /package/{fesm2015 → fesm2022}/token.mjs.map +0 -0
@@ -0,0 +1,239 @@
1
+ import { CurrencyPipe, formatNumber } from '@angular/common';
2
+ import { DEFAULT_CURRENCY_CODE, Inject, Injectable, LOCALE_ID } from '@angular/core';
3
+ import { CurrencyMega_Powers } from './currency.types';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@delon/util/config";
6
+ class CurrencyService {
7
+ constructor(cog, locale, _defaultCurrencyCode = 'USD') {
8
+ this.locale = locale;
9
+ this.currencyPipe = new CurrencyPipe(locale, _defaultCurrencyCode);
10
+ this.c = cog.merge('utilCurrency', {
11
+ startingUnit: 'yuan',
12
+ megaUnit: { Q: '京', T: '兆', B: '亿', M: '万', K: '千' },
13
+ precision: 2,
14
+ ingoreZeroPrecision: true
15
+ });
16
+ }
17
+ /**
18
+ * Format a number with commas as thousands separators
19
+ *
20
+ * 格式化货币,用逗号将数字格式化为千位分隔符
21
+ * ```ts
22
+ * 10000 => `10,000`
23
+ * 10000.567 => `10,000.57`
24
+ * ```
25
+ */
26
+ format(value, options) {
27
+ options = {
28
+ startingUnit: this.c.startingUnit,
29
+ precision: this.c.precision,
30
+ ingoreZeroPrecision: this.c.ingoreZeroPrecision,
31
+ ngCurrency: this.c.ngCurrency,
32
+ ...options
33
+ };
34
+ let truthValue = Number(value);
35
+ if (value == null || isNaN(truthValue)) {
36
+ return '';
37
+ }
38
+ if (options.startingUnit === 'cent') {
39
+ truthValue = truthValue / 100;
40
+ }
41
+ if (options.ngCurrency != null) {
42
+ const cur = options.ngCurrency;
43
+ return this.currencyPipe.transform(truthValue, cur.currencyCode, cur.display, cur.digitsInfo, cur.locale || this.locale);
44
+ }
45
+ const res = formatNumber(truthValue, this.locale, `.${options.ingoreZeroPrecision ? 1 : options.precision}-${options.precision}`);
46
+ return options.ingoreZeroPrecision ? res.replace(/(?:\.[0]+)$/g, '') : res;
47
+ }
48
+ /**
49
+ * Large number format filter
50
+ *
51
+ * 大数据格式化
52
+ * ```ts
53
+ * 1000 => { value: '1', unit: 'K', unitI18n: '千' }
54
+ * 12456 => { value: '12.46', unit: 'K', unitI18n: '千' }
55
+ * ```
56
+ */
57
+ mega(value, options) {
58
+ options = { precision: this.c.precision, unitI18n: this.c.megaUnit, startingUnit: this.c.startingUnit, ...options };
59
+ let num = Number(value);
60
+ const res = { raw: value, value: '', unit: '', unitI18n: '' };
61
+ if (isNaN(num) || num === 0) {
62
+ res.value = value.toString();
63
+ return res;
64
+ }
65
+ if (options.startingUnit === 'cent') {
66
+ num = num / 100;
67
+ }
68
+ let abs = Math.abs(+num);
69
+ const rounder = Math.pow(10, options.precision);
70
+ const isNegative = num < 0;
71
+ for (const p of CurrencyMega_Powers) {
72
+ let reduced = abs / p.value;
73
+ reduced = Math.round(reduced * rounder) / rounder;
74
+ if (reduced >= 1) {
75
+ abs = reduced;
76
+ res.unit = p.unit;
77
+ break;
78
+ }
79
+ }
80
+ res.value = (isNegative ? '-' : '') + abs;
81
+ res.unitI18n = options.unitI18n[res.unit];
82
+ return res;
83
+ }
84
+ /**
85
+ * Converted into RMB notation.
86
+ *
87
+ * 转化成人民币表示法
88
+ */
89
+ cny(value, options) {
90
+ options = {
91
+ inWords: true,
92
+ minusSymbol: '负',
93
+ startingUnit: this.c.startingUnit,
94
+ ...options
95
+ };
96
+ value = Number(value);
97
+ if (isNaN(value)) {
98
+ return '';
99
+ }
100
+ if (options.startingUnit === 'cent') {
101
+ value = value / 100;
102
+ }
103
+ value = value.toString();
104
+ let integer;
105
+ let decimal;
106
+ [integer, decimal] = value.split('.');
107
+ let symbol = '';
108
+ if (integer.startsWith('-')) {
109
+ symbol = options.minusSymbol;
110
+ integer = integer.substring(1);
111
+ }
112
+ if (/^-?\d+$/.test(value)) {
113
+ decimal = null;
114
+ }
115
+ integer = (+integer).toString();
116
+ const inWords = options.inWords;
117
+ const unit = {
118
+ num: inWords
119
+ ? ['', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '点']
120
+ : ['', '一', '二', '三', '四', '五', '六', '七', '八', '九', '点'],
121
+ radice: inWords
122
+ ? [
123
+ '',
124
+ '拾',
125
+ '佰',
126
+ '仟',
127
+ '万',
128
+ '拾',
129
+ '佰',
130
+ '仟',
131
+ '亿',
132
+ '拾',
133
+ '佰',
134
+ '仟',
135
+ '万亿',
136
+ '拾',
137
+ '佰',
138
+ '仟',
139
+ '兆',
140
+ '拾',
141
+ '佰',
142
+ '仟'
143
+ ]
144
+ : [
145
+ '',
146
+ '十',
147
+ '百',
148
+ '千',
149
+ '万',
150
+ '十',
151
+ '百',
152
+ '千',
153
+ '亿',
154
+ '十',
155
+ '百',
156
+ '千',
157
+ '万亿',
158
+ '十',
159
+ '百',
160
+ '千',
161
+ '兆',
162
+ '十',
163
+ '百',
164
+ '千'
165
+ ],
166
+ dec: ['角', '分', '厘', '毫']
167
+ };
168
+ if (inWords) {
169
+ value = (+value).toFixed(5).toString();
170
+ }
171
+ let integerRes = '';
172
+ const integerCount = integer.length;
173
+ if (integer === '0' || integerCount === 0) {
174
+ integerRes = '零';
175
+ }
176
+ else {
177
+ let cnDesc = '';
178
+ for (let i = 0; i < integerCount; i++) {
179
+ const n = +integer[i];
180
+ const j = integerCount - i - 1;
181
+ const isZero = i > 1 && n !== 0 && integer[i - 1] === '0';
182
+ const cnZero = isZero ? '零' : '';
183
+ const isEmpptyUnit = (n === 0 && j % 4 !== 0) || integer.substring(i - 3, i - 3 + 4) === '0000';
184
+ const descMark = cnDesc;
185
+ let cnNum = unit.num[n];
186
+ cnDesc = isEmpptyUnit ? '' : unit.radice[j];
187
+ // 第一位是一十
188
+ if (i === 0 && cnNum === '一' && cnDesc === '十')
189
+ cnNum = '';
190
+ const isChangeEr = n > 1 &&
191
+ cnNum === '二' && // 去除首位
192
+ ['', '十', '百'].indexOf(cnDesc) === -1 && // 不读两\两十\两百
193
+ descMark !== '十'; // 不读十两
194
+ if (isChangeEr)
195
+ cnNum = '两';
196
+ integerRes += cnZero + cnNum + cnDesc;
197
+ }
198
+ }
199
+ // 小数部分拼接
200
+ let decimalRes = '';
201
+ const decimalCount = decimal ? decimal.toString().length : 0;
202
+ if (decimal === null) {
203
+ decimalRes = inWords ? '整' : '';
204
+ }
205
+ else if (decimal === '0') {
206
+ decimalRes = '零';
207
+ }
208
+ else {
209
+ for (let i = 0; i < decimalCount; i++) {
210
+ if (inWords && i > unit.dec.length - 1)
211
+ break;
212
+ const n = decimal[i];
213
+ const cnZero = n === '0' ? '零' : '';
214
+ const cnNum = unit.num[+n];
215
+ const cnDesc = inWords ? unit.dec[i] : '';
216
+ decimalRes += cnZero + cnNum + cnDesc;
217
+ }
218
+ }
219
+ const ret = symbol +
220
+ (inWords
221
+ ? integerRes + (decimalRes === '零' ? '元整' : `元${decimalRes}`)
222
+ : integerRes + (decimalRes === '' ? '' : `点${decimalRes}`));
223
+ return ret;
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyService, deps: [{ token: i1.AlainConfigService }, { token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
226
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyService, providedIn: 'root' }); }
227
+ }
228
+ export { CurrencyService };
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyService, decorators: [{
230
+ type: Injectable,
231
+ args: [{ providedIn: 'root' }]
232
+ }], ctorParameters: function () { return [{ type: i1.AlainConfigService }, { type: undefined, decorators: [{
233
+ type: Inject,
234
+ args: [LOCALE_ID]
235
+ }] }, { type: undefined, decorators: [{
236
+ type: Inject,
237
+ args: [DEFAULT_CURRENCY_CODE]
238
+ }] }]; } });
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvZm9ybWF0L2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLckYsT0FBTyxFQUtMLG1CQUFtQixFQUNwQixNQUFNLGtCQUFrQixDQUFDOzs7QUFFMUIsTUFDYSxlQUFlO0lBSTFCLFlBQ0UsR0FBdUIsRUFDSSxNQUFjLEVBQ1YsdUJBQStCLEtBQUs7UUFEeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUd6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDakMsWUFBWSxFQUFFLE1BQU07WUFDcEIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ3BELFNBQVMsRUFBRSxDQUFDO1lBQ1osbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFFLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsS0FBc0IsRUFBRSxPQUErQjtRQUM1RCxPQUFPLEdBQUc7WUFDUixZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDM0IsbUJB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QUM7OEdBL09VLGVBQWUsb0RBTWhCLFNBQVMsYUFDVCxxQkFBcUI7a0hBUHBCLGVBQWUsY0FERixNQUFNOztTQUNuQixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPN0IsTUFBTTsyQkFBQyxTQUFTOzswQkFDaEIsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIGZvcm1hdE51bWJlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBERUZBVUxUX0NVUlJFTkNZX0NPREUsIEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFsYWluQ29uZmlnU2VydmljZSwgQWxhaW5VdGlsQ3VycmVuY3lDb25maWcgfSBmcm9tICdAZGVsb24vdXRpbC9jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBDdXJyZW5jeUNOWU9wdGlvbnMsXG4gIEN1cnJlbmN5Rm9ybWF0T3B0aW9ucyxcbiAgQ3VycmVuY3lNZWdhT3B0aW9ucyxcbiAgQ3VycmVuY3lNZWdhUmVzdWx0LFxuICBDdXJyZW5jeU1lZ2FfUG93ZXJzXG59IGZyb20gJy4vY3VycmVuY3kudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XG4gIHByaXZhdGUgYzogQWxhaW5VdGlsQ3VycmVuY3lDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29nOiBBbGFpbkNvbmZpZ1NlcnZpY2UsXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgQEluamVjdChERUZBVUxUX0NVUlJFTkNZX0NPREUpIF9kZWZhdWx0Q3VycmVuY3lDb2RlOiBzdHJpbmcgPSAnVVNEJ1xuICApIHtcbiAgICB0aGlzLmN1cnJlbmN5UGlwZSA9IG5ldyBDdXJyZW5jeVBpcGUobG9jYWxlLCBfZGVmYXVsdEN1cnJlbmN5Q29kZSk7XG4gICAgdGhpcy5jID0gY29nLm1lcmdlKCd1dGlsQ3VycmVuY3knLCB7XG4gICAgICBzdGFydGluZ1VuaXQ6ICd5dWFuJyxcbiAgICAgIG1lZ2FVbml0OiB7IFE6ICfkuqwnLCBUOiAn5YWGJywgQjogJ+S6vycsIE06ICfkuIcnLCBLOiAn5Y2DJyB9LFxuICAgICAgcHJlY2lzaW9uOiAyLFxuICAgICAgaW5nb3JlWmVyb1ByZWNpc2lvbjogdHJ1ZVxuICAgIH0pITtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYSBudW1iZXIgd2l0aCBjb21tYXMgYXMgdGhvdXNhbmRzIHNlcGFyYXRvcnNcbiAgICpcbiAgICog5qC85byP5YyW6LSn5biB77yM55So6YCX5Y+35bCG5pWw5a2X5qC85byP5YyW5Li65Y2D5L2N5YiG6ZqU56ymXG4gICAqIGBgYHRzXG4gICAqIDEwMDAwID0+IGAxMCwwMDBgXG4gICAqIDEwMDAwLjU2NyA9PiBgMTAsMDAwLjU3YFxuICAgKiBgYGBcbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBvcHRpb25zPzogQ3VycmVuY3lGb3JtYXRPcHRpb25zKTogc3RyaW5nIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgc3RhcnRpbmdVbml0OiB0aGlzLmMuc3RhcnRpbmdVbml0LFxuICAgICAgcHJlY2lzaW9uOiB0aGlzLmMucHJlY2lzaW9uLFxuICAgICAgaW5nb3JlWmVyb1ByZWNpc2lvbjogdGhpcy5jLmluZ29yZVplcm9QcmVjaXNpb24sXG4gICAgICBuZ0N1cnJlbmN5OiB0aGlzLmMubmdDdXJyZW5jeSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGxldCB0cnV0aFZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCBpc05hTih0cnV0aFZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdGFydGluZ1VuaXQgPT09ICdjZW50Jykge1xuICAgICAgdHJ1dGhWYWx1ZSA9IHRydXRoVmFsdWUgLyAxMDA7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm5nQ3VycmVuY3kgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY3VyID0gb3B0aW9ucy5uZ0N1cnJlbmN5ITtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRydXRoVmFsdWUsXG4gICAgICAgIGN1ci5jdXJyZW5jeUNvZGUsXG4gICAgICAgIGN1ci5kaXNwbGF5LFxuICAgICAgICBjdXIuZGlnaXRzSW5mbyxcbiAgICAgICAgY3VyLmxvY2FsZSB8fCB0aGlzLmxvY2FsZVxuICAgICAgKSE7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGZvcm1hdE51bWJlcihcbiAgICAgIHRydXRoVmFsdWUsXG4gICAgICB0aGlzLmxvY2FsZSxcbiAgICAgIGAuJHtvcHRpb25zLmluZ29yZVplcm9QcmVjaXNpb24gPyAxIDogb3B0aW9ucy5wcmVjaXNpb259LSR7b3B0aW9ucy5wcmVjaXNpb259YFxuICAgICk7XG4gICAgcmV0dXJuIG9wdGlvbnMuaW5nb3JlWmVyb1ByZWNpc2lvbiA/IHJlcy5yZXBsYWNlKC8oPzpcXC5bMF0rKSQvZywgJycpIDogcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIExhcmdlIG51bWJlciBmb3JtYXQgZmlsdGVyXG4gICAqXG4gICAqIOWkp+aVsOaNruagvOW8j+WMllxuICAgKiBgYGB0c1xuICAgKiAxMDAwID0+IHsgdmFsdWU6ICcxJywgdW5pdDogJ0snLCB1bml0STE4bjogJ+WNgycgfVxuICAgKiAxMjQ1NiA9PiB7IHZhbHVlOiAnMTIuNDYnLCB1bml0OiAnSycsIHVuaXRJMThuOiAn5Y2DJyB9XG4gICAqIGBgYFxuICAgKi9cbiAgbWVnYSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBvcHRpb25zPzogQ3VycmVuY3lNZWdhT3B0aW9ucyk6IEN1cnJlbmN5TWVnYVJlc3VsdCB7XG4gICAgb3B0aW9ucyA9IHsgcHJlY2lzaW9uOiB0aGlzLmMucHJlY2lzaW9uLCB1bml0STE4bjogdGhpcy5jLm1lZ2FVbml0LCBzdGFydGluZ1VuaXQ6IHRoaXMuYy5zdGFydGluZ1VuaXQsIC4uLm9wdGlvbnMgfTtcbiAgICBsZXQgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICBjb25zdCByZXM6IEN1cnJlbmN5TWVnYVJlc3VsdCA9IHsgcmF3OiB2YWx1ZSwgdmFsdWU6ICcnLCB1bml0OiAnJywgdW5pdEkxOG46ICcnIH07XG4gICAgaWYgKGlzTmFOKG51bSkgfHwgbnVtID09PSAwKSB7XG4gICAgICByZXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc3RhcnRpbmdVbml0ID09PSAnY2VudCcpIHtcbiAgICAgIG51bSA9IG51bSAvIDEwMDtcbiAgICB9XG4gICAgbGV0IGFicyA9IE1hdGguYWJzKCtudW0pO1xuICAgIGNvbnN0IHJvdW5kZXIgPSBNYXRoLnBvdygxMCwgb3B0aW9ucy5wcmVjaXNpb24hKTtcbiAgICBjb25zdCBpc05lZ2F0aXZlID0gbnVtIDwgMDtcbiAgICBmb3IgKGNvbnN0IHAgb2YgQ3VycmVuY3lNZWdhX1Bvd2Vycykge1xuICAgICAgbGV0IHJlZHVjZWQgPSBhYnMgLyBwLnZhbHVlO1xuXG4gICAgICByZWR1Y2VkID0gTWF0aC5yb3VuZChyZWR1Y2VkICogcm91bmRlcikgLyByb3VuZGVyO1xuXG4gICAgICBpZiAocmVkdWNlZCA+PSAxKSB7XG4gICAgICAgIGFicyA9IHJlZHVjZWQ7XG4gICAgICAgIHJlcy51bml0ID0gcC51bml0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXMudmFsdWUgPSAoaXNOZWdhdGl2ZSA/ICctJyA6ICcnKSArIGFicztcbiAgICByZXMudW5pdEkxOG4gPSAob3B0aW9ucy51bml0STE4biBhcyB7IFtrZXk6IHN0cmluZ106IE56U2FmZUFueSB9KVtyZXMudW5pdF07XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0ZWQgaW50byBSTUIgbm90YXRpb24uXG4gICAqXG4gICAqIOi9rOWMluaIkOS6uuawkeW4geihqOekuuazlVxuICAgKi9cbiAgY255KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM/OiBDdXJyZW5jeUNOWU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBpbldvcmRzOiB0cnVlLFxuICAgICAgbWludXNTeW1ib2w6ICfotJ8nLFxuICAgICAgc3RhcnRpbmdVbml0OiB0aGlzLmMuc3RhcnRpbmdVbml0LFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdGFydGluZ1VuaXQgPT09ICdjZW50Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZSAvIDEwMDtcbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIGxldCBpbnRlZ2VyOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbGV0IGRlY2ltYWw6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gICAgW2ludGVnZXIsIGRlY2ltYWxdID0gdmFsdWUuc3BsaXQoJy4nKTtcbiAgICBsZXQgc3ltYm9sID0gJyc7XG4gICAgaWYgKGludGVnZXIuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBzeW1ib2wgPSBvcHRpb25zLm1pbnVzU3ltYm9sITtcbiAgICAgIGludGVnZXIgPSBpbnRlZ2VyLnN1YnN0cmluZygxKTtcbiAgICB9XG4gICAgaWYgKC9eLT9cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIGRlY2ltYWwgPSBudWxsO1xuICAgIH1cbiAgICBpbnRlZ2VyID0gKCtpbnRlZ2VyKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGluV29yZHMgPSBvcHRpb25zLmluV29yZHM7XG4gICAgY29uc3QgdW5pdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge1xuICAgICAgbnVtOiBpbldvcmRzXG4gICAgICAgID8gWycnLCAn5aO5JywgJ+i0sCcsICflj4EnLCAn6IKGJywgJ+S8jScsICfpmYYnLCAn5p+SJywgJ+aNjCcsICfnjpYnLCAn54K5J11cbiAgICAgICAgOiBbJycsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nScsICfngrknXSxcbiAgICAgIHJhZGljZTogaW5Xb3Jkc1xuICAgICAgICA/IFtcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgJ+aLvicsXG4gICAgICAgICAgICAn5L2wJyxcbiAgICAgICAgICAgICfku58nLFxuICAgICAgICAgICAgJ+S4hycsXG4gICAgICAgICAgICAn5ou+JyxcbiAgICAgICAgICAgICfkvbAnLFxuICAgICAgICAgICAgJ+S7nycsXG4gICAgICAgICAgICAn5Lq/JyxcbiAgICAgICAgICAgICfmi74nLFxuICAgICAgICAgICAgJ+S9sCcsXG4gICAgICAgICAgICAn5LufJyxcbiAgICAgICAgICAgICfkuIfkur8nLFxuICAgICAgICAgICAgJ+aLvicsXG4gICAgICAgICAgICAn5L2wJyxcbiAgICAgICAgICAgICfku58nLFxuICAgICAgICAgICAgJ+WFhicsXG4gICAgICAgICAgICAn5ou+JyxcbiAgICAgICAgICAgICfkvbAnLFxuICAgICAgICAgICAgJ+S7nydcbiAgICAgICAgICBdXG4gICAgICAgIDogW1xuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAn5Y2BJyxcbiAgICAgICAgICAgICfnmb4nLFxuICAgICAgICAgICAgJ+WNgycsXG4gICAgICAgICAgICAn5LiHJyxcbiAgICAgICAgICAgICfljYEnLFxuICAgICAgICAgICAgJ+eZvicsXG4gICAgICAgICAgICAn5Y2DJyxcbiAgICAgICAgICAgICfkur8nLFxuICAgICAgICAgICAgJ+WNgScsXG4gICAgICAgICAgICAn55m+JyxcbiAgICAgICAgICAgICfljYMnLFxuICAgICAgICAgICAgJ+S4h+S6vycsXG4gICAgICAgICAgICAn5Y2BJyxcbiAgICAgICAgICAgICfnmb4nLFxuICAgICAgICAgICAgJ+WNgycsXG4gICAgICAgICAgICAn5YWGJyxcbiAgICAgICAgICAgICfljYEnLFxuICAgICAgICAgICAgJ+eZvicsXG4gICAgICAgICAgICAn5Y2DJ1xuICAgICAgICAgIF0sXG4gICAgICBkZWM6IFsn6KeSJywgJ+WIhicsICfljpgnLCAn5q+rJ11cbiAgICB9O1xuICAgIGlmIChpbldvcmRzKSB7XG4gICAgICB2YWx1ZSA9ICgrdmFsdWUpLnRvRml4ZWQoNSkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgbGV0IGludGVnZXJSZXMgPSAnJztcbiAgICBjb25zdCBpbnRlZ2VyQ291bnQgPSBpbnRlZ2VyLmxlbmd0aDtcbiAgICBpZiAoaW50ZWdlciA9PT0gJzAnIHx8IGludGVnZXJDb3VudCA9PT0gMCkge1xuICAgICAgaW50ZWdlclJlcyA9ICfpm7YnO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY25EZXNjID0gJyc7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVnZXJDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSAraW50ZWdlcltpXTtcbiAgICAgICAgY29uc3QgaiA9IGludGVnZXJDb3VudCAtIGkgLSAxO1xuICAgICAgICBjb25zdCBpc1plcm8gPSBpID4gMSAmJiBuICE9PSAwICYmIGludGVnZXJbaSAtIDFdID09PSAnMCc7XG4gICAgICAgIGNvbnN0IGNuWmVybyA9IGlzWmVybyA/ICfpm7YnIDogJyc7XG4gICAgICAgIGNvbnN0IGlzRW1wcHR5VW5pdCA9IChuID09PSAwICYmIGogJSA0ICE9PSAwKSB8fCBpbnRlZ2VyLnN1YnN0cmluZyhpIC0gMywgaSAtIDMgKyA0KSA9PT0gJzAwMDAnO1xuICAgICAgICBjb25zdCBkZXNjTWFyayA9IGNuRGVzYztcbiAgICAgICAgbGV0IGNuTnVtID0gdW5pdC5udW1bbl07XG5cbiAgICAgICAgY25EZXNjID0gaXNFbXBwdHlVbml0ID8gJycgOiB1bml0LnJhZGljZVtqXTtcbiAgICAgICAgLy8g56ys5LiA5L2N5piv5LiA5Y2BXG4gICAgICAgIGlmIChpID09PSAwICYmIGNuTnVtID09PSAn5LiAJyAmJiBjbkRlc2MgPT09ICfljYEnKSBjbk51bSA9ICcnO1xuICAgICAgICBjb25zdCBpc0NoYW5nZUVyID1cbiAgICAgICAgICBuID4gMSAmJlxuICAgICAgICAgIGNuTnVtID09PSAn5LqMJyAmJiAvLyDljrvpmaTpppbkvY1cbiAgICAgICAgICBbJycsICfljYEnLCAn55m+J10uaW5kZXhPZihjbkRlc2MpID09PSAtMSAmJiAvLyDkuI3or7vkuKRcXOS4pOWNgVxc5Lik55m+XG4gICAgICAgICAgZGVzY01hcmsgIT09ICfljYEnOyAvLyDkuI3or7vljYHkuKRcbiAgICAgICAgaWYgKGlzQ2hhbmdlRXIpIGNuTnVtID0gJ+S4pCc7XG4gICAgICAgIGludGVnZXJSZXMgKz0gY25aZXJvICsgY25OdW0gKyBjbkRlc2M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g5bCP5pWw6YOo5YiG5ou85o6lXG4gICAgbGV0IGRlY2ltYWxSZXMgPSAnJztcbiAgICBjb25zdCBkZWNpbWFsQ291bnQgPSBkZWNpbWFsID8gZGVjaW1hbC50b1N0cmluZygpLmxlbmd0aCA6IDA7XG4gICAgaWYgKGRlY2ltYWwgPT09IG51bGwpIHtcbiAgICAgIGRlY2ltYWxSZXMgPSBpbldvcmRzID8gJ+aVtCcgOiAnJztcbiAgICB9IGVsc2UgaWYgKGRlY2ltYWwgPT09ICcwJykge1xuICAgICAgZGVjaW1hbFJlcyA9ICfpm7YnO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY2ltYWxDb3VudDsgaSsrKSB7XG4gICAgICAgIGlmIChpbldvcmRzICYmIGkgPiB1bml0LmRlYy5sZW5ndGggLSAxKSBicmVhaztcbiAgICAgICAgY29uc3QgbiA9IGRlY2ltYWxbaV07XG4gICAgICAgIGNvbnN0IGNuWmVybyA9IG4gPT09ICcwJyA/ICfpm7YnIDogJyc7XG4gICAgICAgIGNvbnN0IGNuTnVtID0gdW5pdC5udW1bK25dO1xuICAgICAgICBjb25zdCBjbkRlc2MgPSBpbldvcmRzID8gdW5pdC5kZWNbaV0gOiAnJztcbiAgICAgICAgZGVjaW1hbFJlcyArPSBjblplcm8gKyBjbk51bSArIGNuRGVzYztcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmV0ID1cbiAgICAgIHN5bWJvbCArXG4gICAgICAoaW5Xb3Jkc1xuICAgICAgICA/IGludGVnZXJSZXMgKyAoZGVjaW1hbFJlcyA9PT0gJ+mbticgPyAn5YWD5pW0JyA6IGDlhYMke2RlY2ltYWxSZXN9YClcbiAgICAgICAgOiBpbnRlZ2VyUmVzICsgKGRlY2ltYWxSZXMgPT09ICcnID8gJycgOiBg54K5JHtkZWNpbWFsUmVzfWApKTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,133 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { BehaviorSubject, filter, share } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * `LazyService` delay loading JS or CSS files.
7
+ *
8
+ * 延迟加载资源(js 或 css)服务
9
+ */
10
+ class LazyService {
11
+ constructor(doc) {
12
+ this.doc = doc;
13
+ this.list = {};
14
+ this.cached = {};
15
+ this._notify = new BehaviorSubject([]);
16
+ }
17
+ get change() {
18
+ return this._notify.asObservable().pipe(share(), filter(ls => ls.length !== 0));
19
+ }
20
+ clear() {
21
+ this.list = {};
22
+ this.cached = {};
23
+ }
24
+ attachAttributes(el, attributes) {
25
+ if (attributes == null)
26
+ return;
27
+ Object.entries(attributes).forEach(([key, value]) => {
28
+ el.setAttribute(key, value);
29
+ });
30
+ }
31
+ /**
32
+ * Load script or style files
33
+ */
34
+ load(paths) {
35
+ if (!Array.isArray(paths)) {
36
+ paths = [paths];
37
+ }
38
+ const promises = [];
39
+ paths
40
+ .map(v => (typeof v !== 'object' ? { path: v } : v))
41
+ .forEach(item => {
42
+ if (item.path.endsWith('.js')) {
43
+ promises.push(this.loadScript(item.path, item.options));
44
+ }
45
+ else {
46
+ promises.push(this.loadStyle(item.path, item.options));
47
+ }
48
+ });
49
+ return Promise.all(promises).then(res => {
50
+ this._notify.next(res);
51
+ return Promise.resolve(res);
52
+ });
53
+ }
54
+ loadScript(path, innerContent, attributes) {
55
+ const options = typeof innerContent === 'object'
56
+ ? innerContent
57
+ : {
58
+ innerContent,
59
+ attributes
60
+ };
61
+ return new Promise(resolve => {
62
+ if (this.list[path] === true) {
63
+ resolve({ ...this.cached[path], status: 'loading' });
64
+ return;
65
+ }
66
+ this.list[path] = true;
67
+ const onSuccess = (item) => {
68
+ this.cached[path] = item;
69
+ resolve(item);
70
+ this._notify.next([item]);
71
+ };
72
+ const node = this.doc.createElement('script');
73
+ node.type = 'text/javascript';
74
+ node.src = path;
75
+ this.attachAttributes(node, options.attributes);
76
+ if (options.innerContent) {
77
+ node.innerHTML = options.innerContent;
78
+ }
79
+ node.onload = () => onSuccess({
80
+ path,
81
+ status: 'ok'
82
+ });
83
+ node.onerror = error => onSuccess({
84
+ path,
85
+ status: 'error',
86
+ error
87
+ });
88
+ this.doc.getElementsByTagName('head')[0].appendChild(node);
89
+ });
90
+ }
91
+ loadStyle(path, rel, innerContent, attributes) {
92
+ const options = typeof rel === 'object'
93
+ ? rel
94
+ : {
95
+ rel,
96
+ innerContent,
97
+ attributes
98
+ };
99
+ return new Promise(resolve => {
100
+ if (this.list[path] === true) {
101
+ resolve(this.cached[path]);
102
+ return;
103
+ }
104
+ this.list[path] = true;
105
+ const node = this.doc.createElement('link');
106
+ node.rel = options.rel ?? 'stylesheet';
107
+ node.type = 'text/css';
108
+ node.href = path;
109
+ this.attachAttributes(node, options.attributes);
110
+ if (options.innerContent) {
111
+ node.innerHTML = options.innerContent;
112
+ }
113
+ this.doc.getElementsByTagName('head')[0].appendChild(node);
114
+ const item = {
115
+ path,
116
+ status: 'ok'
117
+ };
118
+ this.cached[path] = item;
119
+ resolve(item);
120
+ });
121
+ }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: LazyService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
123
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: LazyService, providedIn: 'root' }); }
124
+ }
125
+ export { LazyService };
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: LazyService, decorators: [{
127
+ type: Injectable,
128
+ args: [{ providedIn: 'root' }]
129
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
130
+ type: Inject,
131
+ args: [DOCUMENT]
132
+ }] }]; } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9vdGhlci9sYXp5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFxQmxFOzs7O0dBSUc7QUFDSCxNQUNhLFdBQVc7SUFLdEIsWUFBc0MsR0FBYztRQUFkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFKNUMsU0FBSSxHQUErQixFQUFFLENBQUM7UUFDdEMsV0FBTSxHQUFrQyxFQUFFLENBQUM7UUFDM0MsWUFBTyxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztJQUVoQyxDQUFDO0lBRXhELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3JDLEtBQUssRUFBRSxFQUNQLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEVBQWUsRUFBRSxVQUFnRDtRQUN4RixJQUFJLFVBQVUsSUFBSSxJQUFJO1lBQUUsT0FBTztRQUUvQixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7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SSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQzthQUN2QztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELE1BQU0sSUFBSSxHQUFlO2dCQUN2QixJQUFJO2dCQUNKLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBakpVLFdBQVcsa0JBS0YsUUFBUTtrSEFMakIsV0FBVyxjQURFLE1BQU07O1NBQ25CLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU1uQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlsdGVyLCBzaGFyZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eVJlc3VsdCB7XG4gIHBhdGg6IHN0cmluZztcbiAgc3RhdHVzOiAnb2snIHwgJ2Vycm9yJyB8ICdsb2FkaW5nJztcbiAgZXJyb3I/OiBOelNhZmVBbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUxvYWRJdGVtIHtcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zPzogTGF6eUxvYWRPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhenlMb2FkT3B0aW9ucyB7XG4gIGlubmVyQ29udGVudD86IHN0cmluZztcbiAgYXR0cmlidXRlcz86IHsgW3F1YWxpZmllZE5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYExhenlTZXJ2aWNlYCBkZWxheSBsb2FkaW5nIEpTIG9yIENTUyBmaWxlcy5cbiAqXG4gKiDlu7bov5/liqDovb3otYTmupDvvIhqcyDmiJYgY3Nz77yJ5pyN5YqhXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGF6eVNlcnZpY2Uge1xuICBwcml2YXRlIGxpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIHByaXZhdGUgY2FjaGVkOiB7IFtrZXk6IHN0cmluZ106IExhenlSZXN1bHQgfSA9IHt9O1xuICBwcml2YXRlIF9ub3RpZnk6IEJlaGF2aW9yU3ViamVjdDxMYXp5UmVzdWx0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXp5UmVzdWx0W10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogTnpTYWZlQW55KSB7fVxuXG4gIGdldCBjaGFuZ2UoKTogT2JzZXJ2YWJsZTxMYXp5UmVzdWx0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fbm90aWZ5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzaGFyZSgpLFxuICAgICAgZmlsdGVyKGxzID0+IGxzLmxlbmd0aCAhPT0gMClcbiAgICApO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ID0ge307XG4gICAgdGhpcy5jYWNoZWQgPSB7fTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoQXR0cmlidXRlcyhlbDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZXM/OiB7IFtxdWFsaWZpZWROYW1lOiBzdHJpbmddOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIGlmIChhdHRyaWJ1dGVzID09IG51bGwpIHJldHVybjtcblxuICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgc2NyaXB0IG9yIHN0eWxlIGZpbGVzXG4gICAqL1xuICBsb2FkKHBhdGhzOiBzdHJpbmcgfCBMYXp5TG9hZEl0ZW0gfCBBcnJheTxzdHJpbmcgfCBMYXp5TG9hZEl0ZW0+KTogUHJvbWlzZTxMYXp5UmVzdWx0W10+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aHMpKSB7XG4gICAgICBwYXRocyA9IFtwYXRoc107XG4gICAgfVxuXG4gICAgY29uc3QgcHJvbWlzZXM6IEFycmF5PFByb21pc2U8TGF6eVJlc3VsdD4+ID0gW107XG4gICAgcGF0aHNcbiAgICAgIC5tYXAodiA9PiAodHlwZW9mIHYgIT09ICdvYmplY3QnID8gKHsgcGF0aDogdiB9IGFzIExhenlMb2FkSXRlbSkgOiB2KSlcbiAgICAgIC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5wYXRoLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgICAgIHByb21pc2VzLnB1c2godGhpcy5sb2FkU2NyaXB0KGl0ZW0ucGF0aCwgaXRlbS5vcHRpb25zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxvYWRTdHlsZShpdGVtLnBhdGgsIGl0ZW0ub3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihyZXMgPT4ge1xuICAgICAgdGhpcy5fbm90aWZ5Lm5leHQocmVzKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgc2NyaXB0IGZpbGVcbiAgICovXG4gIGxvYWRTY3JpcHQocGF0aDogc3RyaW5nLCBvcHRpb25zPzogTGF6eUxvYWRPcHRpb25zKTogUHJvbWlzZTxMYXp5UmVzdWx0PjtcbiAgbG9hZFNjcmlwdChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgaW5uZXJDb250ZW50Pzogc3RyaW5nIHwgTGF6eUxvYWRPcHRpb25zLFxuICAgIGF0dHJpYnV0ZXM/OiB7IFtxdWFsaWZpZWROYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxuICApOiBQcm9taXNlPExhenlSZXN1bHQ+IHtcbiAgICBjb25zdCBvcHRpb25zOiBMYXp5TG9hZE9wdGlvbnMgPVxuICAgICAgdHlwZW9mIGlubmVyQ29udGVudCA9PT0gJ29iamVjdCdcbiAgICAgICAgPyBpbm5lckNvbnRlbnRcbiAgICAgICAgOiB7XG4gICAgICAgICAgICBpbm5lckNvbnRlbnQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAodGhpcy5saXN0W3BhdGhdID09PSB0cnVlKSB7XG4gICAgICAgIHJlc29sdmUoeyAuLi50aGlzLmNhY2hlZFtwYXRoXSwgc3RhdHVzOiAnbG9hZGluZycgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5saXN0W3BhdGhdID0gdHJ1ZTtcbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChpdGVtOiBMYXp5UmVzdWx0KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2FjaGVkW3BhdGhdID0gaXRlbTtcbiAgICAgICAgcmVzb2x2ZShpdGVtKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5Lm5leHQoW2l0ZW1dKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSBhcyBIVE1MU2NyaXB0RWxlbWVudDtcbiAgICAgIG5vZGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgbm9kZS5zcmMgPSBwYXRoO1xuICAgICAgdGhpcy5hdHRhY2hBdHRyaWJ1dGVzKG5vZGUsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gICAgICBpZiAob3B0aW9ucy5pbm5lckNvbnRlbnQpIHtcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBvcHRpb25zLmlubmVyQ29udGVudDtcbiAgICAgIH1cbiAgICAgIG5vZGUub25sb2FkID0gKCkgPT5cbiAgICAgICAgb25TdWNjZXNzKHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN0YXR1czogJ29rJ1xuICAgICAgICB9KTtcbiAgICAgIG5vZGUub25lcnJvciA9IGVycm9yID0+XG4gICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBzdHlsZSBmaWxlXG4gICAqL1xuICBsb2FkU3R5bGUocGF0aDogc3RyaW5nLCBvcHRpb25zPzogTGF6eUxvYWRPcHRpb25zKTogUHJvbWlzZTxMYXp5UmVzdWx0PjtcbiAgbG9hZFN0eWxlKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICByZWw/OiBzdHJpbmcgfCBMYXp5TG9hZE9wdGlvbnMsXG4gICAgaW5uZXJDb250ZW50Pzogc3RyaW5nLFxuICAgIGF0dHJpYnV0ZXM/OiB7IFtxdWFsaWZpZWROYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxuICApOiBQcm9taXNlPExhenlSZXN1bHQ+IHtcbiAgICBjb25zdCBvcHRpb25zOiBMYXp5TG9hZE9wdGlvbnMgPVxuICAgICAgdHlwZW9mIHJlbCA9PT0gJ29iamVjdCdcbiAgICAgICAgPyByZWxcbiAgICAgICAgOiB7XG4gICAgICAgICAgICByZWwsXG4gICAgICAgICAgICBpbm5lckNvbnRlbnQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAodGhpcy5saXN0W3BhdGhdID09PSB0cnVlKSB7XG4gICAgICAgIHJlc29sdmUodGhpcy5jYWNoZWRbcGF0aF0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGlzdFtwYXRoXSA9IHRydWU7XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCdsaW5rJykgYXMgSFRNTExpbmtFbGVtZW50O1xuICAgICAgbm9kZS5yZWwgPSBvcHRpb25zLnJlbCA/PyAnc3R5bGVzaGVldCc7XG4gICAgICBub2RlLnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgbm9kZS5ocmVmID0gcGF0aDtcbiAgICAgIHRoaXMuYXR0YWNoQXR0cmlidXRlcyhub2RlLCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICAgICAgaWYgKG9wdGlvbnMuaW5uZXJDb250ZW50KSB7XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gb3B0aW9ucy5pbm5lckNvbnRlbnQ7XG4gICAgICB9XG4gICAgICB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgY29uc3QgaXRlbTogTGF6eVJlc3VsdCA9IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc3RhdHVzOiAnb2snXG4gICAgICB9O1xuICAgICAgdGhpcy5jYWNoZWRbcGF0aF0gPSBpdGVtO1xuICAgICAgcmVzb2x2ZShpdGVtKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@delon/util/format";
4
+ class CurrencyCNYPipe {
5
+ constructor(srv) {
6
+ this.srv = srv;
7
+ }
8
+ /**
9
+ * Converted into RMB notation.
10
+ *
11
+ * 转化成人民币表示法
12
+ */
13
+ transform(value, options) {
14
+ return this.srv.cny(value, options);
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyCNYPipe, deps: [{ token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: CurrencyCNYPipe, name: "cny" }); }
18
+ }
19
+ export { CurrencyCNYPipe };
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyCNYPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{ name: 'cny' }]
23
+ }], ctorParameters: function () { return [{ type: i1.CurrencyService }]; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY255LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2N1cnJlbmN5L2NueS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFJcEQsTUFDYSxlQUFlO0lBQzFCLFlBQW9CLEdBQW9CO1FBQXBCLFFBQUcsR0FBSCxHQUFHLENBQWlCO0lBQUcsQ0FBQztJQUU1Qzs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQXNCLEVBQUUsT0FBNEI7UUFDNUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FWVSxlQUFlOzRHQUFmLGVBQWU7O1NBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3VycmVuY3lDTllPcHRpb25zLCBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbC9mb3JtYXQnO1xuXG5AUGlwZSh7IG5hbWU6ICdjbnknIH0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lDTllQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3J2OiBDdXJyZW5jeVNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRlZCBpbnRvIFJNQiBub3RhdGlvbi5cbiAgICpcbiAgICog6L2s5YyW5oiQ5Lq65rCR5biB6KGo56S65rOVXG4gICAqL1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciB8IHN0cmluZywgb3B0aW9ucz86IEN1cnJlbmN5Q05ZT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3J2LmNueSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { Inject, LOCALE_ID, Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@delon/util/format";
4
+ class CurrencyMegaPipe {
5
+ constructor(srv, locale) {
6
+ this.srv = srv;
7
+ this.isCN = false;
8
+ this.isCN = locale.startsWith('zh');
9
+ }
10
+ /**
11
+ * Large number format filter
12
+ *
13
+ * 大数据格式化
14
+ */
15
+ transform(value, options) {
16
+ const res = this.srv.mega(value, options);
17
+ return res.value + (this.isCN ? res.unitI18n : res.unit);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyMegaPipe, deps: [{ token: i1.CurrencyService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
20
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: CurrencyMegaPipe, name: "mega" }); }
21
+ }
22
+ export { CurrencyMegaPipe };
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyMegaPipe, decorators: [{
24
+ type: Pipe,
25
+ args: [{ name: 'mega' }]
26
+ }], ctorParameters: function () { return [{ type: i1.CurrencyService }, { type: undefined, decorators: [{
27
+ type: Inject,
28
+ args: [LOCALE_ID]
29
+ }] }]; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9waXBlcy9jdXJyZW5jeS9tZWdhLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBSXZFLE1BQ2EsZ0JBQWdCO0lBRTNCLFlBQW9CLEdBQW9CLEVBQXFCLE1BQWM7UUFBdkQsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFEaEMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBc0IsRUFBRSxPQUE2QjtRQUM3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBZFUsZ0JBQWdCLGlEQUV1QixTQUFTOzRHQUZoRCxnQkFBZ0I7O1NBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTs7MEJBR3VCLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEN1cnJlbmN5TWVnYU9wdGlvbnMsIEN1cnJlbmN5U2VydmljZSB9IGZyb20gJ0BkZWxvbi91dGlsL2Zvcm1hdCc7XG5cbkBQaXBlKHsgbmFtZTogJ21lZ2EnIH0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lNZWdhUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIGlzQ04gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzcnY6IEN1cnJlbmN5U2VydmljZSwgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pc0NOID0gbG9jYWxlLnN0YXJ0c1dpdGgoJ3poJyk7XG4gIH1cblxuICAvKipcbiAgICogTGFyZ2UgbnVtYmVyIGZvcm1hdCBmaWx0ZXJcbiAgICpcbiAgICog5aSn5pWw5o2u5qC85byP5YyWXG4gICAqL1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciB8IHN0cmluZywgb3B0aW9ucz86IEN1cnJlbmN5TWVnYU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuc3J2Lm1lZ2EodmFsdWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiByZXMudmFsdWUgKyAodGhpcy5pc0NOID8gcmVzLnVuaXRJMThuIDogcmVzLnVuaXQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CurrencyCNYPipe } from './cny.pipe';
3
+ import { CurrencyMegaPipe } from './mega.pipe';
4
+ import { CurrencyPricePipe } from './price.pipe';
5
+ import * as i0 from "@angular/core";
6
+ const PIPES = [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe];
7
+ class CurrencyPipeModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPipeModule, declarations: [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe], exports: [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPipeModule }); }
11
+ }
12
+ export { CurrencyPipeModule };
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPipeModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: PIPES,
17
+ exports: PIPES
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9waXBlcy9jdXJyZW5jeS9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRWpELE1BQU0sS0FBSyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFckUsTUFJYSxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQU5oQixnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLGFBQXBELGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWU7K0dBTXRELGtCQUFrQjs7U0FBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLE9BQU8sRUFBRSxLQUFLO2lCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3VycmVuY3lDTllQaXBlIH0gZnJvbSAnLi9jbnkucGlwZSc7XG5pbXBvcnQgeyBDdXJyZW5jeU1lZ2FQaXBlIH0gZnJvbSAnLi9tZWdhLnBpcGUnO1xuaW1wb3J0IHsgQ3VycmVuY3lQcmljZVBpcGUgfSBmcm9tICcuL3ByaWNlLnBpcGUnO1xuXG5jb25zdCBQSVBFUyA9IFtDdXJyZW5jeU1lZ2FQaXBlLCBDdXJyZW5jeVByaWNlUGlwZSwgQ3VycmVuY3lDTllQaXBlXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBQSVBFUyxcbiAgZXhwb3J0czogUElQRVNcbn0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lQaXBlTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@delon/util/format";
4
+ class CurrencyPricePipe {
5
+ constructor(srv) {
6
+ this.srv = srv;
7
+ }
8
+ /**
9
+ * Format a number with commas as thousands separators
10
+ *
11
+ * 格式化货币,用逗号将数字格式化为千位分隔符
12
+ * ```ts
13
+ * 10000 => `10,000`
14
+ * 10000.567 => `10,000.57`
15
+ * ```
16
+ */
17
+ transform(value, options) {
18
+ return this.srv.format(value, options);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPricePipe, deps: [{ token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Pipe }); }
21
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPricePipe, name: "price" }); }
22
+ }
23
+ export { CurrencyPricePipe };
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CurrencyPricePipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{ name: 'price' }]
27
+ }], ctorParameters: function () { return [{ type: i1.CurrencyService }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvcGlwZXMvY3VycmVuY3kvcHJpY2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBSXBELE1BQ2EsaUJBQWlCO0lBQzVCLFlBQW9CLEdBQW9CO1FBQXBCLFFBQUcsR0FBSCxHQUFHLENBQWlCO0lBQUcsQ0FBQztJQUM1Qzs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsQ0FBQyxLQUFzQixFQUFFLE9BQStCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OEdBYlUsaUJBQWlCOzRHQUFqQixpQkFBaUI7O1NBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3VycmVuY3lGb3JtYXRPcHRpb25zLCBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbC9mb3JtYXQnO1xuXG5AUGlwZSh7IG5hbWU6ICdwcmljZScgfSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeVByaWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNydjogQ3VycmVuY3lTZXJ2aWNlKSB7fVxuICAvKipcbiAgICogRm9ybWF0IGEgbnVtYmVyIHdpdGggY29tbWFzIGFzIHRob3VzYW5kcyBzZXBhcmF0b3JzXG4gICAqXG4gICAqIOagvOW8j+WMlui0p+W4ge+8jOeUqOmAl+WPt+WwhuaVsOWtl+agvOW8j+WMluS4uuWNg+S9jeWIhumalOesplxuICAgKiBgYGB0c1xuICAgKiAxMDAwMCA9PiBgMTAsMDAwYFxuICAgKiAxMDAwMC41NjcgPT4gYDEwLDAwMC41N2BcbiAgICogYGBgXG4gICAqL1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciB8IHN0cmluZywgb3B0aW9ucz86IEN1cnJlbmN5Rm9ybWF0T3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3J2LmZvcm1hdCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ class FilterPipe {
4
+ /**
5
+ * Filter array
6
+ *
7
+ * 过滤数组
8
+ */
9
+ transform(array, matcher, ...args) {
10
+ return array.filter(i => matcher(i, ...args));
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: FilterPipe, name: "filter" }); }
14
+ }
15
+ export { FilterPipe };
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FilterPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{ name: 'filter' }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2ZpbHRlci9maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFJcEQsTUFDYSxVQUFVO0lBQ3JCOzs7O09BSUc7SUFDSCxTQUFTLENBQUksS0FBbUIsRUFBRSxPQUFtRCxFQUFFLEdBQUcsSUFBaUI7UUFDekcsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0FSVSxVQUFVOzRHQUFWLFVBQVU7O1NBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5AUGlwZSh7IG5hbWU6ICdmaWx0ZXInIH0pXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogRmlsdGVyIGFycmF5XG4gICAqXG4gICAqIOi/h+a7pOaVsOe7hFxuICAgKi9cbiAgdHJhbnNmb3JtPFQ+KGFycmF5OiByZWFkb25seSBUW10sIG1hdGNoZXI6IChpdGVtOiBULCAuLi5hcmdzOiBOelNhZmVBbnlbXSkgPT4gYm9vbGVhbiwgLi4uYXJnczogTnpTYWZlQW55W10pOiBUW10ge1xuICAgIHJldHVybiBhcnJheS5maWx0ZXIoaSA9PiBtYXRjaGVyKGksIC4uLmFyZ3MpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { FilterPipe } from './filter.pipe';
3
+ import * as i0 from "@angular/core";
4
+ const PIPES = [FilterPipe];
5
+ class FilterPipeModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FilterPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: FilterPipeModule, declarations: [FilterPipe], exports: [FilterPipe] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FilterPipeModule }); }
9
+ }
10
+ export { FilterPipeModule };
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FilterPipeModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: PIPES,
15
+ exports: PIPES
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9waXBlcy9maWx0ZXIvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUUzQixNQUlhLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBTmQsVUFBVSxhQUFWLFVBQVU7K0dBTVosZ0JBQWdCOztTQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsS0FBSztvQkFDbkIsT0FBTyxFQUFFLEtBQUs7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWx0ZXJQaXBlIH0gZnJvbSAnLi9maWx0ZXIucGlwZSc7XG5cbmNvbnN0IFBJUEVTID0gW0ZpbHRlclBpcGVdO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFBJUEVTLFxuICBleHBvcnRzOiBQSVBFU1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQaXBlTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { formatMask } from '@delon/util/format';
3
+ import * as i0 from "@angular/core";
4
+ class FormatMaskPipe {
5
+ /**
6
+ * Format mask
7
+ *
8
+ * 格式化掩码
9
+ *
10
+ * | 字符 | 描述 |
11
+ * | --- | --- |
12
+ * | `0` | 任意数字,若该位置字符不符合,则默认为 `0` 填充 |
13
+ * | `9` | 任意数字 |
14
+ * | `#` | 任意字符 |
15
+ * | `U` | 转换大写 |
16
+ * | `L` | 转换小写 |
17
+ * | `*` | 转换为 `*` 字符 |
18
+ *
19
+ * ```ts
20
+ * formatMask('123', '(###)') => (123)
21
+ * formatMask('15900000000', '999****9999') => 159****0000
22
+ * ```
23
+ */
24
+ transform(value, mask) {
25
+ return formatMask(value, mask);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FormatMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
28
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: FormatMaskPipe, name: "mask" }); }
29
+ }
30
+ export { FormatMaskPipe };
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: FormatMaskPipe, decorators: [{
32
+ type: Pipe,
33
+ args: [{ name: 'mask' }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9waXBlcy9mb3JtYXQvbWFzay5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sb0JBQW9CLENBQUM7O0FBRWxFLE1BQ2EsY0FBYztJQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUErQjtRQUN0RCxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQzs4R0F0QlUsY0FBYzs0R0FBZCxjQUFjOztTQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGZvcm1hdE1hc2ssIEZvcm1hdE1hc2tPcHRpb24gfSBmcm9tICdAZGVsb24vdXRpbC9mb3JtYXQnO1xuXG5AUGlwZSh7IG5hbWU6ICdtYXNrJyB9KVxuZXhwb3J0IGNsYXNzIEZvcm1hdE1hc2tQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBGb3JtYXQgbWFza1xuICAgKlxuICAgKiDmoLzlvI/ljJbmjqnnoIFcbiAgICpcbiAgICogfCDlrZfnrKYgfCDmj4/ov7AgfFxuICAgKiB8IC0tLSB8IC0tLSB8XG4gICAqIHwgYDBgIHwg5Lu75oSP5pWw5a2X77yM6Iul6K+l5L2N572u5a2X56ym5LiN56ym5ZCI77yM5YiZ6buY6K6k5Li6IGAwYCDloavlhYUgfFxuICAgKiB8IGA5YCB8IOS7u+aEj+aVsOWtlyB8XG4gICAqIHwgYCNgIHwg5Lu75oSP5a2X56ymIHxcbiAgICogfCBgVWAgfCDovazmjaLlpKflhpkgfFxuICAgKiB8IGBMYCB8IOi9rOaNouWwj+WGmSB8XG4gICAqIHwgYCpgIHwg6L2s5o2i5Li6IGAqYCDlrZfnrKYgfFxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBmb3JtYXRNYXNrKCcxMjMnLCAnKCMjIyknKSA9PiAoMTIzKVxuICAgKiBmb3JtYXRNYXNrKCcxNTkwMDAwMDAwMCcsICc5OTkqKioqOTk5OScpID0+IDE1OSoqKiowMDAwXG4gICAqIGBgYFxuICAgKi9cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIG1hc2s6IHN0cmluZyB8IEZvcm1hdE1hc2tPcHRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRNYXNrKHZhbHVlLCBtYXNrKTtcbiAgfVxufVxuIl19