@yelon/util 18.2.0 → 19.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 (166) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1 -1
  3. package/browser/cookie.service.d.ts +1 -3
  4. package/browser/style.d.ts +1 -3
  5. package/config/abc/date-picker.type.d.ts +2 -5
  6. package/config/abc/exception.type.d.ts +5 -7
  7. package/config/abc/loading.type.d.ts +1 -3
  8. package/config/abc/media.type.d.ts +1 -2
  9. package/config/abc/st.type.d.ts +11 -18
  10. package/config/acl/acl.type.d.ts +1 -2
  11. package/config/chart/chart.type.d.ts +1 -4
  12. package/config/config.service.d.ts +5 -4
  13. package/config/sf/sf.type.d.ts +3 -6
  14. package/config/theme/responsive.type.d.ts +8 -10
  15. package/date-time/time.d.ts +1 -2
  16. package/decorator/convert.d.ts +2 -3
  17. package/fesm2022/array.mjs +4 -4
  18. package/fesm2022/array.mjs.map +1 -1
  19. package/fesm2022/browser.mjs +13 -16
  20. package/fesm2022/browser.mjs.map +1 -1
  21. package/fesm2022/config.mjs +33 -18
  22. package/fesm2022/config.mjs.map +1 -1
  23. package/fesm2022/date-time.mjs +1 -1
  24. package/fesm2022/date-time.mjs.map +1 -1
  25. package/fesm2022/decorator.mjs.map +1 -1
  26. package/fesm2022/form.mjs.map +1 -1
  27. package/fesm2022/format.mjs +9 -7
  28. package/fesm2022/format.mjs.map +1 -1
  29. package/fesm2022/math.mjs.map +1 -1
  30. package/fesm2022/mcache.mjs.map +1 -1
  31. package/fesm2022/mtypes.mjs +4 -5
  32. package/fesm2022/mtypes.mjs.map +1 -1
  33. package/fesm2022/other.mjs +14 -17
  34. package/fesm2022/other.mjs.map +1 -1
  35. package/fesm2022/pipe-currency.mjs +20 -26
  36. package/fesm2022/pipe-currency.mjs.map +1 -1
  37. package/fesm2022/pipe-filter.mjs +8 -8
  38. package/fesm2022/pipe-filter.mjs.map +1 -1
  39. package/fesm2022/pipe-format.mjs +8 -8
  40. package/fesm2022/pipe-format.mjs.map +1 -1
  41. package/fesm2022/token.mjs.map +1 -1
  42. package/format/string.d.ts +3 -6
  43. package/mtypes/header-menu.type.d.ts +2 -3
  44. package/mtypes/menu.type.d.ts +5 -6
  45. package/mtypes/page.d.ts +1 -2
  46. package/other/deep.d.ts +4 -7
  47. package/other/lazy.service.d.ts +2 -5
  48. package/other/logger.d.ts +3 -4
  49. package/other/path-to-regexp.service.d.ts +11 -12
  50. package/package.json +12 -46
  51. package/pipes/filter/filter.pipe.d.ts +1 -2
  52. package/esm2022/array/array-type.service.mjs +0 -2
  53. package/esm2022/array/array.mjs +0 -5
  54. package/esm2022/array/array.service.mjs +0 -278
  55. package/esm2022/array/index.mjs +0 -3
  56. package/esm2022/browser/browser.mjs +0 -5
  57. package/esm2022/browser/cookie.service.mjs +0 -100
  58. package/esm2022/browser/copy.mjs +0 -28
  59. package/esm2022/browser/index.mjs +0 -6
  60. package/esm2022/browser/is-empty.mjs +0 -19
  61. package/esm2022/browser/scroll.service.mjs +0 -85
  62. package/esm2022/browser/style.mjs +0 -38
  63. package/esm2022/config/abc/cell.type.mjs +0 -2
  64. package/esm2022/config/abc/date-picker.type.mjs +0 -2
  65. package/esm2022/config/abc/error-collect.type.mjs +0 -2
  66. package/esm2022/config/abc/exception.type.mjs +0 -2
  67. package/esm2022/config/abc/image.type.mjs +0 -2
  68. package/esm2022/config/abc/index.mjs +0 -18
  69. package/esm2022/config/abc/loading.type.mjs +0 -2
  70. package/esm2022/config/abc/lodop.type.mjs +0 -2
  71. package/esm2022/config/abc/media.type.mjs +0 -2
  72. package/esm2022/config/abc/onboarding.type.mjs +0 -2
  73. package/esm2022/config/abc/page-header.type.mjs +0 -2
  74. package/esm2022/config/abc/pdf.type.mjs +0 -2
  75. package/esm2022/config/abc/se.type.mjs +0 -2
  76. package/esm2022/config/abc/sg.type.mjs +0 -2
  77. package/esm2022/config/abc/st.type.mjs +0 -2
  78. package/esm2022/config/abc/sv.type.mjs +0 -3
  79. package/esm2022/config/abc/xlsx.type.mjs +0 -2
  80. package/esm2022/config/abc/zip.type.mjs +0 -2
  81. package/esm2022/config/acl/acl.type.mjs +0 -2
  82. package/esm2022/config/auth/auth.type.mjs +0 -2
  83. package/esm2022/config/bis/bis.type.mjs +0 -2
  84. package/esm2022/config/cache/cache.type.mjs +0 -2
  85. package/esm2022/config/chart/chart.type.mjs +0 -2
  86. package/esm2022/config/config.mjs +0 -5
  87. package/esm2022/config/config.service.mjs +0 -38
  88. package/esm2022/config/config.types.mjs +0 -12
  89. package/esm2022/config/index.mjs +0 -15
  90. package/esm2022/config/mock/mock.type.mjs +0 -2
  91. package/esm2022/config/sf/sf.type.mjs +0 -2
  92. package/esm2022/config/socket/socket.type.mjs +0 -2
  93. package/esm2022/config/theme/http.type.mjs +0 -2
  94. package/esm2022/config/theme/i18n.type.mjs +0 -2
  95. package/esm2022/config/theme/index.mjs +0 -5
  96. package/esm2022/config/theme/pipe.type.mjs +0 -2
  97. package/esm2022/config/theme/responsive.type.mjs +0 -2
  98. package/esm2022/config/util/array.type.mjs +0 -2
  99. package/esm2022/config/util/currency.type.mjs +0 -2
  100. package/esm2022/date-time/date-time.mjs +0 -5
  101. package/esm2022/date-time/index.mjs +0 -3
  102. package/esm2022/date-time/picker.mjs +0 -116
  103. package/esm2022/date-time/time.mjs +0 -103
  104. package/esm2022/decorator/convert.mjs +0 -66
  105. package/esm2022/decorator/decorator.mjs +0 -5
  106. package/esm2022/decorator/index.mjs +0 -3
  107. package/esm2022/decorator/zone-outside.mjs +0 -57
  108. package/esm2022/form/form.mjs +0 -5
  109. package/esm2022/form/index.mjs +0 -3
  110. package/esm2022/form/match-control.mjs +0 -30
  111. package/esm2022/form/validators.mjs +0 -81
  112. package/esm2022/format/currency.service.mjs +0 -233
  113. package/esm2022/format/currency.types.mjs +0 -8
  114. package/esm2022/format/format.mjs +0 -5
  115. package/esm2022/format/index.mjs +0 -5
  116. package/esm2022/format/string.mjs +0 -85
  117. package/esm2022/format/validate.mjs +0 -94
  118. package/esm2022/index.mjs +0 -14
  119. package/esm2022/math/in-range.mjs +0 -25
  120. package/esm2022/math/index.mjs +0 -3
  121. package/esm2022/math/math.mjs +0 -5
  122. package/esm2022/math/round.mjs +0 -53
  123. package/esm2022/mcache/index.mjs +0 -2
  124. package/esm2022/mcache/localStorageUtils.mjs +0 -60
  125. package/esm2022/mcache/mcache.mjs +0 -5
  126. package/esm2022/mtypes/authority.type.mjs +0 -2
  127. package/esm2022/mtypes/header-menu.type.mjs +0 -2
  128. package/esm2022/mtypes/index.mjs +0 -10
  129. package/esm2022/mtypes/menu.type.mjs +0 -2
  130. package/esm2022/mtypes/mtypes.mjs +0 -5
  131. package/esm2022/mtypes/nav.types.mjs +0 -9
  132. package/esm2022/mtypes/page.mjs +0 -42
  133. package/esm2022/mtypes/project-info.types.mjs +0 -2
  134. package/esm2022/mtypes/response.mjs +0 -2
  135. package/esm2022/mtypes/role.type.mjs +0 -2
  136. package/esm2022/mtypes/user.types.mjs +0 -2
  137. package/esm2022/other/assert.mjs +0 -67
  138. package/esm2022/other/deep.mjs +0 -78
  139. package/esm2022/other/favicon.mjs +0 -29
  140. package/esm2022/other/index.mjs +0 -8
  141. package/esm2022/other/lazy.service.mjs +0 -129
  142. package/esm2022/other/logger.mjs +0 -33
  143. package/esm2022/other/other.mjs +0 -5
  144. package/esm2022/other/path-to-regexp.service.mjs +0 -239
  145. package/esm2022/other/resize.mjs +0 -4
  146. package/esm2022/pipes/currency/cny.pipe.mjs +0 -23
  147. package/esm2022/pipes/currency/index.mjs +0 -5
  148. package/esm2022/pipes/currency/mega.pipe.mjs +0 -25
  149. package/esm2022/pipes/currency/module.mjs +0 -19
  150. package/esm2022/pipes/currency/pipe-currency.mjs +0 -5
  151. package/esm2022/pipes/currency/price.pipe.mjs +0 -27
  152. package/esm2022/pipes/filter/filter.pipe.mjs +0 -20
  153. package/esm2022/pipes/filter/index.mjs +0 -3
  154. package/esm2022/pipes/filter/module.mjs +0 -17
  155. package/esm2022/pipes/filter/pipe-filter.mjs +0 -5
  156. package/esm2022/pipes/format/index.mjs +0 -3
  157. package/esm2022/pipes/format/mask.pipe.mjs +0 -34
  158. package/esm2022/pipes/format/module.mjs +0 -17
  159. package/esm2022/pipes/format/pipe-format.mjs +0 -5
  160. package/esm2022/pipes/index.mjs +0 -4
  161. package/esm2022/pipes/pipes.mjs +0 -5
  162. package/esm2022/token/index.mjs +0 -3
  163. package/esm2022/token/page-visibility.mjs +0 -15
  164. package/esm2022/token/token.mjs +0 -5
  165. package/esm2022/token/window.mjs +0 -17
  166. package/esm2022/yelon-util.mjs +0 -5
