@yelon/util 18.3.0 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +1 -1
  2. package/browser/cookie.service.d.ts +1 -3
  3. package/browser/style.d.ts +1 -3
  4. package/config/abc/date-picker.type.d.ts +2 -5
  5. package/config/abc/exception.type.d.ts +5 -7
  6. package/config/abc/loading.type.d.ts +1 -3
  7. package/config/abc/media.type.d.ts +1 -2
  8. package/config/abc/st.type.d.ts +11 -18
  9. package/config/acl/acl.type.d.ts +1 -2
  10. package/config/chart/chart.type.d.ts +1 -4
  11. package/config/config.service.d.ts +5 -4
  12. package/config/sf/sf.type.d.ts +3 -6
  13. package/config/theme/responsive.type.d.ts +8 -10
  14. package/date-time/time.d.ts +1 -2
  15. package/decorator/convert.d.ts +2 -3
  16. package/fesm2022/array.mjs +4 -4
  17. package/fesm2022/array.mjs.map +1 -1
  18. package/fesm2022/browser.mjs +13 -16
  19. package/fesm2022/browser.mjs.map +1 -1
  20. package/fesm2022/config.mjs +33 -18
  21. package/fesm2022/config.mjs.map +1 -1
  22. package/fesm2022/date-time.mjs +1 -1
  23. package/fesm2022/date-time.mjs.map +1 -1
  24. package/fesm2022/decorator.mjs.map +1 -1
  25. package/fesm2022/format.mjs +9 -7
  26. package/fesm2022/format.mjs.map +1 -1
  27. package/fesm2022/mcache.mjs.map +1 -1
  28. package/fesm2022/mtypes.mjs +4 -5
  29. package/fesm2022/mtypes.mjs.map +1 -1
  30. package/fesm2022/other.mjs +17 -21
  31. package/fesm2022/other.mjs.map +1 -1
  32. package/fesm2022/pipe-currency.mjs +20 -26
  33. package/fesm2022/pipe-currency.mjs.map +1 -1
  34. package/fesm2022/pipe-filter.mjs +8 -8
  35. package/fesm2022/pipe-filter.mjs.map +1 -1
  36. package/fesm2022/pipe-format.mjs +8 -8
  37. package/fesm2022/pipe-format.mjs.map +1 -1
  38. package/format/string.d.ts +3 -6
  39. package/mtypes/header-menu.type.d.ts +2 -3
  40. package/mtypes/menu.type.d.ts +5 -6
  41. package/mtypes/page.d.ts +1 -2
  42. package/other/deep.d.ts +4 -7
  43. package/other/lazy.service.d.ts +2 -5
  44. package/other/logger.d.ts +3 -4
  45. package/other/path-to-regexp.service.d.ts +11 -12
  46. package/package.json +8 -42
  47. package/pipes/filter/filter.pipe.d.ts +1 -2
  48. package/esm2022/array/array-type.service.mjs +0 -2
  49. package/esm2022/array/array.mjs +0 -5
  50. package/esm2022/array/array.service.mjs +0 -278
  51. package/esm2022/array/index.mjs +0 -3
  52. package/esm2022/browser/browser.mjs +0 -5
  53. package/esm2022/browser/cookie.service.mjs +0 -100
  54. package/esm2022/browser/copy.mjs +0 -28
  55. package/esm2022/browser/index.mjs +0 -6
  56. package/esm2022/browser/is-empty.mjs +0 -19
  57. package/esm2022/browser/scroll.service.mjs +0 -85
  58. package/esm2022/browser/style.mjs +0 -38
  59. package/esm2022/config/abc/cell.type.mjs +0 -2
  60. package/esm2022/config/abc/date-picker.type.mjs +0 -2
  61. package/esm2022/config/abc/error-collect.type.mjs +0 -2
  62. package/esm2022/config/abc/exception.type.mjs +0 -2
  63. package/esm2022/config/abc/image.type.mjs +0 -2
  64. package/esm2022/config/abc/index.mjs +0 -18
  65. package/esm2022/config/abc/loading.type.mjs +0 -2
  66. package/esm2022/config/abc/lodop.type.mjs +0 -2
  67. package/esm2022/config/abc/media.type.mjs +0 -2
  68. package/esm2022/config/abc/onboarding.type.mjs +0 -2
  69. package/esm2022/config/abc/page-header.type.mjs +0 -2
  70. package/esm2022/config/abc/pdf.type.mjs +0 -2
  71. package/esm2022/config/abc/se.type.mjs +0 -2
  72. package/esm2022/config/abc/sg.type.mjs +0 -2
  73. package/esm2022/config/abc/st.type.mjs +0 -2
  74. package/esm2022/config/abc/sv.type.mjs +0 -3
  75. package/esm2022/config/abc/xlsx.type.mjs +0 -2
  76. package/esm2022/config/abc/zip.type.mjs +0 -2
  77. package/esm2022/config/acl/acl.type.mjs +0 -2
  78. package/esm2022/config/auth/auth.type.mjs +0 -2
  79. package/esm2022/config/bis/bis.type.mjs +0 -2
  80. package/esm2022/config/cache/cache.type.mjs +0 -2
  81. package/esm2022/config/chart/chart.type.mjs +0 -2
  82. package/esm2022/config/config.mjs +0 -5
  83. package/esm2022/config/config.service.mjs +0 -38
  84. package/esm2022/config/config.types.mjs +0 -12
  85. package/esm2022/config/index.mjs +0 -15
  86. package/esm2022/config/mock/mock.type.mjs +0 -2
  87. package/esm2022/config/sf/sf.type.mjs +0 -2
  88. package/esm2022/config/socket/socket.type.mjs +0 -2
  89. package/esm2022/config/theme/http.type.mjs +0 -2
  90. package/esm2022/config/theme/i18n.type.mjs +0 -2
  91. package/esm2022/config/theme/index.mjs +0 -5
  92. package/esm2022/config/theme/pipe.type.mjs +0 -2
  93. package/esm2022/config/theme/responsive.type.mjs +0 -2
  94. package/esm2022/config/util/array.type.mjs +0 -2
  95. package/esm2022/config/util/currency.type.mjs +0 -2
  96. package/esm2022/date-time/date-time.mjs +0 -5
  97. package/esm2022/date-time/index.mjs +0 -3
  98. package/esm2022/date-time/picker.mjs +0 -116
  99. package/esm2022/date-time/time.mjs +0 -103
  100. package/esm2022/decorator/convert.mjs +0 -66
  101. package/esm2022/decorator/decorator.mjs +0 -5
  102. package/esm2022/decorator/index.mjs +0 -3
  103. package/esm2022/decorator/zone-outside.mjs +0 -57
  104. package/esm2022/form/form.mjs +0 -5
  105. package/esm2022/form/index.mjs +0 -3
  106. package/esm2022/form/match-control.mjs +0 -30
  107. package/esm2022/form/validators.mjs +0 -81
  108. package/esm2022/format/currency.service.mjs +0 -233
  109. package/esm2022/format/currency.types.mjs +0 -8
  110. package/esm2022/format/format.mjs +0 -5
  111. package/esm2022/format/index.mjs +0 -5
  112. package/esm2022/format/string.mjs +0 -85
  113. package/esm2022/format/validate.mjs +0 -94
  114. package/esm2022/index.mjs +0 -14
  115. package/esm2022/math/in-range.mjs +0 -25
  116. package/esm2022/math/index.mjs +0 -3
  117. package/esm2022/math/math.mjs +0 -5
  118. package/esm2022/math/round.mjs +0 -53
  119. package/esm2022/mcache/index.mjs +0 -2
  120. package/esm2022/mcache/localStorageUtils.mjs +0 -60
  121. package/esm2022/mcache/mcache.mjs +0 -5
  122. package/esm2022/mtypes/authority.type.mjs +0 -2
  123. package/esm2022/mtypes/header-menu.type.mjs +0 -2
  124. package/esm2022/mtypes/index.mjs +0 -10
  125. package/esm2022/mtypes/menu.type.mjs +0 -2
  126. package/esm2022/mtypes/mtypes.mjs +0 -5
  127. package/esm2022/mtypes/nav.types.mjs +0 -9
  128. package/esm2022/mtypes/page.mjs +0 -42
  129. package/esm2022/mtypes/project-info.types.mjs +0 -2
  130. package/esm2022/mtypes/response.mjs +0 -2
  131. package/esm2022/mtypes/role.type.mjs +0 -2
  132. package/esm2022/mtypes/user.types.mjs +0 -2
  133. package/esm2022/other/assert.mjs +0 -67
  134. package/esm2022/other/deep.mjs +0 -78
  135. package/esm2022/other/favicon.mjs +0 -29
  136. package/esm2022/other/index.mjs +0 -8
  137. package/esm2022/other/lazy.service.mjs +0 -129
  138. package/esm2022/other/logger.mjs +0 -33
  139. package/esm2022/other/other.mjs +0 -5
  140. package/esm2022/other/path-to-regexp.service.mjs +0 -239
  141. package/esm2022/other/resize.mjs +0 -4
  142. package/esm2022/pipes/currency/cny.pipe.mjs +0 -23
  143. package/esm2022/pipes/currency/index.mjs +0 -5
  144. package/esm2022/pipes/currency/mega.pipe.mjs +0 -25
  145. package/esm2022/pipes/currency/module.mjs +0 -19
  146. package/esm2022/pipes/currency/pipe-currency.mjs +0 -5
  147. package/esm2022/pipes/currency/price.pipe.mjs +0 -27
  148. package/esm2022/pipes/filter/filter.pipe.mjs +0 -20
  149. package/esm2022/pipes/filter/index.mjs +0 -3
  150. package/esm2022/pipes/filter/module.mjs +0 -17
  151. package/esm2022/pipes/filter/pipe-filter.mjs +0 -5
  152. package/esm2022/pipes/format/index.mjs +0 -3
  153. package/esm2022/pipes/format/mask.pipe.mjs +0 -34
  154. package/esm2022/pipes/format/module.mjs +0 -17
  155. package/esm2022/pipes/format/pipe-format.mjs +0 -5
  156. package/esm2022/pipes/index.mjs +0 -4
  157. package/esm2022/pipes/pipes.mjs +0 -5
  158. package/esm2022/token/index.mjs +0 -3
  159. package/esm2022/token/page-visibility.mjs +0 -15
  160. package/esm2022/token/token.mjs +0 -5
  161. package/esm2022/token/window.mjs +0 -17
  162. package/esm2022/yelon-util.mjs +0 -5
