@delon/util 15.2.0 → 16.0.0-beta.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.
- package/esm2022/array/array.service.mjs +279 -0
- package/esm2022/browser/cookie.service.mjs +104 -0
- package/esm2022/browser/scroll.service.mjs +89 -0
- package/esm2022/config/config.service.mjs +39 -0
- package/esm2022/format/currency.service.mjs +239 -0
- package/esm2022/other/lazy.service.mjs +133 -0
- package/esm2022/pipes/currency/cny.pipe.mjs +24 -0
- package/esm2022/pipes/currency/mega.pipe.mjs +30 -0
- package/esm2022/pipes/currency/module.mjs +20 -0
- package/esm2022/pipes/currency/price.pipe.mjs +28 -0
- package/esm2022/pipes/filter/filter.pipe.mjs +20 -0
- package/esm2022/pipes/filter/module.mjs +18 -0
- package/esm2022/pipes/format/mask.pipe.mjs +35 -0
- package/esm2022/pipes/format/module.mjs +18 -0
- package/{fesm2020 → fesm2022}/array.mjs +3 -3
- package/{fesm2015 → fesm2022}/array.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/browser.mjs +6 -6
- package/{fesm2020 → fesm2022}/browser.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/config.mjs +3 -3
- package/{fesm2020 → fesm2022}/config.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/format.mjs +3 -3
- package/{fesm2020 → fesm2022}/format.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/other.mjs +3 -3
- package/{fesm2020 → fesm2022}/other.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pipe-currency.mjs +13 -13
- package/{fesm2020 → fesm2022}/pipe-currency.mjs.map +1 -1
- package/fesm2022/pipe-filter.mjs +40 -0
- package/{fesm2015 → fesm2022}/pipe-filter.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/pipe-format.mjs +7 -7
- package/{fesm2015 → fesm2022}/pipe-format.mjs.map +1 -1
- package/package.json +53 -87
- package/esm2020/array/array.service.mjs +0 -278
- package/esm2020/browser/cookie.service.mjs +0 -103
- package/esm2020/browser/scroll.service.mjs +0 -88
- package/esm2020/config/config.service.mjs +0 -38
- package/esm2020/format/currency.service.mjs +0 -238
- package/esm2020/other/lazy.service.mjs +0 -132
- package/esm2020/pipes/currency/cny.pipe.mjs +0 -23
- package/esm2020/pipes/currency/mega.pipe.mjs +0 -29
- package/esm2020/pipes/currency/module.mjs +0 -19
- package/esm2020/pipes/currency/price.pipe.mjs +0 -27
- package/esm2020/pipes/filter/filter.pipe.mjs +0 -19
- package/esm2020/pipes/filter/module.mjs +0 -17
- package/esm2020/pipes/format/mask.pipe.mjs +0 -34
- package/esm2020/pipes/format/module.mjs +0 -17
- package/fesm2015/array.mjs +0 -255
- package/fesm2015/browser.mjs +0 -283
- package/fesm2015/browser.mjs.map +0 -1
- package/fesm2015/config.mjs +0 -57
- package/fesm2015/config.mjs.map +0 -1
- package/fesm2015/date-time.mjs +0 -207
- package/fesm2015/date-time.mjs.map +0 -1
- package/fesm2015/decorator.mjs +0 -121
- package/fesm2015/decorator.mjs.map +0 -1
- package/fesm2015/format.mjs +0 -413
- package/fesm2015/format.mjs.map +0 -1
- package/fesm2015/other.mjs +0 -319
- package/fesm2015/other.mjs.map +0 -1
- package/fesm2015/pipe-currency.mjs +0 -96
- package/fesm2015/pipe-currency.mjs.map +0 -1
- package/fesm2015/pipe-filter.mjs +0 -40
- package/fesm2020/array.mjs.map +0 -1
- package/fesm2020/delon-util.mjs +0 -16
- package/fesm2020/delon-util.mjs.map +0 -1
- package/fesm2020/form.mjs +0 -118
- package/fesm2020/form.mjs.map +0 -1
- package/fesm2020/math.mjs +0 -85
- package/fesm2020/math.mjs.map +0 -1
- package/fesm2020/pipe-filter.mjs +0 -40
- package/fesm2020/pipe-filter.mjs.map +0 -1
- package/fesm2020/pipe-format.mjs +0 -55
- package/fesm2020/pipe-format.mjs.map +0 -1
- package/fesm2020/pipes.mjs +0 -8
- package/fesm2020/pipes.mjs.map +0 -1
- package/fesm2020/token.mjs +0 -37
- package/fesm2020/token.mjs.map +0 -1
- /package/{esm2020 → esm2022}/array/array-type.service.mjs +0 -0
- /package/{esm2020 → esm2022}/array/array.mjs +0 -0
- /package/{esm2020 → esm2022}/array/index.mjs +0 -0
- /package/{esm2020 → esm2022}/browser/browser.mjs +0 -0
- /package/{esm2020 → esm2022}/browser/copy.mjs +0 -0
- /package/{esm2020 → esm2022}/browser/index.mjs +0 -0
- /package/{esm2020 → esm2022}/browser/is-empty.mjs +0 -0
- /package/{esm2020 → esm2022}/browser/style.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/date-picker.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/error-collect.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/exception.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/image.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/index.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/loading.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/lodop.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/media.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/onboarding.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/page-header.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/pdf.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/qr.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/se.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/sg.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/st.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/sv.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/xlsx.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/abc/zip.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/acl/acl.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/auth/auth.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/cache/cache.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/chart/chart.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/config.mjs +0 -0
- /package/{esm2020 → esm2022}/config/config.types.mjs +0 -0
- /package/{esm2020 → esm2022}/config/index.mjs +0 -0
- /package/{esm2020 → esm2022}/config/mock/mock.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/sf/sf.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/theme/http.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/theme/i18n.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/theme/index.mjs +0 -0
- /package/{esm2020 → esm2022}/config/theme/responsive.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/util/array.type.mjs +0 -0
- /package/{esm2020 → esm2022}/config/util/currency.type.mjs +0 -0
- /package/{esm2020 → esm2022}/date-time/date-time.mjs +0 -0
- /package/{esm2020 → esm2022}/date-time/index.mjs +0 -0
- /package/{esm2020 → esm2022}/date-time/picker.mjs +0 -0
- /package/{esm2020 → esm2022}/date-time/time.mjs +0 -0
- /package/{esm2020 → esm2022}/decorator/convert.mjs +0 -0
- /package/{esm2020 → esm2022}/decorator/decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/decorator/index.mjs +0 -0
- /package/{esm2020 → esm2022}/decorator/zone-outside.mjs +0 -0
- /package/{esm2020 → esm2022}/delon-util.mjs +0 -0
- /package/{esm2020 → esm2022}/form/form.mjs +0 -0
- /package/{esm2020 → esm2022}/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form/match-control.mjs +0 -0
- /package/{esm2020 → esm2022}/form/validators.mjs +0 -0
- /package/{esm2020 → esm2022}/format/currency.types.mjs +0 -0
- /package/{esm2020 → esm2022}/format/format.mjs +0 -0
- /package/{esm2020 → esm2022}/format/index.mjs +0 -0
- /package/{esm2020 → esm2022}/format/string.mjs +0 -0
- /package/{esm2020 → esm2022}/format/validate.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/math/in-range.mjs +0 -0
- /package/{esm2020 → esm2022}/math/index.mjs +0 -0
- /package/{esm2020 → esm2022}/math/math.mjs +0 -0
- /package/{esm2020 → esm2022}/math/round.mjs +0 -0
- /package/{esm2020 → esm2022}/other/assert.mjs +0 -0
- /package/{esm2020 → esm2022}/other/deep.mjs +0 -0
- /package/{esm2020 → esm2022}/other/index.mjs +0 -0
- /package/{esm2020 → esm2022}/other/logger.mjs +0 -0
- /package/{esm2020 → esm2022}/other/other.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/currency/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/currency/pipe-currency.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/filter/pipe-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/format/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/format/pipe-format.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pipes/pipes.mjs +0 -0
- /package/{esm2020 → esm2022}/token/index.mjs +0 -0
- /package/{esm2020 → esm2022}/token/page-visibility.mjs +0 -0
- /package/{esm2020 → esm2022}/token/token.mjs +0 -0
- /package/{esm2020 → esm2022}/token/window.mjs +0 -0
- /package/{fesm2020 → fesm2022}/date-time.mjs +0 -0
- /package/{fesm2020 → fesm2022}/date-time.mjs.map +0 -0
- /package/{fesm2020 → fesm2022}/decorator.mjs +0 -0
- /package/{fesm2020 → fesm2022}/decorator.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/delon-util.mjs +0 -0
- /package/{fesm2015 → fesm2022}/delon-util.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/form.mjs +0 -0
- /package/{fesm2015 → fesm2022}/form.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/math.mjs +0 -0
- /package/{fesm2015 → fesm2022}/math.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/pipes.mjs +0 -0
- /package/{fesm2015 → fesm2022}/pipes.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/token.mjs +0 -0
- /package/{fesm2015 → fesm2022}/token.mjs.map +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
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 "@delon/util/config";
|
|
6
|
+
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: "16.0.4", ngImport: i0, type: ArrayService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
272
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ArrayService, providedIn: 'root' }); }
|
|
273
|
+
}
|
|
274
|
+
export { ArrayService };
|
|
275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ArrayService, decorators: [{
|
|
276
|
+
type: Injectable,
|
|
277
|
+
args: [{ providedIn: 'root' }]
|
|
278
|
+
}], ctorParameters: function () { return [{ type: i1.AlainConfigService }]; } });
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvYXJyYXkvYXJyYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVVyRCxNQUNhLFlBQVk7SUFHdkIsWUFBWSxHQUF1QjtRQUNqQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzlCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsZUFBZSxFQUFFLFdBQVc7WUFDNUIsZUFBZSxFQUFFLFVBQVU7WUFDM0IsWUFBWSxFQUFFLE9BQU87WUFDckIsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFVBQVU7WUFDM0IsZUFBZSxFQUFFLFVBQVU7WUFDM0IsZUFBZSxFQUFFLFVBQVU7U0FDNUIsQ0FBRSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQXlCLElBQWtCLEVBQUUsT0FBeUM7UUFDN0YsTUFBTSxHQUFHLEdBQUc7WUFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWE7WUFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZTtZQUN2QyxhQUFhLEVBQUUsSUFBSTtZQUNuQixFQUFFLEVBQUUsSUFBSTtZQUNSLEdBQUcsT0FBTztTQUNxQixDQUFDO1FBQ2xDLE1BQU0sTUFBTSxHQUFrQyxFQUFFLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUEyQyxFQUFFLE1BQWdCLEVB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O1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEVBQStCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0Q7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxDQUFJLEtBQW1CLEVBQUUsU0FBOEQ7UUFDekYsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLEtBQUs7YUFDRixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckIsTUFBTSxHQUFHLEdBQUcsU0FBUztnQkFDbkIsQ0FBQyxDQUFDLE9BQU8sU0FBUyxLQUFLLFFBQVE7b0JBQzdCLENBQUMsQ0FBRSxLQUFhLENBQUMsU0FBUyxDQUFDO29CQUMzQixDQUFDLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNyQjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFnQyxDQUFDO2FBQzFDLE1BQU0sRUFBRSxDQUNaLENBQUM7SUFDSixDQUFDOzhHQWpTVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOztTQUNuQixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbGFpbkNvbmZpZ1NlcnZpY2UsIEFsYWluVXRpbEFycmF5Q29uZmlnIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IE56VHJlZU5vZGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHJlZSc7XG5cbmltcG9ydCB7XG4gIEFycmF5U2VydmljZUFyclRvVHJlZU5vZGVPcHRpb25zLFxuICBBcnJheVNlcnZpY2VBcnJUb1RyZWVPcHRpb25zLFxuICBBcnJheVNlcnZpY2VHZXRLZXlzQnlUcmVlTm9kZU9wdGlvbnMsXG4gIEFycmF5U2VydmljZUdyb3VwQnlSZXN1bHQsXG4gIEFycmF5U2VydmljZVRyZWVUb0Fyck9wdGlvbnNcbn0gZnJvbSAnLi9hcnJheS10eXBlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFycmF5U2VydmljZSB7XG4gIHByaXZhdGUgYzogQWxhaW5VdGlsQXJyYXlDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29nOiBBbGFpbkNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLmMgPSBjb2cubWVyZ2UoJ3V0aWxBcnJheScsIHtcbiAgICAgIGRlZXBNYXBOYW1lOiAnZGVlcCcsXG4gICAgICBwYXJlbnRNYXBOYW1lOiAncGFyZW50JyxcbiAgICAgIGlkTWFwTmFtZTogJ2lkJyxcbiAgICAgIHBhcmVudElkTWFwTmFtZTogJ3BhcmVudF9pZCcsXG4gICAgICBjaGlsZHJlbk1hcE5hbWU6ICdjaGlsZHJlbicsXG4gICAgICB0aXRsZU1hcE5hbWU6ICd0aXRsZScsXG4gICAgICBjaGVja2VkTWFwbmFtZTogJ2NoZWNrZWQnLFxuICAgICAgc2VsZWN0ZWRNYXBuYW1lOiAnc2VsZWN0ZWQnLFxuICAgICAgZXhwYW5kZWRNYXBuYW1lOiAnZXhwYW5kZWQnLFxuICAgICAgZGlzYWJsZWRNYXBuYW1lOiAnZGlzYWJsZWQnXG4gICAgfSkhO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdHJlZSBzdHJ1Y3R1cmUgdG8gYXJyYXkgc3RydWN0dXJlXG4gICAqXG4gICAqIOWwhuagkee7k+aehOi9rOaNouaIkOaVsOe7hOe7k+aehFxuICAgKi9cbiAgdHJlZVRvQXJyPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KHRyZWU6IHJlYWRvbmx5IFRbXSwgb3B0aW9ucz86IEFycmF5U2VydmljZVRyZWVUb0Fyck9wdGlvbnM8VD4pOiBUW10ge1xuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIGRlZXBNYXBOYW1lOiB0aGlzLmMuZGVlcE1hcE5hbWUsXG4gICAgICBwYXJlbnRNYXBOYW1lOiB0aGlzLmMucGFyZW50TWFwTmFtZSxcbiAgICAgIGNoaWxkcmVuTWFwTmFtZTogdGhpcy5jLmNoaWxkcmVuTWFwTmFtZSxcbiAgICAgIGNsZWFyQ2hpbGRyZW46IHRydWUsXG4gICAgICBjYjogbnVsbCxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9IGFzIEFycmF5U2VydmljZVRyZWVUb0Fyck9wdGlvbnM7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiA9IFtdO1xuICAgIGNvbnN0IGluRm4gPSAobGlzdDogUmVhZG9ubHlBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiwgcGFyZW50OiBUIHwgbnVsbCwgZGVlcDogbnVtYmVyID0gMCk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpIG9mIGxpc3QpIHtcbiAgICAgICAgaVtvcHQuZGVlcE1hcE5hbWUhXSA9IGRlZXA7XG4gICAgICAgIGlbb3B0LnBhcmVudE1hcE5hbWUhXSA9IHBhcmVudDtcbiAgICAgICAgaWYgKG9wdC5jYikge1xuICAgICAgICAgIG9wdC5jYihpLCBwYXJlbnQsIGRlZXApO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5wdXNoKGkpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGlbb3B0LmNoaWxkcmVuTWFwTmFtZSFdO1xuICAgICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW5GbihjaGlsZHJlbiwgaSBhcyBULCBkZWVwICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdC5jbGVhckNoaWxkcmVuKSB7XG4gICAgICAgICAgZGVsZXRlIGlbb3B0LmNoaWxkcmVuTWFwTmFtZSFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBpbkZuKHRyZWUsIG51bGwpO1xuICAgIHJldHVybiByZXN1bHQgYXMgVFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgc3RydWN0dXJlIHRvIHRyZWUgc3RydWN0dXJlXG4gICAqXG4gICAqIOaVsOe7hOi9rOaNouaIkOagkeaVsOaNrlxuICAgKi9cbiAgYXJyVG9UcmVlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KGFycjogcmVhZG9ubHkgVFtdLCBvcHRpb25zPzogQXJyYXlTZXJ2aWNlQXJyVG9UcmVlT3B0aW9uczxUPik6IFRbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIGlkTWFwTmFtZTogdGhpcy5jLmlkTWFwTmFtZSxcbiAgICAgIHBhcmVudElkTWFwTmFtZTogdGhpcy5jLnBhcmVudElkTWFwTmFtZSxcbiAgICAgIGNoaWxkcmVuTWFwTmFtZTogdGhpcy5jLmNoaWxkcmVuTWFwTmFtZSxcbiAgICAgIGNiOiBudWxsLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0gYXMgQXJyYXlTZXJ2aWNlQXJyVG9UcmVlT3B0aW9uczxUPjtcbiAgICBjb25zdCB0cmVlOiBUW10gPSBbXTtcbiAgICBjb25zdCBjaGlsZHJlbk9mOiB7IFtrZXk6IHN0cmluZ106IFRbXSB9ID0ge307XG4gICAgbGV0IHJvb3RQaWQgPSBvcHQucm9vdFBhcmVudElkVmFsdWU7XG4gICAgY29uc3QgYXJyVHlwZSA9IGFyciBhcyBSZWFkb25seUFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+O1xuICAgIGlmICghcm9vdFBpZCkge1xuICAgICAgY29uc3QgcGlkcyA9IGFyclR5cGUubWFwKGkgPT4gaVtvcHQucGFyZW50SWRNYXBOYW1lIV0pO1xuICAgICAgY29uc3QgZW1wdHlQaWQgPSBwaWRzLmZpbmRJbmRleCh3ID0+IHcgPT0gbnVsbCk7XG4gICAgICByb290UGlkID0gZW1wdHlQaWQgIT09IC0xID8gcGlkc1tlbXB0eVBpZF0gOiBwaWRzLnNvcnQoKVswXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFyclR5cGUpIHtcbiAgICAgIGNvbnN0IGlkID0gaXRlbVtvcHQuaWRNYXBOYW1lIV07XG4gICAgICBjb25zdCBwaWQgPSBpdGVtW29wdC5wYXJlbnRJZE1hcE5hbWUhXTtcbiAgICAgIGNoaWxkcmVuT2ZbaWRdID0gY2hpbGRyZW5PZltpZF0gfHwgW107XG4gICAgICBpdGVtW29wdC5jaGlsZHJlbk1hcE5hbWUhXSA9IGNoaWxkcmVuT2ZbaWRdO1xuICAgICAgaWYgKG9wdC5jYikge1xuICAgICAgICBvcHQuY2IoaXRlbSBhcyBUKTtcbiAgICAgIH1cbiAgICAgIGlmIChwaWQgIT09IHJvb3RQaWQpIHtcbiAgICAgICAgY2hpbGRyZW5PZltwaWRdID0gY2hpbGRyZW5PZltwaWRdIHx8IFtdO1xuICAgICAgICBjaGlsZHJlbk9mW3BpZF0ucHVzaChpdGVtIGFzIFQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJlZS5wdXNoKGl0ZW0gYXMgVCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOaVsOe7hOi9rOaNouaIkCBgbnotdHJlZWAg5pWw5o2u5rqQ77yM6YCa6L+HIGBvcHRpb25zYCDovazljJbpobnlkI3vvIzkuZ/lj6/ku6Xkvb/nlKggYG9wdGlvbnMuY2JgIOabtOmrmOe6p+WGs+WumuaVsOaNrumhuVxuICAgKi9cbiAgYXJyVG9UcmVlTm9kZTxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PihhcnI6IHJlYWRvbmx5IFRbXSwgb3B0aW9ucz86IEFycmF5U2VydmljZUFyclRvVHJlZU5vZGVPcHRpb25zKTogTnpUcmVlTm9kZVtdIHtcbiAgICBjb25zdCBvcHQgPSB7XG4gICAgICBpZE1hcE5hbWU6IHRoaXMuYy5pZE1hcE5hbWUsXG4gICAgICBwYXJlbnRJZE1hcE5hbWU6IHRoaXMuYy5wYXJlbnRJZE1hcE5hbWUsXG4gICAgICB0aXRsZU1hcE5hbWU6IHRoaXMuYy50aXRsZU1hcE5hbWUsXG4gICAgICBpc0xlYWZNYXBOYW1lOiAnaXNMZWFmJyxcbiAgICAgIGNoZWNrZWRNYXBuYW1lOiB0aGlzLmMuY2hlY2tlZE1hcG5hbWUsXG4gICAgICBzZWxlY3RlZE1hcG5hbWU6IHRoaXMuYy5zZWxlY3RlZE1hcG5hbWUsXG4gICAgICBleHBhbmRlZE1hcG5hbWU6IHRoaXMuYy5leHBhbmRlZE1hcG5hbWUsXG4gICAgICBkaXNhYmxlZE1hcG5hbWU6IHRoaXMuYy5kaXNhYmxlZE1hcG5hbWUsXG4gICAgICBjYjogbnVsbCxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9IGFzIEFycmF5U2VydmljZUFyclRvVHJlZU5vZGVPcHRpb25zPFQ+O1xuICAgIGNvbnN0IHRyZWUgPSB0aGlzLmFyclRvVHJlZTxUPihhcnIsIHtcbiAgICAgIGlkTWFwTmFtZTogb3B0LmlkTWFwTmFtZSxcbiAgICAgIHBhcmVudElkTWFwTmFtZTogb3B0LnBhcmVudElkTWFwTmFtZSxcbiAgICAgIGNoaWxkcmVuTWFwTmFtZTogJ2NoaWxkcmVuJ1xuICAgIH0pO1xuICAgIHRoaXMudmlzaXRUcmVlPFQ+KHRyZWUsIChpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAgIGl0ZW0ua2V5ID0gaXRlbVtvcHQuaWRNYXBOYW1lIV07XG4gICAgICBpdGVtLnRpdGxlID0gaXRlbVtvcHQudGl0bGVNYXBOYW1lIV07XG4gICAgICBpdGVtLmNoZWNrZWQgPSBpdGVtW29wdC5jaGVja2VkTWFwbmFtZSFdO1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGl0ZW1bb3B0LnNlbGVjdGVkTWFwbmFtZSFdO1xuICAgICAgaXRlbS5leHBhbmRlZCA9IGl0ZW1bb3B0LmV4cGFuZGVkTWFwbmFtZSFdO1xuICAgICAgaXRlbS5kaXNhYmxlZCA9IGl0ZW1bb3B0LmRpc2FibGVkTWFwbmFtZSFdO1xuICAgICAgaWYgKGl0ZW1bb3B0LmlzTGVhZk1hcE5hbWUhXSA9PSBudWxsKSB7XG4gICAgICAgIGl0ZW0uaXNMZWFmID0gaXRlbS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmlzTGVhZiA9IGl0ZW1bb3B0LmlzTGVhZk1hcE5hbWUhXTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHQuY2IpIHtcbiAgICAgICAgb3B0LmNiKGl0ZW0gYXMgYW55LCBwYXJlbnQsIGRlZXApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0cmVlLm1hcChub2RlID0+IG5ldyBOelRyZWVOb2RlKG5vZGUgYXMgYW55KSk7XG4gIH1cblxuICAvKipcbiAgICog6YCS5b2S6K6/6Zeu5pW05Liq5qCRXG4gICAqL1xuICB2aXNpdFRyZWU8VCBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgdHJlZTogcmVhZG9ubHkgVFtdLFxuICAgIGNiOiAoaXRlbTogVCwgcGFyZW50OiBUIHwgbnVsbCwgZGVlcDogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKiog5a2Q6aG55ZCN77yM6buY6K6k77yaYCdjaGlsZHJlbidgICovXG4gICAgICBjaGlsZHJlbk1hcE5hbWU/OiBzdHJpbmc7XG4gICAgfVxuICApOiB2b2lkIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgY2hpbGRyZW5NYXBOYW1lOiB0aGlzLmMuY2hpbGRyZW5NYXBOYW1lLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgY29uc3QgaW5GbiA9IChkYXRhOiByZWFkb25seSBUW10sIHBhcmVudDogVCB8IG51bGwsIGRlZXA6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcbiAgICAgICAgY2IoaXRlbSwgcGFyZW50LCBkZWVwKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5WYWwgPSAoaXRlbSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KVtvcHRpb25zIS5jaGlsZHJlbk1hcE5hbWUhXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW5WYWwpICYmIGNoaWxkcmVuVmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpbkZuKGNoaWxkcmVuVmFsLCBpdGVtLCBkZWVwICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGluRm4odHJlZSwgbnVsbCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgdHJlZSB2YWx1ZSBpbiB0aGUgdHJlZSB3aGVyZSBwcmVkaWNhdGUgaXMgdHJ1ZSwgYW5kIGB1bmRlZmluZWRgIG90aGVyd2lzZVxuICAgKlxuICAgKiDmoLnmja7mnaHku7bov5Tlm57moJHnmoTnrKzkuIDkuKrlgLzvvIzlkKbliJnov5Tlm54gYHVuZGVmaW5lZGBcbiAgICovXG4gIGZpbmRUcmVlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KFxuICAgIHRyZWU6IHJlYWRvbmx5IFRbXSxcbiAgICBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKiog5a2Q6aG55ZCN77yM6buY6K6k77yaYCdjaGlsZHJlbidgICovXG4gICAgICBjaGlsZHJlbk1hcE5hbWU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzOiBUIHwgdW5kZWZpbmVkO1xuICAgIHRoaXMudmlzaXRUcmVlPFQ+KFxuICAgICAgdHJlZSxcbiAgICAgIGl0ZW0gPT4ge1xuICAgICAgICBpZiAocmVzID09PSB1bmRlZmluZWQgJiYgcHJlZGljYXRlKGl0ZW0pKSB7XG4gICAgICAgICAgcmVzID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5omA5pyJ5bey57uP6YCJ5Lit55qEIGBrZXlgIOWAvFxuICAgKi9cbiAgZ2V0S2V5c0J5VHJlZU5vZGUodHJlZTogTnpUcmVlTm9kZVtdLCBvcHRpb25zPzogQXJyYXlTZXJ2aWNlR2V0S2V5c0J5VHJlZU5vZGVPcHRpb25zKTogYW55W10ge1xuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIGluY2x1ZGVIYWxmQ2hlY2tlZDogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9IGFzIEFycmF5U2VydmljZUdldEtleXNCeVRyZWVOb2RlT3B0aW9ucztcbiAgICBjb25zdCBrZXlzOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMudmlzaXRUcmVlPE56VHJlZU5vZGU+KHRyZWUsIChpdGVtLCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAgIGlmIChpdGVtLmlzQ2hlY2tlZCB8fCAob3B0LmluY2x1ZGVIYWxmQ2hlY2tlZCAmJiBpdGVtLmlzSGFsZkNoZWNrZWQpKSB7XG4gICAgICAgIGtleXMucHVzaChvcHQuY2IgPyBvcHQuY2IoaXRlbSwgcGFyZW50LCBkZWVwKSA6IG9wdC5rZXlNYXBOYW1lID8gaXRlbS5vcmlnaW5bb3B0LmtleU1hcE5hbWVdIDogaXRlbS5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBrZXlzO1xuICB9XG4gIHByaXZhdGUgYmFzZUZsYXQoYXJyYXk6IGFueVtdLCBkZXB0aDogbnVtYmVyLCByZXN1bHQ6IGFueVtdID0gW10pOiBhbnlbXSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgd2hpbGUgKCsraW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKGRlcHRoID4gMCAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5iYXNlRmxhdCh2YWx1ZSwgZGVwdGggLSAxLCByZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBwdXNoSW5kZXggPSAtMTtcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICAgICAgd2hpbGUgKCsrcHVzaEluZGV4IDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHRbb2Zmc2V0ICsgcHVzaEluZGV4XSA9IHZhbHVlW3B1c2hJbmRleF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYXJyYXlcbiAgICpcbiAgICog6YCS5b2S5omB5bmz5pWw57uEXG4gICAqIGBgYHRzXG4gICAqIHNydi5mbGF0KFsxLCBbMiwgMywgWzQsIDUsIFs2XV1dXSkgPT4gWzEsMiwzLDQsNSw2XVxuICAgKiBzcnYuZmxhdChbMSwgWzIsIDMsIFs0LCA1LCBbNl1dXV0sIDEpID0+IFsxLDIsMyxbNCwgNSwgWzZdXV1cbiAgICogYGBgXG4gICAqL1xuICBmbGF0PFQ+KGFycmF5OiByZWFkb25seSBUW10sIGRlcHRoOiBudW1iZXIgPSAxIC8gMCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyYXkpID8gdGhpcy5iYXNlRmxhdChhcnJheSBhcyBhbnlbXSwgZGVwdGgpIDogKGFycmF5IGFzIFRbXSk7XG4gIH1cbiAgLyoqXG4gICAqIEdyb3VwIHRoZSBhcnJheVxuICAgKlxuICAgKiDlr7nmlbDnu4Tov5vooYzliIbnu4RcbiAgICogYGBgdHNcbiAgICogc3J2Lmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKSA9PiB7XCI0XCI6WzQuMl0sXCI2XCI6WzYuMSw2LjNdfVxuICAgKiBzcnYuZ3JvdXBCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgdiA9PiB2Lmxlbmd0aCkgPT4ge1wiM1wiOltcIm9uZVwiLFwidHdvXCJdLFwiNVwiOltcInRocmVlXCJdfVxuICAgKiBgYGBcbiAgICovXG4gIGdyb3VwQnk8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSwgaXRlcmF0ZWU6ICh2YWx1ZTogVCkgPT4gc3RyaW5nIHwgbnVtYmVyKTogQXJyYXlTZXJ2aWNlR3JvdXBCeVJlc3VsdCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXkucmVkdWNlKChyZXN1bHQsIHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gW3ZhbHVlXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwge30gYXMgQXJyYXlTZXJ2aWNlR3JvdXBCeVJlc3VsdCk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5XG4gICAqXG4gICAqIOWIm+W7uuWOu+mHjeWQjueahOaVsOe7hFxuICAgKiBgYGB0c1xuICAgKiB1bmlxKFsxLCAyLCAyLCAzLCAxXSkgPT4gWzEsMiwzXVxuICAgKiB1bmlxKFt7IGE6IDEgfSwgeyBhOiAxIH0sIHsgYTogMiB9XSwgJ2EnKSA9PiBbe1wiYVwiOjF9LHtcImFcIjoyfV1cbiAgICogdW5pcShbeyBhOiAxIH0sIHsgYTogMSB9LCB7IGE6IDIgfV0sIGkgPT4gKGkuYSA9PT0gMSA/ICdhJyA6ICdiJykpID0+IFt7XCJhXCI6MX0se1wiYVwiOjJ9XVxuICAgKiBgYGBcbiAgICovXG4gIHVuaXE8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSwgcHJlZGljYXRlPzogc3RyaW5nIHwgKCh2YWx1ZTogVCkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgYXJyYXlcbiAgICAgICAgLnJlZHVjZSgobWFwLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHByZWRpY2F0ZVxuICAgICAgICAgICAgPyB0eXBlb2YgcHJlZGljYXRlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/ICh2YWx1ZSBhcyBhbnkpW3ByZWRpY2F0ZV1cbiAgICAgICAgICAgICAgOiBwcmVkaWNhdGUhKHZhbHVlKVxuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfSwgbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBUPigpKVxuICAgICAgICAudmFsdWVzKClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/cdk/platform";
|
|
5
|
+
/**
|
|
6
|
+
* A set of simple Cookie manipulation classes.
|
|
7
|
+
*
|
|
8
|
+
* 一组简单的 Cookie 操作类。
|
|
9
|
+
*/
|
|
10
|
+
class CookieService {
|
|
11
|
+
get doc() {
|
|
12
|
+
return this._doc || document;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Original cookie value
|
|
16
|
+
*
|
|
17
|
+
* 原始Cookie值
|
|
18
|
+
*/
|
|
19
|
+
get cookie() {
|
|
20
|
+
return this.platform.isBrowser ? this.doc.cookie : '';
|
|
21
|
+
}
|
|
22
|
+
constructor(_doc, platform) {
|
|
23
|
+
this._doc = _doc;
|
|
24
|
+
this.platform = platform;
|
|
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: "16.0.4", ngImport: i0, type: CookieService, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
94
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CookieService, providedIn: 'root' }); }
|
|
95
|
+
}
|
|
96
|
+
export { CookieService };
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: CookieService, decorators: [{
|
|
98
|
+
type: Injectable,
|
|
99
|
+
args: [{ providedIn: 'root' }]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
101
|
+
type: Inject,
|
|
102
|
+
args: [DOCUMENT]
|
|
103
|
+
}] }, { type: i1.Platform }]; } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvY29va2llLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQm5EOzs7O0dBSUc7QUFDSCxNQUNhLGFBQWE7SUFDeEIsSUFBWSxHQUFHO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELFlBQXNDLElBQWUsRUFBVSxRQUFrQjtRQUEzQyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFckY7Ozs7T0FJRztJQUNILE1BQU07UUFDSixNQUFNLEdBQUcsR0FBOEIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDYixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ3JCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM3RDthQUNGO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLE9BQXVCO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDbkMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNuQyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM1RDtRQUNELE1BQU0sTUFBTSxHQUF3QyxHQUFnQixDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDO2FBQzVDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFLLE1BQU0sQ0FBQyxDQUFDLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUN2RixVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ25DLEVBQUUsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUF1QjtRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBeEZVLGFBQWEsa0JBY0osUUFBUTtrSEFkakIsYUFBYSxjQURBLE1BQU07O1NBQ25CLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWVuQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZU9wdGlvbnMge1xuICBwYXRoPzogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBpcmF0aW9uIHRpbWUsIGBudW1iZXJgIGlzIHNlY29uZHNcbiAgICpcbiAgICog6L+H5pyf5pe26Ze077yMYG51bWJlcmAg57G75Z6L6KGo56S656eS5pWwXG4gICAqL1xuICBleHBpcmVzPzogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbiAgc2VjdXJlPzogYm9vbGVhbjtcbiAgSHR0cE9ubHk/OiBib29sZWFuO1xuICBTYW1lU2l0ZT86IGJvb2xlYW4gfCAnbGF4JyB8ICdzdHJpY3QnIHwgJ25vbmUnO1xufVxuXG4vKipcbiAqIEEgc2V0IG9mIHNpbXBsZSBDb29raWUgbWFuaXB1bGF0aW9uIGNsYXNzZXMuXG4gKlxuICog5LiA57uE566A5Y2V55qEIENvb2tpZSDmk43kvZznsbvjgIJcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb29raWVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBnZXQgZG9jKCk6IERvY3VtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jIHx8IGRvY3VtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIE9yaWdpbmFsIGNvb2tpZSB2YWx1ZVxuICAgKlxuICAgKiDljp/lp4tDb29raWXlgLxcbiAgICovXG4gIGdldCBjb29raWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIgPyB0aGlzLmRvYy5jb29raWUgOiAnJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvYzogTnpTYWZlQW55LCBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSkge31cblxuICAvKipcbiAgICogR2V0IGFsbCBjb29raWUga2V5LXZhbHVlIHBhaXJzXG4gICAqXG4gICAqIOiOt+WPluaJgOaciUNvb2tpZemUruWAvOWvuVxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IGFyciA9IHRoaXMuY29va2llLnNwbGl0KCc7ICcpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjb29raWUgPSBhcnJbaV07XG4gICAgICBjb25zdCBpbmRleCA9IGNvb2tpZS5pbmRleE9mKCc9Jyk7XG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQoY29va2llLnN1YnN0cmluZygwLCBpbmRleCkpO1xuICAgICAgICBpZiAocmV0W25hbWVdID09IG51bGwpIHtcbiAgICAgICAgICByZXRbbmFtZV0gPSBkZWNvZGVVUklDb21wb25lbnQoY29va2llLnN1YnN0cmluZyhpbmRleCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgZ2l2ZW4gY29va2llIGBrZXlgXG4gICAqXG4gICAqIOiOt+WPluaMh+WumiBga2V5YCDnmoTlgLxcbiAgICovXG4gIGdldChrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsKClba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdmFsdWUgZm9yIGdpdmVuIGNvb2tpZSBrZXlcbiAgICpcbiAgICog6K6+572u5oyH5a6aIENvb2tpZSDplK7nmoTlgLxcbiAgICovXG4gIHB1dChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IENvb2tpZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wdCA9IHsgcGF0aDogJy8nLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKHR5cGVvZiBvcHQuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgIG9wdC5leHBpcmVzID0gbmV3IERhdGUoK25ldyBEYXRlKCkgKyBvcHQuZXhwaXJlcyAqIDFlMyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0LmV4cGlyZXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHQuZXhwaXJlcyA9IG9wdC5leHBpcmVzID8gb3B0LmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnO1xuICAgIH1cbiAgICBjb25zdCBvcHRTdHI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB9ID0gb3B0IGFzIE56U2FmZUFueTtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMob3B0U3RyKVxuICAgICAgLmZpbHRlcihrID0+IG9wdFN0cltrXSAmJiBvcHRTdHJba10gIT09IHRydWUpXG4gICAgICAubWFwKGsgPT4gYCR7a309JHsob3B0U3RyW2tdIGFzIHN0cmluZykuc3BsaXQoJzsnKVswXX1gKVxuICAgICAgLmpvaW4oJzsnKTtcbiAgICB0aGlzLmRvYy5jb29raWUgPSBgJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGtleSkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX0ke1xuICAgICAgYXR0cmlidXRlcyA/IGA7ICR7YXR0cmlidXRlc31gIDogJydcbiAgICB9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZ2l2ZW4gY29va2llXG4gICAqXG4gICAqIOenu+mZpOaMh+WumiBDb29raWVcbiAgICovXG4gIHJlbW92ZShrZXk6IHN0cmluZywgb3B0aW9ucz86IENvb2tpZU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnB1dChrZXksICcnLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGNvb2tpZXNcbiAgICpcbiAgICog56e76Zmk5omA5pyJIENvb2tpZXNcbiAgICovXG4gIHJlbW92ZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvYy5jb29raWUgPSAnJztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/cdk/platform";
|
|
5
|
+
class ScrollService {
|
|
6
|
+
_getDoc() {
|
|
7
|
+
return this._doc || document;
|
|
8
|
+
}
|
|
9
|
+
_getWin() {
|
|
10
|
+
const doc = this._getDoc();
|
|
11
|
+
return doc.defaultView || window;
|
|
12
|
+
}
|
|
13
|
+
constructor(_doc, platform) {
|
|
14
|
+
this._doc = _doc;
|
|
15
|
+
this.platform = platform;
|
|
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: "16.0.4", ngImport: i0, type: ScrollService, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
79
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
|
|
80
|
+
}
|
|
81
|
+
export { ScrollService };
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScrollService, decorators: [{
|
|
83
|
+
type: Injectable,
|
|
84
|
+
args: [{ providedIn: 'root' }]
|
|
85
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
86
|
+
type: Inject,
|
|
87
|
+
args: [DOCUMENT]
|
|
88
|
+
}] }, { type: i1.Platform }]; } });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Jyb3dzZXIvc2Nyb2xsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJbkQsTUFDYSxhQUFhO0lBQ2hCLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFTyxPQUFPO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQXNDLElBQWUsRUFBVSxRQUFrQjtRQUEzQyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFckY7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLE9BQTBCO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM1QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2Y7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxPQUFPLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRTtZQUM5QixPQUFPLENBQUUsT0FBbUIsQ0FBQyxVQUFVLEVBQUcsT0FBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUE0QyxFQUFFLFFBQTBCO1FBQ3ZGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxPQUF3QixFQUFFLFlBQW9CLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQzVCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztTQUMvQjtRQUVELE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUN2QixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFbEUsSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtnQkFDcEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDL0I7U0FDRjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLFlBQW9CLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQzVCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQTlFVSxhQUFhLGtCQVVKLFFBQVE7a0hBVmpCLGFBQWEsY0FEQSxNQUFNOztTQUNuQixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFXbkIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfZ2V0RG9jKCk6IERvY3VtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jIHx8IGRvY3VtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0V2luKCk6IFdpbmRvdyB7XG4gICAgY29uc3QgZG9jID0gdGhpcy5fZ2V0RG9jKCk7XG4gICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2M6IE56U2FmZUFueSwgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0pIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPlua7muWKqOadoeS9jee9rlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCDmjIflrprlhYPntKDvvIzpu5jorqQgYHdpbmRvd2BcbiAgICovXG4gIGdldFNjcm9sbFBvc2l0aW9uKGVsZW1lbnQ/OiBFbGVtZW50IHwgV2luZG93KTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuIFswLCAwXTtcbiAgICB9XG5cbiAgICBjb25zdCB3aW4gPSB0aGlzLl9nZXRXaW4oKTtcbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSB3aW4pIHtcbiAgICAgIHJldHVybiBbKGVsZW1lbnQgYXMgRWxlbWVudCkuc2Nyb2xsTGVmdCwgKGVsZW1lbnQgYXMgRWxlbWVudCkuc2Nyb2xsVG9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFt3aW4uc2Nyb2xsWCwgd2luLnNjcm9sbFldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva7mu5rliqjmnaHkvY3nva5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQg5oyH5a6a5YWD57SgXG4gICAqL1xuICBzY3JvbGxUb1Bvc2l0aW9uKGVsZW1lbnQ6IEVsZW1lbnQgfCBXaW5kb3cgfCBudWxsIHwgdW5kZWZpbmVkLCBwb3NpdGlvbjogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKGVsZW1lbnQgfHwgdGhpcy5fZ2V0V2luKCkpLnNjcm9sbFRvKHBvc2l0aW9uWzBdLCBwb3NpdGlvblsxXSk7XG4gIH1cblxuICAvKipcbiAgICog6K6+572u5rua5Yqo5p2h6Iez5oyH5a6a5YWD57SgXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IOaMh+WumuWFg+e0oO+8jOm7mOiupCBgZG9jdW1lbnQuYm9keWBcbiAgICogQHBhcmFtIHRvcE9mZnNldCDlgY/np7vlgLzvvIzpu5jorqQgYDBgXG4gICAqL1xuICBzY3JvbGxUb0VsZW1lbnQoZWxlbWVudD86IEVsZW1lbnQgfCBudWxsLCB0b3BPZmZzZXQ6IG51bWJlciA9IDApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IHRoaXMuX2dldERvYygpLmJvZHk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuXG4gICAgY29uc3Qgd2luID0gdGhpcy5fZ2V0V2luKCk7XG4gICAgaWYgKHdpbiAmJiB3aW4uc2Nyb2xsQnkpIHtcbiAgICAgIHdpbi5zY3JvbGxCeSgwLCBlbGVtZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSB0b3BPZmZzZXQpO1xuXG4gICAgICBpZiAod2luLnNjcm9sbFkgPCAyMCkge1xuICAgICAgICB3aW4uc2Nyb2xsQnkoMCwgLXdpbi5zY3JvbGxZKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5rua5Yqo6Iez6aG26YOoXG4gICAqXG4gICAqIEBwYXJhbSB0b3BPZmZzZXQg5YGP56e75YC877yM6buY6K6kIGAwYFxuICAgKi9cbiAgc2Nyb2xsVG9Ub3AodG9wT2Zmc2V0OiBudW1iZXIgPSAwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvRWxlbWVudCh0aGlzLl9nZXREb2MoKS5ib2R5LCB0b3BPZmZzZXQpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
+
import { deepMergeKey } from '@delon/util/other';
|
|
4
|
+
import { ALAIN_CONFIG } from './config.types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
class AlainConfigService {
|
|
7
|
+
constructor(defaultConfig) {
|
|
8
|
+
this.config = { ...defaultConfig };
|
|
9
|
+
}
|
|
10
|
+
get(componentName, key) {
|
|
11
|
+
const res = (this.config[componentName] || {});
|
|
12
|
+
return key ? { [key]: res[key] } : res;
|
|
13
|
+
}
|
|
14
|
+
merge(componentName, ...defaultValues) {
|
|
15
|
+
return deepMergeKey({}, true, ...defaultValues, this.get(componentName));
|
|
16
|
+
}
|
|
17
|
+
attach(componentThis, componentName, defaultValues) {
|
|
18
|
+
Object.assign(componentThis, this.merge(componentName, defaultValues));
|
|
19
|
+
}
|
|
20
|
+
attachKey(componentThis, componentName, key) {
|
|
21
|
+
Object.assign(componentThis, this.get(componentName, key));
|
|
22
|
+
}
|
|
23
|
+
set(componentName, value) {
|
|
24
|
+
this.config[componentName] = { ...this.config[componentName], ...value };
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: AlainConfigService, deps: [{ token: ALAIN_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
27
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: AlainConfigService, providedIn: 'root' }); }
|
|
28
|
+
}
|
|
29
|
+
export { AlainConfigService };
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: AlainConfigService, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{ providedIn: 'root' }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
34
|
+
type: Optional
|
|
35
|
+
}, {
|
|
36
|
+
type: Inject,
|
|
37
|
+
args: [ALAIN_CONFIG]
|
|
38
|
+
}] }]; } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2NvbmZpZy9jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQStCLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzRSxNQUNhLGtCQUFrQjtJQUc3QixZQUE4QyxhQUEyQjtRQUN2RSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsR0FBRyxDQUEyQixhQUFnQixFQUFFLEdBQVk7UUFDMUQsTUFBTSxHQUFHLEdBQUcsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBZ0MsSUFBSSxFQUFFLENBQWMsQ0FBQztRQUM1RixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBMkIsYUFBZ0IsRUFBRSxHQUFHLGFBQW9DO1FBQ3ZGLE9BQU8sWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQTJCLGFBQXNCLEVBQUUsYUFBZ0IsRUFBRSxhQUE2QjtRQUN0RyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsU0FBUyxDQUEyQixhQUFzQixFQUFFLGFBQWdCLEVBQUUsR0FBVztRQUN2RixNQUFNLENBQUMsTUFBTSxDQUFDLGFBQW9CLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsR0FBRyxDQUEyQixhQUFnQixFQUFFLEtBQXFCO1FBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUMzRSxDQUFDOzhHQTFCVSxrQkFBa0Isa0JBR0csWUFBWTtrSEFIakMsa0JBQWtCLGNBREwsTUFBTTs7U0FDbkIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFJbkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBkZWVwTWVyZ2VLZXkgfSBmcm9tICdAZGVsb24vdXRpbC9vdGhlcic7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IEFsYWluQ29uZmlnLCBBbGFpbkNvbmZpZ0tleSwgQUxBSU5fQ09ORklHIH0gZnJvbSAnLi9jb25maWcudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsYWluQ29uZmlnU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnOiBBbGFpbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFMQUlOX0NPTkZJRykgZGVmYXVsdENvbmZpZz86IEFsYWluQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLmRlZmF1bHRDb25maWcgfTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgQWxhaW5Db25maWdLZXk+KGNvbXBvbmVudE5hbWU6IFQsIGtleT86IHN0cmluZyk6IEFsYWluQ29uZmlnW1RdIHtcbiAgICBjb25zdCByZXMgPSAoKHRoaXMuY29uZmlnW2NvbXBvbmVudE5hbWVdIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KSB8fCB7fSkgYXMgTnpTYWZlQW55O1xuICAgIHJldHVybiBrZXkgPyB7IFtrZXldOiByZXNba2V5XSB9IDogcmVzO1xuICB9XG5cbiAgbWVyZ2U8VCBleHRlbmRzIEFsYWluQ29uZmlnS2V5Pihjb21wb25lbnROYW1lOiBULCAuLi5kZWZhdWx0VmFsdWVzOiBBcnJheTxBbGFpbkNvbmZpZ1tUXT4pOiBBbGFpbkNvbmZpZ1tUXSB7XG4gICAgcmV0dXJuIGRlZXBNZXJnZUtleSh7fSwgdHJ1ZSwgLi4uZGVmYXVsdFZhbHVlcywgdGhpcy5nZXQoY29tcG9uZW50TmFtZSkpO1xuICB9XG5cbiAgYXR0YWNoPFQgZXh0ZW5kcyBBbGFpbkNvbmZpZ0tleT4oY29tcG9uZW50VGhpczogdW5rbm93biwgY29tcG9uZW50TmFtZTogVCwgZGVmYXVsdFZhbHVlczogQWxhaW5Db25maWdbVF0pOiB2b2lkIHtcbiAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFRoaXMgYXMgYW55LCB0aGlzLm1lcmdlKGNvbXBvbmVudE5hbWUsIGRlZmF1bHRWYWx1ZXMpKTtcbiAgfVxuXG4gIGF0dGFjaEtleTxUIGV4dGVuZHMgQWxhaW5Db25maWdLZXk+KGNvbXBvbmVudFRoaXM6IHVua25vd24sIGNvbXBvbmVudE5hbWU6IFQsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRUaGlzIGFzIGFueSwgdGhpcy5nZXQoY29tcG9uZW50TmFtZSwga2V5KSk7XG4gIH1cblxuICBzZXQ8VCBleHRlbmRzIEFsYWluQ29uZmlnS2V5Pihjb21wb25lbnROYW1lOiBULCB2YWx1ZTogQWxhaW5Db25maWdbVF0pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1tjb21wb25lbnROYW1lXSA9IHsgLi4udGhpcy5jb25maWdbY29tcG9uZW50TmFtZV0sIC4uLnZhbHVlIH07XG4gIH1cbn1cbiJdfQ==
|