@yelon/util 12.0.13 → 12.0.17

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