@yelon/util 15.2.0 → 15.2.2

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