@yelon/util 16.2.5 → 16.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +22 -22
  3. package/analysis/global-event.subject.d.ts +7 -7
  4. package/analysis/index.d.ts +1 -1
  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/cell.type.d.ts +118 -0
  15. package/config/abc/date-picker.type.d.ts +52 -52
  16. package/config/abc/error-collect.type.d.ts +10 -10
  17. package/config/abc/exception.type.d.ts +9 -9
  18. package/config/abc/image.type.d.ts +15 -15
  19. package/config/abc/index.d.ts +18 -17
  20. package/config/abc/loading.type.d.ts +31 -31
  21. package/config/abc/lodop.type.d.ts +33 -33
  22. package/config/abc/media.type.d.ts +11 -11
  23. package/config/abc/onboarding.type.d.ts +4 -4
  24. package/config/abc/page-header.type.d.ts +39 -39
  25. package/config/abc/pdf.type.d.ts +35 -35
  26. package/config/abc/qr.type.d.ts +25 -25
  27. package/config/abc/se.type.d.ts +32 -32
  28. package/config/abc/sg.type.d.ts +10 -10
  29. package/config/abc/st.type.d.ts +465 -465
  30. package/config/abc/sv.type.d.ts +14 -14
  31. package/config/abc/xlsx.type.d.ts +12 -12
  32. package/config/abc/zip.type.d.ts +10 -10
  33. package/config/acl/acl.type.d.ts +32 -32
  34. package/config/auth/auth.type.d.ts +55 -55
  35. package/config/bis/bis.type.d.ts +11 -11
  36. package/config/cache/cache.type.d.ts +40 -40
  37. package/config/chart/chart.type.d.ts +33 -33
  38. package/config/config.service.d.ts +13 -13
  39. package/config/config.types.d.ts +49 -48
  40. package/config/index.d.ts +14 -14
  41. package/config/mock/mock.type.d.ts +18 -18
  42. package/config/sf/sf.type.d.ts +133 -133
  43. package/config/socket/socket.type.d.ts +4 -4
  44. package/config/theme/http.type.d.ts +14 -14
  45. package/config/theme/i18n.type.d.ts +14 -14
  46. package/config/theme/index.d.ts +3 -3
  47. package/config/theme/responsive.type.d.ts +12 -12
  48. package/config/util/array.type.d.ts +22 -22
  49. package/config/util/currency.type.d.ts +39 -39
  50. package/date-time/index.d.ts +2 -2
  51. package/date-time/picker.d.ts +68 -68
  52. package/date-time/time.d.ts +31 -29
  53. package/decorator/convert.d.ts +24 -24
  54. package/decorator/index.d.ts +2 -2
  55. package/decorator/zone-outside.d.ts +35 -35
  56. package/esm2022/analysis/analysis.mjs +4 -4
  57. package/esm2022/analysis/global-event.subject.mjs +16 -16
  58. package/esm2022/analysis/index.mjs +1 -1
  59. package/esm2022/array/array-type.service.mjs +1 -1
  60. package/esm2022/array/array.mjs +4 -4
  61. package/esm2022/array/array.service.mjs +276 -276
  62. package/esm2022/array/index.mjs +2 -2
  63. package/esm2022/browser/browser.mjs +4 -4
  64. package/esm2022/browser/cookie.service.mjs +102 -102
  65. package/esm2022/browser/copy.mjs +27 -27
  66. package/esm2022/browser/index.mjs +5 -5
  67. package/esm2022/browser/is-empty.mjs +18 -18
  68. package/esm2022/browser/scroll.service.mjs +87 -87
  69. package/esm2022/browser/style.mjs +37 -37
  70. package/esm2022/config/abc/cell.type.mjs +2 -0
  71. package/esm2022/config/abc/date-picker.type.mjs +1 -1
  72. package/esm2022/config/abc/error-collect.type.mjs +1 -1
  73. package/esm2022/config/abc/exception.type.mjs +1 -1
  74. package/esm2022/config/abc/image.type.mjs +1 -1
  75. package/esm2022/config/abc/index.mjs +19 -18
  76. package/esm2022/config/abc/loading.type.mjs +1 -1
  77. package/esm2022/config/abc/lodop.type.mjs +1 -1
  78. package/esm2022/config/abc/media.type.mjs +1 -1
  79. package/esm2022/config/abc/onboarding.type.mjs +1 -1
  80. package/esm2022/config/abc/page-header.type.mjs +1 -1
  81. package/esm2022/config/abc/pdf.type.mjs +1 -1
  82. package/esm2022/config/abc/qr.type.mjs +1 -1
  83. package/esm2022/config/abc/se.type.mjs +1 -1
  84. package/esm2022/config/abc/sg.type.mjs +1 -1
  85. package/esm2022/config/abc/st.type.mjs +1 -1
  86. package/esm2022/config/abc/sv.type.mjs +2 -2
  87. package/esm2022/config/abc/xlsx.type.mjs +1 -1
  88. package/esm2022/config/abc/zip.type.mjs +1 -1
  89. package/esm2022/config/acl/acl.type.mjs +1 -1
  90. package/esm2022/config/auth/auth.type.mjs +1 -1
  91. package/esm2022/config/bis/bis.type.mjs +1 -1
  92. package/esm2022/config/cache/cache.type.mjs +1 -1
  93. package/esm2022/config/chart/chart.type.mjs +1 -1
  94. package/esm2022/config/config.mjs +4 -4
  95. package/esm2022/config/config.service.mjs +36 -36
  96. package/esm2022/config/config.types.mjs +9 -9
  97. package/esm2022/config/index.mjs +14 -14
  98. package/esm2022/config/mock/mock.type.mjs +1 -1
  99. package/esm2022/config/sf/sf.type.mjs +1 -1
  100. package/esm2022/config/socket/socket.type.mjs +1 -1
  101. package/esm2022/config/theme/http.type.mjs +1 -1
  102. package/esm2022/config/theme/i18n.type.mjs +1 -1
  103. package/esm2022/config/theme/index.mjs +3 -3
  104. package/esm2022/config/theme/responsive.type.mjs +1 -1
  105. package/esm2022/config/util/array.type.mjs +1 -1
  106. package/esm2022/config/util/currency.type.mjs +1 -1
  107. package/esm2022/date-time/date-time.mjs +4 -4
  108. package/esm2022/date-time/index.mjs +2 -2
  109. package/esm2022/date-time/picker.mjs +115 -115
  110. package/esm2022/date-time/time.mjs +96 -89
  111. package/esm2022/decorator/convert.mjs +57 -57
  112. package/esm2022/decorator/decorator.mjs +4 -4
  113. package/esm2022/decorator/index.mjs +2 -2
  114. package/esm2022/decorator/zone-outside.mjs +56 -56
  115. package/esm2022/form/form.mjs +4 -4
  116. package/esm2022/form/index.mjs +2 -2
  117. package/esm2022/form/match-control.mjs +29 -29
  118. package/esm2022/form/validators.mjs +80 -80
  119. package/esm2022/format/currency.service.mjs +237 -237
  120. package/esm2022/format/currency.types.mjs +8 -8
  121. package/esm2022/format/format.mjs +4 -4
  122. package/esm2022/format/index.mjs +4 -4
  123. package/esm2022/format/string.mjs +84 -84
  124. package/esm2022/format/validate.mjs +93 -93
  125. package/esm2022/index.mjs +14 -14
  126. package/esm2022/math/in-range.mjs +24 -24
  127. package/esm2022/math/index.mjs +2 -2
  128. package/esm2022/math/math.mjs +4 -4
  129. package/esm2022/math/round.mjs +52 -52
  130. package/esm2022/mcache/index.mjs +1 -1
  131. package/esm2022/mcache/localStorageUtils.mjs +58 -58
  132. package/esm2022/mcache/mcache.mjs +4 -4
  133. package/esm2022/mtypes/authority.type.mjs +1 -1
  134. package/esm2022/mtypes/header-menu.type.mjs +1 -1
  135. package/esm2022/mtypes/index.mjs +9 -9
  136. package/esm2022/mtypes/menu.type.mjs +1 -1
  137. package/esm2022/mtypes/mtypes.mjs +4 -4
  138. package/esm2022/mtypes/nav.types.mjs +6 -6
  139. package/esm2022/mtypes/page.mjs +41 -41
  140. package/esm2022/mtypes/project-info.types.mjs +1 -1
  141. package/esm2022/mtypes/response.mjs +1 -1
  142. package/esm2022/mtypes/role.type.mjs +1 -1
  143. package/esm2022/mtypes/user.types.mjs +1 -1
  144. package/esm2022/other/assert.mjs +66 -66
  145. package/esm2022/other/deep.mjs +77 -77
  146. package/esm2022/other/favicon.mjs +28 -28
  147. package/esm2022/other/index.mjs +7 -7
  148. package/esm2022/other/lazy.service.mjs +131 -131
  149. package/esm2022/other/logger.mjs +32 -32
  150. package/esm2022/other/other.mjs +4 -4
  151. package/esm2022/other/path-to-regexp.service.mjs +238 -238
  152. package/esm2022/other/resize.mjs +3 -3
  153. package/esm2022/pipes/currency/cny.pipe.mjs +22 -22
  154. package/esm2022/pipes/currency/index.mjs +4 -4
  155. package/esm2022/pipes/currency/mega.pipe.mjs +28 -28
  156. package/esm2022/pipes/currency/module.mjs +18 -18
  157. package/esm2022/pipes/currency/pipe-currency.mjs +4 -4
  158. package/esm2022/pipes/currency/price.pipe.mjs +26 -26
  159. package/esm2022/pipes/filter/filter.pipe.mjs +18 -18
  160. package/esm2022/pipes/filter/index.mjs +2 -2
  161. package/esm2022/pipes/filter/module.mjs +16 -16
  162. package/esm2022/pipes/filter/pipe-filter.mjs +4 -4
  163. package/esm2022/pipes/format/index.mjs +2 -2
  164. package/esm2022/pipes/format/mask.pipe.mjs +33 -33
  165. package/esm2022/pipes/format/module.mjs +16 -16
  166. package/esm2022/pipes/format/pipe-format.mjs +4 -4
  167. package/esm2022/pipes/index.mjs +3 -3
  168. package/esm2022/pipes/pipes.mjs +4 -4
  169. package/esm2022/token/index.mjs +2 -2
  170. package/esm2022/token/page-visibility.mjs +14 -14
  171. package/esm2022/token/token.mjs +4 -4
  172. package/esm2022/token/window.mjs +16 -16
  173. package/esm2022/yelon-util.mjs +4 -4
  174. package/fesm2022/analysis.mjs +24 -24
  175. package/fesm2022/array.mjs +284 -284
  176. package/fesm2022/browser.mjs +279 -279
  177. package/fesm2022/config.mjs +54 -54
  178. package/fesm2022/config.mjs.map +1 -1
  179. package/fesm2022/date-time.mjs +218 -211
  180. package/fesm2022/date-time.mjs.map +1 -1
  181. package/fesm2022/decorator.mjs +121 -121
  182. package/fesm2022/form.mjs +118 -118
  183. package/fesm2022/format.mjs +431 -431
  184. package/fesm2022/format.mjs.map +1 -1
  185. package/fesm2022/math.mjs +85 -85
  186. package/fesm2022/mcache.mjs +65 -65
  187. package/fesm2022/mtypes.mjs +55 -55
  188. package/fesm2022/other.mjs +586 -586
  189. package/fesm2022/pipe-currency.mjs +94 -94
  190. package/fesm2022/pipe-filter.mjs +40 -40
  191. package/fesm2022/pipe-format.mjs +55 -55
  192. package/fesm2022/pipes.mjs +8 -8
  193. package/fesm2022/token.mjs +37 -37
  194. package/fesm2022/yelon-util.mjs +19 -19
  195. package/form/index.d.ts +2 -2
  196. package/form/match-control.d.ts +15 -15
  197. package/form/validators.d.ts +62 -62
  198. package/format/currency.service.d.ts +37 -37
  199. package/format/currency.types.d.ts +82 -77
  200. package/format/index.d.ts +4 -4
  201. package/format/string.d.ts +44 -44
  202. package/format/validate.d.ts +72 -72
  203. package/index.d.ts +14 -14
  204. package/math/in-range.d.ts +14 -14
  205. package/math/index.d.ts +2 -2
  206. package/math/round.d.ts +33 -33
  207. package/mcache/index.d.ts +1 -1
  208. package/mcache/localStorageUtils.d.ts +18 -18
  209. package/mtypes/authority.type.d.ts +3 -3
  210. package/mtypes/header-menu.type.d.ts +12 -12
  211. package/mtypes/index.d.ts +9 -9
  212. package/mtypes/menu.type.d.ts +40 -40
  213. package/mtypes/nav.types.d.ts +27 -27
  214. package/mtypes/page.d.ts +46 -46
  215. package/mtypes/project-info.types.d.ts +21 -21
  216. package/mtypes/response.d.ts +7 -7
  217. package/mtypes/role.type.d.ts +10 -10
  218. package/mtypes/user.types.d.ts +22 -22
  219. package/other/assert.d.ts +36 -36
  220. package/other/deep.d.ts +35 -35
  221. package/other/favicon.d.ts +2 -2
  222. package/other/index.d.ts +7 -7
  223. package/other/lazy.service.d.ts +48 -48
  224. package/other/logger.d.ts +5 -5
  225. package/other/path-to-regexp.service.d.ts +26 -26
  226. package/other/resize.d.ts +1 -1
  227. package/package.json +141 -141
  228. package/pipes/currency/cny.pipe.d.ts +15 -15
  229. package/pipes/currency/index.d.ts +4 -4
  230. package/pipes/currency/mega.pipe.d.ts +16 -16
  231. package/pipes/currency/module.d.ts +9 -9
  232. package/pipes/currency/price.pipe.d.ts +19 -19
  233. package/pipes/filter/filter.pipe.d.ts +13 -13
  234. package/pipes/filter/index.d.ts +2 -2
  235. package/pipes/filter/module.d.ts +7 -7
  236. package/pipes/format/index.d.ts +2 -2
  237. package/pipes/format/mask.pipe.d.ts +27 -27
  238. package/pipes/format/module.d.ts +7 -7
  239. package/pipes/index.d.ts +3 -3
  240. package/token/index.d.ts +2 -2
  241. package/token/page-visibility.d.ts +8 -8
  242. package/token/window.d.ts +7 -7
