@yelon/util 17.3.2 → 18.0.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 (236) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +27 -27
  3. package/array/array-type.service.d.ts +68 -68
  4. package/array/array.service.d.ts +78 -78
  5. package/array/index.d.ts +2 -2
  6. package/browser/cookie.service.d.ts +64 -64
  7. package/browser/copy.d.ts +6 -6
  8. package/browser/index.d.ts +5 -5
  9. package/browser/is-empty.d.ts +6 -6
  10. package/browser/scroll.service.d.ts +34 -34
  11. package/browser/style.d.ts +21 -21
  12. package/config/abc/cell.type.d.ts +118 -118
  13. package/config/abc/date-picker.type.d.ts +52 -52
  14. package/config/abc/error-collect.type.d.ts +10 -10
  15. package/config/abc/exception.type.d.ts +9 -9
  16. package/config/abc/image.type.d.ts +15 -15
  17. package/config/abc/index.d.ts +17 -18
  18. package/config/abc/loading.type.d.ts +31 -31
  19. package/config/abc/lodop.type.d.ts +33 -33
  20. package/config/abc/media.type.d.ts +11 -11
  21. package/config/abc/onboarding.type.d.ts +4 -4
  22. package/config/abc/page-header.type.d.ts +39 -39
  23. package/config/abc/pdf.type.d.ts +35 -35
  24. package/config/abc/se.type.d.ts +32 -32
  25. package/config/abc/sg.type.d.ts +10 -10
  26. package/config/abc/st.type.d.ts +465 -465
  27. package/config/abc/sv.type.d.ts +14 -14
  28. package/config/abc/xlsx.type.d.ts +12 -12
  29. package/config/abc/zip.type.d.ts +10 -10
  30. package/config/acl/acl.type.d.ts +32 -32
  31. package/config/auth/auth.type.d.ts +51 -51
  32. package/config/bis/bis.type.d.ts +11 -11
  33. package/config/cache/cache.type.d.ts +66 -66
  34. package/config/chart/chart.type.d.ts +33 -33
  35. package/config/config.service.d.ts +13 -13
  36. package/config/config.types.d.ts +51 -52
  37. package/config/index.d.ts +14 -14
  38. package/config/mock/mock.type.d.ts +14 -14
  39. package/config/sf/sf.type.d.ts +133 -133
  40. package/config/socket/socket.type.d.ts +4 -4
  41. package/config/theme/http.type.d.ts +15 -15
  42. package/config/theme/i18n.type.d.ts +14 -14
  43. package/config/theme/index.d.ts +3 -3
  44. package/config/theme/pipe.type.d.ts +3 -3
  45. package/config/theme/responsive.type.d.ts +12 -12
  46. package/config/util/array.type.d.ts +22 -22
  47. package/config/util/currency.type.d.ts +39 -39
  48. package/date-time/index.d.ts +2 -2
  49. package/date-time/picker.d.ts +68 -68
  50. package/date-time/time.d.ts +39 -39
  51. package/decorator/convert.d.ts +32 -32
  52. package/decorator/index.d.ts +2 -2
  53. package/decorator/zone-outside.d.ts +35 -35
  54. package/esm2022/array/array-type.service.mjs +1 -1
  55. package/esm2022/array/array.mjs +4 -4
  56. package/esm2022/array/array.service.mjs +277 -277
  57. package/esm2022/array/index.mjs +2 -2
  58. package/esm2022/browser/browser.mjs +4 -4
  59. package/esm2022/browser/cookie.service.mjs +99 -99
  60. package/esm2022/browser/copy.mjs +27 -27
  61. package/esm2022/browser/index.mjs +5 -5
  62. package/esm2022/browser/is-empty.mjs +18 -18
  63. package/esm2022/browser/scroll.service.mjs +84 -84
  64. package/esm2022/browser/style.mjs +37 -37
  65. package/esm2022/config/abc/cell.type.mjs +1 -1
  66. package/esm2022/config/abc/date-picker.type.mjs +1 -1
  67. package/esm2022/config/abc/error-collect.type.mjs +1 -1
  68. package/esm2022/config/abc/exception.type.mjs +1 -1
  69. package/esm2022/config/abc/image.type.mjs +1 -1
  70. package/esm2022/config/abc/index.mjs +18 -19
  71. package/esm2022/config/abc/loading.type.mjs +1 -1
  72. package/esm2022/config/abc/lodop.type.mjs +1 -1
  73. package/esm2022/config/abc/media.type.mjs +1 -1
  74. package/esm2022/config/abc/onboarding.type.mjs +1 -1
  75. package/esm2022/config/abc/page-header.type.mjs +1 -1
  76. package/esm2022/config/abc/pdf.type.mjs +1 -1
  77. package/esm2022/config/abc/se.type.mjs +1 -1
  78. package/esm2022/config/abc/sg.type.mjs +1 -1
  79. package/esm2022/config/abc/st.type.mjs +1 -1
  80. package/esm2022/config/abc/sv.type.mjs +2 -2
  81. package/esm2022/config/abc/xlsx.type.mjs +1 -1
  82. package/esm2022/config/abc/zip.type.mjs +1 -1
  83. package/esm2022/config/acl/acl.type.mjs +1 -1
  84. package/esm2022/config/auth/auth.type.mjs +1 -1
  85. package/esm2022/config/bis/bis.type.mjs +1 -1
  86. package/esm2022/config/cache/cache.type.mjs +1 -1
  87. package/esm2022/config/chart/chart.type.mjs +1 -1
  88. package/esm2022/config/config.mjs +4 -4
  89. package/esm2022/config/config.service.mjs +37 -37
  90. package/esm2022/config/config.types.mjs +12 -12
  91. package/esm2022/config/index.mjs +14 -14
  92. package/esm2022/config/mock/mock.type.mjs +1 -1
  93. package/esm2022/config/sf/sf.type.mjs +1 -1
  94. package/esm2022/config/socket/socket.type.mjs +1 -1
  95. package/esm2022/config/theme/http.type.mjs +1 -1
  96. package/esm2022/config/theme/i18n.type.mjs +1 -1
  97. package/esm2022/config/theme/index.mjs +3 -3
  98. package/esm2022/config/theme/pipe.type.mjs +1 -1
  99. package/esm2022/config/theme/responsive.type.mjs +1 -1
  100. package/esm2022/config/util/array.type.mjs +1 -1
  101. package/esm2022/config/util/currency.type.mjs +1 -1
  102. package/esm2022/date-time/date-time.mjs +4 -4
  103. package/esm2022/date-time/index.mjs +2 -2
  104. package/esm2022/date-time/picker.mjs +115 -115
  105. package/esm2022/date-time/time.mjs +100 -100
  106. package/esm2022/decorator/convert.mjs +65 -65
  107. package/esm2022/decorator/decorator.mjs +4 -4
  108. package/esm2022/decorator/index.mjs +2 -2
  109. package/esm2022/decorator/zone-outside.mjs +56 -56
  110. package/esm2022/form/form.mjs +4 -4
  111. package/esm2022/form/index.mjs +2 -2
  112. package/esm2022/form/match-control.mjs +29 -29
  113. package/esm2022/form/validators.mjs +80 -80
  114. package/esm2022/format/currency.service.mjs +232 -232
  115. package/esm2022/format/currency.types.mjs +7 -7
  116. package/esm2022/format/format.mjs +4 -4
  117. package/esm2022/format/index.mjs +4 -4
  118. package/esm2022/format/string.mjs +84 -84
  119. package/esm2022/format/validate.mjs +93 -93
  120. package/esm2022/index.mjs +13 -13
  121. package/esm2022/math/in-range.mjs +24 -24
  122. package/esm2022/math/index.mjs +2 -2
  123. package/esm2022/math/math.mjs +4 -4
  124. package/esm2022/math/round.mjs +52 -52
  125. package/esm2022/mcache/index.mjs +1 -1
  126. package/esm2022/mcache/localStorageUtils.mjs +58 -58
  127. package/esm2022/mcache/mcache.mjs +4 -4
  128. package/esm2022/mtypes/authority.type.mjs +1 -1
  129. package/esm2022/mtypes/header-menu.type.mjs +1 -1
  130. package/esm2022/mtypes/index.mjs +9 -9
  131. package/esm2022/mtypes/menu.type.mjs +1 -1
  132. package/esm2022/mtypes/mtypes.mjs +4 -4
  133. package/esm2022/mtypes/nav.types.mjs +8 -8
  134. package/esm2022/mtypes/page.mjs +41 -41
  135. package/esm2022/mtypes/project-info.types.mjs +1 -1
  136. package/esm2022/mtypes/response.mjs +1 -1
  137. package/esm2022/mtypes/role.type.mjs +1 -1
  138. package/esm2022/mtypes/user.types.mjs +1 -1
  139. package/esm2022/other/assert.mjs +66 -66
  140. package/esm2022/other/deep.mjs +77 -77
  141. package/esm2022/other/favicon.mjs +28 -28
  142. package/esm2022/other/index.mjs +7 -7
  143. package/esm2022/other/lazy.service.mjs +128 -128
  144. package/esm2022/other/logger.mjs +32 -32
  145. package/esm2022/other/other.mjs +4 -4
  146. package/esm2022/other/path-to-regexp.service.mjs +238 -238
  147. package/esm2022/other/resize.mjs +3 -3
  148. package/esm2022/pipes/currency/cny.pipe.mjs +22 -22
  149. package/esm2022/pipes/currency/index.mjs +4 -4
  150. package/esm2022/pipes/currency/mega.pipe.mjs +24 -24
  151. package/esm2022/pipes/currency/module.mjs +18 -18
  152. package/esm2022/pipes/currency/pipe-currency.mjs +4 -4
  153. package/esm2022/pipes/currency/price.pipe.mjs +26 -26
  154. package/esm2022/pipes/filter/filter.pipe.mjs +19 -19
  155. package/esm2022/pipes/filter/index.mjs +2 -2
  156. package/esm2022/pipes/filter/module.mjs +16 -16
  157. package/esm2022/pipes/filter/pipe-filter.mjs +4 -4
  158. package/esm2022/pipes/format/index.mjs +2 -2
  159. package/esm2022/pipes/format/mask.pipe.mjs +33 -33
  160. package/esm2022/pipes/format/module.mjs +16 -16
  161. package/esm2022/pipes/format/pipe-format.mjs +4 -4
  162. package/esm2022/pipes/index.mjs +3 -3
  163. package/esm2022/pipes/pipes.mjs +4 -4
  164. package/esm2022/token/index.mjs +2 -2
  165. package/esm2022/token/page-visibility.mjs +14 -14
  166. package/esm2022/token/token.mjs +4 -4
  167. package/esm2022/token/window.mjs +16 -16
  168. package/esm2022/yelon-util.mjs +4 -4
  169. package/fesm2022/array.mjs +285 -285
  170. package/fesm2022/browser.mjs +273 -273
  171. package/fesm2022/config.mjs +58 -58
  172. package/fesm2022/config.mjs.map +1 -1
  173. package/fesm2022/date-time.mjs +223 -223
  174. package/fesm2022/decorator.mjs +129 -129
  175. package/fesm2022/form.mjs +118 -118
  176. package/fesm2022/format.mjs +426 -426
  177. package/fesm2022/math.mjs +85 -85
  178. package/fesm2022/mcache.mjs +65 -65
  179. package/fesm2022/mtypes.mjs +57 -57
  180. package/fesm2022/other.mjs +583 -583
  181. package/fesm2022/pipe-currency.mjs +90 -90
  182. package/fesm2022/pipe-filter.mjs +41 -41
  183. package/fesm2022/pipe-format.mjs +55 -55
  184. package/fesm2022/pipes.mjs +8 -8
  185. package/fesm2022/token.mjs +37 -37
  186. package/fesm2022/yelon-util.mjs +18 -18
  187. package/form/index.d.ts +2 -2
  188. package/form/match-control.d.ts +15 -15
  189. package/form/validators.d.ts +62 -62
  190. package/format/currency.service.d.ts +38 -38
  191. package/format/currency.types.d.ts +82 -82
  192. package/format/index.d.ts +4 -4
  193. package/format/string.d.ts +44 -44
  194. package/format/validate.d.ts +72 -72
  195. package/index.d.ts +13 -13
  196. package/math/in-range.d.ts +14 -14
  197. package/math/index.d.ts +2 -2
  198. package/math/round.d.ts +33 -33
  199. package/mcache/index.d.ts +1 -1
  200. package/mcache/localStorageUtils.d.ts +18 -18
  201. package/mtypes/authority.type.d.ts +3 -3
  202. package/mtypes/header-menu.type.d.ts +13 -13
  203. package/mtypes/index.d.ts +9 -9
  204. package/mtypes/menu.type.d.ts +41 -41
  205. package/mtypes/nav.types.d.ts +29 -29
  206. package/mtypes/page.d.ts +47 -47
  207. package/mtypes/project-info.types.d.ts +22 -22
  208. package/mtypes/response.d.ts +7 -7
  209. package/mtypes/role.type.d.ts +10 -10
  210. package/mtypes/user.types.d.ts +22 -22
  211. package/other/assert.d.ts +36 -36
  212. package/other/deep.d.ts +35 -35
  213. package/other/favicon.d.ts +2 -2
  214. package/other/index.d.ts +7 -7
  215. package/other/lazy.service.d.ts +47 -47
  216. package/other/logger.d.ts +5 -5
  217. package/other/path-to-regexp.service.d.ts +27 -27
  218. package/other/resize.d.ts +1 -1
  219. package/package.json +135 -135
  220. package/pipes/currency/cny.pipe.d.ts +14 -14
  221. package/pipes/currency/index.d.ts +4 -4
  222. package/pipes/currency/mega.pipe.d.ts +15 -15
  223. package/pipes/currency/module.d.ts +9 -9
  224. package/pipes/currency/price.pipe.d.ts +18 -18
  225. package/pipes/filter/filter.pipe.d.ts +13 -13
  226. package/pipes/filter/index.d.ts +2 -2
  227. package/pipes/filter/module.d.ts +7 -7
  228. package/pipes/format/index.d.ts +2 -2
  229. package/pipes/format/mask.pipe.d.ts +27 -27
  230. package/pipes/format/module.d.ts +7 -7
  231. package/pipes/index.d.ts +3 -3
  232. package/token/index.d.ts +2 -2
  233. package/token/page-visibility.d.ts +8 -8
  234. package/token/window.d.ts +7 -7
  235. package/config/abc/qr.type.d.ts +0 -25
  236. package/esm2022/config/abc/qr.type.mjs +0 -2