package/README.md CHANGED
@@ -7,7 +7,7 @@ Universal toolset of ng-yunzai.
7
7
 
8
8
  + [Document](https://ng.yunzainfo.com/util) ([Surge Mirror](https://ng-yunzai-doc.surge.sh/util)
9
9
  + [@yelon Source](https://github.com/hbyunzai/yelon)
10
- + [DEMO](https://ng-yunzai.surge.sh) ([国内镜像](https://ng.yunzainfo.com/))
10
+ + [DEMO](https://ng-yunzai.surge.sh) ([国内镜像](https://ng-yunzai.gitee.io/))
11
11
 
12
12
  ## Architecture
13
13
 
@@ -32,9 +32,7 @@ export declare class CookieService {
32
32
  *
33
33
  * 获取所有Cookie键值对
34
34
  */
35
- getAll(): {
36
- [key: string]: string;
37
- };
35
+ getAll(): Record<string, string>;
38
36
  /**
39
37
  * Get the value of given cookie `key`
40
38
  *
@@ -16,6 +16,4 @@ import { Renderer2 } from '@angular/core';
16
16
  * })
17
17
  * ```
18
18
  */
19
- export declare function updateHostClass(el: HTMLElement, renderer: Renderer2, classMap: {
20
- [klass: string]: unknown;
21
- }, preClean?: boolean): void;
19
+ export declare function updateHostClass(el: HTMLElement, renderer: Renderer2, classMap: Record<string, unknown>, preClean?: boolean): void;
@@ -1,4 +1,3 @@
1
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
2
1
  import type { DisabledTimeFn, NzDateMode, PresetRanges, SupportTimeOptions } from 'ng-zorro-antd/date-picker';
3
2
  export interface YunzaiDateRangePickerConfig {
4
3
  /**
@@ -21,9 +20,7 @@ export interface YunzaiDateRangePickerConfig {
21
20
  /**
22
21
  * 默认:`{ position: 'relative' }`
23
22
  */
24
- nzPopupStyle?: {
25
- [klass: string]: unknown;
26
- };
23
+ nzPopupStyle?: Record<string, unknown>;
27
24
  nzDropdownClassName?: string;
28
25
  nzRenderExtraFooter?: string;
29
26
  nzShowTime?: SupportTimeOptions | boolean;
@@ -46,7 +43,7 @@ export interface YunzaiDateRangePickerShortcut {
46
43
  list?: YunzaiDateRangePickerShortcutItem[];
47
44
  }
48
45
  export interface YunzaiDateRangePickerShortcutItem {
49
- [key: string]: NzSafeAny;
46
+ [key: string]: any;
50
47
  text: string;
51
48
  fn: (value: Array<Date | null>) => [Date | null, Date | null];
52
49
  }
@@ -1,9 +1,7 @@
1
1
  export interface YunzaiExceptionType {
2
- typeDict?: {
3
- [key: number | string]: {
4
- img: string;
5
- title: string;
6
- desc?: string;
7
- };
8
- };
2
+ typeDict?: Record<number | string, {
3
+ img: string;
4
+ title: string;
5
+ desc?: string;
6
+ }>;
9
7
  }
@@ -18,9 +18,7 @@ export interface YunzaiLoadingConfig {
18
18
  };
19
19
  custom?: {
20
20
  html?: string | SafeHtml;
21
- style?: {
22
- [klass: string]: unknown;
23
- };
21
+ style?: Record<string, unknown>;
24
22
  };
25
23
  /**
26
24
  * 延迟,默认:`0`
@@ -1,4 +1,3 @@
1
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
2
1
  export interface YunzaiMediaConfig {
3
2
  /**
4
3
  * Plyr library path, default: `["https://cdn.bootcdn.net/ajax/libs/plyr/3.5.10/plyr.min.js", "https://cdn.bootcdn.net/ajax/libs/plyr/3.5.10/plyr.css"]`
@@ -7,5 +6,5 @@ export interface YunzaiMediaConfig {
7
6
  /**
8
7
  * Please refer to [plyr options](https://github.com/sampotts/plyr#options)
9
8
  */
10
- options?: NzSafeAny;
9
+ options?: any;
11
10
  }
@@ -1,7 +1,6 @@
1
1
  import { HttpHeaders, HttpParams } from '@angular/common/http';
2
2
  import { TemplateRef, TrackByFunction } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
5
4
  import type { NzDrawerOptions } from 'ng-zorro-antd/drawer';
6
5
  import type { ModalOptions } from 'ng-zorro-antd/modal';
7
6
  import type { PaginationItemRenderContext } from 'ng-zorro-antd/pagination';
@@ -43,11 +42,11 @@ export interface YunzaiSTConfig {
43
42
  *
44
43
  * 是否忽略参数中 `null` 或 `undefind` 值
45
44
  */
46
- ignoreParamNull?: Boolean;
45
+ ignoreParamNull?: boolean;
47
46
  /** 请求方法,默认:`GET` */
48
47
  method?: string;
49
48
  /** 请求体 `Header` */
50
- headers?: NzSafeAny;
49
+ headers?: any;
51
50
  /**
52
51
  * 重命名参数 `pi`、`ps`,默认:`{ pi: 'pi', ps: 'ps', skip: 'skip', limit: 'limit' }`
53
52
  * - `{ pi: 'Page' }` => `pi` 会被替换成 Page
@@ -69,7 +68,7 @@ export interface YunzaiSTConfig {
69
68
  /**
70
69
  * 请求前数据处理
71
70
  */
72
- process?: (requestOptions: NzSafeAny) => NzSafeAny;
71
+ process?: (requestOptions: any) => any;
73
72
  };
74
73
  /** 返回体配置 */
75
74
  res?: {
@@ -80,18 +79,18 @@ export interface YunzaiSTConfig {
80
79
  reName?: {
81
80
  total?: string | string[];
82
81
  list?: string | string[];
83
- } | ((result: NzSafeAny, options: {
82
+ } | ((result: any, options: {
84
83
  pi: number;
85
84
  ps: number;
86
85
  total: number;
87
86
  }) => {
88
87
  total: number;
89
- list: NzSafeAny[];
88
+ list: any[];
90
89
  });
91
90
  /**
92
91
  * 数据预处理
93
92
  */
94
- process?: (data: NzSafeAny[], rawData?: NzSafeAny) => NzSafeAny[];
93
+ process?: (data: any[], rawData?: any) => any[];
95
94
  };
96
95
  /** 返回体配置 */
97
96
  page?: {
@@ -280,9 +279,7 @@ export interface YunzaiSTConfig {
280
279
  /**
281
280
  * Style of the popover card
282
281
  */
283
- overlayStyle?: {
284
- [key: string]: string;
285
- };
282
+ overlayStyle?: Record<string, string>;
286
283
  /**
287
284
  * Text of the Cancel button
288
285
  */
@@ -329,7 +326,7 @@ export interface YunzaiSTConfig {
329
326
  /**
330
327
  * 表格行的类名
331
328
  */
332
- rowClassName?: (record: NzSafeAny, index: number) => string;
329
+ rowClassName?: (record: any, index: number) => string;
333
330
  /**
334
331
  * 通过点击行来展开子行,Default: `false`
335
332
  */
@@ -403,14 +400,10 @@ export interface YunzaiSTConfig {
403
400
  url: string;
404
401
  options: {
405
402
  body?: unknown;
406
- headers?: HttpHeaders | {
407
- [header: string]: string | string[];
408
- };
409
- params?: HttpParams | {
410
- [param: string]: string | string[];
411
- };
403
+ headers?: HttpHeaders | Record<string, string | string[]>;
404
+ params?: HttpParams | Record<string, string | string[]>;
412
405
  };
413
- }) => Observable<NzSafeAny>;
406
+ }) => Observable<any>;
414
407
  /**
415
408
  * Date format
416
409
  *
@@ -1,4 +1,3 @@
1
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
2
1
  export interface YunzaiACLConfig {
3
2
  /**
4
3
  * Router URL when guard fail, default: `/403`
@@ -28,5 +27,5 @@ export interface YunzaiACLType {
28
27
  * 是否取反,即结果为 `true` 时表示未授权
29
28
  */
30
29
  except?: boolean;
31
- [key: string]: NzSafeAny;
30
+ [key: string]: any;
32
31
  }
@@ -1,4 +1,3 @@
1
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
2
1
  export interface YunzaiChartConfig {
3
2
  /**
4
3
  * [G2](https://g2.antv.vision/zh/docs/manual/getting-started) library path
@@ -8,9 +7,7 @@ export interface YunzaiChartConfig {
8
7
  * ]`
9
8
  */
10
9
  libs?: string[];
11
- theme?: string | {
12
- [key: string]: NzSafeAny;
13
- };
10
+ theme?: string | Record<string, any>;
14
11
  /**
15
12
  * [ECharts](https://echarts.apache.org/) library path
16
13
  * default: `[
@@ -1,13 +1,14 @@
1
1
  import { YunzaiConfig, YunzaiConfigKey } from './config.types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class YunzaiConfigService {
4
- private config;
5
- constructor(defaultConfig?: YunzaiConfig);
4
+ private readonly config;
6
5
  get<T extends YunzaiConfigKey>(componentName: T, key?: string): YunzaiConfig[T];
7
6
  merge<T extends YunzaiConfigKey>(componentName: T, ...defaultValues: Array<YunzaiConfig[T]>): YunzaiConfig[T];
7
+ /**
8
+ * 将配置附加到当前实例中,支持 Signal 信号
9
+ */
8
10
  attach<T extends YunzaiConfigKey>(componentThis: unknown, componentName: T, defaultValues: YunzaiConfig[T]): void;
9
- attachKey<T extends YunzaiConfigKey>(componentThis: unknown, componentName: T, key: string): void;
10
11
  set<T extends YunzaiConfigKey>(componentName: T, value: YunzaiConfig[T]): void;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<YunzaiConfigService, [{ optional: true; }]>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<YunzaiConfigService, never>;
12
13
  static ɵprov: i0.ɵɵInjectableDeclaration<YunzaiConfigService>;
13
14
  }
@@ -1,5 +1,4 @@
1
1
  import type { Options as AjvOptions } from 'ajv';
2
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
3
2
  export interface YunzaiSFConfigFormatMap {
4
3
  'date-time': {
5
4
  widget?: string;
@@ -81,9 +80,7 @@ export interface YunzaiSFConfig {
81
80
  /**
82
81
  * 自定义通用错误信息,默认:`{}`
83
82
  */
84
- errors?: {
85
- [key: string]: string;
86
- };
83
+ errors?: Record<string, string>;
87
84
  /**
88
85
  * 默认全局布局,类型为:`SFUISchemaItem`,使用时加上可智能提示,例如:
89
86
  *
@@ -91,7 +88,7 @@ export interface YunzaiSFConfig {
91
88
  * ui: {} as SFUISchemaItem
92
89
  * ```
93
90
  */
94
- ui?: NzSafeAny;
91
+ ui?: any;
95
92
  /**
96
93
  * 元素组件大小,用于 `nzSize` 值
97
94
  */
@@ -103,7 +100,7 @@ export interface YunzaiSFConfig {
103
100
  * button: {} as SFButton
104
101
  * ```
105
102
  */
106
- button?: NzSafeAny;
103
+ button?: any;
107
104
  /**
108
105
  * date小部件:`type="string"` 且不指定 `schema.format` 和 `ui.format` 时日期格式,默认:`yyyy-MM-dd HH:mm:ss`
109
106
  */
@@ -1,12 +1,10 @@
1
1
  export interface YunzaiThemeResponsiveConfig {
2
- rules: {
3
- [key: number]: {
4
- xs: number;
5
- sm?: number;
6
- md?: number;
7
- lg?: number;
8
- xl?: number;
9
- xxl?: number;
10
- };
11
- };
2
+ rules: Record<number, {
3
+ xs: number;
4
+ sm?: number;
5
+ md?: number;
6
+ lg?: number;
7
+ xl?: number;
8
+ xxl?: number;
9
+ }>;
12
10
  }
@@ -1,5 +1,4 @@
1
1
  import type { YunzaiThemePipeDateFormatCustom } from '@yelon/util/config';
2
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
3
2
  import { DateLocale } from 'ng-zorro-antd/i18n';
4
3
  /**
5
4
  * Get the time range, return `[ Date, Date]` for the start and end dates
@@ -21,7 +20,7 @@ export interface ToDateOptions {
21
20
  /** If parsing fails try to parse the date by pressing `formatString` */
22
21
  formatString?: string;
23
22
  /** If parsing fails returned default value, default: `new Date(NaN)` */
24
- defaultValue?: NzSafeAny;
23
+ defaultValue?: any;
25
24
  timestampSecond?: boolean;
26
25
  }
27
26
  /**
@@ -1,4 +1,3 @@
1
- import type { NzSafeAny } from 'ng-zorro-antd/core/types';
2
1
  export type BooleanInput = boolean | string | undefined | null;
3
2
  export type NumberInput = number | string | undefined | null;
4
3
  export declare function toBoolean(value: unknown, defaultValue?: boolean | null | undefined): boolean | null | undefined;
@@ -14,7 +13,7 @@ export declare function toBoolean(value: unknown, defaultValue?: boolean | null
14
13
  * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;
15
14
  * ```
16
15
  */
17
- export declare function InputBoolean(defaultValue?: boolean | null): NzSafeAny;
16
+ export declare function InputBoolean(defaultValue?: boolean | null): any;
18
17
  export declare function toNumber(value: unknown): number;
19
18
  export declare function toNumber<D>(value: unknown, fallback: D): number | D;
20
19
  /**
@@ -29,4 +28,4 @@ export declare function toNumber<D>(value: unknown, fallback: D): number | D;
29
28
  * {AT}Input() {AT}InputNumber(null) visible: number = 2;
30
29
  * ```
31
30
  */
32
- export declare function InputNumber(defaultValue?: number | null): NzSafeAny;
31
+ export declare function InputNumber(defaultValue?: number | null): any;
@@ -3,8 +3,8 @@ import { Injectable } from '@angular/core';
3
3
  import { NzTreeNode } from 'ng-zorro-antd/core/tree';
4
4
  import * as i1 from '@yelon/util/config';
5
5
 
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
6
  class ArrayService {
7
+ c;
8
8
  constructor(cog) {
9
9
  this.c = cog.merge('utilArray', {
10
10
  deepMapName: 'deep',
@@ -269,10 +269,10 @@ class ArrayService {
269
269
  }, new Map())
270
270
  .values());
271
271
  }
272
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ArrayService, deps: [{ token: i1.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
273
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ArrayService, providedIn: 'root' }); }
272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ArrayService, deps: [{ token: i1.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
273
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ArrayService, providedIn: 'root' });
274
274
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ArrayService, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ArrayService, decorators: [{
276
276
  type: Injectable,
277
277
  args: [{ providedIn: 'root' }]
278
278
  }], ctorParameters: () => [{ type: i1.YunzaiConfigService }] });
@@ -1 +1 @@
1
- {"version":3,"file":"array.mjs","sources":["../../../../packages/util/array/array.service.ts","../../../../packages/util/array/array.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\n\nimport { YunzaiConfigService, YunzaiUtilArrayConfig } from '@yelon/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: YunzaiUtilArrayConfig;\n\n constructor(cog: YunzaiConfigService) {\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<{ [key: string]: any }> = [];\n const inFn = (list: ReadonlyArray<{ [key: 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: { [key: string]: T[] } = {};\n let rootPid = opt.rootParentIdValue;\n const arrType = arr as ReadonlyArray<{ [key: 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: { [key: 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 { [key: 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 { Injectable } from '@angular/core';\n\nimport { YunzaiConfigService, YunzaiUtilArrayConfig } from '@yelon/util/config';\n\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: YunzaiUtilArrayConfig;\n\n constructor(cog: YunzaiConfigService) {\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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"}
@@ -9,10 +9,8 @@ import { inject, Injectable } from '@angular/core';
9
9
  * 一组简单的 Cookie 操作类。
10
10
  */
11
11
  class CookieService {
12
- constructor() {
13
- this._doc = inject(DOCUMENT);
14
- this.platform = inject(Platform);
15
- }
12
+ _doc = inject(DOCUMENT);
13
+ platform = inject(Platform);
16
14
  get doc() {
17
15
  return this._doc || document;
18
16
  }
@@ -32,6 +30,7 @@ class CookieService {
32
30
  getAll() {
33
31
  const ret = {};
34
32
  const arr = this.cookie.split('; ');
33
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
35
34
  for (let i = 0; i < arr.length; i++) {
36
35
  const cookie = arr[i];
37
36
  const index = cookie.indexOf('=');
@@ -73,7 +72,8 @@ class CookieService {
73
72
  .filter(k => optStr[k] && optStr[k] !== true)
74
73
  .map(k => `${k}=${optStr[k].split(';')[0]}`)
75
74
  .join(';');
76
- this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
75
+ const keyValue = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}`;
76
+ this.doc.cookie = `${keyValue}${attributes ? `; ${attributes}` : ''}`;
77
77
  }
78
78
  /**
79
79
  * Remove given cookie
@@ -91,10 +91,10 @@ class CookieService {
91
91
  removeAll() {
92
92
  this.doc.cookie = '';
93
93
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: CookieService, providedIn: 'root' }); }
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CookieService, providedIn: 'root' });
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: CookieService, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CookieService, decorators: [{
98
98
  type: Injectable,
99
99
  args: [{ providedIn: 'root' }]
100
100
  }] });
@@ -115,7 +115,6 @@ function copy(value) {
115
115
  document.body.appendChild(copyTextArea);
116
116
  copyTextArea.value = value;
117
117
  copyTextArea.select();
118
- // eslint-disable-next-line deprecation/deprecation
119
118
  document.execCommand('copy');
120
119
  resolve(value);
121
120
  }
@@ -147,10 +146,8 @@ function isEmpty(element) {
147
146
  }
148
147
 
149
148
  class ScrollService {
150
- constructor() {
151
- this._doc = inject(DOCUMENT);
152
- this.platform = inject(Platform);
153
- }
149
+ _doc = inject(DOCUMENT);
150
+ platform = inject(Platform);
154
151
  _getDoc() {
155
152
  return this._doc || document;
156
153
  }
@@ -219,10 +216,10 @@ class ScrollService {
219
216
  }
220
217
  this.scrollToElement(this._getDoc().body, topOffset);
221
218
  }
222
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
223
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
220
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ScrollService, providedIn: 'root' });
224
221
  }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ScrollService, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ScrollService, decorators: [{
226
223
  type: Injectable,
227
224
  args: [{ providedIn: 'root' }]
228
225
  }] });
@@ -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(): { [key: string]: string } {\n const ret: { [key: string]: string } = {};\n const arr = this.cookie.split('; ');\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: { [key: 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 this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${\n attributes ? `; ${attributes}` : ''\n }`;\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 deprecation/deprecation\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: { [klass: string]: unknown }, renderer: Renderer2): void {\n Object.keys(classMap).forEach(key => renderer.removeClass(el, key));\n}\n\nfunction addClass(el: HTMLElement, classMap: { [klass: 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: { [klass: 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;AAD1B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAwF7C;AAtFC,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,GAA8B,EAAE;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,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,GAAwC,GAAgB;AACpE,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,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAG,EAAA,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACvF,EAAA,UAAU,GAAG,CAAK,EAAA,EAAA,UAAU,EAAE,GAAG,EACnC,EAAE;;AAGJ;;;;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;;+GAxFX,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;;4FACnB,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;;AAErB,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;;ACzBA;;;;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;AAD1B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AA6E7C;IA5ES,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;;+GA7E3C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACFlC,SAAS,WAAW,CAAC,EAAe,EAAE,QAAsC,EAAE,QAAmB,EAAA;IAC/F,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,QAAsC,EAAE,QAAmB,EAAA;AAC5F,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,QAAsC,EACtC,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\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 any;\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":"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"}