@@ -1,57 +1,57 @@
1
- import { warn } from '@yelon/util/other';
2
- function makeFn(type, options) {
3
- return (_, __, descriptor) => {
4
- const source = descriptor.value;
5
- descriptor.value = function (...data) {
6
- const that = this;
7
- const ngZone = that[options?.ngZoneName || 'ngZone'];
8
- if (!ngZone) {
9
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
10
- warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);
11
- }
12
- return source.call(this, ...data);
13
- }
14
- let res;
15
- ngZone[type](() => {
16
- res = source.call(this, ...data);
17
- });
18
- return res;
19
- };
20
- return descriptor;
21
- };
22
- }
23
- /**
24
- * The decoration method runs in `runOutsideAngular`
25
- *
26
- * 装饰方法运行在 `runOutsideAngular` 内
27
- *
28
- * ```ts
29
- * class MockClass {
30
- * constructor(public ngZone: NgZone) {}
31
- *
32
- * {AT}ZoneOutside()
33
- * runOutsideAngular(): void {}
34
- * }
35
- * ```
36
- */
37
- export function ZoneOutside(options) {
38
- return makeFn('runOutsideAngular', options);
39
- }
40
- /**
41
- * The decoration method runs in `run`
42
- *
43
- * 装饰方法运行在 `run` 内
44
- *
45
- * ```ts
46
- * class MockClass {
47
- * constructor(public ngZone: NgZone) {}
48
- *
49
- * {AT}ZoneRun()
50
- * run(): void {}
51
- * }
52
- * ```
53
- */
54
- export function ZoneRun(options) {
55
- return makeFn('run', options);
56
- }
1
+ import { warn } from '@yelon/util/other';
2
+ function makeFn(type, options) {
3
+ return (_, __, descriptor) => {
4
+ const source = descriptor.value;
5
+ descriptor.value = function (...data) {
6
+ const that = this;
7
+ const ngZone = that[options?.ngZoneName || 'ngZone'];
8
+ if (!ngZone) {
9
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
10
+ warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);
11
+ }
12
+ return source.call(this, ...data);
13
+ }
14
+ let res;
15
+ ngZone[type](() => {
16
+ res = source.call(this, ...data);
17
+ });
18
+ return res;
19
+ };
20
+ return descriptor;
21
+ };
22
+ }
23
+ /**
24
+ * The decoration method runs in `runOutsideAngular`
25
+ *
26
+ * 装饰方法运行在 `runOutsideAngular` 内
27
+ *
28
+ * ```ts
29
+ * class MockClass {
30
+ * constructor(public ngZone: NgZone) {}
31
+ *
32
+ * {AT}ZoneOutside()
33
+ * runOutsideAngular(): void {}
34
+ * }
35
+ * ```
36
+ */
37
+ export function ZoneOutside(options) {
38
+ return makeFn('runOutsideAngular', options);
39
+ }
40
+ /**
41
+ * The decoration method runs in `run`
42
+ *
43
+ * 装饰方法运行在 `run` 内
44
+ *
45
+ * ```ts
46
+ * class MockClass {
47
+ * constructor(public ngZone: NgZone) {}
48
+ *
49
+ * {AT}ZoneRun()
50
+ * run(): void {}
51
+ * }
52
+ * ```
53
+ */
54
+ export function ZoneRun(options) {
55
+ return makeFn('run', options);
56
+ }
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1vdXRzaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9kZWNvcmF0b3Ivem9uZS1vdXRzaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVN6QyxTQUFTLE1BQU0sQ0FBQyxJQUFpQyxFQUFFLE9BQXFCO0lBQ3RFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDaEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBaUI7WUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBaUIsQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsRUFBRTtvQkFDakQsSUFBSSxDQUFDLDJFQUEyRSxDQUFDLENBQUM7aUJBQ25GO2dCQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNuQztZQUNELElBQUksR0FBYyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hCLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBcUI7SUFDL0MsT0FBTyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQXFCO0lBQzNDLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2FybiB9IGZyb20gJ0B5ZWxvbi91dGlsL290aGVyJztcbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBab25lT3B0aW9ucyB7XG4gIG5nWm9uZU5hbWU/OiBzdHJpbmc7XG59XG5cbnR5cGUgRGVjb3JhdG9yVHlwZSA9ICh0YXJnZXQ6IHVua25vd24sIGZuOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4gUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5mdW5jdGlvbiBtYWtlRm4odHlwZTogJ3J1bk91dHNpZGVBbmd1bGFyJyB8ICdydW4nLCBvcHRpb25zPzogWm9uZU9wdGlvbnMpOiBEZWNvcmF0b3JUeXBlIHtcbiAgcmV0dXJuIChfLCBfXywgZGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZSA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5kYXRhOiBOelNhZmVBbnlbXSk6ICgpID0+IHZvaWQge1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXMgYXMgTnpTYWZlQW55O1xuICAgICAgY29uc3Qgbmdab25lID0gdGhhdFtvcHRpb25zPy5uZ1pvbmVOYW1lIHx8ICduZ1pvbmUnXTtcbiAgICAgIGlmICghbmdab25lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICB3YXJuKGBab25lT3V0c2lkZTogRGVjb3JhdG9yIHNob3VsZCBoYXZlICduZ1pvbmUnIHByb3BlcnR5IHdpdGggJ05nWm9uZScgY2xhc3MuYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZS5jYWxsKHRoaXMsIC4uLmRhdGEpO1xuICAgICAgfVxuICAgICAgbGV0IHJlczogTnpTYWZlQW55O1xuICAgICAgbmdab25lW3R5cGVdKCgpID0+IHtcbiAgICAgICAgcmVzID0gc291cmNlLmNhbGwodGhpcywgLi4uZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBkZWNvcmF0aW9uIG1ldGhvZCBydW5zIGluIGBydW5PdXRzaWRlQW5ndWxhcmBcbiAqXG4gKiDoo4XppbDmlrnms5Xov5DooYzlnKggYHJ1bk91dHNpZGVBbmd1bGFyYCDlhoVcbiAqXG4gKiBgYGB0c1xuICogY2xhc3MgTW9ja0NsYXNzIHtcbiAqICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdab25lOiBOZ1pvbmUpIHt9XG4gKlxuICogIHtBVH1ab25lT3V0c2lkZSgpXG4gKiAgcnVuT3V0c2lkZUFuZ3VsYXIoKTogdm9pZCB7fVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBab25lT3V0c2lkZShvcHRpb25zPzogWm9uZU9wdGlvbnMpOiBEZWNvcmF0b3JUeXBlIHtcbiAgcmV0dXJuIG1ha2VGbigncnVuT3V0c2lkZUFuZ3VsYXInLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBUaGUgZGVjb3JhdGlvbiBtZXRob2QgcnVucyBpbiBgcnVuYFxuICpcbiAqIOijhemlsOaWueazlei/kOihjOWcqCBgcnVuYCDlhoVcbiAqXG4gKiBgYGB0c1xuICogY2xhc3MgTW9ja0NsYXNzIHtcbiAqICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdab25lOiBOZ1pvbmUpIHt9XG4gKlxuICogIHtBVH1ab25lUnVuKClcbiAqICBydW4oKTogdm9pZCB7fVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBab25lUnVuKG9wdGlvbnM/OiBab25lT3B0aW9ucyk6IERlY29yYXRvclR5cGUge1xuICByZXR1cm4gbWFrZUZuKCdydW4nLCBvcHRpb25zKTtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvZm9ybS9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,3 +1,3 @@
1
- export * from './validators';
2
- export * from './match-control';
1
+ export * from './validators';
2
+ export * from './match-control';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL2Zvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoLWNvbnRyb2wnO1xuIl19
@@ -1,30 +1,30 @@
1
- /**
2
- * Match two control values
3
- *
4
- * 匹配两个控件值
5
- * ```ts
6
- * this.form = new FormGroup({
7
- * pwd: new FormControl(''),
8
- * repwd: new FormControl(''),
9
- * }, {
10
- * validators: MatchControl('pwd', 'repwd'),
11
- * });
12
- * ```
13
- */
14
- export function MatchControl(controlName, matchingControlName) {
15
- return (formGroup) => {
16
- const control = formGroup.get(controlName);
17
- const matchingControl = formGroup.get(matchingControlName);
18
- if (matchingControl.errors && !matchingControl.errors.matchControl) {
19
- return null;
20
- }
21
- if (control.value !== matchingControl.value) {
22
- matchingControl.setErrors({ matchControl: true });
23
- }
24
- else {
25
- matchingControl.setErrors(null);
26
- }
27
- return null;
28
- };
29
- }
1
+ /**
2
+ * Match two control values
3
+ *
4
+ * 匹配两个控件值
5
+ * ```ts
6
+ * this.form = new FormGroup({
7
+ * pwd: new FormControl(''),
8
+ * repwd: new FormControl(''),
9
+ * }, {
10
+ * validators: MatchControl('pwd', 'repwd'),
11
+ * });
12
+ * ```
13
+ */
14
+ export function MatchControl(controlName, matchingControlName) {
15
+ return (formGroup) => {
16
+ const control = formGroup.get(controlName);
17
+ const matchingControl = formGroup.get(matchingControlName);
18
+ if (matchingControl.errors && !matchingControl.errors.matchControl) {
19
+ return null;
20
+ }
21
+ if (control.value !== matchingControl.value) {
22
+ matchingControl.setErrors({ matchControl: true });
23
+ }
24
+ else {
25
+ matchingControl.setErrors(null);
26
+ }
27
+ return null;
28
+ };
29
+ }
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvZm9ybS9tYXRjaC1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsV0FBbUIsRUFBRSxtQkFBMkI7SUFDM0UsT0FBTyxDQUFDLFNBQTBCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBRSxDQUFDO1FBQzVDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUUsQ0FBQztRQUM1RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNsRSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDM0MsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDTCxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBNYXRjaCB0d28gY29udHJvbCB2YWx1ZXNcbiAqXG4gKiDljLnphY3kuKTkuKrmjqfku7blgLxcbiAqIGBgYHRzXG4gKiB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAqICBwd2Q6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gKiAgcmVwd2Q6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gKiB9LCB7XG4gKiAgdmFsaWRhdG9yczogTWF0Y2hDb250cm9sKCdwd2QnLCAncmVwd2QnKSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYXRjaENvbnRyb2woY29udHJvbE5hbWU6IHN0cmluZywgbWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpITtcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KG1hdGNoaW5nQ29udHJvbE5hbWUpITtcbiAgICBpZiAobWF0Y2hpbmdDb250cm9sLmVycm9ycyAmJiAhbWF0Y2hpbmdDb250cm9sLmVycm9ycy5tYXRjaENvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgbWF0Y2hDb250cm9sOiB0cnVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn1cbiJdfQ==
@@ -1,81 +1,81 @@
1
- import { isChinese, isColor, isDecimal, isIdCard, isInt, isIp, isMobile, isNum, isUrl } from '@yelon/util/format';
2
- /**
3
- * A set of validators for reactive forms
4
- *
5
- * 一套用于响应式表单的验证器
6
- */
7
- export class _Validators {
8
- /**
9
- * Wheter is number
10
- *
11
- * 是否为数字
12
- */
13
- static num(control) {
14
- return isNum(control.value) ? null : { num: true };
15
- }
16
- /**
17
- * Wheter is integer
18
- *
19
- * 是否为整数
20
- */
21
- static int(control) {
22
- return isInt(control.value) ? null : { int: true };
23
- }
24
- /**
25
- * Wheter is decimal
26
- *
27
- * 是否为小数点数值
28
- */
29
- static decimal(control) {
30
- return isDecimal(control.value) ? null : { decimal: true };
31
- }
32
- /**
33
- * Wheter is People's Republic of China identity card
34
- *
35
- * 是否为中华人民共和国居民身份证
36
- */
37
- static idCard(control) {
38
- return isIdCard(control.value) ? null : { idCard: true };
39
- }
40
- /**
41
- * Wheter is china mobile (China)
42
- *
43
- * 是否为手机号(中国)
44
- */
45
- static mobile(control) {
46
- return isMobile(control.value) ? null : { mobile: true };
47
- }
48
- /**
49
- * Wheter is url address
50
- *
51
- * 是否URL地址
52
- */
53
- static url(control) {
54
- return isUrl(control.value) ? null : { url: true };
55
- }
56
- /**
57
- * Wheter is IPv4 address (Support v4, v6)
58
- *
59
- * 是否IP4地址(支持v4、v6)
60
- */
61
- static ip(control) {
62
- return isIp(control.value) ? null : { ip: true };
63
- }
64
- /**
65
- * Wheter is color
66
- *
67
- * 是否颜色代码值
68
- */
69
- static color(control) {
70
- return isColor(control.value) ? null : { color: true };
71
- }
72
- /**
73
- * Wheter is chinese
74
- *
75
- * 是否中文
76
- */
77
- static chinese(control) {
78
- return isChinese(control.value) ? null : { chinese: true };
79
- }
80
- }
1
+ import { isChinese, isColor, isDecimal, isIdCard, isInt, isIp, isMobile, isNum, isUrl } from '@yelon/util/format';
2
+ /**
3
+ * A set of validators for reactive forms
4
+ *
5
+ * 一套用于响应式表单的验证器
6
+ */
7
+ export class _Validators {
8
+ /**
9
+ * Wheter is number
10
+ *
11
+ * 是否为数字
12
+ */
13
+ static num(control) {
14
+ return isNum(control.value) ? null : { num: true };
15
+ }
16
+ /**
17
+ * Wheter is integer
18
+ *
19
+ * 是否为整数
20
+ */
21
+ static int(control) {
22
+ return isInt(control.value) ? null : { int: true };
23
+ }
24
+ /**
25
+ * Wheter is decimal
26
+ *
27
+ * 是否为小数点数值
28
+ */
29
+ static decimal(control) {
30
+ return isDecimal(control.value) ? null : { decimal: true };
31
+ }
32
+ /**
33
+ * Wheter is People's Republic of China identity card
34
+ *
35
+ * 是否为中华人民共和国居民身份证
36
+ */
37
+ static idCard(control) {
38
+ return isIdCard(control.value) ? null : { idCard: true };
39
+ }
40
+ /**
41
+ * Wheter is china mobile (China)
42
+ *
43
+ * 是否为手机号(中国)
44
+ */
45
+ static mobile(control) {
46
+ return isMobile(control.value) ? null : { mobile: true };
47
+ }
48
+ /**
49
+ * Wheter is url address
50
+ *
51
+ * 是否URL地址
52
+ */
53
+ static url(control) {
54
+ return isUrl(control.value) ? null : { url: true };
55
+ }
56
+ /**
57
+ * Wheter is IPv4 address (Support v4, v6)
58
+ *
59
+ * 是否IP4地址(支持v4、v6)
60
+ */
61
+ static ip(control) {
62
+ return isIp(control.value) ? null : { ip: true };
63
+ }
64
+ /**
65
+ * Wheter is color
66
+ *
67
+ * 是否颜色代码值
68
+ */
69
+ static color(control) {
70
+ return isColor(control.value) ? null : { color: true };
71
+ }
72
+ /**
73
+ * Wheter is chinese
74
+ *
75
+ * 是否中文
76
+ */
77
+ static chinese(control) {
78
+ return isChinese(control.value) ? null : { chinese: true };
79
+ }
80
+ }
81
81
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvZm9ybS92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxIOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUF3QjtRQUNqQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQXdCO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBd0I7UUFDckMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUF3QjtRQUNwQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQXdCO1FBQ3BDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBd0I7UUFDakMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUF3QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQXdCO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBd0I7UUFDckMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgaXNDaGluZXNlLCBpc0NvbG9yLCBpc0RlY2ltYWwsIGlzSWRDYXJkLCBpc0ludCwgaXNJcCwgaXNNb2JpbGUsIGlzTnVtLCBpc1VybCB9IGZyb20gJ0B5ZWxvbi91dGlsL2Zvcm1hdCc7XG5cbi8qKlxuICogQSBzZXQgb2YgdmFsaWRhdG9ycyBmb3IgcmVhY3RpdmUgZm9ybXNcbiAqXG4gKiDkuIDlpZfnlKjkuo7lk43lupTlvI/ooajljZXnmoTpqozor4HlmahcbiAqL1xuZXhwb3J0IGNsYXNzIF9WYWxpZGF0b3JzIHtcbiAgLyoqXG4gICAqIFdoZXRlciBpcyBudW1iZXJcbiAgICpcbiAgICog5piv5ZCm5Li65pWw5a2XXG4gICAqL1xuICBzdGF0aWMgbnVtKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNOdW0oY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBudW06IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0ZXIgaXMgaW50ZWdlclxuICAgKlxuICAgKiDmmK/lkKbkuLrmlbTmlbBcbiAgICovXG4gIHN0YXRpYyBpbnQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBpc0ludChjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGludDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRlciBpcyBkZWNpbWFsXG4gICAqXG4gICAqIOaYr+WQpuS4uuWwj+aVsOeCueaVsOWAvFxuICAgKi9cbiAgc3RhdGljIGRlY2ltYWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBpc0RlY2ltYWwoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBkZWNpbWFsOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICogV2hldGVyIGlzIFBlb3BsZSdzIFJlcHVibGljIG9mIENoaW5hIGlkZW50aXR5IGNhcmRcbiAgICpcbiAgICog5piv5ZCm5Li65Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95bGF5rCR6Lqr5Lu96K+BXG4gICAqL1xuICBzdGF0aWMgaWRDYXJkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNJZENhcmQoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBpZENhcmQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0ZXIgaXMgY2hpbmEgbW9iaWxlIChDaGluYSlcbiAgICpcbiAgICog5piv5ZCm5Li65omL5py65Y+377yI5Lit5Zu977yJXG4gICAqL1xuICBzdGF0aWMgbW9iaWxlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNNb2JpbGUoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBtb2JpbGU6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0ZXIgaXMgdXJsIGFkZHJlc3NcbiAgICpcbiAgICog5piv5ZCmVVJM5Zyw5Z2AXG4gICAqL1xuICBzdGF0aWMgdXJsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNVcmwoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyB1cmw6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0ZXIgaXMgSVB2NCBhZGRyZXNzIChTdXBwb3J0IHY0LCB2NilcbiAgICpcbiAgICog5piv5ZCmSVA05Zyw5Z2A77yI5pSv5oyBdjTjgIF2Nu+8iVxuICAgKi9cbiAgc3RhdGljIGlwKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNJcChjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGlwOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICogV2hldGVyIGlzIGNvbG9yXG4gICAqXG4gICAqIOaYr+WQpuminOiJsuS7o+eggeWAvFxuICAgKi9cbiAgc3RhdGljIGNvbG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gaXNDb2xvcihjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGNvbG9yOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICogV2hldGVyIGlzIGNoaW5lc2VcbiAgICpcbiAgICog5piv5ZCm5Lit5paHXG4gICAqL1xuICBzdGF0aWMgY2hpbmVzZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlzQ2hpbmVzZShjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGNoaW5lc2U6IHRydWUgfTtcbiAgfVxufVxuIl19