@@ -1,273 +1,273 @@
1
- import { Platform } from '@angular/cdk/platform';
2
- import { DOCUMENT } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { inject, Injectable } from '@angular/core';
5
-
6
- /**
7
- * A set of simple Cookie manipulation classes.
8
- *
9
- * 一组简单的 Cookie 操作类。
10
- */
11
- class CookieService {
12
- constructor() {
13
- this._doc = inject(DOCUMENT);
14
- this.platform = inject(Platform);
15
- }
16
- get doc() {
17
- return this._doc || document;
18
- }
19
- /**
20
- * Original cookie value
21
- *
22
- * 原始Cookie值
23
- */
24
- get cookie() {
25
- return this.platform.isBrowser ? this.doc.cookie : '';
26
- }
27
- /**
28
- * Get all cookie key-value pairs
29
- *
30
- * 获取所有Cookie键值对
31
- */
32
- getAll() {
33
- const ret = {};
34
- const arr = this.cookie.split('; ');
35
- for (let i = 0; i < arr.length; i++) {
36
- const cookie = arr[i];
37
- const index = cookie.indexOf('=');
38
- if (index > 0) {
39
- const name = decodeURIComponent(cookie.substring(0, index));
40
- if (ret[name] == null) {
41
- ret[name] = decodeURIComponent(cookie.substring(index + 1));
42
- }
43
- }
44
- }
45
- return ret;
46
- }
47
- /**
48
- * Get the value of given cookie `key`
49
- *
50
- * 获取指定 `key` 的值
51
- */
52
- get(key) {
53
- return this.getAll()[key];
54
- }
55
- /**
56
- * Sets a value for given cookie key
57
- *
58
- * 设置指定 Cookie 键的值
59
- */
60
- put(key, value, options) {
61
- if (!this.platform.isBrowser) {
62
- return;
63
- }
64
- const opt = { path: '/', ...options };
65
- if (typeof opt.expires === 'number') {
66
- opt.expires = new Date(+new Date() + opt.expires * 1e3);
67
- }
68
- if (typeof opt.expires !== 'string') {
69
- opt.expires = opt.expires ? opt.expires.toUTCString() : '';
70
- }
71
- const optStr = opt;
72
- const attributes = Object.keys(optStr)
73
- .filter(k => optStr[k] && optStr[k] !== true)
74
- .map(k => `${k}=${optStr[k].split(';')[0]}`)
75
- .join(';');
76
- this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
77
- }
78
- /**
79
- * Remove given cookie
80
- *
81
- * 移除指定 Cookie
82
- */
83
- remove(key, options) {
84
- this.put(key, '', options);
85
- }
86
- /**
87
- * Remove all cookies
88
- *
89
- * 移除所有 Cookies
90
- */
91
- removeAll() {
92
- this.doc.cookie = '';
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: CookieService, providedIn: 'root' }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: CookieService, decorators: [{
98
- type: Injectable,
99
- args: [{ providedIn: 'root' }]
100
- }] });
101
-
102
- /**
103
- * Copy text to clipboard
104
- *
105
- * 复制字符串文档至剪贴板
106
- */
107
- function copy(value) {
108
- return new Promise((resolve) => {
109
- let copyTextArea = null;
110
- try {
111
- copyTextArea = document.createElement('textarea');
112
- copyTextArea.style.height = '0px';
113
- copyTextArea.style.opacity = '0';
114
- copyTextArea.style.width = '0px';
115
- document.body.appendChild(copyTextArea);
116
- copyTextArea.value = value;
117
- copyTextArea.select();
118
- // eslint-disable-next-line deprecation/deprecation
119
- document.execCommand('copy');
120
- resolve(value);
121
- }
122
- finally {
123
- if (copyTextArea && copyTextArea.parentNode) {
124
- copyTextArea.parentNode.removeChild(copyTextArea);
125
- }
126
- }
127
- });
128
- }
129
-
130
- /**
131
- * Used to verify `<ng-content />` is empty, useful for custom components.
132
- *
133
- * 用于校验 `<ng-content />` 是否为空,自定义组件时蛮有用。
134
- */
135
- function isEmpty(element) {
136
- const nodes = element.childNodes;
137
- for (let i = 0; i < nodes.length; i++) {
138
- const node = nodes.item(i);
139
- if (node.nodeType === 1 && node.outerHTML.toString().trim().length !== 0) {
140
- return false;
141
- }
142
- else if (node.nodeType === 3 && node.textContent.toString().trim().length !== 0) {
143
- return false;
144
- }
145
- }
146
- return true;
147
- }
148
-
149
- class ScrollService {
150
- constructor() {
151
- this._doc = inject(DOCUMENT);
152
- this.platform = inject(Platform);
153
- }
154
- _getDoc() {
155
- return this._doc || document;
156
- }
157
- _getWin() {
158
- const doc = this._getDoc();
159
- return doc.defaultView || window;
160
- }
161
- /**
162
- * 获取滚动条位置
163
- *
164
- * @param element 指定元素,默认 `window`
165
- */
166
- getScrollPosition(element) {
167
- if (!this.platform.isBrowser) {
168
- return [0, 0];
169
- }
170
- const win = this._getWin();
171
- if (element && element !== win) {
172
- return [element.scrollLeft, element.scrollTop];
173
- }
174
- else {
175
- return [win.scrollX, win.scrollY];
176
- }
177
- }
178
- /**
179
- * 设置滚动条位置
180
- *
181
- * @param element 指定元素
182
- */
183
- scrollToPosition(element, position) {
184
- if (!this.platform.isBrowser) {
185
- return;
186
- }
187
- (element || this._getWin()).scrollTo(position[0], position[1]);
188
- }
189
- /**
190
- * 设置滚动条至指定元素
191
- *
192
- * @param element 指定元素,默认 `document.body`
193
- * @param topOffset 偏移值,默认 `0`
194
- */
195
- scrollToElement(element, topOffset = 0) {
196
- if (!this.platform.isBrowser) {
197
- return;
198
- }
199
- if (!element) {
200
- element = this._getDoc().body;
201
- }
202
- element.scrollIntoView();
203
- const win = this._getWin();
204
- if (win && win.scrollBy) {
205
- win.scrollBy(0, element.getBoundingClientRect().top - topOffset);
206
- if (win.scrollY < 20) {
207
- win.scrollBy(0, -win.scrollY);
208
- }
209
- }
210
- }
211
- /**
212
- * 滚动至顶部
213
- *
214
- * @param topOffset 偏移值,默认 `0`
215
- */
216
- scrollToTop(topOffset = 0) {
217
- if (!this.platform.isBrowser) {
218
- return;
219
- }
220
- this.scrollToElement(this._getDoc().body, topOffset);
221
- }
222
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
223
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
224
- }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ScrollService, decorators: [{
226
- type: Injectable,
227
- args: [{ providedIn: 'root' }]
228
- }] });
229
-
230
- function removeClass(el, classMap, renderer) {
231
- Object.keys(classMap).forEach(key => renderer.removeClass(el, key));
232
- }
233
- function addClass(el, classMap, renderer) {
234
- for (const i in classMap) {
235
- if (classMap[i]) {
236
- renderer.addClass(el, i);
237
- }
238
- }
239
- }
240
- /**
241
- * Update host component style `class`
242
- *
243
- * 更新宿主组件样式 `class`
244
- *
245
- * ```ts
246
- * updateHostClass(
247
- * this.el.nativeElement,
248
- * this.renderer,
249
- * {
250
- * [ 'classname' ]: true,
251
- * [ 'classname' ]: this.type === '1',
252
- * [ this.cls ]: true,
253
- * [ `a-${this.cls}` ]: true
254
- * })
255
- * ```
256
- */
257
- function updateHostClass(el, renderer, classMap, preClean = false) {
258
- if (preClean === true) {
259
- renderer.removeAttribute(el, 'class');
260
- }
261
- else {
262
- removeClass(el, classMap, renderer);
263
- }
264
- classMap = { ...classMap };
265
- addClass(el, classMap, renderer);
266
- }
267
-
268
- /**
269
- * Generated bundle index. Do not edit.
270
- */
271
-
272
- export { CookieService, ScrollService, copy, isEmpty, updateHostClass };
273
- //# sourceMappingURL=browser.mjs.map
1
+ import { Platform } from '@angular/cdk/platform';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+
6
+ /**
7
+ * A set of simple Cookie manipulation classes.
8
+ *
9
+ * 一组简单的 Cookie 操作类。
10
+ */
11
+ class CookieService {
12
+ constructor() {
13
+ this._doc = inject(DOCUMENT);
14
+ this.platform = inject(Platform);
15
+ }
16
+ get doc() {
17
+ return this._doc || document;
18
+ }
19
+ /**
20
+ * Original cookie value
21
+ *
22
+ * 原始Cookie值
23
+ */
24
+ get cookie() {
25
+ return this.platform.isBrowser ? this.doc.cookie : '';
26
+ }
27
+ /**
28
+ * Get all cookie key-value pairs
29
+ *
30
+ * 获取所有Cookie键值对
31
+ */
32
+ getAll() {
33
+ const ret = {};
34
+ const arr = this.cookie.split('; ');
35
+ for (let i = 0; i < arr.length; i++) {
36
+ const cookie = arr[i];
37
+ const index = cookie.indexOf('=');
38
+ if (index > 0) {
39
+ const name = decodeURIComponent(cookie.substring(0, index));
40
+ if (ret[name] == null) {
41
+ ret[name] = decodeURIComponent(cookie.substring(index + 1));
42
+ }
43
+ }
44
+ }
45
+ return ret;
46
+ }
47
+ /**
48
+ * Get the value of given cookie `key`
49
+ *
50
+ * 获取指定 `key` 的值
51
+ */
52
+ get(key) {
53
+ return this.getAll()[key];
54
+ }
55
+ /**
56
+ * Sets a value for given cookie key
57
+ *
58
+ * 设置指定 Cookie 键的值
59
+ */
60
+ put(key, value, options) {
61
+ if (!this.platform.isBrowser) {
62
+ return;
63
+ }
64
+ const opt = { path: '/', ...options };
65
+ if (typeof opt.expires === 'number') {
66
+ opt.expires = new Date(+new Date() + opt.expires * 1e3);
67
+ }
68
+ if (typeof opt.expires !== 'string') {
69
+ opt.expires = opt.expires ? opt.expires.toUTCString() : '';
70
+ }
71
+ const optStr = opt;
72
+ const attributes = Object.keys(optStr)
73
+ .filter(k => optStr[k] && optStr[k] !== true)
74
+ .map(k => `${k}=${optStr[k].split(';')[0]}`)
75
+ .join(';');
76
+ this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
77
+ }
78
+ /**
79
+ * Remove given cookie
80
+ *
81
+ * 移除指定 Cookie
82
+ */
83
+ remove(key, options) {
84
+ this.put(key, '', options);
85
+ }
86
+ /**
87
+ * Remove all cookies
88
+ *
89
+ * 移除所有 Cookies
90
+ */
91
+ removeAll() {
92
+ this.doc.cookie = '';
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CookieService, providedIn: 'root' }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CookieService, decorators: [{
98
+ type: Injectable,
99
+ args: [{ providedIn: 'root' }]
100
+ }] });
101
+
102
+ /**
103
+ * Copy text to clipboard
104
+ *
105
+ * 复制字符串文档至剪贴板
106
+ */
107
+ function copy(value) {
108
+ return new Promise((resolve) => {
109
+ let copyTextArea = null;
110
+ try {
111
+ copyTextArea = document.createElement('textarea');
112
+ copyTextArea.style.height = '0px';
113
+ copyTextArea.style.opacity = '0';
114
+ copyTextArea.style.width = '0px';
115
+ document.body.appendChild(copyTextArea);
116
+ copyTextArea.value = value;
117
+ copyTextArea.select();
118
+ // eslint-disable-next-line deprecation/deprecation
119
+ document.execCommand('copy');
120
+ resolve(value);
121
+ }
122
+ finally {
123
+ if (copyTextArea && copyTextArea.parentNode) {
124
+ copyTextArea.parentNode.removeChild(copyTextArea);
125
+ }
126
+ }
127
+ });
128
+ }
129
+
130
+ /**
131
+ * Used to verify `<ng-content />` is empty, useful for custom components.
132
+ *
133
+ * 用于校验 `<ng-content />` 是否为空,自定义组件时蛮有用。
134
+ */
135
+ function isEmpty(element) {
136
+ const nodes = element.childNodes;
137
+ for (let i = 0; i < nodes.length; i++) {
138
+ const node = nodes.item(i);
139
+ if (node.nodeType === 1 && node.outerHTML.toString().trim().length !== 0) {
140
+ return false;
141
+ }
142
+ else if (node.nodeType === 3 && node.textContent.toString().trim().length !== 0) {
143
+ return false;
144
+ }
145
+ }
146
+ return true;
147
+ }
148
+
149
+ class ScrollService {
150
+ constructor() {
151
+ this._doc = inject(DOCUMENT);
152
+ this.platform = inject(Platform);
153
+ }
154
+ _getDoc() {
155
+ return this._doc || document;
156
+ }
157
+ _getWin() {
158
+ const doc = this._getDoc();
159
+ return doc.defaultView || window;
160
+ }
161
+ /**
162
+ * 获取滚动条位置
163
+ *
164
+ * @param element 指定元素,默认 `window`
165
+ */
166
+ getScrollPosition(element) {
167
+ if (!this.platform.isBrowser) {
168
+ return [0, 0];
169
+ }
170
+ const win = this._getWin();
171
+ if (element && element !== win) {
172
+ return [element.scrollLeft, element.scrollTop];
173
+ }
174
+ else {
175
+ return [win.scrollX, win.scrollY];
176
+ }
177
+ }
178
+ /**
179
+ * 设置滚动条位置
180
+ *
181
+ * @param element 指定元素
182
+ */
183
+ scrollToPosition(element, position) {
184
+ if (!this.platform.isBrowser) {
185
+ return;
186
+ }
187
+ (element || this._getWin()).scrollTo(position[0], position[1]);
188
+ }
189
+ /**
190
+ * 设置滚动条至指定元素
191
+ *
192
+ * @param element 指定元素,默认 `document.body`
193
+ * @param topOffset 偏移值,默认 `0`
194
+ */
195
+ scrollToElement(element, topOffset = 0) {
196
+ if (!this.platform.isBrowser) {
197
+ return;
198
+ }
199
+ if (!element) {
200
+ element = this._getDoc().body;
201
+ }
202
+ element.scrollIntoView();
203
+ const win = this._getWin();
204
+ if (win && win.scrollBy) {
205
+ win.scrollBy(0, element.getBoundingClientRect().top - topOffset);
206
+ if (win.scrollY < 20) {
207
+ win.scrollBy(0, -win.scrollY);
208
+ }
209
+ }
210
+ }
211
+ /**
212
+ * 滚动至顶部
213
+ *
214
+ * @param topOffset 偏移值,默认 `0`
215
+ */
216
+ scrollToTop(topOffset = 0) {
217
+ if (!this.platform.isBrowser) {
218
+ return;
219
+ }
220
+ this.scrollToElement(this._getDoc().body, topOffset);
221
+ }
222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
223
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
224
+ }
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ScrollService, decorators: [{
226
+ type: Injectable,
227
+ args: [{ providedIn: 'root' }]
228
+ }] });
229
+
230
+ function removeClass(el, classMap, renderer) {
231
+ Object.keys(classMap).forEach(key => renderer.removeClass(el, key));
232
+ }
233
+ function addClass(el, classMap, renderer) {
234
+ for (const i in classMap) {
235
+ if (classMap[i]) {
236
+ renderer.addClass(el, i);
237
+ }
238
+ }
239
+ }
240
+ /**
241
+ * Update host component style `class`
242
+ *
243
+ * 更新宿主组件样式 `class`
244
+ *
245
+ * ```ts
246
+ * updateHostClass(
247
+ * this.el.nativeElement,
248
+ * this.renderer,
249
+ * {
250
+ * [ 'classname' ]: true,
251
+ * [ 'classname' ]: this.type === '1',
252
+ * [ this.cls ]: true,
253
+ * [ `a-${this.cls}` ]: true
254
+ * })
255
+ * ```
256
+ */
257
+ function updateHostClass(el, renderer, classMap, preClean = false) {
258
+ if (preClean === true) {
259
+ renderer.removeAttribute(el, 'class');
260
+ }
261
+ else {
262
+ removeClass(el, classMap, renderer);
263
+ }
264
+ classMap = { ...classMap };
265
+ addClass(el, classMap, renderer);
266
+ }
267
+
268
+ /**
269
+ * Generated bundle index. Do not edit.
270
+ */
271
+
272
+ export { CookieService, ScrollService, copy, isEmpty, updateHostClass };
273
+ //# sourceMappingURL=browser.mjs.map
@@ -1,58 +1,58 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, makeEnvironmentProviders, Injectable, Optional, Inject } from '@angular/core';
3
- import { deepMergeKey } from '@yelon/util/other';
4
-
5
- class YunzaiSVConfig {
6
- }
7
-
8
- const YUNZAI_CONFIG = new InjectionToken('yunzai-config', {
9
- providedIn: 'root',
10
- factory: YUNZAI_CONFIG_FACTORY
11
- });
12
- function YUNZAI_CONFIG_FACTORY() {
13
- return {};
14
- }
15
- function provideYunzaiConfig(config) {
16
- return makeEnvironmentProviders([{ provide: YUNZAI_CONFIG, useValue: config }]);
17
- }
18
-
19
- /* eslint-disable @typescript-eslint/no-explicit-any */
20
- class YunzaiConfigService {
21
- constructor(defaultConfig) {
22
- this.config = { ...defaultConfig };
23
- }
24
- get(componentName, key) {
25
- const res = (this.config[componentName] || {});
26
- return key ? { [key]: res[key] } : res;
27
- }
28
- merge(componentName, ...defaultValues) {
29
- return deepMergeKey({}, true, ...defaultValues, this.get(componentName));
30
- }
31
- attach(componentThis, componentName, defaultValues) {
32
- Object.assign(componentThis, this.merge(componentName, defaultValues));
33
- }
34
- attachKey(componentThis, componentName, key) {
35
- Object.assign(componentThis, this.get(componentName, key));
36
- }
37
- set(componentName, value) {
38
- this.config[componentName] = { ...this.config[componentName], ...value };
39
- }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiConfigService, deps: [{ token: YUNZAI_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
41
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiConfigService, providedIn: 'root' }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiConfigService, decorators: [{
44
- type: Injectable,
45
- args: [{ providedIn: 'root' }]
46
- }], ctorParameters: () => [{ type: undefined, decorators: [{
47
- type: Optional
48
- }, {
49
- type: Inject,
50
- args: [YUNZAI_CONFIG]
51
- }] }] });
52
-
53
- /**
54
- * Generated bundle index. Do not edit.
55
- */
56
-
57
- export { YUNZAI_CONFIG, YUNZAI_CONFIG_FACTORY, YunzaiConfigService, YunzaiSVConfig, provideYunzaiConfig };
58
- //# sourceMappingURL=config.mjs.map
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, makeEnvironmentProviders, Injectable, Optional, Inject } from '@angular/core';
3
+ import { deepMergeKey } from '@yelon/util/other';
4
+
5
+ class YunzaiSVConfig {
6
+ }
7
+
8
+ const YUNZAI_CONFIG = new InjectionToken('yunzai-config', {
9
+ providedIn: 'root',
10
+ factory: YUNZAI_CONFIG_FACTORY
11
+ });
12
+ function YUNZAI_CONFIG_FACTORY() {
13
+ return {};
14
+ }
15
+ function provideYunzaiConfig(config) {
16
+ return makeEnvironmentProviders([{ provide: YUNZAI_CONFIG, useValue: config }]);
17
+ }
18
+
19
+ /* eslint-disable @typescript-eslint/no-explicit-any */
20
+ class YunzaiConfigService {
21
+ constructor(defaultConfig) {
22
+ this.config = { ...defaultConfig };
23
+ }
24
+ get(componentName, key) {
25
+ const res = (this.config[componentName] || {});
26
+ return key ? { [key]: res[key] } : res;
27
+ }
28
+ merge(componentName, ...defaultValues) {
29
+ return deepMergeKey({}, true, ...defaultValues, this.get(componentName));
30
+ }
31
+ attach(componentThis, componentName, defaultValues) {
32
+ Object.assign(componentThis, this.merge(componentName, defaultValues));
33
+ }
34
+ attachKey(componentThis, componentName, key) {
35
+ Object.assign(componentThis, this.get(componentName, key));
36
+ }
37
+ set(componentName, value) {
38
+ this.config[componentName] = { ...this.config[componentName], ...value };
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiConfigService, deps: [{ token: YUNZAI_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
41
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiConfigService, providedIn: 'root' }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiConfigService, decorators: [{
44
+ type: Injectable,
45
+ args: [{ providedIn: 'root' }]
46
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
47
+ type: Optional
48
+ }, {
49
+ type: Inject,
50
+ args: [YUNZAI_CONFIG]
51
+ }] }] });
52
+
53
+ /**
54
+ * Generated bundle index. Do not edit.
55
+ */
56
+
57
+ export { YUNZAI_CONFIG, YUNZAI_CONFIG_FACTORY, YunzaiConfigService, YunzaiSVConfig, provideYunzaiConfig };
58
+ //# sourceMappingURL=config.mjs.map