@@ -1,278 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
3
- import { NzTreeNode } from 'ng-zorro-antd/core/tree';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@yelon/util/config";
6
- export class ArrayService {
7
- constructor(cog) {
8
- this.c = cog.merge('utilArray', {
9
- deepMapName: 'deep',
10
- parentMapName: 'parent',
11
- idMapName: 'id',
12
- parentIdMapName: 'parent_id',
13
- childrenMapName: 'children',
14
- titleMapName: 'title',
15
- checkedMapname: 'checked',
16
- selectedMapname: 'selected',
17
- expandedMapname: 'expanded',
18
- disabledMapname: 'disabled'
19
- });
20
- }
21
- /**
22
- * Convert tree structure to array structure
23
- *
24
- * 将树结构转换成数组结构
25
- */
26
- treeToArr(tree, options) {
27
- const opt = {
28
- deepMapName: this.c.deepMapName,
29
- parentMapName: this.c.parentMapName,
30
- childrenMapName: this.c.childrenMapName,
31
- clearChildren: true,
32
- cb: null,
33
- ...options
34
- };
35
- const result = [];
36
- const inFn = (list, parent, deep = 0) => {
37
- for (const i of list) {
38
- i[opt.deepMapName] = deep;
39
- i[opt.parentMapName] = parent;
40
- if (opt.cb) {
41
- opt.cb(i, parent, deep);
42
- }
43
- result.push(i);
44
- const children = i[opt.childrenMapName];
45
- if (children != null && Array.isArray(children) && children.length > 0) {
46
- inFn(children, i, deep + 1);
47
- }
48
- if (opt.clearChildren) {
49
- delete i[opt.childrenMapName];
50
- }
51
- }
52
- };
53
- inFn(tree, null);
54
- return result;
55
- }
56
- /**
57
- * Convert array structure to tree structure
58
- *
59
- * 数组转换成树数据
60
- */
61
- arrToTree(arr, options) {
62
- if (!Array.isArray(arr) || arr.length === 0) {
63
- return [];
64
- }
65
- const opt = {
66
- idMapName: this.c.idMapName,
67
- parentIdMapName: this.c.parentIdMapName,
68
- childrenMapName: this.c.childrenMapName,
69
- cb: null,
70
- ...options
71
- };
72
- const tree = [];
73
- const childrenOf = {};
74
- let rootPid = opt.rootParentIdValue;
75
- const arrType = arr;
76
- if (!rootPid) {
77
- const pids = arrType.map(i => i[opt.parentIdMapName]);
78
- const emptyPid = pids.findIndex(w => w == null);
79
- rootPid = emptyPid !== -1 ? pids[emptyPid] : pids.sort()[0];
80
- }
81
- for (const item of arrType) {
82
- const id = item[opt.idMapName];
83
- const pid = item[opt.parentIdMapName];
84
- childrenOf[id] = childrenOf[id] || [];
85
- item[opt.childrenMapName] = childrenOf[id];
86
- if (opt.cb) {
87
- opt.cb(item);
88
- }
89
- if (pid !== rootPid) {
90
- childrenOf[pid] = childrenOf[pid] || [];
91
- childrenOf[pid].push(item);
92
- }
93
- else {
94
- tree.push(item);
95
- }
96
- }
97
- return tree;
98
- }
99
- /**
100
- * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项
101
- */
102
- arrToTreeNode(arr, options) {
103
- const opt = {
104
- idMapName: this.c.idMapName,
105
- parentIdMapName: this.c.parentIdMapName,
106
- titleMapName: this.c.titleMapName,
107
- isLeafMapName: 'isLeaf',
108
- checkedMapname: this.c.checkedMapname,
109
- selectedMapname: this.c.selectedMapname,
110
- expandedMapname: this.c.expandedMapname,
111
- disabledMapname: this.c.disabledMapname,
112
- cb: null,
113
- ...options
114
- };
115
- const tree = this.arrToTree(arr, {
116
- idMapName: opt.idMapName,
117
- parentIdMapName: opt.parentIdMapName,
118
- childrenMapName: 'children'
119
- });
120
- this.visitTree(tree, (item, parent, deep) => {
121
- item.key = item[opt.idMapName];
122
- item.title = item[opt.titleMapName];
123
- item.checked = item[opt.checkedMapname];
124
- item.selected = item[opt.selectedMapname];
125
- item.expanded = item[opt.expandedMapname];
126
- item.disabled = item[opt.disabledMapname];
127
- if (item[opt.isLeafMapName] == null) {
128
- item.isLeaf = item.children.length === 0;
129
- }
130
- else {
131
- item.isLeaf = item[opt.isLeafMapName];
132
- }
133
- if (opt.cb) {
134
- opt.cb(item, parent, deep);
135
- }
136
- });
137
- return tree.map(node => new NzTreeNode(node));
138
- }
139
- /**
140
- * 递归访问整个树
141
- */
142
- visitTree(tree, cb, options) {
143
- options = {
144
- childrenMapName: this.c.childrenMapName,
145
- ...options
146
- };
147
- const inFn = (data, parent, deep) => {
148
- for (const item of data) {
149
- cb(item, parent, deep);
150
- const childrenVal = item[options.childrenMapName];
151
- if (Array.isArray(childrenVal) && childrenVal.length > 0) {
152
- inFn(childrenVal, item, deep + 1);
153
- }
154
- }
155
- };
156
- inFn(tree, null, 1);
157
- }
158
- /**
159
- * Return the value of the first tree value in the tree where predicate is true, and `undefined` otherwise
160
- *
161
- * 根据条件返回树的第一个值,否则返回 `undefined`
162
- */
163
- findTree(tree, predicate, options) {
164
- let res;
165
- this.visitTree(tree, item => {
166
- if (res === undefined && predicate(item)) {
167
- res = item;
168
- }
169
- }, options);
170
- return res;
171
- }
172
- /**
173
- * 获取所有已经选中的 `key` 值
174
- */
175
- getKeysByTreeNode(tree, options) {
176
- const opt = {
177
- includeHalfChecked: true,
178
- ...options
179
- };
180
- const keys = [];
181
- this.visitTree(tree, (item, parent, deep) => {
182
- if (item.isChecked || (opt.includeHalfChecked && item.isHalfChecked)) {
183
- keys.push(opt.cb ? opt.cb(item, parent, deep) : opt.keyMapName ? item.origin[opt.keyMapName] : item.key);
184
- }
185
- });
186
- return keys;
187
- }
188
- baseFlat(array, depth, result = []) {
189
- let index = -1;
190
- while (++index < array.length) {
191
- const value = array[index];
192
- if (depth > 0 && Array.isArray(value)) {
193
- if (depth > 1) {
194
- this.baseFlat(value, depth - 1, result);
195
- }
196
- else {
197
- let pushIndex = -1;
198
- const offset = result.length;
199
- while (++pushIndex < value.length) {
200
- result[offset + pushIndex] = value[pushIndex];
201
- }
202
- }
203
- }
204
- else {
205
- result[result.length] = value;
206
- }
207
- }
208
- return result;
209
- }
210
- /**
211
- * Recursively flattens array
212
- *
213
- * 递归扁平数组
214
- * ```ts
215
- * srv.flat([1, [2, 3, [4, 5, [6]]]]) => [1,2,3,4,5,6]
216
- * srv.flat([1, [2, 3, [4, 5, [6]]]], 1) => [1,2,3,[4, 5, [6]]]
217
- * ```
218
- */
219
- flat(array, depth = 1 / 0) {
220
- return Array.isArray(array) ? this.baseFlat(array, depth) : array;
221
- }
222
- /**
223
- * Group the array
224
- *
225
- * 对数组进行分组
226
- * ```ts
227
- * srv.groupBy([6.1, 4.2, 6.3], Math.floor) => {"4":[4.2],"6":[6.1,6.3]}
228
- * srv.groupBy(['one', 'two', 'three'], v => v.length) => {"3":["one","two"],"5":["three"]}
229
- * ```
230
- */
231
- groupBy(array, iteratee) {
232
- if (!Array.isArray(array)) {
233
- return {};
234
- }
235
- return array.reduce((result, value) => {
236
- const key = iteratee(value);
237
- if (Object.prototype.hasOwnProperty.call(result, key)) {
238
- result[key].push(value);
239
- }
240
- else {
241
- result[key] = [value];
242
- }
243
- return result;
244
- }, {});
245
- }
246
- /**
247
- * Creates a duplicate-free version of an array
248
- *
249
- * 创建去重后的数组
250
- * ```ts
251
- * uniq([1, 2, 2, 3, 1]) => [1,2,3]
252
- * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], 'a') => [{"a":1},{"a":2}]
253
- * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], i => (i.a === 1 ? 'a' : 'b')) => [{"a":1},{"a":2}]
254
- * ```
255
- */
256
- uniq(array, predicate) {
257
- return Array.from(array
258
- .reduce((map, value) => {
259
- const key = predicate
260
- ? typeof predicate === 'string'
261
- ? value[predicate]
262
- : predicate(value)
263
- : value;
264
- if (!map.has(key)) {
265
- map.set(key, value);
266
- }
267
- return map;
268
- }, new Map())
269
- .values());
270
- }
271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ArrayService, deps: [{ token: i1.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
272
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ArrayService, providedIn: 'root' }); }
273
- }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ArrayService, decorators: [{
275
- type: Injectable,
276
- args: [{ providedIn: 'root' }]
277
- }], ctorParameters: () => [{ type: i1.YunzaiConfigService }] });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvYXJyYXkvYXJyYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVdyRCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFZLEdBQXdCO1FBQ2xDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDOUIsV0FBVyxFQUFFLE1BQU07WUFDbkIsYUFBYSxFQUFFLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUk7WUFDZixlQUFlLEVBQUUsV0FBVztZQUM1QixlQUFlLEVBQUUsVUFBVTtZQUMzQixZQUFZLEVBQUUsT0FBTztZQUNyQixjQUFjLEVBQUUsU0FBUztZQUN6QixlQUFlLEVBQUUsVUFBVTtZQUMzQixlQUFlLEVBQUUsVUFBVTtZQUMzQixlQUFlLEVBQUUsVUFBVTtTQUM1QixDQUFFLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBeUIsSUFBa0IsRUFBRSxPQUF5QztRQUM3RixNQUFNLEdBQUcsR0FBRztZQUNWLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYTtZQUNuQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlO1lBQ3ZDLGFBQWEsRUFBRSxJQUFJO1lBQ25CLEVBQUUsRUFBRSxJQUFJO1lBQ1IsR0FBRyxPQUFPO1NBQ3FCLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQWtDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxDQUFDLElBQTJDLEVBQUUsTUFB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QUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgWXVuemFpQ29uZmlnU2VydmljZSwgWXVuemFpVXRpbEFycmF5Q29uZmlnIH0gZnJvbSAnQHllbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IE56VHJlZU5vZGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHJlZSc7XG5cbmltcG9ydCB7XG4gIEFycmF5U2VydmljZUFyclRvVHJlZU5vZGVPcHRpb25zLFxuICBBcnJheVNlcnZpY2VBcnJUb1RyZWVPcHRpb25zLFxuICBBcnJheVNlcnZpY2VHZXRLZXlzQnlUcmVlTm9kZU9wdGlvbnMsXG4gIEFycmF5U2VydmljZUdyb3VwQnlSZXN1bHQsXG4gIEFycmF5U2VydmljZVRyZWVUb0Fyck9wdGlvbnNcbn0gZnJvbSAnLi9hcnJheS10eXBlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFycmF5U2VydmljZSB7XG4gIHByaXZhdGUgYzogWXVuemFpVXRpbEFycmF5Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvZzogWXVuemFpQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuYyA9IGNvZy5tZXJnZSgndXRpbEFycmF5Jywge1xuICAgICAgZGVlcE1hcE5hbWU6ICdkZWVwJyxcbiAgICAgIHBhcmVudE1hcE5hbWU6ICdwYXJlbnQnLFxuICAgICAgaWRNYXBOYW1lOiAnaWQnLFxuICAgICAgcGFyZW50SWRNYXBOYW1lOiAncGFyZW50X2lkJyxcbiAgICAgIGNoaWxkcmVuTWFwTmFtZTogJ2NoaWxkcmVuJyxcbiAgICAgIHRpdGxlTWFwTmFtZTogJ3RpdGxlJyxcbiAgICAgIGNoZWNrZWRNYXBuYW1lOiAnY2hlY2tlZCcsXG4gICAgICBzZWxlY3RlZE1hcG5hbWU6ICdzZWxlY3RlZCcsXG4gICAgICBleHBhbmRlZE1hcG5hbWU6ICdleHBhbmRlZCcsXG4gICAgICBkaXNhYmxlZE1hcG5hbWU6ICdkaXNhYmxlZCdcbiAgICB9KSE7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0cmVlIHN0cnVjdHVyZSB0byBhcnJheSBzdHJ1Y3R1cmVcbiAgICpcbiAgICog5bCG5qCR57uT5p6E6L2s5o2i5oiQ5pWw57uE57uT5p6EXG4gICAqL1xuICB0cmVlVG9BcnI8VCBleHRlbmRzIG9iamVjdCA9IGFueT4odHJlZTogcmVhZG9ubHkgVFtdLCBvcHRpb25zPzogQXJyYXlTZXJ2aWNlVHJlZVRvQXJyT3B0aW9uczxUPik6IFRbXSB7XG4gICAgY29uc3Qgb3B0ID0ge1xuICAgICAgZGVlcE1hcE5hbWU6IHRoaXMuYy5kZWVwTWFwTmFtZSxcbiAgICAgIHBhcmVudE1hcE5hbWU6IHRoaXMuYy5wYXJlbnRNYXBOYW1lLFxuICAgICAgY2hpbGRyZW5NYXBOYW1lOiB0aGlzLmMuY2hpbGRyZW5NYXBOYW1lLFxuICAgICAgY2xlYXJDaGlsZHJlbjogdHJ1ZSxcbiAgICAgIGNiOiBudWxsLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0gYXMgQXJyYXlTZXJ2aWNlVHJlZVRvQXJyT3B0aW9ucztcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+ID0gW107XG4gICAgY29uc3QgaW5GbiA9IChsaXN0OiBSZWFkb25seUFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+LCBwYXJlbnQ6IFQgfCBudWxsLCBkZWVwOiBudW1iZXIgPSAwKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGkgb2YgbGlzdCkge1xuICAgICAgICBpW29wdC5kZWVwTWFwTmFtZSFdID0gZGVlcDtcbiAgICAgICAgaVtvcHQucGFyZW50TWFwTmFtZSFdID0gcGFyZW50O1xuICAgICAgICBpZiAob3B0LmNiKSB7XG4gICAgICAgICAgb3B0LmNiKGksIHBhcmVudCwgZGVlcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnB1c2goaSk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaVtvcHQuY2hpbGRyZW5NYXBOYW1lIV07XG4gICAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpbkZuKGNoaWxkcmVuLCBpIGFzIFQsIGRlZXAgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0LmNsZWFyQ2hpbGRyZW4pIHtcbiAgICAgICAgICBkZWxldGUgaVtvcHQuY2hpbGRyZW5NYXBOYW1lIV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGluRm4odHJlZSwgbnVsbCk7XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBUW107XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhcnJheSBzdHJ1Y3R1cmUgdG8gdHJlZSBzdHJ1Y3R1cmVcbiAgICpcbiAgICog5pWw57uE6L2s5o2i5oiQ5qCR5pWw5o2uXG4gICAqL1xuICBhcnJUb1RyZWU8VCBleHRlbmRzIG9iamVjdCA9IGFueT4oYXJyOiByZWFkb25seSBUW10sIG9wdGlvbnM/OiBBcnJheVNlcnZpY2VBcnJUb1RyZWVPcHRpb25zPFQ+KTogVFtdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0ID0ge1xuICAgICAgaWRNYXBOYW1lOiB0aGlzLmMuaWRNYXBOYW1lLFxuICAgICAgcGFyZW50SWRNYXBOYW1lOiB0aGlzLmMucGFyZW50SWRNYXBOYW1lLFxuICAgICAgY2hpbGRyZW5NYXBOYW1lOiB0aGlzLmMuY2hpbGRyZW5NYXBOYW1lLFxuICAgICAgY2I6IG51bGwsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSBhcyBBcnJheVNlcnZpY2VBcnJUb1RyZWVPcHRpb25zPFQ+O1xuICAgIGNvbnN0IHRyZWU6IFRbXSA9IFtdO1xuICAgIGNvbnN0IGNoaWxkcmVuT2Y6IHsgW2tleTogc3RyaW5nXTogVFtdIH0gPSB7fTtcbiAgICBsZXQgcm9vdFBpZCA9IG9wdC5yb290UGFyZW50SWRWYWx1ZTtcbiAgICBjb25zdCBhcnJUeXBlID0gYXJyIGFzIFJlYWRvbmx5QXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT47XG4gICAgaWYgKCFyb290UGlkKSB7XG4gICAgICBjb25zdCBwaWRzID0gYXJyVHlwZS5tYXAoaSA9PiBpW29wdC5wYXJlbnRJZE1hcE5hbWUhXSk7XG4gICAgICBjb25zdCBlbXB0eVBpZCA9IHBpZHMuZmluZEluZGV4KHcgPT4gdyA9PSBudWxsKTtcbiAgICAgIHJvb3RQaWQgPSBlbXB0eVBpZCAhPT0gLTEgPyBwaWRzW2VtcHR5UGlkXSA6IHBpZHMuc29ydCgpWzBdO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyVHlwZSkge1xuICAgICAgY29uc3QgaWQgPSBpdGVtW29wdC5pZE1hcE5hbWUhXTtcbiAgICAgIGNvbnN0IHBpZCA9IGl0ZW1bb3B0LnBhcmVudElkTWFwTmFtZSFdO1xuICAgICAgY2hpbGRyZW5PZltpZF0gPSBjaGlsZHJlbk9mW2lkXSB8fCBbXTtcbiAgICAgIGl0ZW1bb3B0LmNoaWxkcmVuTWFwTmFtZSFdID0gY2hpbGRyZW5PZltpZF07XG4gICAgICBpZiAob3B0LmNiKSB7XG4gICAgICAgIG9wdC5jYihpdGVtIGFzIFQpO1xuICAgICAgfVxuICAgICAgaWYgKHBpZCAhPT0gcm9vdFBpZCkge1xuICAgICAgICBjaGlsZHJlbk9mW3BpZF0gPSBjaGlsZHJlbk9mW3BpZF0gfHwgW107XG4gICAgICAgIGNoaWxkcmVuT2ZbcGlkXS5wdXNoKGl0ZW0gYXMgVCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmVlLnB1c2goaXRlbSBhcyBUKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyZWU7XG4gIH1cblxuICAvKipcbiAgICog5pWw57uE6L2s5o2i5oiQIGBuei10cmVlYCDmlbDmja7mupDvvIzpgJrov4cgYG9wdGlvbnNgIOi9rOWMlumhueWQje+8jOS5n+WPr+S7peS9v+eUqCBgb3B0aW9ucy5jYmAg5pu06auY57qn5Yaz5a6a5pWw5o2u6aG5XG4gICAqL1xuICBhcnJUb1RyZWVOb2RlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KGFycjogcmVhZG9ubHkgVFtdLCBvcHRpb25zPzogQXJyYXlTZXJ2aWNlQXJyVG9UcmVlTm9kZU9wdGlvbnMpOiBOelRyZWVOb2RlW10ge1xuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIGlkTWFwTmFtZTogdGhpcy5jLmlkTWFwTmFtZSxcbiAgICAgIHBhcmVudElkTWFwTmFtZTogdGhpcy5jLnBhcmVudElkTWFwTmFtZSxcbiAgICAgIHRpdGxlTWFwTmFtZTogdGhpcy5jLnRpdGxlTWFwTmFtZSxcbiAgICAgIGlzTGVhZk1hcE5hbWU6ICdpc0xlYWYnLFxuICAgICAgY2hlY2tlZE1hcG5hbWU6IHRoaXMuYy5jaGVja2VkTWFwbmFtZSxcbiAgICAgIHNlbGVjdGVkTWFwbmFtZTogdGhpcy5jLnNlbGVjdGVkTWFwbmFtZSxcbiAgICAgIGV4cGFuZGVkTWFwbmFtZTogdGhpcy5jLmV4cGFuZGVkTWFwbmFtZSxcbiAgICAgIGRpc2FibGVkTWFwbmFtZTogdGhpcy5jLmRpc2FibGVkTWFwbmFtZSxcbiAgICAgIGNiOiBudWxsLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0gYXMgQXJyYXlTZXJ2aWNlQXJyVG9UcmVlTm9kZU9wdGlvbnM8VD47XG4gICAgY29uc3QgdHJlZSA9IHRoaXMuYXJyVG9UcmVlPFQ+KGFyciwge1xuICAgICAgaWRNYXBOYW1lOiBvcHQuaWRNYXBOYW1lLFxuICAgICAgcGFyZW50SWRNYXBOYW1lOiBvcHQucGFyZW50SWRNYXBOYW1lLFxuICAgICAgY2hpbGRyZW5NYXBOYW1lOiAnY2hpbGRyZW4nXG4gICAgfSk7XG4gICAgdGhpcy52aXNpdFRyZWU8VD4odHJlZSwgKGl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHBhcmVudCwgZGVlcCkgPT4ge1xuICAgICAgaXRlbS5rZXkgPSBpdGVtW29wdC5pZE1hcE5hbWUhXTtcbiAgICAgIGl0ZW0udGl0bGUgPSBpdGVtW29wdC50aXRsZU1hcE5hbWUhXTtcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IGl0ZW1bb3B0LmNoZWNrZWRNYXBuYW1lIV07XG4gICAgICBpdGVtLnNlbGVjdGVkID0gaXRlbVtvcHQuc2VsZWN0ZWRNYXBuYW1lIV07XG4gICAgICBpdGVtLmV4cGFuZGVkID0gaXRlbVtvcHQuZXhwYW5kZWRNYXBuYW1lIV07XG4gICAgICBpdGVtLmRpc2FibGVkID0gaXRlbVtvcHQuZGlzYWJsZWRNYXBuYW1lIV07XG4gICAgICBpZiAoaXRlbVtvcHQuaXNMZWFmTWFwTmFtZSFdID09IG51bGwpIHtcbiAgICAgICAgaXRlbS5pc0xlYWYgPSBpdGVtLmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uaXNMZWFmID0gaXRlbVtvcHQuaXNMZWFmTWFwTmFtZSFdO1xuICAgICAgfVxuICAgICAgaWYgKG9wdC5jYikge1xuICAgICAgICBvcHQuY2IoaXRlbSBhcyBhbnksIHBhcmVudCwgZGVlcCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyZWUubWFwKG5vZGUgPT4gbmV3IE56VHJlZU5vZGUobm9kZSBhcyBhbnkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDpgJLlvZLorr/pl67mlbTkuKrmoJFcbiAgICovXG4gIHZpc2l0VHJlZTxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PihcbiAgICB0cmVlOiByZWFkb25seSBUW10sXG4gICAgY2I6IChpdGVtOiBULCBwYXJlbnQ6IFQgfCBudWxsLCBkZWVwOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKiDlrZDpobnlkI3vvIzpu5jorqTvvJpgJ2NoaWxkcmVuJ2AgKi9cbiAgICAgIGNoaWxkcmVuTWFwTmFtZT86IHN0cmluZztcbiAgICB9XG4gICk6IHZvaWQge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBjaGlsZHJlbk1hcE5hbWU6IHRoaXMuYy5jaGlsZHJlbk1hcE5hbWUsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcbiAgICBjb25zdCBpbkZuID0gKGRhdGE6IHJlYWRvbmx5IFRbXSwgcGFyZW50OiBUIHwgbnVsbCwgZGVlcDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YSkge1xuICAgICAgICBjYihpdGVtLCBwYXJlbnQsIGRlZXApO1xuICAgICAgICBjb25zdCBjaGlsZHJlblZhbCA9IChpdGVtIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pW29wdGlvbnMhLmNoaWxkcmVuTWFwTmFtZSFdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlblZhbCkgJiYgY2hpbGRyZW5WYWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGluRm4oY2hpbGRyZW5WYWwsIGl0ZW0sIGRlZXAgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaW5Gbih0cmVlLCBudWxsLCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCB0cmVlIHZhbHVlIGluIHRoZSB0cmVlIHdoZXJlIHByZWRpY2F0ZSBpcyB0cnVlLCBhbmQgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlXG4gICAqXG4gICAqIOagueaNruadoeS7tui/lOWbnuagkeeahOesrOS4gOS4quWAvO+8jOWQpuWImei/lOWbniBgdW5kZWZpbmVkYFxuICAgKi9cbiAgZmluZFRyZWU8VCBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgdHJlZTogcmVhZG9ubHkgVFtdLFxuICAgIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKiDlrZDpobnlkI3vvIzpu5jorqTvvJpgJ2NoaWxkcmVuJ2AgKi9cbiAgICAgIGNoaWxkcmVuTWFwTmFtZT86IHN0cmluZztcbiAgICB9XG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXM6IFQgfCB1bmRlZmluZWQ7XG4gICAgdGhpcy52aXNpdFRyZWU8VD4oXG4gICAgICB0cmVlLFxuICAgICAgaXRlbSA9PiB7XG4gICAgICAgIGlmIChyZXMgPT09IHVuZGVmaW5lZCAmJiBwcmVkaWNhdGUoaXRlbSkpIHtcbiAgICAgICAgICByZXMgPSBpdGVtO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInlt7Lnu4/pgInkuK3nmoQgYGtleWAg5YC8XG4gICAqL1xuICBnZXRLZXlzQnlUcmVlTm9kZSh0cmVlOiBOelRyZWVOb2RlW10sIG9wdGlvbnM/OiBBcnJheVNlcnZpY2VHZXRLZXlzQnlUcmVlTm9kZU9wdGlvbnMpOiBhbnlbXSB7XG4gICAgY29uc3Qgb3B0ID0ge1xuICAgICAgaW5jbHVkZUhhbGZDaGVja2VkOiB0cnVlLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0gYXMgQXJyYXlTZXJ2aWNlR2V0S2V5c0J5VHJlZU5vZGVPcHRpb25zO1xuICAgIGNvbnN0IGtleXM6IGFueVtdID0gW107XG4gICAgdGhpcy52aXNpdFRyZWU8TnpUcmVlTm9kZT4odHJlZSwgKGl0ZW0sIHBhcmVudCwgZGVlcCkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNDaGVja2VkIHx8IChvcHQuaW5jbHVkZUhhbGZDaGVja2VkICYmIGl0ZW0uaXNIYWxmQ2hlY2tlZCkpIHtcbiAgICAgICAga2V5cy5wdXNoKG9wdC5jYiA/IG9wdC5jYihpdGVtLCBwYXJlbnQsIGRlZXApIDogb3B0LmtleU1hcE5hbWUgPyBpdGVtLm9yaWdpbltvcHQua2V5TWFwTmFtZV0gOiBpdGVtLmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH1cbiAgcHJpdmF0ZSBiYXNlRmxhdChhcnJheTogYW55W10sIGRlcHRoOiBudW1iZXIsIHJlc3VsdDogYW55W10gPSBbXSk6IGFueVtdIHtcbiAgICBsZXQgaW5kZXggPSAtMTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGFycmF5Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAoZGVwdGggPiAwICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICB0aGlzLmJhc2VGbGF0KHZhbHVlLCBkZXB0aCAtIDEsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHB1c2hJbmRleCA9IC0xO1xuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgICAgICB3aGlsZSAoKytwdXNoSW5kZXggPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBwdXNoSW5kZXhdID0gdmFsdWVbcHVzaEluZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBhcnJheVxuICAgKlxuICAgKiDpgJLlvZLmiYHlubPmlbDnu4RcbiAgICogYGBgdHNcbiAgICogc3J2LmZsYXQoWzEsIFsyLCAzLCBbNCwgNSwgWzZdXV1dKSA9PiBbMSwyLDMsNCw1LDZdXG4gICAqIHNydi5mbGF0KFsxLCBbMiwgMywgWzQsIDUsIFs2XV1dXSwgMSkgPT4gWzEsMiwzLFs0LCA1LCBbNl1dXVxuICAgKiBgYGBcbiAgICovXG4gIGZsYXQ8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSwgZGVwdGg6IG51bWJlciA9IDEgLyAwKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcnJheSkgPyB0aGlzLmJhc2VGbGF0KGFycmF5IGFzIGFueVtdLCBkZXB0aCkgOiAoYXJyYXkgYXMgVFtdKTtcbiAgfVxuICAvKipcbiAgICogR3JvdXAgdGhlIGFycmF5XG4gICAqXG4gICAqIOWvueaVsOe7hOi/m+ihjOWIhue7hFxuICAgKiBgYGB0c1xuICAgKiBzcnYuZ3JvdXBCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpID0+IHtcIjRcIjpbNC4yXSxcIjZcIjpbNi4xLDYuM119XG4gICAqIHNydi5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCB2ID0+IHYubGVuZ3RoKSA9PiB7XCIzXCI6W1wib25lXCIsXCJ0d29cIl0sXCI1XCI6W1widGhyZWVcIl19XG4gICAqIGBgYFxuICAgKi9cbiAgZ3JvdXBCeTxUPihhcnJheTogcmVhZG9ubHkgVFtdLCBpdGVyYXRlZTogKHZhbHVlOiBUKSA9PiBzdHJpbmcgfCBudW1iZXIpOiBBcnJheVNlcnZpY2VHcm91cEJ5UmVzdWx0IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKHJlc3VsdCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBbdmFsdWVdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCB7fSBhcyBBcnJheVNlcnZpY2VHcm91cEJ5UmVzdWx0KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXlcbiAgICpcbiAgICog5Yib5bu65Y676YeN5ZCO55qE5pWw57uEXG4gICAqIGBgYHRzXG4gICAqIHVuaXEoWzEsIDIsIDIsIDMsIDFdKSA9PiBbMSwyLDNdXG4gICAqIHVuaXEoW3sgYTogMSB9LCB7IGE6IDEgfSwgeyBhOiAyIH1dLCAnYScpID0+IFt7XCJhXCI6MX0se1wiYVwiOjJ9XVxuICAgKiB1bmlxKFt7IGE6IDEgfSwgeyBhOiAxIH0sIHsgYTogMiB9XSwgaSA9PiAoaS5hID09PSAxID8gJ2EnIDogJ2InKSkgPT4gW3tcImFcIjoxfSx7XCJhXCI6Mn1dXG4gICAqIGBgYFxuICAgKi9cbiAgdW5pcTxUPihhcnJheTogcmVhZG9ubHkgVFtdLCBwcmVkaWNhdGU/OiBzdHJpbmcgfCAoKHZhbHVlOiBUKSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKChtYXAsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gcHJlZGljYXRlXG4gICAgICAgICAgICA/IHR5cGVvZiBwcmVkaWNhdGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgID8gKHZhbHVlIGFzIGFueSlbcHJlZGljYXRlXVxuICAgICAgICAgICAgICA6IHByZWRpY2F0ZSEodmFsdWUpXG4gICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCBuZXcgTWFwPHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIFQ+KCkpXG4gICAgICAgIC52YWx1ZXMoKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './array.service';
2
- export * from './array-type.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2FycmF5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FycmF5LXR5cGUuc2VydmljZSc7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvYnJvd3Nlci9icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,100 +0,0 @@
1
- import { Platform } from '@angular/cdk/platform';
2
- import { DOCUMENT } from '@angular/common';
3
- import { Injectable, inject } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * A set of simple Cookie manipulation classes.
7
- *
8
- * 一组简单的 Cookie 操作类。
9
- */
10
- export class CookieService {
11
- constructor() {
12
- this._doc = inject(DOCUMENT);
13
- this.platform = inject(Platform);
14
- }
15
- get doc() {
16
- return this._doc || document;
17
- }
18
- /**
19
- * Original cookie value
20
- *
21
- * 原始Cookie值
22
- */
23
- get cookie() {
24
- return this.platform.isBrowser ? this.doc.cookie : '';
25
- }
26
- /**
27
- * Get all cookie key-value pairs
28
- *
29
- * 获取所有Cookie键值对
30
- */
31
- getAll() {
32
- const ret = {};
33
- const arr = this.cookie.split('; ');
34
- for (let i = 0; i < arr.length; i++) {
35
- const cookie = arr[i];
36
- const index = cookie.indexOf('=');
37
- if (index > 0) {
38
- const name = decodeURIComponent(cookie.substring(0, index));
39
- if (ret[name] == null) {
40
- ret[name] = decodeURIComponent(cookie.substring(index + 1));
41
- }
42
- }
43
- }
44
- return ret;
45
- }
46
- /**
47
- * Get the value of given cookie `key`
48
- *
49
- * 获取指定 `key` 的值
50
- */
51
- get(key) {
52
- return this.getAll()[key];
53
- }
54
- /**
55
- * Sets a value for given cookie key
56
- *
57
- * 设置指定 Cookie 键的值
58
- */
59
- put(key, value, options) {
60
- if (!this.platform.isBrowser) {
61
- return;
62
- }
63
- const opt = { path: '/', ...options };
64
- if (typeof opt.expires === 'number') {
65
- opt.expires = new Date(+new Date() + opt.expires * 1e3);
66
- }
67
- if (typeof opt.expires !== 'string') {
68
- opt.expires = opt.expires ? opt.expires.toUTCString() : '';
69
- }
70
- const optStr = opt;
71
- const attributes = Object.keys(optStr)
72
- .filter(k => optStr[k] && optStr[k] !== true)
73
- .map(k => `${k}=${optStr[k].split(';')[0]}`)
74
- .join(';');
75
- this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
76
- }
77
- /**
78
- * Remove given cookie
79
- *
80
- * 移除指定 Cookie
81
- */
82
- remove(key, options) {
83
- this.put(key, '', options);
84
- }
85
- /**
86
- * Remove all cookies
87
- *
88
- * 移除所有 Cookies
89
- */
90
- removeAll() {
91
- this.doc.cookie = '';
92
- }
93
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
94
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: CookieService, providedIn: 'root' }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: CookieService, decorators: [{
97
- type: Injectable,
98
- args: [{ providedIn: 'root' }]
99
- }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvY29va2llLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFrQm5EOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQUQxQjtRQUVtQixTQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0F3RjlDO0lBdEZDLElBQVksR0FBRztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNKLE1BQU0sR0FBRyxHQUE4QixFQUFFLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxD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c0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVPcHRpb25zIHtcbiAgcGF0aD86IHN0cmluZztcbiAgZG9tYWluPzogc3RyaW5nO1xuICAvKipcbiAgICogRXhwaXJhdGlvbiB0aW1lLCBgbnVtYmVyYCBpcyBzZWNvbmRzXG4gICAqXG4gICAqIOi/h+acn+aXtumXtO+8jGBudW1iZXJgIOexu+Wei+ihqOekuuenkuaVsFxuICAgKi9cbiAgZXhwaXJlcz86IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG4gIHNlY3VyZT86IGJvb2xlYW47XG4gIEh0dHBPbmx5PzogYm9vbGVhbjtcbiAgU2FtZVNpdGU/OiBib29sZWFuIHwgJ2xheCcgfCAnc3RyaWN0JyB8ICdub25lJztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBzaW1wbGUgQ29va2llIG1hbmlwdWxhdGlvbiBjbGFzc2VzLlxuICpcbiAqIOS4gOe7hOeugOWNleeahCBDb29raWUg5pON5L2c57G744CCXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ29va2llU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvYyA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm0pO1xuXG4gIHByaXZhdGUgZ2V0IGRvYygpOiBEb2N1bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvYyB8fCBkb2N1bWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcmlnaW5hbCBjb29raWUgdmFsdWVcbiAgICpcbiAgICog5Y6f5aeLQ29va2ll5YC8XG4gICAqL1xuICBnZXQgY29va2llKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm0uaXNCcm93c2VyID8gdGhpcy5kb2MuY29va2llIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjb29raWUga2V5LXZhbHVlIHBhaXJzXG4gICAqXG4gICAqIOiOt+WPluaJgOaciUNvb2tpZemUruWAvOWvuVxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IGFyciA9IHRoaXMuY29va2llLnNwbGl0KCc7ICcpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjb29raWUgPSBhcnJbaV07XG4gICAgICBjb25zdCBpbmRleCA9IGNvb2tpZS5pbmRleE9mKCc9Jyk7XG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQoY29va2llLnN1YnN0cmluZygwLCBpbmRleCkpO1xuICAgICAgICBpZiAocmV0W25hbWVdID09IG51bGwpIHtcbiAgICAgICAgICByZXRbbmFtZV0gPSBkZWNvZGVVUklDb21wb25lbnQoY29va2llLnN1YnN0cmluZyhpbmRleCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgZ2l2ZW4gY29va2llIGBrZXlgXG4gICAqXG4gICAqIOiOt+WPluaMh+WumiBga2V5YCDnmoTlgLxcbiAgICovXG4gIGdldChrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsKClba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdmFsdWUgZm9yIGdpdmVuIGNvb2tpZSBrZXlcbiAgICpcbiAgICog6K6+572u5oyH5a6aIENvb2tpZSDplK7nmoTlgLxcbiAgICovXG4gIHB1dChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IENvb2tpZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wdCA9IHsgcGF0aDogJy8nLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKHR5cGVvZiBvcHQuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgIG9wdC5leHBpcmVzID0gbmV3IERhdGUoK25ldyBEYXRlKCkgKyBvcHQuZXhwaXJlcyAqIDFlMyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0LmV4cGlyZXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHQuZXhwaXJlcyA9IG9wdC5leHBpcmVzID8gb3B0LmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnO1xuICAgIH1cbiAgICBjb25zdCBvcHRTdHI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB9ID0gb3B0IGFzIE56U2FmZUFueTtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMob3B0U3RyKVxuICAgICAgLmZpbHRlcihrID0+IG9wdFN0cltrXSAmJiBvcHRTdHJba10gIT09IHRydWUpXG4gICAgICAubWFwKGsgPT4gYCR7a309JHsob3B0U3RyW2tdIGFzIHN0cmluZykuc3BsaXQoJzsnKVswXX1gKVxuICAgICAgLmpvaW4oJzsnKTtcbiAgICB0aGlzLmRvYy5jb29raWUgPSBgJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGtleSkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX0ke1xuICAgICAgYXR0cmlidXRlcyA/IGA7ICR7YXR0cmlidXRlc31gIDogJydcbiAgICB9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZ2l2ZW4gY29va2llXG4gICAqXG4gICAqIOenu+mZpOaMh+WumiBDb29raWVcbiAgICovXG4gIHJlbW92ZShrZXk6IHN0cmluZywgb3B0aW9ucz86IENvb2tpZU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnB1dChrZXksICcnLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGNvb2tpZXNcbiAgICpcbiAgICog56e76Zmk5omA5pyJIENvb2tpZXNcbiAgICovXG4gIHJlbW92ZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvYy5jb29raWUgPSAnJztcbiAgfVxufVxuIl19
@@ -1,28 +0,0 @@
1
- /**
2
- * Copy text to clipboard
3
- *
4
- * 复制字符串文档至剪贴板
5
- */
6
- export function copy(value) {
7
- return new Promise((resolve) => {
8
- let copyTextArea = null;
9
- try {
10
- copyTextArea = document.createElement('textarea');
11
- copyTextArea.style.height = '0px';
12
- copyTextArea.style.opacity = '0';
13
- copyTextArea.style.width = '0px';
14
- document.body.appendChild(copyTextArea);
15
- copyTextArea.value = value;
16
- copyTextArea.select();
17
- // eslint-disable-next-line deprecation/deprecation
18
- document.execCommand('copy');
19
- resolve(value);
20
- }
21
- finally {
22
- if (copyTextArea && copyTextArea.parentNode) {
23
- copyTextArea.parentNode.removeChild(copyTextArea);
24
- }
25
- }
26
- });
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvYnJvd3Nlci9jb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQWE7SUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBUSxFQUFFO1FBQzNDLElBQUksWUFBWSxHQUErQixJQUFJLENBQUM7UUFDcEQsSUFBSSxDQUFDO1lBQ0gsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNqQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDeEMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDM0IsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLG1EQUFtRDtZQUNuRCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzVDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5IHRleHQgdG8gY2xpcGJvYXJkXG4gKlxuICog5aSN5Yi25a2X56ym5Liy5paH5qGj6Iez5Ymq6LS05p2/XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgIGxldCBjb3B5VGV4dEFyZWE6IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgY29weVRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgIGNvcHlUZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSAnMHB4JztcbiAgICAgIGNvcHlUZXh0QXJlYS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgY29weVRleHRBcmVhLnN0eWxlLndpZHRoID0gJzBweCc7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvcHlUZXh0QXJlYSk7XG4gICAgICBjb3B5VGV4dEFyZWEudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvcHlUZXh0QXJlYS5zZWxlY3QoKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoY29weVRleHRBcmVhICYmIGNvcHlUZXh0QXJlYS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNvcHlUZXh0QXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvcHlUZXh0QXJlYSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- export * from './cookie.service';
2
- export * from './copy';
3
- export * from './is-empty';
4
- export * from './scroll.service';
5
- export * from './style';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb29raWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcHknO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1lbXB0eSc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGUnO1xuIl19
@@ -1,19 +0,0 @@
1
- /**
2
- * Used to verify `<ng-content />` is empty, useful for custom components.
3
- *
4
- * 用于校验 `<ng-content />` 是否为空,自定义组件时蛮有用。
5
- */
6
- export function isEmpty(element) {
7
- const nodes = element.childNodes;
8
- for (let i = 0; i < nodes.length; i++) {
9
- const node = nodes.item(i);
10
- if (node.nodeType === 1 && node.outerHTML.toString().trim().length !== 0) {
11
- return false;
12
- }
13
- else if (node.nodeType === 3 && node.textContent.toString().trim().length !== 0) {
14
- return false;
15
- }
16
- }
17
- return true;
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvaXMtZW1wdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBb0I7SUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSyxJQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2VkIHRvIHZlcmlmeSBgPG5nLWNvbnRlbnQgLz5gIGlzIGVtcHR5LCB1c2VmdWwgZm9yIGN1c3RvbSBjb21wb25lbnRzLlxuICpcbiAqIOeUqOS6juagoemqjCBgPG5nLWNvbnRlbnQgLz5gIOaYr+WQpuS4uuepuu+8jOiHquWumuS5iee7hOS7tuaXtuibruacieeUqOOAglxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBub2RlcyA9IGVsZW1lbnQuY2hpbGROb2RlcztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG5vZGUgPSBub2Rlcy5pdGVtKGkpO1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxICYmIChub2RlIGFzIEhUTUxFbGVtZW50KS5vdXRlckhUTUwudG9TdHJpbmcoKS50cmltKCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChub2RlLm5vZGVUeXBlID09PSAzICYmIG5vZGUudGV4dENvbnRlbnQhLnRvU3RyaW5nKCkudHJpbSgpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
@@ -1,85 +0,0 @@
1
- import { Platform } from '@angular/cdk/platform';
2
- import { DOCUMENT } from '@angular/common';
3
- import { Injectable, inject } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- export class ScrollService {
6
- constructor() {
7
- this._doc = inject(DOCUMENT);
8
- this.platform = inject(Platform);
9
- }
10
- _getDoc() {
11
- return this._doc || document;
12
- }
13
- _getWin() {
14
- const doc = this._getDoc();
15
- return doc.defaultView || window;
16
- }
17
- /**
18
- * 获取滚动条位置
19
- *
20
- * @param element 指定元素,默认 `window`
21
- */
22
- getScrollPosition(element) {
23
- if (!this.platform.isBrowser) {
24
- return [0, 0];
25
- }
26
- const win = this._getWin();
27
- if (element && element !== win) {
28
- return [element.scrollLeft, element.scrollTop];
29
- }
30
- else {
31
- return [win.scrollX, win.scrollY];
32
- }
33
- }
34
- /**
35
- * 设置滚动条位置
36
- *
37
- * @param element 指定元素
38
- */
39
- scrollToPosition(element, position) {
40
- if (!this.platform.isBrowser) {
41
- return;
42
- }
43
- (element || this._getWin()).scrollTo(position[0], position[1]);
44
- }
45
- /**
46
- * 设置滚动条至指定元素
47
- *
48
- * @param element 指定元素,默认 `document.body`
49
- * @param topOffset 偏移值,默认 `0`
50
- */
51
- scrollToElement(element, topOffset = 0) {
52
- if (!this.platform.isBrowser) {
53
- return;
54
- }
55
- if (!element) {
56
- element = this._getDoc().body;
57
- }
58
- element.scrollIntoView();
59
- const win = this._getWin();
60
- if (win && win.scrollBy) {
61
- win.scrollBy(0, element.getBoundingClientRect().top - topOffset);
62
- if (win.scrollY < 20) {
63
- win.scrollBy(0, -win.scrollY);
64
- }
65
- }
66
- }
67
- /**
68
- * 滚动至顶部
69
- *
70
- * @param topOffset 偏移值,默认 `0`
71
- */
72
- scrollToTop(topOffset = 0) {
73
- if (!this.platform.isBrowser) {
74
- return;
75
- }
76
- this.scrollToElement(this._getDoc().body, topOffset);
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
79
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ScrollService, decorators: [{
82
- type: Injectable,
83
- args: [{ providedIn: 'root' }]
84
- }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvc2Nyb2xsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBNkU5QztJQTVFUyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsT0FBaUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUUsT0FBbUIsQ0FBQyxVQUFVLEVBQUcsT0FBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUE0QyxFQUFFLFFBQTBCO1FBQ3ZGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBd0IsRUFBRSxZQUFvQixDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUVsRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsWUFBb0IsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQTlFVSxhQUFhO2tIQUFiLGFBQWEsY0FEQSxNQUFNOzsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybSA9IGluamVjdChQbGF0Zm9ybSk7XG4gIHByaXZhdGUgX2dldERvYygpOiBEb2N1bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvYyB8fCBkb2N1bWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFdpbigpOiBXaW5kb3cge1xuICAgIGNvbnN0IGRvYyA9IHRoaXMuX2dldERvYygpO1xuICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPlua7muWKqOadoeS9jee9rlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCDmjIflrprlhYPntKDvvIzpu5jorqQgYHdpbmRvd2BcbiAgICovXG4gIGdldFNjcm9sbFBvc2l0aW9uKGVsZW1lbnQ/OiBFbGVtZW50IHwgV2luZG93IHwgbnVsbCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybiBbMCwgMF07XG4gICAgfVxuXG4gICAgY29uc3Qgd2luID0gdGhpcy5fZ2V0V2luKCk7XG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudCAhPT0gd2luKSB7XG4gICAgICByZXR1cm4gWyhlbGVtZW50IGFzIEVsZW1lbnQpLnNjcm9sbExlZnQsIChlbGVtZW50IGFzIEVsZW1lbnQpLnNjcm9sbFRvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbd2luLnNjcm9sbFgsIHdpbi5zY3JvbGxZXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6K6+572u5rua5Yqo5p2h5L2N572uXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IOaMh+WumuWFg+e0oFxuICAgKi9cbiAgc2Nyb2xsVG9Qb3NpdGlvbihlbGVtZW50OiBFbGVtZW50IHwgV2luZG93IHwgbnVsbCB8IHVuZGVmaW5lZCwgcG9zaXRpb246IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIChlbGVtZW50IHx8IHRoaXMuX2dldFdpbigpKS5zY3JvbGxUbyhwb3NpdGlvblswXSwgcG9zaXRpb25bMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9rua7muWKqOadoeiHs+aMh+WumuWFg+e0oFxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCDmjIflrprlhYPntKDvvIzpu5jorqQgYGRvY3VtZW50LmJvZHlgXG4gICAqIEBwYXJhbSB0b3BPZmZzZXQg5YGP56e75YC877yM6buY6K6kIGAwYFxuICAgKi9cbiAgc2Nyb2xsVG9FbGVtZW50KGVsZW1lbnQ/OiBFbGVtZW50IHwgbnVsbCwgdG9wT2Zmc2V0OiBudW1iZXIgPSAwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLl9nZXREb2MoKS5ib2R5O1xuICAgIH1cblxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcblxuICAgIGNvbnN0IHdpbiA9IHRoaXMuX2dldFdpbigpO1xuICAgIGlmICh3aW4gJiYgd2luLnNjcm9sbEJ5KSB7XG4gICAgICB3aW4uc2Nyb2xsQnkoMCwgZWxlbWVudCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gdG9wT2Zmc2V0KTtcblxuICAgICAgaWYgKHdpbi5zY3JvbGxZIDwgMjApIHtcbiAgICAgICAgd2luLnNjcm9sbEJ5KDAsIC13aW4uc2Nyb2xsWSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOa7muWKqOiHs+mhtumDqFxuICAgKlxuICAgKiBAcGFyYW0gdG9wT2Zmc2V0IOWBj+enu+WAvO+8jOm7mOiupCBgMGBcbiAgICovXG4gIHNjcm9sbFRvVG9wKHRvcE9mZnNldDogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQodGhpcy5fZ2V0RG9jKCkuYm9keSwgdG9wT2Zmc2V0KTtcbiAgfVxufVxuIl19
@@ -1,38 +0,0 @@
1
- function removeClass(el, classMap, renderer) {
2
- Object.keys(classMap).forEach(key => renderer.removeClass(el, key));
3
- }
4
- function addClass(el, classMap, renderer) {
5
- for (const i in classMap) {
6
- if (classMap[i]) {
7
- renderer.addClass(el, i);
8
- }
9
- }
10
- }
11
- /**
12
- * Update host component style `class`
13
- *
14
- * 更新宿主组件样式 `class`
15
- *
16
- * ```ts
17
- * updateHostClass(
18
- * this.el.nativeElement,
19
- * this.renderer,
20
- * {
21
- * [ 'classname' ]: true,
22
- * [ 'classname' ]: this.type === '1',
23
- * [ this.cls ]: true,
24
- * [ `a-${this.cls}` ]: true
25
- * })
26
- * ```
27
- */
28
- export function updateHostClass(el, renderer, classMap, preClean = false) {
29
- if (preClean === true) {
30
- renderer.removeAttribute(el, 'class');
31
- }
32
- else {
33
- removeClass(el, classMap, renderer);
34
- }
35
- classMap = { ...classMap };
36
- addClass(el, classMap, renderer);
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxXQUFXLENBQUMsRUFBZSxFQUFFLFFBQXNDLEVBQUUsUUFBbUI7SUFDL0YsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFlLEVBQUUsUUFBc0MsRUFBRSxRQUFtQjtJQUM1RixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixFQUFlLEVBQ2YsUUFBbUIsRUFDbkIsUUFBc0MsRUFDdEMsV0FBb0IsS0FBSztJQUV6QixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0QixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO1NBQU0sQ0FBQztRQUNOLFdBQVcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxRQUFRLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQzNCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWw6IEhUTUxFbGVtZW50LCBjbGFzc01hcDogeyBba2xhc3M6IHN0cmluZ106IHVua25vd24gfSwgcmVuZGVyZXI6IFJlbmRlcmVyMik6IHZvaWQge1xuICBPYmplY3Qua2V5cyhjbGFzc01hcCkuZm9yRWFjaChrZXkgPT4gcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWwsIGtleSkpO1xufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbDogSFRNTEVsZW1lbnQsIGNsYXNzTWFwOiB7IFtrbGFzczogc3RyaW5nXTogdW5rbm93biB9LCByZW5kZXJlcjogUmVuZGVyZXIyKTogdm9pZCB7XG4gIGZvciAoY29uc3QgaSBpbiBjbGFzc01hcCkge1xuICAgIGlmIChjbGFzc01hcFtpXSkge1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZWwsIGkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZSBob3N0IGNvbXBvbmVudCBzdHlsZSBgY2xhc3NgXG4gKlxuICog5pu05paw5a6/5Li757uE5Lu25qC35byPIGBjbGFzc2BcbiAqXG4gKiBgYGB0c1xuICogdXBkYXRlSG9zdENsYXNzKFxuICogIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAqICB0aGlzLnJlbmRlcmVyLFxuICogIHtcbiAqICAgIFsgJ2NsYXNzbmFtZScgXTogdHJ1ZSxcbiAqICAgIFsgJ2NsYXNzbmFtZScgXTogdGhpcy50eXBlID09PSAnMScsXG4gKiAgICBbIHRoaXMuY2xzIF06IHRydWUsXG4gKiAgICBbIGBhLSR7dGhpcy5jbHN9YCBdOiB0cnVlXG4gKiAgfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlSG9zdENsYXNzKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gIGNsYXNzTWFwOiB7IFtrbGFzczogc3RyaW5nXTogdW5rbm93biB9LFxuICBwcmVDbGVhbjogYm9vbGVhbiA9IGZhbHNlXG4pOiB2b2lkIHtcbiAgaWYgKHByZUNsZWFuID09PSB0cnVlKSB7XG4gICAgcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGVsLCAnY2xhc3MnKTtcbiAgfSBlbHNlIHtcbiAgICByZW1vdmVDbGFzcyhlbCwgY2xhc3NNYXAsIHJlbmRlcmVyKTtcbiAgfVxuICBjbGFzc01hcCA9IHsgLi4uY2xhc3NNYXAgfTtcbiAgYWRkQ2xhc3MoZWwsIGNsYXNzTWFwLCByZW5kZXJlcik7XG59XG4iXX0=