@delon/util 19.1.0 → 20.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.
Files changed (95) hide show
  1. package/array/index.d.ts +149 -2
  2. package/browser/index.d.ts +134 -5
  3. package/config/index.d.ts +1396 -12
  4. package/date-time/index.d.ts +116 -2
  5. package/decorator/index.d.ts +37 -2
  6. package/fesm2022/array.mjs +9 -8
  7. package/fesm2022/array.mjs.map +1 -1
  8. package/fesm2022/browser.mjs +7 -6
  9. package/fesm2022/browser.mjs.map +1 -1
  10. package/fesm2022/config.mjs +3 -3
  11. package/fesm2022/config.mjs.map +1 -1
  12. package/fesm2022/date-time.mjs +1 -1
  13. package/fesm2022/decorator.mjs +1 -66
  14. package/fesm2022/decorator.mjs.map +1 -1
  15. package/fesm2022/format.mjs +8 -7
  16. package/fesm2022/format.mjs.map +1 -1
  17. package/fesm2022/other.mjs +3 -3
  18. package/fesm2022/pipe-currency.mjs +13 -13
  19. package/fesm2022/pipe-filter.mjs +7 -7
  20. package/fesm2022/pipe-format.mjs +7 -7
  21. package/form/index.d.ts +80 -2
  22. package/format/index.d.ts +240 -4
  23. package/math/index.d.ts +50 -2
  24. package/other/index.d.ts +124 -4
  25. package/package.json +1 -1
  26. package/pipes/currency/index.d.ts +52 -4
  27. package/pipes/filter/index.d.ts +22 -2
  28. package/pipes/format/index.d.ts +36 -2
  29. package/token/index.d.ts +18 -2
  30. package/array/array-type.service.d.ts +0 -68
  31. package/array/array.service.d.ts +0 -78
  32. package/browser/cookie.service.d.ts +0 -62
  33. package/browser/copy.d.ts +0 -6
  34. package/browser/is-empty.d.ts +0 -6
  35. package/browser/scroll.service.d.ts +0 -34
  36. package/browser/style.d.ts +0 -19
  37. package/config/abc/cell.type.d.ts +0 -118
  38. package/config/abc/date-picker.type.d.ts +0 -50
  39. package/config/abc/error-collect.type.d.ts +0 -10
  40. package/config/abc/exception.type.d.ts +0 -7
  41. package/config/abc/image.type.d.ts +0 -15
  42. package/config/abc/index.d.ts +0 -17
  43. package/config/abc/loading.type.d.ts +0 -29
  44. package/config/abc/lodop.type.d.ts +0 -33
  45. package/config/abc/media.type.d.ts +0 -11
  46. package/config/abc/onboarding.type.d.ts +0 -4
  47. package/config/abc/page-header.type.d.ts +0 -39
  48. package/config/abc/pdf.type.d.ts +0 -35
  49. package/config/abc/se.type.d.ts +0 -32
  50. package/config/abc/sg.type.d.ts +0 -10
  51. package/config/abc/st.type.d.ts +0 -459
  52. package/config/abc/sv.type.d.ts +0 -14
  53. package/config/abc/xlsx.type.d.ts +0 -12
  54. package/config/abc/zip.type.d.ts +0 -10
  55. package/config/acl/acl.type.d.ts +0 -32
  56. package/config/auth/auth.type.d.ts +0 -47
  57. package/config/cache/cache.type.d.ts +0 -66
  58. package/config/chart/chart.type.d.ts +0 -31
  59. package/config/config.service.d.ts +0 -14
  60. package/config/config.types.d.ts +0 -47
  61. package/config/mock/mock.type.d.ts +0 -14
  62. package/config/sf/sf.type.d.ts +0 -131
  63. package/config/theme/http.type.d.ts +0 -15
  64. package/config/theme/i18n.type.d.ts +0 -14
  65. package/config/theme/index.d.ts +0 -4
  66. package/config/theme/pipe.type.d.ts +0 -7
  67. package/config/theme/responsive.type.d.ts +0 -10
  68. package/config/util/array.type.d.ts +0 -22
  69. package/config/util/currency.type.d.ts +0 -39
  70. package/date-time/picker.d.ts +0 -68
  71. package/date-time/time.d.ts +0 -43
  72. package/decorator/convert.d.ts +0 -32
  73. package/decorator/zone-outside.d.ts +0 -35
  74. package/form/match-control.d.ts +0 -15
  75. package/form/validators.d.ts +0 -62
  76. package/format/currency.service.d.ts +0 -38
  77. package/format/currency.types.d.ts +0 -82
  78. package/format/string.d.ts +0 -42
  79. package/format/validate.d.ts +0 -72
  80. package/math/in-range.d.ts +0 -14
  81. package/math/round.d.ts +0 -33
  82. package/other/assert.d.ts +0 -36
  83. package/other/deep.d.ts +0 -33
  84. package/other/lazy.service.d.ts +0 -45
  85. package/other/logger.d.ts +0 -5
  86. package/pipes/currency/cny.pipe.d.ts +0 -14
  87. package/pipes/currency/mega.pipe.d.ts +0 -15
  88. package/pipes/currency/module.d.ts +0 -9
  89. package/pipes/currency/price.pipe.d.ts +0 -18
  90. package/pipes/filter/filter.pipe.d.ts +0 -13
  91. package/pipes/filter/module.d.ts +0 -7
  92. package/pipes/format/mask.pipe.d.ts +0 -27
  93. package/pipes/format/module.d.ts +0 -7
  94. package/token/page-visibility.d.ts +0 -8
  95. package/token/window.d.ts +0 -7
@@ -1,2 +1,116 @@
1
- export * from './time';
2
- export * from './picker';
1
+ import { AlainThemePipeDateFormatCustom } from '@delon/util/config';
2
+ import { NzSafeAny } from 'ng-zorro-antd/core/types';
3
+ import { DateLocale } from 'ng-zorro-antd/i18n';
4
+ import { DisabledDateFn, DisabledTimeFn } from 'ng-zorro-antd/date-picker';
5
+
6
+ /**
7
+ * Get the time range, return `[ Date, Date]` for the start and end dates
8
+ *
9
+ * 获取时间范围
10
+ *
11
+ * @param type 类型,带 `-` 表示过去一个时间,若指定 `number` 表示天数
12
+ * @param time 开始时间
13
+ * @param ignoreMaxTime 忽略追加结束日期的最大时间值
14
+ */
15
+ declare function getTimeDistance(type: 'today' | '-today' | 'yesterday' | 'week' | '-week' | 'month' | '-month' | 'year' | '-year' | number, time?: Date | string | number, options?: {
16
+ ignoreMaxTime?: boolean;
17
+ }): [Date, Date];
18
+ /**
19
+ * fix time is the most, big value
20
+ */
21
+ declare function fixEndTimeOfRange(dates: [Date, Date]): [Date, Date];
22
+ interface ToDateOptions {
23
+ /** If parsing fails try to parse the date by pressing `formatString` */
24
+ formatString?: string;
25
+ /** If parsing fails returned default value, default: `new Date(NaN)` */
26
+ defaultValue?: NzSafeAny;
27
+ timestampSecond?: boolean;
28
+ }
29
+ /**
30
+ * Convert to `Date` format
31
+ *
32
+ * @param value When is a number, it's treated as a timestamp; If it's seconds, you need to provide the `options.timestampSecond` parameter.
33
+ */
34
+ declare function toDate(value?: Date | string | number | null, options?: string | ToDateOptions): Date;
35
+ /**
36
+ * Format date, supports `Date, number, string` types
37
+ *
38
+ * @param value When is a number, it is treated as a timestamp (Support seconds and milliseconds timestamp).
39
+ * @param formatString Please refer to [date-fnd format](https://date-fns.org/v2.30.0/docs/format) for string format
40
+ * @param dateLocale Recommended to be consistent with NG-ZORRO by using `inject(NZ_DATE_LOCALE)`
41
+ */
42
+ declare function formatDate(value: Date | string | number, formatString: string, options?: {
43
+ locale?: DateLocale;
44
+ customFormat?: AlainThemePipeDateFormatCustom;
45
+ }): string;
46
+
47
+ declare class DateTimePickerUtil {
48
+ /**
49
+ * Current local time
50
+ *
51
+ * 当前本地时间
52
+ */
53
+ get now(): Date;
54
+ /**
55
+ * Current local date (not including time part)
56
+ *
57
+ * 当前本地日期(不包含时间部分)
58
+ */
59
+ get date(): Date;
60
+ /**
61
+ * Remove the time part of the date
62
+ *
63
+ * 移除日期的时间部分
64
+ */
65
+ removeTime(d: Date): Date;
66
+ /**
67
+ * Format date-time
68
+ *
69
+ * 格式化日期
70
+ */
71
+ format(d: number | Date, formatString?: string): string;
72
+ private genTick;
73
+ /**
74
+ * Calculate the number of days between two dates, `0` means the same day
75
+ *
76
+ * 计算两个日期相差天数,`0` 表示同一天
77
+ */
78
+ getDiffDays(dateLeft: Date | number, dateRight?: Date | number): number;
79
+ /**
80
+ * Disabled Before date (Default: today), Generally serves `nzDisabledDate`
81
+ *
82
+ * 禁用之前日期(默认:今天),一般服务于 `nzDisabledDate`
83
+ */
84
+ disabledBeforeDate(options?: {
85
+ offsetDays?: Date | number;
86
+ }): DisabledDateFn;
87
+ /**
88
+ * Disabled After date (Default: today), Generally serves `nzDisabledDate`
89
+ *
90
+ * 禁用之后日期(默认:今天),一般服务于 `nzDisabledDate`
91
+ */
92
+ disabledAfterDate(options?: {
93
+ offsetDays?: Date | number;
94
+ }): DisabledDateFn;
95
+ private baseDisabledTime;
96
+ /**
97
+ * Disabled Before time (Default: now), Generally serves `nzDisabledTime`
98
+ *
99
+ * 禁用之前时间(默认:现在),一般服务于 `nzDisabledTime`
100
+ */
101
+ disabledBeforeTime(options?: {
102
+ offsetSeconds?: number;
103
+ }): DisabledTimeFn;
104
+ /**
105
+ * Disabled After time (Default: now), Generally serves `nzDisabledTime`
106
+ *
107
+ * 禁用之后时间(默认:现在),一般服务于 `nzDisabledTime`
108
+ */
109
+ disabledAfterTime(options?: {
110
+ offsetSeconds?: number;
111
+ }): DisabledTimeFn;
112
+ }
113
+ declare const dateTimePickerUtil: DateTimePickerUtil;
114
+
115
+ export { DateTimePickerUtil, dateTimePickerUtil, fixEndTimeOfRange, formatDate, getTimeDistance, toDate };
116
+ export type { ToDateOptions };
@@ -1,2 +1,37 @@
1
- export * from './convert';
2
- export * from './zone-outside';
1
+ interface ZoneOptions {
2
+ ngZoneName?: string;
3
+ }
4
+ type DecoratorType = (target: unknown, fn: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
5
+ /**
6
+ * The decoration method runs in `runOutsideAngular`
7
+ *
8
+ * 装饰方法运行在 `runOutsideAngular` 内
9
+ *
10
+ * ```ts
11
+ * class MockClass {
12
+ * readonly ngZone = inject(NgZone);
13
+ *
14
+ * {AT}ZoneOutside()
15
+ * runOutsideAngular(): void {}
16
+ * }
17
+ * ```
18
+ */
19
+ declare function ZoneOutside(options?: ZoneOptions): DecoratorType;
20
+ /**
21
+ * The decoration method runs in `run`
22
+ *
23
+ * 装饰方法运行在 `run` 内
24
+ *
25
+ * ```ts
26
+ * class MockClass {
27
+ * readonly ngZone = inject(NgZone);
28
+ *
29
+ * {AT}ZoneRun()
30
+ * run(): void {}
31
+ * }
32
+ * ```
33
+ */
34
+ declare function ZoneRun(options?: ZoneOptions): DecoratorType;
35
+
36
+ export { ZoneOutside, ZoneRun };
37
+ export type { ZoneOptions };
@@ -1,12 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AlainConfigService } from '@delon/util/config';
3
4
  import { NzTreeNode } from 'ng-zorro-antd/core/tree';
