@solar-angular/core 18.2.0 → 18.3.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/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
- export * from './utils';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyJztcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBRXJELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBbUI7SUFDOUMsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLE1BQU07U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNPTEFSX0NPTkZJRywgU29sYXJDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU29sYXIoY29uZmlnOiBTb2xhckNvbmZpZykge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNPTEFSX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICB9XG4gIF07XG59XG4iXX0=
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, levels2tree, list2tree, provideSolar, tree2list };
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/utils/tree.utils.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 { SOLAR_CONFIG, SolarConfig } from './config';\n\nexport function provideSolar(config: SolarConfig) {\n return [\n {\n provide: SOLAR_CONFIG,\n useValue: config\n }\n ];\n}\n","export interface TreeNode {\n id: number | string;\n parent?: TreeNode;\n children?: TreeNode[];\n isLeaf?: boolean;\n [key: string]: any;\n}\n\nexport function list2tree(list: TreeNode[], pid: string) {\n const map = new Map<TreeNode['id'], TreeNode>();\n const tree: TreeNode[] = [];\n\n list = list.map(o => Object.assign({}, o));\n\n // 建立索引\n for (const node of list) {\n map.set(node.id, node);\n }\n\n for (const node of list) {\n const parent = map.get(node[pid]);\n if (parent) {\n node.parent = parent;\n parent.children ??= [];\n parent.children.push(node);\n } else {\n tree.push(node);\n }\n }\n\n for (const node of list) {\n node.isLeaf = !node.children?.length;\n }\n\n return tree;\n}\n\nexport function tree2list<T extends TreeNode>(tree: T[]): T[] {\n const list = [], stack = tree.slice(0);\n\n while (stack.length) {\n const node = stack.pop()!;\n const children = node.children;\n\n if (children?.length) {\n stack.push(...children as T[]);\n }\n\n list.push(node);\n }\n\n return list;\n}\n\n/**\n * 将一个二维数组转为一棵树,二维数组里的每一个子数组对应着树的每一层级\n * @example\n * ```ts\n * levels2tree([channels, categories], 'channel')\n * ```\n * @param levels\n * @param pid\n */\nexport function levels2tree(levels: TreeNode[][], pid: string) {\n const maps: Map<TreeNode['id'], TreeNode>[] = levels.map(() => new Map());\n\n levels = levels.map(list => list.map(o => Object.assign({}, o)));\n\n // 建立索引\n for (let index = 0; index < levels.length; index++) {\n for (const node of levels[index]) {\n maps[index].set(node.id, node);\n }\n }\n\n // 倒序遍历,向前寻找 parent\n for (let index = levels.length - 1; index > 0; index--) {\n for (const node of levels[index]) {\n const parent = maps[index - 1].get(node[pid]);\n if (parent) {\n node.parent = parent;\n parent.children ??= [];\n parent.children.push(node);\n }\n }\n }\n\n // 最后一层,一定是叶子节点\n // TODO:如果枝条之间的层级数不一致,这里就不能这样写,应该遍历每一级的 list,通过判断有无 children 来设置 isLeaf\n for (const node of levels.at(-1)!) {\n node.isLeaf = !node.children?.length;\n }\n\n return levels[0];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
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
@@ -2,4 +2,3 @@ export * from './config';
2
2
  export * from './operator';
3
3
  export * from './pipes';
4
4
  export * from './provider';
5
- export * from './utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solar-angular/core",
3
- "version": "18.2.0",
3
+ "version": "18.3.0",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
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;
@@ -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';
@@ -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[];