@solar-angular/core 18.2.0 → 18.3.1
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/index.mjs +1 -2
- package/esm2022/provider.mjs +4 -3
- package/fesm2022/solar-angular-core.mjs +4 -77
- package/fesm2022/solar-angular-core.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/package.json +1 -1
- package/provider.d.ts +2 -4
- package/esm2022/utils/index.mjs +0 -2
- package/esm2022/utils/tree.utils.mjs +0 -73
- package/utils/index.d.ts +0 -1
- package/utils/tree.utils.d.ts +0 -19
package/esm2022/index.mjs
CHANGED
|
@@ -2,5 +2,4 @@ export * from './config';
|
|
|
2
2
|
export * from './operator';
|
|
3
3
|
export * from './pipes';
|
|
4
4
|
export * from './provider';
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuIl19
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyJztcbiJdfQ==
|
package/esm2022/provider.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { makeEnvironmentProviders } from '@angular/core';
|
|
1
2
|
import { SOLAR_CONFIG } from './config';
|
|
2
3
|
export function provideSolar(config) {
|
|
3
|
-
return [
|
|
4
|
+
return makeEnvironmentProviders([
|
|
4
5
|
{
|
|
5
6
|
provide: SOLAR_CONFIG,
|
|
6
7
|
useValue: config
|
|
7
8
|
}
|
|
8
|
-
];
|
|
9
|
+
]);
|
|
9
10
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFFckQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFtQjtJQUM5QyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLE1BQU07U0FDakI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU09MQVJfQ09ORklHLCBTb2xhckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTb2xhcihjb25maWc6IFNvbGFyQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTT0xBUl9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgfVxuICBdKTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Pipe } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Pipe, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { finalize } from 'rxjs';
|
|
4
4
|
|
|
5
5
|
const SOLAR_CONFIG = new InjectionToken('');
|
|
@@ -62,90 +62,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
62
62
|
}] });
|
|
63
63
|
|
|
64
64
|
function provideSolar(config) {
|
|
65
|
-
return [
|
|
65
|
+
return makeEnvironmentProviders([
|
|
66
66
|
{
|
|
67
67
|
provide: SOLAR_CONFIG,
|
|
68
68
|
useValue: config
|
|
69
69
|
}
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function list2tree(list, pid) {
|
|
74
|
-
const map = new Map();
|
|
75
|
-
const tree = [];
|
|
76
|
-
list = list.map(o => Object.assign({}, o));
|
|
77
|
-
// 建立索引
|
|
78
|
-
for (const node of list) {
|
|
79
|
-
map.set(node.id, node);
|
|
80
|
-
}
|
|
81
|
-
for (const node of list) {
|
|
82
|
-
const parent = map.get(node[pid]);
|
|
83
|
-
if (parent) {
|
|
84
|
-
node.parent = parent;
|
|
85
|
-
parent.children ??= [];
|
|
86
|
-
parent.children.push(node);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
tree.push(node);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
for (const node of list) {
|
|
93
|
-
node.isLeaf = !node.children?.length;
|
|
94
|
-
}
|
|
95
|
-
return tree;
|
|
96
|
-
}
|
|
97
|
-
function tree2list(tree) {
|
|
98
|
-
const list = [], stack = tree.slice(0);
|
|
99
|
-
while (stack.length) {
|
|
100
|
-
const node = stack.pop();
|
|
101
|
-
const children = node.children;
|
|
102
|
-
if (children?.length) {
|
|
103
|
-
stack.push(...children);
|
|
104
|
-
}
|
|
105
|
-
list.push(node);
|
|
106
|
-
}
|
|
107
|
-
return list;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* 将一个二维数组转为一棵树,二维数组里的每一个子数组对应着树的每一层级
|
|
111
|
-
* @example
|
|
112
|
-
* ```ts
|
|
113
|
-
* levels2tree([channels, categories], 'channel')
|
|
114
|
-
* ```
|
|
115
|
-
* @param levels
|
|
116
|
-
* @param pid
|
|
117
|
-
*/
|
|
118
|
-
function levels2tree(levels, pid) {
|
|
119
|
-
const maps = levels.map(() => new Map());
|
|
120
|
-
levels = levels.map(list => list.map(o => Object.assign({}, o)));
|
|
121
|
-
// 建立索引
|
|
122
|
-
for (let index = 0; index < levels.length; index++) {
|
|
123
|
-
for (const node of levels[index]) {
|
|
124
|
-
maps[index].set(node.id, node);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// 倒序遍历,向前寻找 parent
|
|
128
|
-
for (let index = levels.length - 1; index > 0; index--) {
|
|
129
|
-
for (const node of levels[index]) {
|
|
130
|
-
const parent = maps[index - 1].get(node[pid]);
|
|
131
|
-
if (parent) {
|
|
132
|
-
node.parent = parent;
|
|
133
|
-
parent.children ??= [];
|
|
134
|
-
parent.children.push(node);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// 最后一层,一定是叶子节点
|
|
139
|
-
// TODO:如果枝条之间的层级数不一致,这里就不能这样写,应该遍历每一级的 list,通过判断有无 children 来设置 isLeaf
|
|
140
|
-
for (const node of levels.at(-1)) {
|
|
141
|
-
node.isLeaf = !node.children?.length;
|
|
142
|
-
}
|
|
143
|
-
return levels[0];
|
|
70
|
+
]);
|
|
144
71
|
}
|
|
145
72
|
|
|
146
73
|
/**
|
|
147
74
|
* Generated bundle index. Do not edit.
|
|
148
75
|
*/
|
|
149
76
|
|
|
150
|
-
export { CnumberPipe, FindByIdPipe, SOLAR_CONFIG, attachLoading,
|
|
77
|
+
export { CnumberPipe, FindByIdPipe, SOLAR_CONFIG, attachLoading, provideSolar };
|
|
151
78
|
//# sourceMappingURL=solar-angular-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-core.mjs","sources":["../../../packages/core/src/config.ts","../../../packages/core/src/operator.ts","../../../packages/core/src/pipes/cnumber.pipe.ts","../../../packages/core/src/pipes/find-by-id.pipe.ts","../../../packages/core/src/provider.ts","../../../packages/core/src/
|
|
1
|
+
{"version":3,"file":"solar-angular-core.mjs","sources":["../../../packages/core/src/config.ts","../../../packages/core/src/operator.ts","../../../packages/core/src/pipes/cnumber.pipe.ts","../../../packages/core/src/pipes/find-by-id.pipe.ts","../../../packages/core/src/provider.ts","../../../packages/core/src/solar-angular-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface SolarConfig {\n clientId: string;\n earthUrl: string;\n mercuryUrl: string;\n}\n\nexport const SOLAR_CONFIG = new InjectionToken<SolarConfig>('');\n","import { WritableSignal } from '@angular/core';\nimport { Observable, finalize } from 'rxjs';\n\n/**\n * Attaches a loading indicator to an observable.\n *\n * @param loading - A writable signal indicating the loading state.\n * @returns A function that takes an observable and returns a new observable with loading state managed.\n */\nexport function attachLoading<T>(loading: WritableSignal<boolean>) {\n return (observable: Observable<T>) => {\n loading.set(true)\n return observable.pipe(\n finalize(() => loading.set(false))\n );\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'cnumber',\n standalone: true\n})\nexport class CnumberPipe implements PipeTransform {\n\n transform(v: string): any {\n if (!/^(0|[1-9]\\d*)(\\.\\d+)?$/.test(v)) {\n return null;\n }\n let unit = '千百拾亿千百拾万千百拾元角分';\n let str = '';\n v += '00';\n const p = v.indexOf('.');\n if (p >= 0) {\n v = v.substring(0, p) + v.substr(p + 1, 2);\n }\n unit = unit.substr(unit.length - v.length);\n for (let i = 0; i < v.length; i++) {\n str += '零壹贰叁肆伍陆柒捌玖'.charAt(+v.charAt(i)) + unit.charAt(i);\n }\n return str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'findById',\n standalone: true\n})\nexport class FindByIdPipe<T extends { id: any }> implements PipeTransform {\n\n transform(id: T['id'], array: T[]): unknown {\n return array.find(item => item.id === id) ?? null;\n }\n\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { SOLAR_CONFIG, SolarConfig } from './config';\n\nexport function provideSolar(config: SolarConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: SOLAR_CONFIG,\n useValue: config\n }\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
package/provider.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
1
2
|
import { SolarConfig } from './config';
|
|
2
|
-
export declare function provideSolar(config: SolarConfig):
|
|
3
|
-
provide: import("@angular/core").InjectionToken<SolarConfig>;
|
|
4
|
-
useValue: SolarConfig;
|
|
5
|
-
}[];
|
|
3
|
+
export declare function provideSolar(config: SolarConfig): EnvironmentProviders;
|
package/esm2022/utils/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './tree.utils';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJlZS51dGlscyc7XG4iXX0=
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
export function list2tree(list, pid) {
|
|
2
|
-
const map = new Map();
|
|
3
|
-
const tree = [];
|
|
4
|
-
list = list.map(o => Object.assign({}, o));
|
|
5
|
-
// 建立索引
|
|
6
|
-
for (const node of list) {
|
|
7
|
-
map.set(node.id, node);
|
|
8
|
-
}
|
|
9
|
-
for (const node of list) {
|
|
10
|
-
const parent = map.get(node[pid]);
|
|
11
|
-
if (parent) {
|
|
12
|
-
node.parent = parent;
|
|
13
|
-
parent.children ??= [];
|
|
14
|
-
parent.children.push(node);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
tree.push(node);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
for (const node of list) {
|
|
21
|
-
node.isLeaf = !node.children?.length;
|
|
22
|
-
}
|
|
23
|
-
return tree;
|
|
24
|
-
}
|
|
25
|
-
export function tree2list(tree) {
|
|
26
|
-
const list = [], stack = tree.slice(0);
|
|
27
|
-
while (stack.length) {
|
|
28
|
-
const node = stack.pop();
|
|
29
|
-
const children = node.children;
|
|
30
|
-
if (children?.length) {
|
|
31
|
-
stack.push(...children);
|
|
32
|
-
}
|
|
33
|
-
list.push(node);
|
|
34
|
-
}
|
|
35
|
-
return list;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 将一个二维数组转为一棵树,二维数组里的每一个子数组对应着树的每一层级
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* levels2tree([channels, categories], 'channel')
|
|
42
|
-
* ```
|
|
43
|
-
* @param levels
|
|
44
|
-
* @param pid
|
|
45
|
-
*/
|
|
46
|
-
export function levels2tree(levels, pid) {
|
|
47
|
-
const maps = levels.map(() => new Map());
|
|
48
|
-
levels = levels.map(list => list.map(o => Object.assign({}, o)));
|
|
49
|
-
// 建立索引
|
|
50
|
-
for (let index = 0; index < levels.length; index++) {
|
|
51
|
-
for (const node of levels[index]) {
|
|
52
|
-
maps[index].set(node.id, node);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// 倒序遍历,向前寻找 parent
|
|
56
|
-
for (let index = levels.length - 1; index > 0; index--) {
|
|
57
|
-
for (const node of levels[index]) {
|
|
58
|
-
const parent = maps[index - 1].get(node[pid]);
|
|
59
|
-
if (parent) {
|
|
60
|
-
node.parent = parent;
|
|
61
|
-
parent.children ??= [];
|
|
62
|
-
parent.children.push(node);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// 最后一层,一定是叶子节点
|
|
67
|
-
// TODO:如果枝条之间的层级数不一致,这里就不能这样写,应该遍历每一级的 list,通过判断有无 children 来设置 isLeaf
|
|
68
|
-
for (const node of levels.at(-1)) {
|
|
69
|
-
node.isLeaf = !node.children?.length;
|
|
70
|
-
}
|
|
71
|
-
return levels[0];
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3RyZWUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFnQixFQUFFLEdBQVc7SUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBRTVCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzQyxPQUFPO0lBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQXFCLElBQVM7SUFDckQsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUcsQ0FBQztRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRS9CLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFlLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQW9CLEVBQUUsR0FBVztJQUMzRCxNQUFNLElBQUksR0FBb0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFMUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE9BQU87SUFDUCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLEtBQUssSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDckIsTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZix1RUFBdUU7SUFDdkUsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRyZWVOb2RlIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgcGFyZW50PzogVHJlZU5vZGU7XG4gIGNoaWxkcmVuPzogVHJlZU5vZGVbXTtcbiAgaXNMZWFmPzogYm9vbGVhbjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdDJ0cmVlKGxpc3Q6IFRyZWVOb2RlW10sIHBpZDogc3RyaW5nKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8VHJlZU5vZGVbJ2lkJ10sIFRyZWVOb2RlPigpO1xuICBjb25zdCB0cmVlOiBUcmVlTm9kZVtdID0gW107XG5cbiAgbGlzdCA9IGxpc3QubWFwKG8gPT4gT2JqZWN0LmFzc2lnbih7fSwgbykpO1xuXG4gIC8vIOW7uueri+e0ouW8lVxuICBmb3IgKGNvbnN0IG5vZGUgb2YgbGlzdCkge1xuICAgIG1hcC5zZXQobm9kZS5pZCwgbm9kZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IG5vZGUgb2YgbGlzdCkge1xuICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQobm9kZVtwaWRdKTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgIHBhcmVudC5jaGlsZHJlbiA/Pz0gW107XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJlZS5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgbm9kZSBvZiBsaXN0KSB7XG4gICAgbm9kZS5pc0xlYWYgPSAhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlMmxpc3Q8VCBleHRlbmRzIFRyZWVOb2RlPih0cmVlOiBUW10pOiBUW10ge1xuICBjb25zdCBsaXN0ID0gW10sIHN0YWNrID0gdHJlZS5zbGljZSgwKTtcblxuICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHN0YWNrLnBvcCgpITtcbiAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG5cbiAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgc3RhY2sucHVzaCguLi5jaGlsZHJlbiBhcyBUW10pO1xuICAgIH1cblxuICAgIGxpc3QucHVzaChub2RlKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuXG4vKipcbiAqIOWwhuS4gOS4quS6jOe7tOaVsOe7hOi9rOS4uuS4gOajteagke+8jOS6jOe7tOaVsOe7hOmHjOeahOavj+S4gOS4quWtkOaVsOe7hOWvueW6lOedgOagkeeahOavj+S4gOWxgue6p1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBsZXZlbHMydHJlZShbY2hhbm5lbHMsIGNhdGVnb3JpZXNdLCAnY2hhbm5lbCcpXG4gKiBgYGBcbiAqIEBwYXJhbSBsZXZlbHNcbiAqIEBwYXJhbSBwaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxldmVsczJ0cmVlKGxldmVsczogVHJlZU5vZGVbXVtdLCBwaWQ6IHN0cmluZykge1xuICBjb25zdCBtYXBzOiBNYXA8VHJlZU5vZGVbJ2lkJ10sIFRyZWVOb2RlPltdID0gbGV2ZWxzLm1hcCgoKSA9PiBuZXcgTWFwKCkpO1xuXG4gIGxldmVscyA9IGxldmVscy5tYXAobGlzdCA9PiBsaXN0Lm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8pKSk7XG5cbiAgLy8g5bu656uL57Si5byVXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZXZlbHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIGxldmVsc1tpbmRleF0pIHtcbiAgICAgIG1hcHNbaW5kZXhdLnNldChub2RlLmlkLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyDlgJLluo/pgY3ljobvvIzlkJHliY3lr7vmib4gcGFyZW50XG4gIGZvciAobGV0IGluZGV4ID0gbGV2ZWxzLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBsZXZlbHNbaW5kZXhdKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBtYXBzW2luZGV4IC0gMV0uZ2V0KG5vZGVbcGlkXSk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPz89IFtdO1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyDmnIDlkI7kuIDlsYLvvIzkuIDlrprmmK/lj7blrZDoioLngrlcbiAgLy8gVE9ET++8muWmguaenOaeneadoeS5i+mXtOeahOWxgue6p+aVsOS4jeS4gOiHtO+8jOi/memHjOWwseS4jeiDvei/meagt+WGme+8jOW6lOivpemBjeWOhuavj+S4gOe6p+eahCBsaXN077yM6YCa6L+H5Yik5pat5pyJ5pegIGNoaWxkcmVuIOadpeiuvue9riBpc0xlYWZcbiAgZm9yIChjb25zdCBub2RlIG9mIGxldmVscy5hdCgtMSkhKSB7XG4gICAgbm9kZS5pc0xlYWYgPSAhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGxldmVsc1swXTtcbn1cbiJdfQ==
|
package/utils/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './tree.utils';
|
package/utils/tree.utils.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export interface TreeNode {
|
|
2
|
-
id: number | string;
|
|
3
|
-
parent?: TreeNode;
|
|
4
|
-
children?: TreeNode[];
|
|
5
|
-
isLeaf?: boolean;
|
|
6
|
-
[key: string]: any;
|
|
7
|
-
}
|
|
8
|
-
export declare function list2tree(list: TreeNode[], pid: string): TreeNode[];
|
|
9
|
-
export declare function tree2list<T extends TreeNode>(tree: T[]): T[];
|
|
10
|
-
/**
|
|
11
|
-
* 将一个二维数组转为一棵树,二维数组里的每一个子数组对应着树的每一层级
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* levels2tree([channels, categories], 'channel')
|
|
15
|
-
* ```
|
|
16
|
-
* @param levels
|
|
17
|
-
* @param pid
|
|
18
|
-
*/
|
|
19
|
-
export declare function levels2tree(levels: TreeNode[][], pid: string): TreeNode[];
|