4
- import * as i1 from '@delon/util/config';
5
5
 
6
6
  class ArrayService {
7
+ cogSrv = inject(AlainConfigService);
7
8
  c;
8
- constructor(cog) {
9
- this.c = cog.merge('utilArray', {
9
+ constructor() {
10
+ this.c = this.cogSrv.merge('utilArray', {
10
11
  deepMapName: 'deep',
11
12
  parentMapName: 'parent',
12
13
  idMapName: 'id',
@@ -269,13 +270,13 @@ class ArrayService {
269
270
  }, new Map())
270
271
  .values());
271
272
  }
272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ArrayService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
273
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ArrayService, providedIn: 'root' });
273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ArrayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
274
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ArrayService, providedIn: 'root' });
274
275
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ArrayService, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ArrayService, decorators: [{
276
277
  type: Injectable,
277
278
  args: [{ providedIn: 'root' }]
278
- }], ctorParameters: () => [{ type: i1.AlainConfigService }] });
279
+ }], ctorParameters: () => [] });
279
280
 
280
281
  /**
281
282
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"array.mjs","sources":["../../../../packages/util/array/array.service.ts","../../../../packages/util/array/array.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { AlainConfigService, AlainUtilArrayConfig } from '@delon/util/config';\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\n\nimport {\n ArrayServiceArrToTreeNodeOptions,\n ArrayServiceArrToTreeOptions,\n ArrayServiceGetKeysByTreeNodeOptions,\n ArrayServiceGroupByResult,\n ArrayServiceTreeToArrOptions\n} from './array-type.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ArrayService {\n private c: AlainUtilArrayConfig;\n\n constructor(cog: AlainConfigService) {\n this.c = cog.merge('utilArray', {\n deepMapName: 'deep',\n parentMapName: 'parent',\n idMapName: 'id',\n parentIdMapName: 'parent_id',\n childrenMapName: 'children',\n titleMapName: 'title',\n checkedMapname: 'checked',\n selectedMapname: 'selected',\n expandedMapname: 'expanded',\n disabledMapname: 'disabled'\n })!;\n }\n\n /**\n * Convert tree structure to array structure\n *\n * 将树结构转换成数组结构\n */\n treeToArr<T extends object = any>(tree: readonly T[], options?: ArrayServiceTreeToArrOptions<T>): T[] {\n const opt = {\n deepMapName: this.c.deepMapName,\n parentMapName: this.c.parentMapName,\n childrenMapName: this.c.childrenMapName,\n clearChildren: true,\n cb: null,\n ...options\n } as ArrayServiceTreeToArrOptions;\n const result: Array<Record<string, any>> = [];\n const inFn = (list: ReadonlyArray<Record<string, any>>, parent: T | null, deep: number = 0): void => {\n for (const i of list) {\n i[opt.deepMapName!] = deep;\n i[opt.parentMapName!] = parent;\n if (opt.cb) {\n opt.cb(i, parent, deep);\n }\n result.push(i);\n const children = i[opt.childrenMapName!];\n if (children != null && Array.isArray(children) && children.length > 0) {\n inFn(children, i as T, deep + 1);\n }\n if (opt.clearChildren) {\n delete i[opt.childrenMapName!];\n }\n }\n };\n inFn(tree, null);\n return result as T[];\n }\n\n /**\n * Convert array structure to tree structure\n *\n * 数组转换成树数据\n */\n arrToTree<T extends object = any>(arr: readonly T[], options?: ArrayServiceArrToTreeOptions<T>): T[] {\n if (!Array.isArray(arr) || arr.length === 0) {\n return [];\n }\n\n const opt = {\n idMapName: this.c.idMapName,\n parentIdMapName: this.c.parentIdMapName,\n childrenMapName: this.c.childrenMapName,\n cb: null,\n ...options\n } as ArrayServiceArrToTreeOptions<T>;\n const tree: T[] = [];\n const childrenOf: Record<string, T[]> = {};\n let rootPid = opt.rootParentIdValue;\n const arrType = arr as ReadonlyArray<Record<string, any>>;\n if (!rootPid) {\n const pids = arrType.map(i => i[opt.parentIdMapName!]);\n const emptyPid = pids.findIndex(w => w == null);\n rootPid = emptyPid !== -1 ? pids[emptyPid] : pids.sort()[0];\n }\n for (const item of arrType) {\n const id = item[opt.idMapName!];\n const pid = item[opt.parentIdMapName!];\n childrenOf[id] = childrenOf[id] || [];\n item[opt.childrenMapName!] = childrenOf[id];\n if (opt.cb) {\n opt.cb(item as T);\n }\n if (pid !== rootPid) {\n childrenOf[pid] = childrenOf[pid] || [];\n childrenOf[pid].push(item as T);\n } else {\n tree.push(item as T);\n }\n }\n return tree;\n }\n\n /**\n * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项\n */\n arrToTreeNode<T extends object = any>(arr: readonly T[], options?: ArrayServiceArrToTreeNodeOptions): NzTreeNode[] {\n const opt = {\n idMapName: this.c.idMapName,\n parentIdMapName: this.c.parentIdMapName,\n titleMapName: this.c.titleMapName,\n isLeafMapName: 'isLeaf',\n checkedMapname: this.c.checkedMapname,\n selectedMapname: this.c.selectedMapname,\n expandedMapname: this.c.expandedMapname,\n disabledMapname: this.c.disabledMapname,\n cb: null,\n ...options\n } as ArrayServiceArrToTreeNodeOptions<T>;\n const tree = this.arrToTree<T>(arr, {\n idMapName: opt.idMapName,\n parentIdMapName: opt.parentIdMapName,\n childrenMapName: 'children'\n });\n this.visitTree<T>(tree, (item: Record<string, any>, parent, deep) => {\n item.key = item[opt.idMapName!];\n item.title = item[opt.titleMapName!];\n item.checked = item[opt.checkedMapname!];\n item.selected = item[opt.selectedMapname!];\n item.expanded = item[opt.expandedMapname!];\n item.disabled = item[opt.disabledMapname!];\n if (item[opt.isLeafMapName!] == null) {\n item.isLeaf = item.children.length === 0;\n } else {\n item.isLeaf = item[opt.isLeafMapName!];\n }\n if (opt.cb) {\n opt.cb(item as any, parent, deep);\n }\n });\n return tree.map(node => new NzTreeNode(node as any));\n }\n\n /**\n * 递归访问整个树\n */\n visitTree<T extends object = any>(\n tree: readonly T[],\n cb: (item: T, parent: T | null, deep: number) => void,\n options?: {\n /** 子项名,默认:`'children'` */\n childrenMapName?: string;\n }\n ): void {\n options = {\n childrenMapName: this.c.childrenMapName,\n ...options\n };\n const inFn = (data: readonly T[], parent: T | null, deep: number): void => {\n for (const item of data) {\n cb(item, parent, deep);\n const childrenVal = (item as Record<string, any>)[options!.childrenMapName!];\n if (Array.isArray(childrenVal) && childrenVal.length > 0) {\n inFn(childrenVal, item, deep + 1);\n }\n }\n };\n inFn(tree, null, 1);\n }\n\n /**\n * Return the value of the first tree value in the tree where predicate is true, and `undefined` otherwise\n *\n * 根据条件返回树的第一个值,否则返回 `undefined`\n */\n findTree<T extends object = any>(\n tree: readonly T[],\n predicate: (item: T) => boolean,\n options?: {\n /** 子项名,默认:`'children'` */\n childrenMapName?: string;\n }\n ): T | undefined {\n let res: T | undefined;\n this.visitTree<T>(\n tree,\n item => {\n if (res === undefined && predicate(item)) {\n res = item;\n }\n },\n options\n );\n return res;\n }\n\n /**\n * 获取所有已经选中的 `key` 值\n */\n getKeysByTreeNode(tree: NzTreeNode[], options?: ArrayServiceGetKeysByTreeNodeOptions): any[] {\n const opt = {\n includeHalfChecked: true,\n ...options\n } as ArrayServiceGetKeysByTreeNodeOptions;\n const keys: any[] = [];\n this.visitTree<NzTreeNode>(tree, (item, parent, deep) => {\n if (item.isChecked || (opt.includeHalfChecked && item.isHalfChecked)) {\n keys.push(opt.cb ? opt.cb(item, parent, deep) : opt.keyMapName ? item.origin[opt.keyMapName] : item.key);\n }\n });\n return keys;\n }\n private baseFlat(array: any[], depth: number, result: any[] = []): any[] {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (depth > 0 && Array.isArray(value)) {\n if (depth > 1) {\n this.baseFlat(value, depth - 1, result);\n } else {\n let pushIndex = -1;\n const offset = result.length;\n\n while (++pushIndex < value.length) {\n result[offset + pushIndex] = value[pushIndex];\n }\n }\n } else {\n result[result.length] = value;\n }\n }\n return result;\n }\n /**\n * Recursively flattens array\n *\n * 递归扁平数组\n * ```ts\n * srv.flat([1, [2, 3, [4, 5, [6]]]]) => [1,2,3,4,5,6]\n * srv.flat([1, [2, 3, [4, 5, [6]]]], 1) => [1,2,3,[4, 5, [6]]]\n * ```\n */\n flat<T>(array: readonly T[], depth: number = 1 / 0): T[] {\n return Array.isArray(array) ? this.baseFlat(array as any[], depth) : (array as T[]);\n }\n /**\n * Group the array\n *\n * 对数组进行分组\n * ```ts\n * srv.groupBy([6.1, 4.2, 6.3], Math.floor) => {\"4\":[4.2],\"6\":[6.1,6.3]}\n * srv.groupBy(['one', 'two', 'three'], v => v.length) => {\"3\":[\"one\",\"two\"],\"5\":[\"three\"]}\n * ```\n */\n groupBy<T>(array: readonly T[], iteratee: (value: T) => string | number): ArrayServiceGroupByResult {\n if (!Array.isArray(array)) {\n return {};\n }\n return array.reduce((result, value) => {\n const key = iteratee(value);\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n result[key] = [value];\n }\n return result;\n }, {} as ArrayServiceGroupByResult);\n }\n /**\n * Creates a duplicate-free version of an array\n *\n * 创建去重后的数组\n * ```ts\n * uniq([1, 2, 2, 3, 1]) => [1,2,3]\n * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], 'a') => [{\"a\":1},{\"a\":2}]\n * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], i => (i.a === 1 ? 'a' : 'b')) => [{\"a\":1},{\"a\":2}]\n * ```\n */\n uniq<T>(array: readonly T[], predicate?: string | ((value: T) => string | number | boolean)): T[] {\n return Array.from(\n array\n .reduce((map, value) => {\n const key = predicate\n ? typeof predicate === 'string'\n ? (value as any)[predicate]\n : predicate!(value)\n : value;\n if (!map.has(key)) {\n map.set(key, value);\n }\n return map;\n }, new Map<string | number | boolean, T>())\n .values()\n );\n }\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":"array.mjs","sources":["../../../../packages/util/array/array.service.ts","../../../../packages/util/array/array.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\n\nimport { AlainConfigService, AlainUtilArrayConfig } from '@delon/util/config';\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\n\nimport {\n ArrayServiceArrToTreeNodeOptions,\n ArrayServiceArrToTreeOptions,\n ArrayServiceGetKeysByTreeNodeOptions,\n ArrayServiceGroupByResult,\n ArrayServiceTreeToArrOptions\n} from './array-type.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ArrayService {\n private readonly cogSrv = inject(AlainConfigService);\n private c: AlainUtilArrayConfig;\n\n constructor() {\n this.c = this.cogSrv.merge('utilArray', {\n deepMapName: 'deep',\n parentMapName: 'parent',\n idMapName: 'id',\n parentIdMapName: 'parent_id',\n childrenMapName: 'children',\n titleMapName: 'title',\n checkedMapname: 'checked',\n selectedMapname: 'selected',\n expandedMapname: 'expanded',\n disabledMapname: 'disabled'\n })!;\n }\n\n /**\n * Convert tree structure to array structure\n *\n * 将树结构转换成数组结构\n */\n treeToArr<T extends object = any>(tree: readonly T[], options?: ArrayServiceTreeToArrOptions<T>): T[] {\n const opt = {\n deepMapName: this.c.deepMapName,\n parentMapName: this.c.parentMapName,\n childrenMapName: this.c.childrenMapName,\n clearChildren: true,\n cb: null,\n ...options\n } as ArrayServiceTreeToArrOptions;\n const result: Array<Record<string, any>> = [];\n const inFn = (list: ReadonlyArray<Record<string, any>>, parent: T | null, deep: number = 0): void => {\n for (const i of list) {\n i[opt.deepMapName!] = deep;\n i[opt.parentMapName!] = parent;\n if (opt.cb) {\n opt.cb(i, parent, deep);\n }\n result.push(i);\n const children = i[opt.childrenMapName!];\n if (children != null && Array.isArray(children) && children.length > 0) {\n inFn(children, i as T, deep + 1);\n }\n if (opt.clearChildren) {\n delete i[opt.childrenMapName!];\n }\n }\n };\n inFn(tree, null);\n return result as T[];\n }\n\n /**\n * Convert array structure to tree structure\n *\n * 数组转换成树数据\n */\n arrToTree<T extends object = any>(arr: readonly T[], options?: ArrayServiceArrToTreeOptions<T>): T[] {\n if (!Array.isArray(arr) || arr.length === 0) {\n return [];\n }\n\n const opt = {\n idMapName: this.c.idMapName,\n parentIdMapName: this.c.parentIdMapName,\n childrenMapName: this.c.childrenMapName,\n cb: null,\n ...options\n } as ArrayServiceArrToTreeOptions<T>;\n const tree: T[] = [];\n const childrenOf: Record<string, T[]> = {};\n let rootPid = opt.rootParentIdValue;\n const arrType = arr as ReadonlyArray<Record<string, any>>;\n if (!rootPid) {\n const pids = arrType.map(i => i[opt.parentIdMapName!]);\n const emptyPid = pids.findIndex(w => w == null);\n rootPid = emptyPid !== -1 ? pids[emptyPid] : pids.sort()[0];\n }\n for (const item of arrType) {\n const id = item[opt.idMapName!];\n const pid = item[opt.parentIdMapName!];\n childrenOf[id] = childrenOf[id] || [];\n item[opt.childrenMapName!] = childrenOf[id];\n if (opt.cb) {\n opt.cb(item as T);\n }\n if (pid !== rootPid) {\n childrenOf[pid] = childrenOf[pid] || [];\n childrenOf[pid].push(item as T);\n } else {\n tree.push(item as T);\n }\n }\n return tree;\n }\n\n /**\n * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项\n */\n arrToTreeNode<T extends object = any>(arr: readonly T[], options?: ArrayServiceArrToTreeNodeOptions): NzTreeNode[] {\n const opt = {\n idMapName: this.c.idMapName,\n parentIdMapName: this.c.parentIdMapName,\n titleMapName: this.c.titleMapName,\n isLeafMapName: 'isLeaf',\n checkedMapname: this.c.checkedMapname,\n selectedMapname: this.c.selectedMapname,\n expandedMapname: this.c.expandedMapname,\n disabledMapname: this.c.disabledMapname,\n cb: null,\n ...options\n } as ArrayServiceArrToTreeNodeOptions<T>;\n const tree = this.arrToTree<T>(arr, {\n idMapName: opt.idMapName,\n parentIdMapName: opt.parentIdMapName,\n childrenMapName: 'children'\n });\n this.visitTree<T>(tree, (item: Record<string, any>, parent, deep) => {\n item.key = item[opt.idMapName!];\n item.title = item[opt.titleMapName!];\n item.checked = item[opt.checkedMapname!];\n item.selected = item[opt.selectedMapname!];\n item.expanded = item[opt.expandedMapname!];\n item.disabled = item[opt.disabledMapname!];\n if (item[opt.isLeafMapName!] == null) {\n item.isLeaf = item.children.length === 0;\n } else {\n item.isLeaf = item[opt.isLeafMapName!];\n }\n if (opt.cb) {\n opt.cb(item as any, parent, deep);\n }\n });\n return tree.map(node => new NzTreeNode(node as any));\n }\n\n /**\n * 递归访问整个树\n */\n visitTree<T extends object = any>(\n tree: readonly T[],\n cb: (item: T, parent: T | null, deep: number) => void,\n options?: {\n /** 子项名,默认:`'children'` */\n childrenMapName?: string;\n }\n ): void {\n options = {\n childrenMapName: this.c.childrenMapName,\n ...options\n };\n const inFn = (data: readonly T[], parent: T | null, deep: number): void => {\n for (const item of data) {\n cb(item, parent, deep);\n const childrenVal = (item as Record<string, any>)[options!.childrenMapName!];\n if (Array.isArray(childrenVal) && childrenVal.length > 0) {\n inFn(childrenVal, item, deep + 1);\n }\n }\n };\n inFn(tree, null, 1);\n }\n\n /**\n * Return the value of the first tree value in the tree where predicate is true, and `undefined` otherwise\n *\n * 根据条件返回树的第一个值,否则返回 `undefined`\n */\n findTree<T extends object = any>(\n tree: readonly T[],\n predicate: (item: T) => boolean,\n options?: {\n /** 子项名,默认:`'children'` */\n childrenMapName?: string;\n }\n ): T | undefined {\n let res: T | undefined;\n this.visitTree<T>(\n tree,\n item => {\n if (res === undefined && predicate(item)) {\n res = item;\n }\n },\n options\n );\n return res;\n }\n\n /**\n * 获取所有已经选中的 `key` 值\n */\n getKeysByTreeNode(tree: NzTreeNode[], options?: ArrayServiceGetKeysByTreeNodeOptions): any[] {\n const opt = {\n includeHalfChecked: true,\n ...options\n } as ArrayServiceGetKeysByTreeNodeOptions;\n const keys: any[] = [];\n this.visitTree<NzTreeNode>(tree, (item, parent, deep) => {\n if (item.isChecked || (opt.includeHalfChecked && item.isHalfChecked)) {\n keys.push(opt.cb ? opt.cb(item, parent, deep) : opt.keyMapName ? item.origin[opt.keyMapName] : item.key);\n }\n });\n return keys;\n }\n private baseFlat(array: any[], depth: number, result: any[] = []): any[] {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (depth > 0 && Array.isArray(value)) {\n if (depth > 1) {\n this.baseFlat(value, depth - 1, result);\n } else {\n let pushIndex = -1;\n const offset = result.length;\n\n while (++pushIndex < value.length) {\n result[offset + pushIndex] = value[pushIndex];\n }\n }\n } else {\n result[result.length] = value;\n }\n }\n return result;\n }\n /**\n * Recursively flattens array\n *\n * 递归扁平数组\n * ```ts\n * srv.flat([1, [2, 3, [4, 5, [6]]]]) => [1,2,3,4,5,6]\n * srv.flat([1, [2, 3, [4, 5, [6]]]], 1) => [1,2,3,[4, 5, [6]]]\n * ```\n */\n flat<T>(array: readonly T[], depth: number = 1 / 0): T[] {\n return Array.isArray(array) ? this.baseFlat(array as any[], depth) : (array as T[]);\n }\n /**\n * Group the array\n *\n * 对数组进行分组\n * ```ts\n * srv.groupBy([6.1, 4.2, 6.3], Math.floor) => {\"4\":[4.2],\"6\":[6.1,6.3]}\n * srv.groupBy(['one', 'two', 'three'], v => v.length) => {\"3\":[\"one\",\"two\"],\"5\":[\"three\"]}\n * ```\n */\n groupBy<T>(array: readonly T[], iteratee: (value: T) => string | number): ArrayServiceGroupByResult {\n if (!Array.isArray(array)) {\n return {};\n }\n return array.reduce((result, value) => {\n const key = iteratee(value);\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n result[key] = [value];\n }\n return result;\n }, {} as ArrayServiceGroupByResult);\n }\n /**\n * Creates a duplicate-free version of an array\n *\n * 创建去重后的数组\n * ```ts\n * uniq([1, 2, 2, 3, 1]) => [1,2,3]\n * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], 'a') => [{\"a\":1},{\"a\":2}]\n * uniq([{ a: 1 }, { a: 1 }, { a: 2 }], i => (i.a === 1 ? 'a' : 'b')) => [{\"a\":1},{\"a\":2}]\n * ```\n */\n uniq<T>(array: readonly T[], predicate?: string | ((value: T) => string | number | boolean)): T[] {\n return Array.from(\n array\n .reduce((map, value) => {\n const key = predicate\n ? typeof predicate === 'string'\n ? (value as any)[predicate]\n : predicate!(value)\n : value;\n if (!map.has(key)) {\n map.set(key, value);\n }\n return map;\n }, new Map<string | number | boolean, T>())\n .values()\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAca,YAAY,CAAA;AACN,IAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,IAAA,CAAC;AAET,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;AACtC,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,WAAW;AAC5B,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,cAAc,EAAE,SAAS;AACzB,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,eAAe,EAAE;AAClB,SAAA,CAAE;;AAGL;;;;AAIG;IACH,SAAS,CAAyB,IAAkB,EAAE,OAAyC,EAAA;AAC7F,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW;AAC/B,YAAA,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;AACnC,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,GAAG;SAC4B;QACjC,MAAM,MAAM,GAA+B,EAAE;QAC7C,MAAM,IAAI,GAAG,CAAC,IAAwC,EAAE,MAAgB,EAAE,IAAA,GAAe,CAAC,KAAU;AAClG,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,gBAAA,CAAC,CAAC,GAAG,CAAC,WAAY,CAAC,GAAG,IAAI;AAC1B,gBAAA,CAAC,CAAC,GAAG,CAAC,aAAc,CAAC,GAAG,MAAM;AAC9B,gBAAA,IAAI,GAAG,CAAC,EAAE,EAAE;oBACV,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;;AAEzB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,eAAgB,CAAC;AACxC,gBAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtE,IAAI,CAAC,QAAQ,EAAE,CAAM,EAAE,IAAI,GAAG,CAAC,CAAC;;AAElC,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;AACrB,oBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,eAAgB,CAAC;;;AAGpC,SAAC;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,OAAO,MAAa;;AAGtB;;;;AAIG;IACH,SAAS,CAAyB,GAAiB,EAAE,OAAyC,EAAA;AAC5F,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,YAAA,OAAO,EAAE;;AAGX,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;AAC3B,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,GAAG;SAC+B;QACpC,MAAM,IAAI,GAAQ,EAAE;QACpB,MAAM,UAAU,GAAwB,EAAE;AAC1C,QAAA,IAAI,OAAO,GAAG,GAAG,CAAC,iBAAiB;QACnC,MAAM,OAAO,GAAG,GAAyC;QACzD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAgB,CAAC,CAAC;AACtD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAC/C,OAAO,GAAG,QAAQ,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;AAE7D,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAU,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC;YACtC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;AAC3C,YAAA,IAAI,GAAG,CAAC,EAAE,EAAE;AACV,gBAAA,GAAG,CAAC,EAAE,CAAC,IAAS,CAAC;;AAEnB,YAAA,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;gBACvC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAS,CAAC;;iBAC1B;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAS,CAAC;;;AAGxB,QAAA,OAAO,IAAI;;AAGb;;AAEG;IACH,aAAa,CAAyB,GAAiB,EAAE,OAA0C,EAAA;AACjG,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;AAC3B,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY;AACjC,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc;AACrC,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,GAAG;SACmC;AACxC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAI,GAAG,EAAE;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,eAAe,EAAE,GAAG,CAAC,eAAe;AACpC,YAAA,eAAe,EAAE;AAClB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAI,IAAI,EAAE,CAAC,IAAyB,EAAE,MAAM,EAAE,IAAI,KAAI;YAClE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAU,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAa,CAAC;YACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAe,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,aAAc,CAAC,IAAI,IAAI,EAAE;gBACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;;iBACnC;gBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAc,CAAC;;AAExC,YAAA,IAAI,GAAG,CAAC,EAAE,EAAE;gBACV,GAAG,CAAC,EAAE,CAAC,IAAW,EAAE,MAAM,EAAE,IAAI,CAAC;;AAErC,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,IAAW,CAAC,CAAC;;AAGtD;;AAEG;AACH,IAAA,SAAS,CACP,IAAkB,EAClB,EAAqD,EACrD,OAGC,EAAA;AAED,QAAA,OAAO,GAAG;AACR,YAAA,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;AACvC,YAAA,GAAG;SACJ;QACD,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,MAAgB,EAAE,IAAY,KAAU;AACxE,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,gBAAA,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;gBACtB,MAAM,WAAW,GAAI,IAA4B,CAAC,OAAQ,CAAC,eAAgB,CAAC;AAC5E,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxD,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;;;AAGvC,SAAC;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;AAGrB;;;;AAIG;AACH,IAAA,QAAQ,CACN,IAAkB,EAClB,SAA+B,EAC/B,OAGC,EAAA;AAED,QAAA,IAAI,GAAkB;AACtB,QAAA,IAAI,CAAC,SAAS,CACZ,IAAI,EACJ,IAAI,IAAG;YACL,IAAI,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;gBACxC,GAAG,GAAG,IAAI;;SAEb,EACD,OAAO,CACR;AACD,QAAA,OAAO,GAAG;;AAGZ;;AAEG;IACH,iBAAiB,CAAC,IAAkB,EAAE,OAA8C,EAAA;AAClF,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,GAAG;SACoC;QACzC,MAAM,IAAI,GAAU,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,CAAa,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAI;AACtD,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AACpE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;;AAE5G,SAAC,CAAC;AACF,QAAA,OAAO,IAAI;;AAEL,IAAA,QAAQ,CAAC,KAAY,EAAE,KAAa,EAAE,SAAgB,EAAE,EAAA;AAC9D,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC;;qBAClC;AACL,oBAAA,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAE5B,oBAAA,OAAO,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE;wBACjC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;;;;iBAG5C;AACL,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK;;;AAGjC,QAAA,OAAO,MAAM;;AAEf;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAI,KAAmB,EAAE,KAAgB,GAAA,CAAC,GAAG,CAAC,EAAA;QAChD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAc,EAAE,KAAK,CAAC,GAAI,KAAa;;AAErF;;;;;;;;AAQG;IACH,OAAO,CAAI,KAAmB,EAAE,QAAuC,EAAA;QACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,EAAE;;QAEX,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACpC,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;gBACrD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;iBAClB;AACL,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEvB,YAAA,OAAO,MAAM;SACd,EAAE,EAA+B,CAAC;;AAErC;;;;;;;;;AASG;IACH,IAAI,CAAI,KAAmB,EAAE,SAA8D,EAAA;AACzF,QAAA,OAAO,KAAK,CAAC,IAAI,CACf;AACG,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACrB,MAAM,GAAG,GAAG;AACV,kBAAE,OAAO,SAAS,KAAK;AACrB,sBAAG,KAAa,CAAC,SAAS;AAC1B,sBAAE,SAAU,CAAC,KAAK;kBAClB,KAAK;YACT,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAErB,YAAA,OAAO,GAAG;AACZ,SAAC,EAAE,IAAI,GAAG,EAAgC;aACzC,MAAM,EAAE,CACZ;;uGAjSQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACblC;;AAEG;;;;"}
@@ -91,10 +91,10 @@ class CookieService {
91
91
  removeAll() {
92
92
  this.doc.cookie = '';
93
93
  }
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CookieService, providedIn: 'root' });
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CookieService, providedIn: 'root' });
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CookieService, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CookieService, decorators: [{
98
98
  type: Injectable,
99
99
  args: [{ providedIn: 'root' }]
100
100
  }] });
@@ -115,6 +115,7 @@ function copy(value) {
115
115
  document.body.appendChild(copyTextArea);
116
116
  copyTextArea.value = value;
117
117
  copyTextArea.select();
118
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
118
119
  document.execCommand('copy');
119
120
  resolve(value);
120
121
  }
@@ -216,10 +217,10 @@ class ScrollService {
216
217
  }
217
218
  this.scrollToElement(this._getDoc().body, topOffset);
218
219
  }
219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
220
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ScrollService, providedIn: 'root' });
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ScrollService, providedIn: 'root' });
221
222
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: ScrollService, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ScrollService, decorators: [{
223
224
  type: Injectable,
224
225
  args: [{ providedIn: 'root' }]
225
226
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"browser.mjs","sources":["../../../../packages/util/browser/cookie.service.ts","../../../../packages/util/browser/copy.ts","../../../../packages/util/browser/is-empty.ts","../../../../packages/util/browser/scroll.service.ts","../../../../packages/util/browser/style.ts","../../../../packages/util/browser/browser.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface CookieOptions {\n path?: string;\n domain?: string;\n /**\n * Expiration time, `number` is seconds\n *\n * 过期时间,`number` 类型表示秒数\n */\n expires?: number | Date | string;\n secure?: boolean;\n HttpOnly?: boolean;\n SameSite?: boolean | 'lax' | 'strict' | 'none';\n}\n\n/**\n * A set of simple Cookie manipulation classes.\n *\n * 一组简单的 Cookie 操作类。\n */\n@Injectable({ providedIn: 'root' })\nexport class CookieService {\n private readonly _doc = inject(DOCUMENT);\n private readonly platform = inject(Platform);\n\n private get doc(): Document {\n return this._doc || document;\n }\n\n /**\n * Original cookie value\n *\n * 原始Cookie值\n */\n get cookie(): string {\n return this.platform.isBrowser ? this.doc.cookie : '';\n }\n\n /**\n * Get all cookie key-value pairs\n *\n * 获取所有Cookie键值对\n */\n getAll(): Record<string, string> {\n const ret: Record<string, string> = {};\n const arr = this.cookie.split('; ');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < arr.length; i++) {\n const cookie = arr[i];\n const index = cookie.indexOf('=');\n if (index > 0) {\n const name = decodeURIComponent(cookie.substring(0, index));\n if (ret[name] == null) {\n ret[name] = decodeURIComponent(cookie.substring(index + 1));\n }\n }\n }\n return ret;\n }\n\n /**\n * Get the value of given cookie `key`\n *\n * 获取指定 `key` 的值\n */\n get(key: string): string | undefined {\n return this.getAll()[key];\n }\n\n /**\n * Sets a value for given cookie key\n *\n * 设置指定 Cookie 键的值\n */\n put(key: string, value: string, options?: CookieOptions): void {\n if (!this.platform.isBrowser) {\n return;\n }\n const opt = { path: '/', ...options };\n if (typeof opt.expires === 'number') {\n opt.expires = new Date(+new Date() + opt.expires * 1e3);\n }\n if (typeof opt.expires !== 'string') {\n opt.expires = opt.expires ? opt.expires.toUTCString() : '';\n }\n const optStr: Record<string, string | boolean> = opt as NzSafeAny;\n const attributes = Object.keys(optStr)\n .filter(k => optStr[k] && optStr[k] !== true)\n .map(k => `${k}=${(optStr[k] as string).split(';')[0]}`)\n .join(';');\n const keyValue = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}`;\n this.doc.cookie = `${keyValue}${attributes ? `; ${attributes}` : ''}`;\n }\n\n /**\n * Remove given cookie\n *\n * 移除指定 Cookie\n */\n remove(key: string, options?: CookieOptions): void {\n this.put(key, '', options);\n }\n\n /**\n * Remove all cookies\n *\n * 移除所有 Cookies\n */\n removeAll(): void {\n this.doc.cookie = '';\n }\n}\n","/**\n * Copy text to clipboard\n *\n * 复制字符串文档至剪贴板\n */\nexport function copy(value: string): Promise<string> {\n return new Promise<string>((resolve): void => {\n let copyTextArea: HTMLTextAreaElement | null = null;\n try {\n copyTextArea = document.createElement('textarea');\n copyTextArea.style.height = '0px';\n copyTextArea.style.opacity = '0';\n copyTextArea.style.width = '0px';\n document.body.appendChild(copyTextArea);\n copyTextArea.value = value;\n copyTextArea.select();\n document.execCommand('copy');\n resolve(value);\n } finally {\n if (copyTextArea && copyTextArea.parentNode) {\n copyTextArea.parentNode.removeChild(copyTextArea);\n }\n }\n });\n}\n","/**\n * Used to verify `<ng-content />` is empty, useful for custom components.\n *\n * 用于校验 `<ng-content />` 是否为空,自定义组件时蛮有用。\n */\nexport function isEmpty(element: HTMLElement): boolean {\n const nodes = element.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes.item(i);\n if (node.nodeType === 1 && (node as HTMLElement).outerHTML.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType === 3 && node.textContent!.toString().trim().length !== 0) {\n return false;\n }\n }\n return true;\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n private readonly _doc = inject(DOCUMENT);\n private readonly platform = inject(Platform);\n private _getDoc(): Document {\n return this._doc || document;\n }\n\n private _getWin(): Window {\n const doc = this._getDoc();\n return doc.defaultView || window;\n }\n\n /**\n * 获取滚动条位置\n *\n * @param element 指定元素,默认 `window`\n */\n getScrollPosition(element?: Element | Window | null): [number, number] {\n if (!this.platform.isBrowser) {\n return [0, 0];\n }\n\n const win = this._getWin();\n if (element && element !== win) {\n return [(element as Element).scrollLeft, (element as Element).scrollTop];\n } else {\n return [win.scrollX, win.scrollY];\n }\n }\n\n /**\n * 设置滚动条位置\n *\n * @param element 指定元素\n */\n scrollToPosition(element: Element | Window | null | undefined, position: [number, number]): void {\n if (!this.platform.isBrowser) {\n return;\n }\n (element || this._getWin()).scrollTo(position[0], position[1]);\n }\n\n /**\n * 设置滚动条至指定元素\n *\n * @param element 指定元素,默认 `document.body`\n * @param topOffset 偏移值,默认 `0`\n */\n scrollToElement(element?: Element | null, topOffset: number = 0): void {\n if (!this.platform.isBrowser) {\n return;\n }\n if (!element) {\n element = this._getDoc().body;\n }\n\n element.scrollIntoView();\n\n const win = this._getWin();\n if (win && win.scrollBy) {\n win.scrollBy(0, element!.getBoundingClientRect().top - topOffset);\n\n if (win.scrollY < 20) {\n win.scrollBy(0, -win.scrollY);\n }\n }\n }\n\n /**\n * 滚动至顶部\n *\n * @param topOffset 偏移值,默认 `0`\n */\n scrollToTop(topOffset: number = 0): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.scrollToElement(this._getDoc().body, topOffset);\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nfunction removeClass(el: HTMLElement, classMap: Record<string, unknown>, renderer: Renderer2): void {\n Object.keys(classMap).forEach(key => renderer.removeClass(el, key));\n}\n\nfunction addClass(el: HTMLElement, classMap: Record<string, unknown>, renderer: Renderer2): void {\n for (const i in classMap) {\n if (classMap[i]) {\n renderer.addClass(el, i);\n }\n }\n}\n\n/**\n * Update host component style `class`\n *\n * 更新宿主组件样式 `class`\n *\n * ```ts\n * updateHostClass(\n * this.el.nativeElement,\n * this.renderer,\n * {\n * [ 'classname' ]: true,\n * [ 'classname' ]: this.type === '1',\n * [ this.cls ]: true,\n * [ `a-${this.cls}` ]: true\n * })\n * ```\n */\nexport function updateHostClass(\n el: HTMLElement,\n renderer: Renderer2,\n classMap: Record<string, unknown>,\n preClean: boolean = false\n): void {\n if (preClean === true) {\n renderer.removeAttribute(el, 'class');\n } else {\n removeClass(el, classMap, renderer);\n }\n classMap = { ...classMap };\n addClass(el, classMap, renderer);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAoBA;;;;AAIG;MAEU,aAAa,CAAA;AACP,IAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C,IAAA,IAAY,GAAG,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ;;AAG9B;;;;AAIG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE;;AAGvD;;;;AAIG;IACH,MAAM,GAAA;QACJ,MAAM,GAAG,GAA2B,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;;AAEnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACjC,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,gBAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3D,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,oBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;;;;AAIjE,QAAA,OAAO,GAAG;;AAGZ;;;;AAIG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;;AAG3B;;;;AAIG;AACH,IAAA,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAuB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B;;QAEF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE;AACrC,QAAA,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;AACnC,YAAA,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;;AAEzD,QAAA,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;AACnC,YAAA,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE;;QAE5D,MAAM,MAAM,GAAqC,GAAgB;AACjE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AAClC,aAAA,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;aAC3C,GAAG,CAAC,CAAC,IAAI,CAAG,EAAA,CAAC,IAAK,MAAM,CAAC,CAAC,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;aACtD,IAAI,CAAC,GAAG,CAAC;AACZ,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAI,CAAA,EAAA,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;QAC1F,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAG,EAAA,QAAQ,GAAG,UAAU,GAAG,CAAA,EAAA,EAAK,UAAU,CAAE,CAAA,GAAG,EAAE,EAAE;;AAGvE;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,OAAuB,EAAA;QACzC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC;;AAG5B;;;;AAIG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE;;uGAxFX,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACzBlC;;;;AAIG;AACG,SAAU,IAAI,CAAC,KAAa,EAAA;AAChC,IAAA,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,KAAU;QAC3C,IAAI,YAAY,GAA+B,IAAI;AACnD,QAAA,IAAI;AACF,YAAA,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACjD,YAAA,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;AACjC,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAChC,YAAA,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;AAChC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACvC,YAAA,YAAY,CAAC,KAAK,GAAG,KAAK;YAC1B,YAAY,CAAC,MAAM,EAAE;AACrB,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC;;gBACN;AACR,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,UAAU,EAAE;AAC3C,gBAAA,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC;;;AAGvD,KAAC,CAAC;AACJ;;ACxBA;;;;AAIG;AACG,SAAU,OAAO,CAAC,OAAoB,EAAA;AAC1C,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU;AAChC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAK,IAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACzF,YAAA,OAAO,KAAK;;aACP,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,WAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAClF,YAAA,OAAO,KAAK;;;AAGhB,IAAA,OAAO,IAAI;AACb;;MCXa,aAAa,CAAA;AACP,IAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,OAAO,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ;;IAGtB,OAAO,GAAA;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,OAAO,GAAG,CAAC,WAAW,IAAI,MAAM;;AAGlC;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,OAAiC,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC5B,YAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGf,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE;YAC9B,OAAO,CAAE,OAAmB,CAAC,UAAU,EAAG,OAAmB,CAAC,SAAS,CAAC;;aACnE;YACL,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;;;AAIrC;;;;AAIG;IACH,gBAAgB,CAAC,OAA4C,EAAE,QAA0B,EAAA;AACvF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B;;QAEF,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAGhE;;;;;AAKG;AACH,IAAA,eAAe,CAAC,OAAwB,EAAE,SAAA,GAAoB,CAAC,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B;;QAEF,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;;QAG/B,OAAO,CAAC,cAAc,EAAE;AAExB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;AAEjE,YAAA,IAAI,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE;gBACpB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;;;;AAKnC;;;;AAIG;IACH,WAAW,CAAC,YAAoB,CAAC,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;;uGA7E3C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACFlC,SAAS,WAAW,CAAC,EAAe,EAAE,QAAiC,EAAE,QAAmB,EAAA;IAC1F,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACrE;AAEA,SAAS,QAAQ,CAAC,EAAe,EAAE,QAAiC,EAAE,QAAmB,EAAA;AACvF,IAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACxB,QAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,YAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;;;AAG9B;AAEA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,eAAe,CAC7B,EAAe,EACf,QAAmB,EACnB,QAAiC,EACjC,QAAA,GAAoB,KAAK,EAAA;AAEzB,IAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,QAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC;;SAChC;AACL,QAAA,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;;AAErC,IAAA,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE;AAC1B,IAAA,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAClC;;AC5CA;;AAEG;;;;"}
1
+ {"version":3,"file":"browser.mjs","sources":["../../../../packages/util/browser/cookie.service.ts","../../../../packages/util/browser/copy.ts","../../../../packages/util/browser/is-empty.ts","../../../../packages/util/browser/scroll.service.ts","../../../../packages/util/browser/style.ts","../../../../packages/util/browser/browser.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface CookieOptions {\n path?: string;\n domain?: string;\n /**\n * Expiration time, `number` is seconds\n *\n * 过期时间,`number` 类型表示秒数\n */\n expires?: number | Date | string;\n secure?: boolean;\n HttpOnly?: boolean;\n SameSite?: boolean | 'lax' | 'strict' | 'none';\n}\n\n/**\n * A set of simple Cookie manipulation classes.\n *\n * 一组简单的 Cookie 操作类。\n */\n@Injectable({ providedIn: 'root' })\nexport class CookieService {\n private readonly _doc = inject(DOCUMENT);\n private readonly platform = inject(Platform);\n\n private get doc(): Document {\n return this._doc || document;\n }\n\n /**\n * Original cookie value\n *\n * 原始Cookie值\n */\n get cookie(): string {\n return this.platform.isBrowser ? this.doc.cookie : '';\n }\n\n /**\n * Get all cookie key-value pairs\n *\n * 获取所有Cookie键值对\n */\n getAll(): Record<string, string> {\n const ret: Record<string, string> = {};\n const arr = this.cookie.split('; ');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < arr.length; i++) {\n const cookie = arr[i];\n const index = cookie.indexOf('=');\n if (index > 0) {\n const name = decodeURIComponent(cookie.substring(0, index));\n if (ret[name] == null) {\n ret[name] = decodeURIComponent(cookie.substring(index + 1));\n }\n }\n }\n return ret;\n }\n\n /**\n * Get the value of given cookie `key`\n *\n * 获取指定 `key` 的值\n */\n get(key: string): string | undefined {\n return this.getAll()[key];\n }\n\n /**\n * Sets a value for given cookie key\n *\n * 设置指定 Cookie 键的值\n */\n put(key: string, value: string, options?: CookieOptions): void {\n if (!this.platform.isBrowser) {\n return;\n }\n const opt = { path: '/', ...options };\n if (typeof opt.expires === 'number') {\n opt.expires = new Date(+new Date() + opt.expires * 1e3);\n }\n if (typeof opt.expires !== 'string') {\n opt.expires = opt.expires ? opt.expires.toUTCString() : '';\n }\n const optStr: Record<string, string | boolean> = opt as NzSafeAny;\n const attributes = Object.keys(optStr)\n .filter(k => optStr[k] && optStr[k] !== true)\n .map(k => `${k}=${(optStr[k] as string).split(';')[0]}`)\n .join(';');\n const keyValue = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}`;\n this.doc.cookie = `${keyValue}${attributes ? `; ${attributes}` : ''}`;\n }\n\n /**\n * Remove given cookie\n *\n * 移除指定 Cookie\n */\n remove(key: string, options?: CookieOptions): void {\n this.put(key, '', options);\n }\n\n /**\n * Remove all cookies\n *\n * 移除所有 Cookies\n */\n removeAll(): void {\n this.doc.cookie = '';\n }\n}\n","/**\n * Copy text to clipboard\n *\n * 复制字符串文档至剪贴板\n */\nexport function copy(value: string): Promise<string> {\n return new Promise<string>((resolve): void => {\n let copyTextArea: HTMLTextAreaElement | null = null;\n try {\n copyTextArea = document.createElement('textarea');\n copyTextArea.style.height = '0px';\n copyTextArea.style.opacity = '0';\n copyTextArea.style.width = '0px';\n document.body.appendChild(copyTextArea);\n copyTextArea.value = value;\n copyTextArea.select();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n document.execCommand('copy');\n resolve(value);\n } finally {\n if (copyTextArea && copyTextArea.parentNode) {\n copyTextArea.parentNode.removeChild(copyTextArea);\n }\n }\n });\n}\n","/**\n * Used to verify `<ng-content />` is empty, useful for custom components.\n *\n * 用于校验 `<ng-content />` 是否为空,自定义组件时蛮有用。\n */\nexport function isEmpty(element: HTMLElement): boolean {\n const nodes = element.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes.item(i);\n if (node.nodeType === 1 && (node as HTMLElement).outerHTML.toString().trim().length !== 0) {\n return false;\n } else if (node.nodeType === 3 && node.textContent!.toString().trim().length !== 0) {\n return false;\n }\n }\n return true;\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n private readonly _doc = inject(DOCUMENT);\n private readonly platform = inject(Platform);\n private _getDoc(): Document {\n return this._doc || document;\n }\n\n private _getWin(): Window {\n const doc = this._getDoc();\n return doc.defaultView || window;\n }\n\n /**\n * 获取滚动条位置\n *\n * @param element 指定元素,默认 `window`\n */\n getScrollPosition(element?: Element | Window | null): [number, number] {\n if (!this.platform.isBrowser) {\n return [0, 0];\n }\n\n const win = this._getWin();\n if (element && element !== win) {\n return [(element as Element).scrollLeft, (element as Element).scrollTop];\n } else {\n return [win.scrollX, win.scrollY];\n }\n }\n\n /**\n * 设置滚动条位置\n *\n * @param element 指定元素\n */\n scrollToPosition(element: Element | Window | null | undefined, position: [number, number]): void {\n if (!this.platform.isBrowser) {\n return;\n }\n (element || this._getWin()).scrollTo(position[0], position[1]);\n }\n\n /**\n * 设置滚动条至指定元素\n *\n * @param element 指定元素,默认 `document.body`\n * @param topOffset 偏移值,默认 `0`\n */\n scrollToElement(element?: Element | null, topOffset: number = 0): void {\n if (!this.platform.isBrowser) {\n return;\n }\n if (!element) {\n element = this._getDoc().body;\n }\n\n element.scrollIntoView();\n\n const win = this._getWin();\n if (win && win.scrollBy) {\n win.scrollBy(0, element!.getBoundingClientRect().top - topOffset);\n\n if (win.scrollY < 20) {\n win.scrollBy(0, -win.scrollY);\n }\n }\n }\n\n /**\n * 滚动至顶部\n *\n * @param topOffset 偏移值,默认 `0`\n */\n scrollToTop(topOffset: number = 0): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.scrollToElement(this._getDoc().body, topOffset);\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nfunction removeClass(el: HTMLElement, classMap: Record<string, unknown>, renderer: Renderer2): void {\n Object.keys(classMap).forEach(key => renderer.removeClass(el, key));\n}\n\nfunction addClass(el: HTMLElement, classMap: Record<string, unknown>, renderer: Renderer2): void {\n for (const i in classMap) {\n if (classMap[i]) {\n renderer.addClass(el, i);\n }\n }\n}\n\n/**\n * Update host component style `class`\n *\n * 更新宿主组件样式 `class`\n *\n * ```ts\n * updateHostClass(\n * this.el.nativeElement,\n * this.renderer,\n * {\n * [ 'classname' ]: true,\n * [ 'classname' ]: this.type === '1',\n * [ this.cls ]: true,\n * [ `a-${this.cls}` ]: true\n * })\n * ```\n */\nexport function updateHostClass(\n el: HTMLElement,\n renderer: Renderer2,\n classMap: Record<string, unknown>,\n preClean: boolean = false\n): void {\n if (preClean === true) {\n renderer.removeAttribute(el, 'class');\n } else {\n removeClass(el, classMap, renderer);\n }\n classMap = { ...classMap };\n addClass(el, classMap, renderer);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -57,10 +57,10 @@ class AlainConfigService {
57
57
  set(componentName, value) {
58
58
  this.config[componentName] = { ...this.config[componentName], ...value };
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AlainConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
61
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AlainConfigService, providedIn: 'root' });
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AlainConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
61
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AlainConfigService, providedIn: 'root' });
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: AlainConfigService, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AlainConfigService, decorators: [{
64
64
  type: Injectable,
65
65
  args: [{ providedIn: 'root' }]
66
66
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","sources":["../../../../packages/util/config/abc/sv.type.ts","../../../../packages/util/config/config.types.ts","../../../../packages/util/config/config.service.ts","../../../../packages/util/config/config.ts"],"sourcesContent":["export class AlainSVConfig {\n /** 大小,默认:`large` */\n size?: 'small' | 'large';\n /** 间距,默认:`32` */\n gutter?: number;\n /** 布局,默认:`horizontal` */\n layout?: 'horizontal' | 'vertical';\n /** 列数,默认:`3` */\n col?: number;\n /** 是否显示默认值,当内容为空值时显示 `-`,默认:`true` */\n default?: boolean;\n /** `label` 固定宽度,若 `null` 或 `undefined` 表示非固定,默认:`null` */\n labelWidth?: number;\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n AlainCellConfig,\n AlainDateRangePickerConfig,\n AlainErrorCollectConfig,\n AlainExceptionType,\n AlainImageConfig,\n AlainLoadingConfig,\n AlainLodopConfig,\n AlainMediaConfig,\n AlainOnboardingConfig,\n AlainPageHeaderConfig,\n AlainPdfConfig,\n AlainSEConfig,\n AlainSGConfig,\n AlainSTConfig,\n AlainSVConfig,\n AlainXlsxConfig,\n AlainZipConfig\n} from './abc/index';\nimport { AlainACLConfig } from './acl/acl.type';\nimport { AlainAuthConfig } from './auth/auth.type';\nimport { AlainCacheConfig } from './cache/cache.type';\nimport { AlainChartConfig } from './chart/chart.type';\nimport { AlainMockConfig } from './mock/mock.type';\nimport { AlainSFConfig } from './sf/sf.type';\nimport { AlainThemeHttpClientConfig, AlainThemeResponsiveConfig, AlainThemeI18nConfig } from './theme/index';\nimport { AlainThemePipeConfig } from './theme/pipe.type';\nimport { AlainUtilArrayConfig } from './util/array.type';\nimport { AlainUtilCurrencyConfig } from './util/currency.type';\n\nexport interface AlainConfig {\n dataRange?: AlainDateRangePickerConfig;\n exception?: AlainExceptionType;\n errorCollect?: AlainErrorCollectConfig;\n image?: AlainImageConfig;\n loading?: AlainLoadingConfig;\n onboarding?: AlainOnboardingConfig;\n lodop?: AlainLodopConfig;\n pageHeader?: AlainPageHeaderConfig;\n se?: AlainSEConfig;\n sg?: AlainSGConfig;\n sv?: AlainSVConfig;\n st?: AlainSTConfig;\n sf?: AlainSFConfig;\n cell?: AlainCellConfig;\n xlsx?: AlainXlsxConfig;\n zip?: AlainZipConfig;\n pdf?: AlainPdfConfig;\n media?: AlainMediaConfig;\n acl?: AlainACLConfig;\n auth?: AlainAuthConfig;\n cache?: AlainCacheConfig;\n chart?: AlainChartConfig;\n mock?: AlainMockConfig;\n utilArray?: AlainUtilArrayConfig;\n utilCurrency?: AlainUtilCurrencyConfig;\n themeHttp?: AlainThemeHttpClientConfig;\n themeResponsive?: AlainThemeResponsiveConfig;\n themeI18n?: AlainThemeI18nConfig;\n themePipe?: AlainThemePipeConfig;\n}\n\nexport type AlainConfigKey = keyof AlainConfig;\n\nexport const ALAIN_CONFIG = new InjectionToken<AlainConfig>('alain-config', {\n providedIn: 'root',\n factory: ALAIN_CONFIG_FACTORY\n});\n\nexport function ALAIN_CONFIG_FACTORY(): AlainConfig {\n return {};\n}\n\nexport function provideAlainConfig(config: AlainConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: ALAIN_CONFIG, useValue: config }]);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SIGNAL, SignalNode } from '@angular/core/primitives/signals';\n\nimport { deepMergeKey } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { AlainConfig, AlainConfigKey, ALAIN_CONFIG } from './config.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AlainConfigService {\n private readonly config = { ...inject(ALAIN_CONFIG, { optional: true }) };\n\n get<T extends AlainConfigKey>(componentName: T, key?: string): AlainConfig[T] {\n const res = ((this.config[componentName] as Record<string, unknown>) || {}) as NzSafeAny;\n return key ? { [key]: res[key] } : res;\n }\n\n merge<T extends AlainConfigKey>(componentName: T, ...defaultValues: Array<AlainConfig[T]>): AlainConfig[T] {\n return deepMergeKey({}, true, ...defaultValues, this.get(componentName));\n }\n\n /**\n * 将配置附加到当前实例中,支持 Signal 信号\n */\n attach<T extends AlainConfigKey>(componentThis: unknown, componentName: T, defaultValues: AlainConfig[T]): void {\n const data = this.merge<T>(componentName, defaultValues);\n Object.entries(data as object).forEach(([key, value]) => {\n const t = componentThis as any;\n const s = t[key]?.[SIGNAL] as SignalNode<any>;\n if (s != null) {\n s.value = value;\n } else {\n t[key] = value;\n }\n });\n }\n\n set<T extends AlainConfigKey>(componentName: T, value: AlainConfig[T]): void {\n this.config[componentName] = { ...this.config[componentName], ...value };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAAa,aAAa,CAAA;;AAExB,IAAA,IAAI;;AAEJ,IAAA,MAAM;;AAEN,IAAA,MAAM;;AAEN,IAAA,GAAG;;AAEH,IAAA,OAAO;;AAEP,IAAA,UAAU;AACX;;MCqDY,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE;AAC1E,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE;AACV,CAAA;SAEe,oBAAoB,GAAA;AAClC,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,kBAAkB,CAAC,MAAmB,EAAA;AACpD,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF;;MCpEa,kBAAkB,CAAA;AACZ,IAAA,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;IAEzE,GAAG,CAA2B,aAAgB,EAAE,GAAY,EAAA;AAC1D,QAAA,MAAM,GAAG,IAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAA6B,IAAI,EAAE,CAAc;AACxF,QAAA,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG;;AAGxC,IAAA,KAAK,CAA2B,aAAgB,EAAE,GAAG,aAAoC,EAAA;AACvF,QAAA,OAAO,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;AAG1E;;AAEG;AACH,IAAA,MAAM,CAA2B,aAAsB,EAAE,aAAgB,EAAE,aAA6B,EAAA;QACtG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAI,aAAa,EAAE,aAAa,CAAC;AACxD,QAAA,MAAM,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACtD,MAAM,CAAC,GAAG,aAAoB;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoB;AAC7C,YAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,gBAAA,CAAC,CAAC,KAAK,GAAG,KAAK;;iBACV;AACL,gBAAA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;;AAElB,SAAC,CAAC;;IAGJ,GAAG,CAA2B,aAAgB,EAAE,KAAqB,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE;;uGA7B/D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACRlC;;AAEG;;;;"}
1
+ {"version":3,"file":"config.mjs","sources":["../../../../packages/util/config/abc/sv.type.ts","../../../../packages/util/config/config.types.ts","../../../../packages/util/config/config.service.ts","../../../../packages/util/config/config.ts"],"sourcesContent":["export class AlainSVConfig {\n /** 大小,默认:`large` */\n size?: 'small' | 'large';\n /** 间距,默认:`32` */\n gutter?: number;\n /** 布局,默认:`horizontal` */\n layout?: 'horizontal' | 'vertical';\n /** 列数,默认:`3` */\n col?: number;\n /** 是否显示默认值,当内容为空值时显示 `-`,默认:`true` */\n default?: boolean;\n /** `label` 固定宽度,若 `null` 或 `undefined` 表示非固定,默认:`null` */\n labelWidth?: number;\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n AlainCellConfig,\n AlainDateRangePickerConfig,\n AlainErrorCollectConfig,\n AlainExceptionType,\n AlainImageConfig,\n AlainLoadingConfig,\n AlainLodopConfig,\n AlainMediaConfig,\n AlainOnboardingConfig,\n AlainPageHeaderConfig,\n AlainPdfConfig,\n AlainSEConfig,\n AlainSGConfig,\n AlainSTConfig,\n AlainSVConfig,\n AlainXlsxConfig,\n AlainZipConfig\n} from './abc/index';\nimport { AlainACLConfig } from './acl/acl.type';\nimport { AlainAuthConfig } from './auth/auth.type';\nimport { AlainCacheConfig } from './cache/cache.type';\nimport { AlainChartConfig } from './chart/chart.type';\nimport { AlainMockConfig } from './mock/mock.type';\nimport { AlainSFConfig } from './sf/sf.type';\nimport { AlainThemeHttpClientConfig, AlainThemeResponsiveConfig, AlainThemeI18nConfig } from './theme/index';\nimport { AlainThemePipeConfig } from './theme/pipe.type';\nimport { AlainUtilArrayConfig } from './util/array.type';\nimport { AlainUtilCurrencyConfig } from './util/currency.type';\n\nexport interface AlainConfig {\n dataRange?: AlainDateRangePickerConfig;\n exception?: AlainExceptionType;\n errorCollect?: AlainErrorCollectConfig;\n image?: AlainImageConfig;\n loading?: AlainLoadingConfig;\n onboarding?: AlainOnboardingConfig;\n lodop?: AlainLodopConfig;\n pageHeader?: AlainPageHeaderConfig;\n se?: AlainSEConfig;\n sg?: AlainSGConfig;\n sv?: AlainSVConfig;\n st?: AlainSTConfig;\n sf?: AlainSFConfig;\n cell?: AlainCellConfig;\n xlsx?: AlainXlsxConfig;\n zip?: AlainZipConfig;\n pdf?: AlainPdfConfig;\n media?: AlainMediaConfig;\n acl?: AlainACLConfig;\n auth?: AlainAuthConfig;\n cache?: AlainCacheConfig;\n chart?: AlainChartConfig;\n mock?: AlainMockConfig;\n utilArray?: AlainUtilArrayConfig;\n utilCurrency?: AlainUtilCurrencyConfig;\n themeHttp?: AlainThemeHttpClientConfig;\n themeResponsive?: AlainThemeResponsiveConfig;\n themeI18n?: AlainThemeI18nConfig;\n themePipe?: AlainThemePipeConfig;\n}\n\nexport type AlainConfigKey = keyof AlainConfig;\n\nexport const ALAIN_CONFIG = new InjectionToken<AlainConfig>('alain-config', {\n providedIn: 'root',\n factory: ALAIN_CONFIG_FACTORY\n});\n\nexport function ALAIN_CONFIG_FACTORY(): AlainConfig {\n return {};\n}\n\nexport function provideAlainConfig(config: AlainConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: ALAIN_CONFIG, useValue: config }]);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SIGNAL, SignalNode } from '@angular/core/primitives/signals';\n\nimport { deepMergeKey } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { AlainConfig, AlainConfigKey, ALAIN_CONFIG } from './config.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AlainConfigService {\n private readonly config = { ...inject(ALAIN_CONFIG, { optional: true }) };\n\n get<T extends AlainConfigKey>(componentName: T, key?: string): AlainConfig[T] {\n const res = ((this.config[componentName] as Record<string, unknown>) || {}) as NzSafeAny;\n return key ? ({ [key]: res[key] } as AlainConfig[T]) : res;\n }\n\n merge<T extends AlainConfigKey>(componentName: T, ...defaultValues: Array<AlainConfig[T]>): AlainConfig[T] {\n return deepMergeKey({}, true, ...defaultValues, this.get(componentName));\n }\n\n /**\n * 将配置附加到当前实例中,支持 Signal 信号\n */\n attach<T extends AlainConfigKey>(componentThis: unknown, componentName: T, defaultValues: AlainConfig[T]): void {\n const data = this.merge<T>(componentName, defaultValues);\n Object.entries(data as object).forEach(([key, value]) => {\n const t = componentThis as any;\n const s = t[key]?.[SIGNAL] as SignalNode<any>;\n if (s != null) {\n s.value = value;\n } else {\n t[key] = value;\n }\n });\n }\n\n set<T extends AlainConfigKey>(componentName: T, value: AlainConfig[T]): void {\n this.config[componentName] = { ...this.config[componentName], ...value };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAAa,aAAa,CAAA;;AAExB,IAAA,IAAI;;AAEJ,IAAA,MAAM;;AAEN,IAAA,MAAM;;AAEN,IAAA,GAAG;;AAEH,IAAA,OAAO;;AAEP,IAAA,UAAU;AACX;;MCqDY,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE;AAC1E,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE;AACV,CAAA;SAEe,oBAAoB,GAAA;AAClC,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,kBAAkB,CAAC,MAAmB,EAAA;AACpD,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF;;MCpEa,kBAAkB,CAAA;AACZ,IAAA,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;IAEzE,GAAG,CAA2B,aAAgB,EAAE,GAAY,EAAA;AAC1D,QAAA,MAAM,GAAG,IAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAA6B,IAAI,EAAE,CAAc;AACxF,QAAA,OAAO,GAAG,GAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAqB,GAAG,GAAG;;AAG5D,IAAA,KAAK,CAA2B,aAAgB,EAAE,GAAG,aAAoC,EAAA;AACvF,QAAA,OAAO,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;AAG1E;;AAEG;AACH,IAAA,MAAM,CAA2B,aAAsB,EAAE,aAAgB,EAAE,aAA6B,EAAA;QACtG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAI,aAAa,EAAE,aAAa,CAAC;AACxD,QAAA,MAAM,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACtD,MAAM,CAAC,GAAG,aAAoB;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoB;AAC7C,YAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,gBAAA,CAAC,CAAC,KAAK,GAAG,KAAK;;iBACV;AACL,gBAAA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;;AAElB,SAAC,CAAC;;IAGJ,GAAG,CAA2B,aAAgB,EAAE,KAAqB,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE;;uGA7B/D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACRlC;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- import { parse, addDays, startOfYear, subYears, endOfYear, startOfMonth, subMonths, endOfMonth, startOfWeek, subWeeks, endOfWeek, startOfDay, endOfDay, parseISO, formatDistanceToNow, format, differenceInCalendarDays, addSeconds } from 'date-fns';
1
+ import { parse, addDays, startOfYear, endOfYear, subYears, startOfMonth, endOfMonth, subMonths, startOfWeek, endOfWeek, subWeeks, startOfDay, endOfDay, parseISO, formatDistanceToNow, format, differenceInCalendarDays, addSeconds } from 'date-fns';
2
2
 
3
3
  /**
4
4
  * Get the time range, return `[ Date, Date]` for the start and end dates
@@ -1,70 +1,5 @@
1
1
  import { warn } from '@delon/util/other';
2
2
 
3
- function propDecoratorFactory(name, fallback, defaultValue) {
4
- function propDecorator(target, propName, originalDescriptor) {
5
- const privatePropName = `$$__${propName}`;
6
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
7
- if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {
8
- warn(`The prop "${privatePropName}" is already exist, it will be overrided by ${name} decorator.`);
9
- }
10
- }
11
- Object.defineProperty(target, privatePropName, {
12
- configurable: true,
13
- writable: true
14
- });
15
- return {
16
- get() {
17
- return originalDescriptor && originalDescriptor.get
18
- ? originalDescriptor.get.bind(this)()
19
- : this[privatePropName];
20
- },
21
- set(value) {
22
- if (originalDescriptor && originalDescriptor.set) {
23
- originalDescriptor.set.bind(this)(fallback(value, defaultValue));
24
- }
25
- this[privatePropName] = fallback(value, defaultValue);
26
- }
27
- };
28
- }
29
- return propDecorator;
30
- }
31
- function toBoolean(value, defaultValue = false) {
32
- return value == null ? defaultValue : `${value}` !== 'false';
33
- }
34
- /**
35
- * @deprecated Recommended to use the built-in `transform` and `static ngAcceptInputType_` can be removed
36
- * - Use `@Input({ transform: booleanAttribute })` instead of `@InputBoolean()`
37
- * - Use `@Input({ transform: (v: unknown) => (v == null ? null : booleanAttribute(v)) })` instead of `@InputBoolean(null)`
38
- *
39
- * Input decorator that handle a prop to do get/set automatically with toBoolean
40
- *
41
- * ```ts
42
- * {AT}Input() {AT}InputBoolean() visible: boolean = false;
43
- * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;
44
- * ```
45
- */
46
- function InputBoolean(defaultValue = false) {
47
- return propDecoratorFactory('InputBoolean', toBoolean, defaultValue);
48
- }
49
- function toNumber(value, fallbackValue = 0) {
50
- return !isNaN(parseFloat(value)) && !isNaN(Number(value)) ? Number(value) : fallbackValue;
51
- }
52
- /**
53
- * @deprecated Recommended to use the built-in `transform` and `static ngAcceptInputType_` can be removed
54
- * - Use `@Input({ transform: numberAttribute })` instead of `@InputNumber()`
55
- * - Use `@Input({ transform: (v: unknown) => (v == null ? null : numberAttribute(v)) })` instead of `@InputNumber(null)`
56
- *
57
- * Input decorator that handle a prop to do get/set automatically with toNumber
58
- *
59
- * ```ts
60
- * {AT}Input() {AT}InputNumber() visible: number = 1;
61
- * {AT}Input() {AT}InputNumber(null) visible: number = 2;
62
- * ```
63
- */
64
- function InputNumber(defaultValue = 0) {
65
- return propDecoratorFactory('InputNumber', toNumber, defaultValue);
66
- }
67
-
68
3
  function makeFn(type, options) {
69
4
  return (_, __, descriptor) => {
70
5
  const source = descriptor.value;
@@ -125,5 +60,5 @@ function ZoneRun(options) {
125
60
  * Generated bundle index. Do not edit.
126
61
  */
127
62
 
128
- export { InputBoolean, InputNumber, ZoneOutside, ZoneRun, toBoolean, toNumber };
63
+ export { ZoneOutside, ZoneRun };
129
64
  //# sourceMappingURL=decorator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.mjs","sources":["../../../../packages/util/decorator/convert.ts","../../../../packages/util/decorator/zone-outside.ts","../../../../packages/util/decorator/decorator.ts"],"sourcesContent":["import { warn } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type BooleanInput = boolean | string | undefined | null;\nexport type NumberInput = number | string | undefined | null;\n\nfunction propDecoratorFactory<T, D>(\n name: string,\n fallback: (v: T, defaultValue: D) => D,\n defaultValue: NzSafeAny\n): (target: NzSafeAny, propName: string) => void {\n function propDecorator(\n target: NzSafeAny,\n propName: string,\n originalDescriptor?: TypedPropertyDescriptor<NzSafeAny>\n ): NzSafeAny {\n const privatePropName = `$$__${propName}`;\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\n warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\n }\n }\n\n Object.defineProperty(target, privatePropName, {\n configurable: true,\n writable: true\n });\n\n return {\n get(): string {\n return originalDescriptor && originalDescriptor.get\n ? originalDescriptor.get.bind(this)()\n : this[privatePropName];\n },\n set(value: T): void {\n if (originalDescriptor && originalDescriptor.set) {\n originalDescriptor.set.bind(this)(fallback(value, defaultValue));\n }\n this[privatePropName] = fallback(value, defaultValue);\n }\n };\n }\n\n return propDecorator;\n}\n\nexport function toBoolean(\n value: unknown,\n defaultValue: boolean | null | undefined = false\n): boolean | null | undefined {\n return value == null ? defaultValue : `${value}` !== 'false';\n}\n\n/**\n * @deprecated Recommended to use the built-in `transform` and `static ngAcceptInputType_` can be removed\n * - Use `@Input({ transform: booleanAttribute })` instead of `@InputBoolean()`\n * - Use `@Input({ transform: (v: unknown) => (v == null ? null : booleanAttribute(v)) })` instead of `@InputBoolean(null)`\n *\n * Input decorator that handle a prop to do get/set automatically with toBoolean\n *\n * ```ts\n * {AT}Input() {AT}InputBoolean() visible: boolean = false;\n * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;\n * ```\n */\nexport function InputBoolean(defaultValue: boolean | null = false): NzSafeAny {\n return propDecoratorFactory('InputBoolean', toBoolean, defaultValue);\n}\n\nexport function toNumber(value: unknown): number;\nexport function toNumber<D>(value: unknown, fallback: D): number | D;\nexport function toNumber(value: unknown, fallbackValue: number = 0): number {\n return !isNaN(parseFloat(value as NzSafeAny)) && !isNaN(Number(value)) ? Number(value) : fallbackValue;\n}\n\n/**\n * @deprecated Recommended to use the built-in `transform` and `static ngAcceptInputType_` can be removed\n * - Use `@Input({ transform: numberAttribute })` instead of `@InputNumber()`\n * - Use `@Input({ transform: (v: unknown) => (v == null ? null : numberAttribute(v)) })` instead of `@InputNumber(null)`\n *\n * Input decorator that handle a prop to do get/set automatically with toNumber\n *\n * ```ts\n * {AT}Input() {AT}InputNumber() visible: number = 1;\n * {AT}Input() {AT}InputNumber(null) visible: number = 2;\n * ```\n */\nexport function InputNumber(defaultValue: number | null = 0): NzSafeAny {\n return propDecoratorFactory('InputNumber', toNumber, defaultValue);\n}\n","import { warn } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface ZoneOptions {\n ngZoneName?: string;\n}\n\ntype DecoratorType = (target: unknown, fn: string, descriptor: PropertyDescriptor) => PropertyDescriptor;\n\nfunction makeFn(type: 'runOutsideAngular' | 'run', options?: ZoneOptions): DecoratorType {\n return (_, __, descriptor) => {\n const source = descriptor.value;\n descriptor.value = function (...data: NzSafeAny[]): () => void {\n const that = this as NzSafeAny;\n const ngZone = that[options?.ngZoneName || 'ngZone'];\n if (!ngZone) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);\n }\n return source.call(this, ...data);\n }\n let res: NzSafeAny;\n ngZone[type](() => {\n res = source.call(this, ...data);\n });\n return res;\n };\n\n return descriptor;\n };\n}\n\n/**\n * The decoration method runs in `runOutsideAngular`\n *\n * 装饰方法运行在 `runOutsideAngular` 内\n *\n * ```ts\n * class MockClass {\n * readonly ngZone = inject(NgZone);\n *\n * {AT}ZoneOutside()\n * runOutsideAngular(): void {}\n * }\n * ```\n */\nexport function ZoneOutside(options?: ZoneOptions): DecoratorType {\n return makeFn('runOutsideAngular', options);\n}\n\n/**\n * The decoration method runs in `run`\n *\n * 装饰方法运行在 `run` 内\n *\n * ```ts\n * class MockClass {\n * readonly ngZone = inject(NgZone);\n *\n * {AT}ZoneRun()\n * run(): void {}\n * }\n * ```\n */\nexport function ZoneRun(options?: ZoneOptions): DecoratorType {\n return makeFn('run', options);\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":"decorator.mjs","sources":["../../../../packages/util/decorator/zone-outside.ts","../../../../packages/util/decorator/decorator.ts"],"sourcesContent":["import { warn } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface ZoneOptions {\n ngZoneName?: string;\n}\n\ntype DecoratorType = (target: unknown, fn: string, descriptor: PropertyDescriptor) => PropertyDescriptor;\n\nfunction makeFn(type: 'runOutsideAngular' | 'run', options?: ZoneOptions): DecoratorType {\n return (_, __, descriptor) => {\n const source = descriptor.value;\n descriptor.value = function (...data: NzSafeAny[]): () => void {\n const that = this as NzSafeAny;\n const ngZone = that[options?.ngZoneName || 'ngZone'];\n if (!ngZone) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);\n }\n return source.call(this, ...data);\n }\n let res: NzSafeAny;\n ngZone[type](() => {\n res = source.call(this, ...data);\n });\n return res;\n };\n\n return descriptor;\n };\n}\n\n/**\n * The decoration method runs in `runOutsideAngular`\n *\n * 装饰方法运行在 `runOutsideAngular` 内\n *\n * ```ts\n * class MockClass {\n * readonly ngZone = inject(NgZone);\n *\n * {AT}ZoneOutside()\n * runOutsideAngular(): void {}\n * }\n * ```\n */\nexport function ZoneOutside(options?: ZoneOptions): DecoratorType {\n return makeFn('runOutsideAngular', options);\n}\n\n/**\n * The decoration method runs in `run`\n *\n * 装饰方法运行在 `run` 内\n *\n * ```ts\n * class MockClass {\n * readonly ngZone = inject(NgZone);\n *\n * {AT}ZoneRun()\n * run(): void {}\n * }\n * ```\n */\nexport function ZoneRun(options?: ZoneOptions): DecoratorType {\n return makeFn('run', options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AASA,SAAS,MAAM,CAAC,IAAiC,EAAE,OAAqB,EAAA;AACtE,IAAA,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,KAAI;AAC3B,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK;AAC/B,QAAA,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAiB,EAAA;YAC/C,MAAM,IAAI,GAAG,IAAiB;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,QAAQ,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;oBACjD,IAAI,CAAC,CAA2E,yEAAA,CAAA,CAAC;;gBAEnF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;;AAEnC,YAAA,IAAI,GAAc;AAClB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAK;gBAChB,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAClC,aAAC,CAAC;AACF,YAAA,OAAO,GAAG;AACZ,SAAC;AAED,QAAA,OAAO,UAAU;AACnB,KAAC;AACH;AAEA;;;;;;;;;;;;;AAaG;AACG,SAAU,WAAW,CAAC,OAAqB,EAAA;AAC/C,IAAA,OAAO,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC;AAC7C;AAEA;;;;;;;;;;;;;AAaG;AACG,SAAU,OAAO,CAAC,OAAqB,EAAA;AAC3C,IAAA,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/B;;AClEA;;AAEG;;;;"}
@@ -2,7 +2,7 @@ import { deepGet } from '@delon/util/other';
2
2
  import { CurrencyPipe, formatNumber } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { inject, LOCALE_ID, DEFAULT_CURRENCY_CODE, Injectable } from '@angular/core';
5
- import * as i1 from '@delon/util/config';
5
+ import { AlainConfigService } from '@delon/util/config';
6
6
 
7
7
  /**
8
8
  * String formatting
@@ -193,11 +193,12 @@ const CurrencyMega_Powers = [
193
193
  class CurrencyService {
194
194
  locale = inject(LOCALE_ID);
195
195
  defCurrencyCode = inject(DEFAULT_CURRENCY_CODE, { optional: true }) ?? 'USD';
196
+ cogSrv = inject(AlainConfigService);
196
197
  c;
197
198
  currencyPipe;
198
- constructor(cog) {
199
+ constructor() {
199
200
  this.currencyPipe = new CurrencyPipe(this.locale, this.defCurrencyCode);
200
- this.c = cog.merge('utilCurrency', {
201
+ this.c = this.cogSrv.merge('utilCurrency', {
201
202
  startingUnit: 'yuan',
202
203
  megaUnit: { Q: '京', T: '兆', B: '亿', M: '万', K: '千' },
203
204
  precision: 2,
@@ -412,13 +413,13 @@ class CurrencyService {
412
413
  : integerRes + (decimalRes === '' ? '' : `点${decimalRes}`));
413
414
  return ret;
414
415
  }
415
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CurrencyService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
416
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CurrencyService, providedIn: 'root' });
416
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CurrencyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
417
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CurrencyService, providedIn: 'root' });
417
418
  }
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CurrencyService, decorators: [{
419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CurrencyService, decorators: [{
419
420
  type: Injectable,
420
421
  args: [{ providedIn: 'root' }]
421
- }], ctorParameters: () => [{ type: i1.AlainConfigService }] });
422
+ }], ctorParameters: () => [] });
422
423
 
423
424
  /**
424
425
  * Generated bundle index. Do not edit.