@yelon/util 12.0.19 → 13.2.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.
- package/README.md +1 -1
- package/{date-time/yelon-util-date-time.d.ts → array/array.d.ts} +1 -0
- package/array/array.service.d.ts +3 -0
- package/array/package.json +6 -7
- package/browser/browser.d.ts +1 -0
- package/browser/cookie.service.d.ts +3 -0
- package/browser/copy.d.ts +1 -1
- package/browser/package.json +5 -6
- package/browser/scroll.service.d.ts +3 -0
- package/config/config.d.ts +5 -0
- package/config/config.service.d.ts +3 -0
- package/config/package.json +6 -7
- package/date-time/date-time.d.ts +5 -0
- package/date-time/package.json +6 -7
- package/decorator/decorator.d.ts +5 -0
- package/decorator/package.json +6 -7
- package/{esm2015/array/array-type.service.js → esm2020/array/array-type.service.mjs} +0 -0
- package/esm2020/array/array.mjs +5 -0
- package/esm2020/array/array.service.mjs +278 -0
- package/{esm2015/array/index.js → esm2020/array/index.mjs} +0 -0
- package/{esm2015/browser/browser.js → esm2020/browser/browser.mjs} +0 -0
- package/esm2020/browser/cookie.service.mjs +103 -0
- package/esm2020/browser/copy.mjs +9 -0
- package/{esm2015/browser/index.js → esm2020/browser/index.mjs} +0 -0
- package/{esm2015/browser/is-empty.js → esm2020/browser/is-empty.mjs} +0 -0
- package/esm2020/browser/scroll.service.mjs +88 -0
- package/{esm2015/browser/style.js → esm2020/browser/style.mjs} +2 -2
- package/{esm2015/config/abc/date-picker.type.js → esm2020/config/abc/date-picker.type.mjs} +0 -0
- package/{esm2015/config/abc/error-collect.type.js → esm2020/config/abc/error-collect.type.mjs} +0 -0
- package/{esm2015/config/abc/image.type.js → esm2020/config/abc/image.type.mjs} +0 -0
- package/{esm2015/config/abc/index.js → esm2020/config/abc/index.mjs} +0 -0
- package/{esm2015/config/abc/loading.type.js → esm2020/config/abc/loading.type.mjs} +0 -0
- package/{esm2015/config/abc/lodop.type.js → esm2020/config/abc/lodop.type.mjs} +0 -0
- package/{esm2015/config/abc/media.type.js → esm2020/config/abc/media.type.mjs} +0 -0
- package/{esm2015/config/abc/onboarding.type.js → esm2020/config/abc/onboarding.type.mjs} +0 -0
- package/{esm2015/config/abc/page-header.type.js → esm2020/config/abc/page-header.type.mjs} +0 -0
- package/{esm2015/config/abc/pdf.type.js → esm2020/config/abc/pdf.type.mjs} +0 -0
- package/{esm2015/config/abc/qr.type.js → esm2020/config/abc/qr.type.mjs} +0 -0
- package/{esm2015/config/abc/se.type.js → esm2020/config/abc/se.type.mjs} +0 -0
- package/{esm2015/config/abc/sg.type.js → esm2020/config/abc/sg.type.mjs} +0 -0
- package/{esm2015/config/abc/st.type.js → esm2020/config/abc/st.type.mjs} +0 -0
- package/{esm2015/config/abc/sv.type.js → esm2020/config/abc/sv.type.mjs} +0 -0
- package/{esm2015/config/abc/xlsx.type.js → esm2020/config/abc/xlsx.type.mjs} +0 -0
- package/{esm2015/config/abc/zip.type.js → esm2020/config/abc/zip.type.mjs} +0 -0
- package/{esm2015/config/acl/acl.type.js → esm2020/config/acl/acl.type.mjs} +0 -0
- package/{esm2015/config/auth/auth.type.js → esm2020/config/auth/auth.type.mjs} +0 -0
- package/{esm2015/config/bis/bis.type.js → esm2020/config/bis/bis.type.mjs} +0 -0
- package/{esm2015/config/cache/cache.type.js → esm2020/config/cache/cache.type.mjs} +0 -0
- package/{esm2015/config/chart/chart.type.js → esm2020/config/chart/chart.type.mjs} +0 -0
- package/esm2020/config/config.mjs +5 -0
- package/esm2020/config/config.service.mjs +37 -0
- package/{esm2015/config/config.types.js → esm2020/config/config.types.mjs} +0 -0
- package/{esm2015/config/index.js → esm2020/config/index.mjs} +0 -0
- package/{esm2015/config/mock/mock.type.js → esm2020/config/mock/mock.type.mjs} +0 -0
- package/{esm2015/config/sf/sf.type.js → esm2020/config/sf/sf.type.mjs} +0 -0
- package/{esm2015/config/stomp/stomp.type.js → esm2020/config/stomp/stomp.type.mjs} +0 -0
- package/{esm2015/config/theme/http.type.js → esm2020/config/theme/http.type.mjs} +0 -0
- package/{esm2015/config/theme/i18n.type.js → esm2020/config/theme/i18n.type.mjs} +0 -0
- package/{esm2015/config/theme/index.js → esm2020/config/theme/index.mjs} +0 -0
- package/{esm2015/config/theme/responsive.type.js → esm2020/config/theme/responsive.type.mjs} +0 -0
- package/{esm2015/config/util/array.type.js → esm2020/config/util/array.type.mjs} +0 -0
- package/{esm2015/config/util/currency.type.js → esm2020/config/util/currency.type.mjs} +0 -0
- package/esm2020/date-time/date-time.mjs +5 -0
- package/{esm2015/date-time/index.js → esm2020/date-time/index.mjs} +0 -0
- package/esm2020/date-time/picker.mjs +116 -0
- package/{esm2015/date-time/time.js → esm2020/date-time/time.mjs} +6 -2
- package/esm2020/decorator/convert.mjs +58 -0
- package/esm2020/decorator/decorator.mjs +5 -0
- package/{esm2015/decorator/index.js → esm2020/decorator/index.mjs} +0 -0
- package/esm2020/decorator/zone-outside.mjs +57 -0
- package/esm2020/form/form.mjs +5 -0
- package/{esm2015/form/index.js → esm2020/form/index.mjs} +0 -0
- package/{esm2015/form/match-control.js → esm2020/form/match-control.mjs} +0 -0
- package/{esm2015/form/validators.js → esm2020/form/validators.mjs} +0 -0
- package/esm2020/format/currency.service.mjs +238 -0
- package/{esm2015/format/currency.types.js → esm2020/format/currency.types.mjs} +0 -0
- package/esm2020/format/format.mjs +5 -0
- package/{esm2015/format/index.js → esm2020/format/index.mjs} +0 -0
- package/esm2020/format/string.mjs +85 -0
- package/{esm2015/format/validate.js → esm2020/format/validate.mjs} +0 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/math/in-range.js → esm2020/math/in-range.mjs} +0 -0
- package/{esm2015/math/index.js → esm2020/math/index.mjs} +0 -0
- package/esm2020/math/math.mjs +5 -0
- package/{esm2015/math/round.js → esm2020/math/round.mjs} +0 -0
- package/{esm2015/other/assert.js → esm2020/other/assert.mjs} +0 -0
- package/{esm2015/other/deep.js → esm2020/other/deep.mjs} +0 -0
- package/{esm2015/other/index.js → esm2020/other/index.mjs} +0 -0
- package/esm2020/other/lazy.service.mjs +104 -0
- package/{esm2015/other/logger.js → esm2020/other/logger.mjs} +0 -0
- package/esm2020/other/other.mjs +5 -0
- package/{esm2015/other/resize.js → esm2020/other/resize.mjs} +0 -0
- package/{esm2015/other/url.js → esm2020/other/url.mjs} +0 -0
- package/esm2020/pipes/currency/cny.pipe.mjs +23 -0
- package/{esm2015/pipes/currency/index.js → esm2020/pipes/currency/index.mjs} +2 -1
- package/esm2020/pipes/currency/mega.pipe.mjs +29 -0
- package/esm2020/pipes/currency/module.mjs +19 -0
- package/esm2020/pipes/currency/pipe-currency.mjs +5 -0
- package/esm2020/pipes/currency/price.pipe.mjs +27 -0
- package/esm2020/pipes/filter/filter.pipe.mjs +19 -0
- package/{esm2015/pipes/filter/index.js → esm2020/pipes/filter/index.mjs} +0 -0
- package/esm2020/pipes/filter/module.mjs +17 -0
- package/{esm2015/other/yelon-util-other.js → esm2020/pipes/filter/pipe-filter.mjs} +1 -1
- package/{esm2015/pipes/format/index.js → esm2020/pipes/format/index.mjs} +0 -0
- package/esm2020/pipes/format/mask.pipe.mjs +34 -0
- package/esm2020/pipes/format/module.mjs +17 -0
- package/{esm2015/array/yelon-util-array.js → esm2020/pipes/format/pipe-format.mjs} +1 -1
- package/{esm2015/pipes/index.js → esm2020/pipes/index.mjs} +0 -0
- package/esm2020/pipes/pipes.mjs +5 -0
- package/{esm2015/token/index.js → esm2020/token/index.mjs} +0 -0
- package/{esm2015/token/page-visibility.js → esm2020/token/page-visibility.mjs} +0 -0
- package/esm2020/token/token.mjs +5 -0
- package/{esm2015/token/window.js → esm2020/token/window.mjs} +0 -0
- package/{esm2015/yelon-util.js → esm2020/yelon-util.mjs} +0 -0
- package/fesm2015/{yelon-util-array.js → array.mjs} +8 -10
- package/fesm2015/array.mjs.map +1 -0
- package/fesm2015/{browser.js → browser.mjs} +28 -42
- package/fesm2015/browser.mjs.map +1 -0
- package/fesm2015/{yelon-util-config.js → config.mjs} +14 -8
- package/fesm2015/config.mjs.map +1 -0
- package/fesm2015/{yelon-util-date-time.js → date-time.mjs} +1 -1
- package/fesm2015/date-time.mjs.map +1 -0
- package/fesm2015/{yelon-util-decorator.js → decorator.mjs} +8 -4
- package/fesm2015/decorator.mjs.map +1 -0
- package/fesm2015/{yelon-util-form.js → form.mjs} +1 -1
- package/fesm2015/form.mjs.map +1 -0
- package/fesm2015/{yelon-util-format.js → format.mjs} +18 -14
- package/fesm2015/format.mjs.map +1 -0
- package/fesm2015/{yelon-util-math.js → math.mjs} +1 -1
- package/fesm2015/math.mjs.map +1 -0
- package/fesm2015/{yelon-util-other.js → other.mjs} +17 -29
- package/fesm2015/other.mjs.map +1 -0
- package/fesm2015/pipe-currency.mjs +96 -0
- package/fesm2015/pipe-currency.mjs.map +1 -0
- package/fesm2015/pipe-filter.mjs +40 -0
- package/fesm2015/pipe-filter.mjs.map +1 -0
- package/fesm2015/pipe-format.mjs +55 -0
- package/fesm2015/pipe-format.mjs.map +1 -0
- package/fesm2015/{yelon-util-pipes.js → pipes.mjs} +1 -1
- package/fesm2015/pipes.mjs.map +1 -0
- package/fesm2015/{yelon-util-token.js → token.mjs} +1 -1
- package/fesm2015/token.mjs.map +1 -0
- package/fesm2015/{yelon-util.js → yelon-util.mjs} +1 -1
- package/fesm2015/yelon-util.mjs.map +1 -0
- package/fesm2020/array.mjs +285 -0
- package/fesm2020/array.mjs.map +1 -0
- package/fesm2020/browser.mjs +260 -0
- package/fesm2020/browser.mjs.map +1 -0
- package/fesm2020/config.mjs +54 -0
- package/fesm2020/config.mjs.map +1 -0
- package/fesm2020/date-time.mjs +210 -0
- package/fesm2020/date-time.mjs.map +1 -0
- package/fesm2020/decorator.mjs +121 -0
- package/fesm2020/decorator.mjs.map +1 -0
- package/fesm2020/form.mjs +118 -0
- package/fesm2020/form.mjs.map +1 -0
- package/fesm2020/format.mjs +431 -0
- package/fesm2020/format.mjs.map +1 -0
- package/fesm2020/math.mjs +85 -0
- package/fesm2020/math.mjs.map +1 -0
- package/fesm2020/other.mjs +303 -0
- package/fesm2020/other.mjs.map +1 -0
- package/fesm2020/pipe-currency.mjs +94 -0
- package/fesm2020/pipe-currency.mjs.map +1 -0
- package/fesm2020/pipe-filter.mjs +40 -0
- package/fesm2020/pipe-filter.mjs.map +1 -0
- package/fesm2020/pipe-format.mjs +55 -0
- package/fesm2020/pipe-format.mjs.map +1 -0
- package/fesm2020/pipes.mjs +8 -0
- package/fesm2020/pipes.mjs.map +1 -0
- package/fesm2020/token.mjs +38 -0
- package/fesm2020/token.mjs.map +1 -0
- package/fesm2020/yelon-util.mjs +16 -0
- package/fesm2020/yelon-util.mjs.map +1 -0
- package/{array/yelon-util-array.d.ts → form/form.d.ts} +1 -0
- package/form/package.json +6 -7
- package/format/currency.service.d.ts +3 -0
- package/format/format.d.ts +5 -0
- package/format/package.json +6 -7
- package/{config/yelon-util-config.d.ts → math/math.d.ts} +1 -0
- package/math/package.json +6 -7
- package/other/lazy.service.d.ts +3 -0
- package/{decorator/yelon-util-decorator.d.ts → other/other.d.ts} +1 -0
- package/other/package.json +6 -7
- package/package.json +132 -8
- package/pipes/currency/cny.pipe.d.ts +3 -0
- package/pipes/currency/index.d.ts +1 -0
- package/pipes/currency/mega.pipe.d.ts +3 -0
- package/pipes/currency/module.d.ts +7 -0
- package/pipes/currency/package.json +6 -7
- package/pipes/currency/pipe-currency.d.ts +5 -0
- package/pipes/currency/price.pipe.d.ts +3 -0
- package/pipes/filter/filter.pipe.d.ts +3 -0
- package/pipes/filter/module.d.ts +5 -0
- package/pipes/filter/package.json +6 -7
- package/pipes/filter/pipe-filter.d.ts +5 -0
- package/pipes/format/mask.pipe.d.ts +3 -0
- package/pipes/format/module.d.ts +5 -0
- package/pipes/format/package.json +6 -7
- package/pipes/format/pipe-format.d.ts +5 -0
- package/pipes/package.json +6 -7
- package/pipes/pipes.d.ts +5 -0
- package/token/package.json +6 -7
- package/token/token.d.ts +5 -0
- package/yelon-util.d.ts +1 -0
- package/array/yelon-util-array.metadata.json +0 -1
- package/browser/browser.metadata.json +0 -1
- package/bundles/browser.umd.js +0 -325
- package/bundles/browser.umd.js.map +0 -1
- package/bundles/yelon-util-array.umd.js +0 -641
- package/bundles/yelon-util-array.umd.js.map +0 -1
- package/bundles/yelon-util-config.umd.js +0 -411
- package/bundles/yelon-util-config.umd.js.map +0 -1
- package/bundles/yelon-util-date-time.umd.js +0 -238
- package/bundles/yelon-util-date-time.umd.js.map +0 -1
- package/bundles/yelon-util-decorator.umd.js +0 -462
- package/bundles/yelon-util-decorator.umd.js.map +0 -1
- package/bundles/yelon-util-form.umd.js +0 -135
- package/bundles/yelon-util-form.umd.js.map +0 -1
- package/bundles/yelon-util-format.umd.js +0 -785
- package/bundles/yelon-util-format.umd.js.map +0 -1
- package/bundles/yelon-util-math.umd.js +0 -104
- package/bundles/yelon-util-math.umd.js.map +0 -1
- package/bundles/yelon-util-other.umd.js +0 -733
- package/bundles/yelon-util-other.umd.js.map +0 -1
- package/bundles/yelon-util-pipes-currency.umd.js +0 -108
- package/bundles/yelon-util-pipes-currency.umd.js.map +0 -1
- package/bundles/yelon-util-pipes-filter.umd.js +0 -374
- package/bundles/yelon-util-pipes-filter.umd.js.map +0 -1
- package/bundles/yelon-util-pipes-format.umd.js +0 -66
- package/bundles/yelon-util-pipes-format.umd.js.map +0 -1
- package/bundles/yelon-util-pipes.umd.js +0 -38
- package/bundles/yelon-util-pipes.umd.js.map +0 -1
- package/bundles/yelon-util-token.umd.js +0 -49
- package/bundles/yelon-util-token.umd.js.map +0 -1
- package/bundles/yelon-util.umd.js +0 -86
- package/bundles/yelon-util.umd.js.map +0 -1
- package/config/yelon-util-config.metadata.json +0 -1
- package/date-time/yelon-util-date-time.metadata.json +0 -1
- package/decorator/yelon-util-decorator.metadata.json +0 -1
- package/esm2015/array/array.service.js +0 -250
- package/esm2015/browser/cookie.service.js +0 -104
- package/esm2015/browser/copy.js +0 -27
- package/esm2015/browser/scroll.service.js +0 -89
- package/esm2015/config/config.service.js +0 -34
- package/esm2015/config/yelon-util-config.js +0 -5
- package/esm2015/date-time/picker.js +0 -116
- package/esm2015/date-time/yelon-util-date-time.js +0 -5
- package/esm2015/decorator/convert.js +0 -56
- package/esm2015/decorator/yelon-util-decorator.js +0 -5
- package/esm2015/decorator/zone-outside.js +0 -55
- package/esm2015/form/yelon-util-form.js +0 -5
- package/esm2015/format/currency.service.js +0 -225
- package/esm2015/format/string.js +0 -76
- package/esm2015/format/yelon-util-format.js +0 -5
- package/esm2015/math/yelon-util-math.js +0 -5
- package/esm2015/other/lazy.service.js +0 -118
- package/esm2015/pipes/currency/cny.pipe.js +0 -22
- package/esm2015/pipes/currency/mega.pipe.js +0 -26
- package/esm2015/pipes/currency/module.js +0 -14
- package/esm2015/pipes/currency/price.pipe.js +0 -26
- package/esm2015/pipes/currency/yelon-util-pipes-currency.js +0 -6
- package/esm2015/pipes/filter/filter.pipe.js +0 -15
- package/esm2015/pipes/filter/module.js +0 -12
- package/esm2015/pipes/filter/yelon-util-pipes-filter.js +0 -5
- package/esm2015/pipes/format/mask.pipe.js +0 -30
- package/esm2015/pipes/format/module.js +0 -12
- package/esm2015/pipes/format/yelon-util-pipes-format.js +0 -5
- package/esm2015/pipes/yelon-util-pipes.js +0 -5
- package/esm2015/token/yelon-util-token.js +0 -5
- package/fesm2015/browser.js.map +0 -1
- package/fesm2015/yelon-util-array.js.map +0 -1
- package/fesm2015/yelon-util-config.js.map +0 -1
- package/fesm2015/yelon-util-date-time.js.map +0 -1
- package/fesm2015/yelon-util-decorator.js.map +0 -1
- package/fesm2015/yelon-util-form.js.map +0 -1
- package/fesm2015/yelon-util-format.js.map +0 -1
- package/fesm2015/yelon-util-math.js.map +0 -1
- package/fesm2015/yelon-util-other.js.map +0 -1
- package/fesm2015/yelon-util-pipes-currency.js +0 -87
- package/fesm2015/yelon-util-pipes-currency.js.map +0 -1
- package/fesm2015/yelon-util-pipes-filter.js +0 -32
- package/fesm2015/yelon-util-pipes-filter.js.map +0 -1
- package/fesm2015/yelon-util-pipes-format.js +0 -47
- package/fesm2015/yelon-util-pipes-format.js.map +0 -1
- package/fesm2015/yelon-util-pipes.js.map +0 -1
- package/fesm2015/yelon-util-token.js.map +0 -1
- package/fesm2015/yelon-util.js.map +0 -1
- package/form/yelon-util-form.d.ts +0 -4
- package/form/yelon-util-form.metadata.json +0 -1
- package/format/yelon-util-format.d.ts +0 -4
- package/format/yelon-util-format.metadata.json +0 -1
- package/math/yelon-util-math.d.ts +0 -4
- package/math/yelon-util-math.metadata.json +0 -1
- package/other/yelon-util-other.d.ts +0 -4
- package/other/yelon-util-other.metadata.json +0 -1
- package/pipes/currency/yelon-util-pipes-currency.d.ts +0 -5
- package/pipes/currency/yelon-util-pipes-currency.metadata.json +0 -1
- package/pipes/filter/yelon-util-pipes-filter.d.ts +0 -4
- package/pipes/filter/yelon-util-pipes-filter.metadata.json +0 -1
- package/pipes/format/yelon-util-pipes-format.d.ts +0 -4
- package/pipes/format/yelon-util-pipes-format.metadata.json +0 -1
- package/pipes/yelon-util-pipes.d.ts +0 -4
- package/pipes/yelon-util-pipes.metadata.json +0 -1
- package/token/yelon-util-token.d.ts +0 -4
- package/token/yelon-util-token.metadata.json +0 -1
- package/yelon-util.metadata.json +0 -1
@@ -0,0 +1,303 @@
|
|
1
|
+
import extend from 'extend';
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
3
|
+
import * as i0 from '@angular/core';
|
4
|
+
import { Injectable, Inject } from '@angular/core';
|
5
|
+
import { BehaviorSubject, isObservable } from 'rxjs';
|
6
|
+
import { share, filter } from 'rxjs/operators';
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Gets the value at `path` of `object`, like `_.get` in lodash.
|
10
|
+
*
|
11
|
+
* 类似 `_.get`,根据 `path` 获取安全值
|
12
|
+
*/
|
13
|
+
function deepGet(obj, path, defaultValue) {
|
14
|
+
if (!obj || path == null || path.length === 0)
|
15
|
+
return defaultValue;
|
16
|
+
if (!Array.isArray(path)) {
|
17
|
+
path = ~path.indexOf('.') ? path.split('.') : [path];
|
18
|
+
}
|
19
|
+
if (path.length === 1) {
|
20
|
+
const checkObj = obj[path[0]];
|
21
|
+
return typeof checkObj === 'undefined' ? defaultValue : checkObj;
|
22
|
+
}
|
23
|
+
const res = path.reduce((o, k) => (o || {})[k], obj);
|
24
|
+
return typeof res === 'undefined' ? defaultValue : res;
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Base on [extend](https://github.com/justmoon/node-extend) deep copy.
|
28
|
+
*
|
29
|
+
* 基于 [extend](https://github.com/justmoon/node-extend) 的深度拷贝
|
30
|
+
*/
|
31
|
+
function deepCopy(obj) {
|
32
|
+
const result = extend(true, {}, { _: obj });
|
33
|
+
return result._;
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Deep merge object.
|
37
|
+
*
|
38
|
+
* 深度合并对象
|
39
|
+
*
|
40
|
+
* @param original 原始对象
|
41
|
+
* @param arrayProcessMethod 数组处理方式
|
42
|
+
* - `true` 表示替换新值,不管新值为哪种类型
|
43
|
+
* - `false` 表示会合并整个数组(将旧数据与新数据合并成新数组)
|
44
|
+
* @param objects 要合并的对象
|
45
|
+
*/
|
46
|
+
function deepMergeKey(original, arrayProcessMethod, ...objects) {
|
47
|
+
if (Array.isArray(original) || typeof original !== 'object')
|
48
|
+
return original;
|
49
|
+
const isObject = (v) => typeof v === 'object';
|
50
|
+
const merge = (target, obj) => {
|
51
|
+
Object.keys(obj)
|
52
|
+
.filter(key => key !== '__proto__' && Object.prototype.hasOwnProperty.call(obj, key))
|
53
|
+
.forEach(key => {
|
54
|
+
const fromValue = obj[key];
|
55
|
+
const toValue = target[key];
|
56
|
+
if (Array.isArray(toValue)) {
|
57
|
+
target[key] = arrayProcessMethod ? fromValue : [...toValue, ...fromValue];
|
58
|
+
}
|
59
|
+
else if (typeof fromValue === 'function') {
|
60
|
+
target[key] = fromValue;
|
61
|
+
}
|
62
|
+
else if (fromValue != null && isObject(fromValue) && toValue != null && isObject(toValue)) {
|
63
|
+
target[key] = merge(toValue, fromValue);
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
target[key] = deepCopy(fromValue);
|
67
|
+
}
|
68
|
+
});
|
69
|
+
return target;
|
70
|
+
};
|
71
|
+
objects.filter(v => v != null && isObject(v)).forEach(v => merge(original, v));
|
72
|
+
return original;
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* Deep merge object.
|
76
|
+
*
|
77
|
+
* 深度合并对象
|
78
|
+
*/
|
79
|
+
function deepMerge(original, ...objects) {
|
80
|
+
return deepMergeKey(original, false, ...objects);
|
81
|
+
}
|
82
|
+
|
83
|
+
const record = {};
|
84
|
+
const PREFIX = '[@YELON]:';
|
85
|
+
function notRecorded(...args) {
|
86
|
+
const asRecord = args.reduce((acc, c) => acc + c.toString(), '');
|
87
|
+
if (record[asRecord]) {
|
88
|
+
return false;
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
record[asRecord] = true;
|
92
|
+
return true;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
function consoleCommonBehavior(consoleFunc, ...args) {
|
96
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) && notRecorded(...args)) {
|
97
|
+
consoleFunc(...args);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
// Warning should only be printed in dev mode and only once.
|
101
|
+
const warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args);
|
102
|
+
const warnDeprecation = (...args) => {
|
103
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
104
|
+
return () => { };
|
105
|
+
}
|
106
|
+
const stack = new Error().stack;
|
107
|
+
return consoleCommonBehavior((...arg) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);
|
108
|
+
};
|
109
|
+
// Log should only be printed in dev mode.
|
110
|
+
const log = (...args) => {
|
111
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
112
|
+
console.log(PREFIX, ...args);
|
113
|
+
}
|
114
|
+
};
|
115
|
+
|
116
|
+
/**
|
117
|
+
* 延迟加载资源(js 或 css)服务
|
118
|
+
*/
|
119
|
+
class LazyService {
|
120
|
+
constructor(doc) {
|
121
|
+
this.doc = doc;
|
122
|
+
this.list = {};
|
123
|
+
this.cached = {};
|
124
|
+
this._notify = new BehaviorSubject([]);
|
125
|
+
}
|
126
|
+
get change() {
|
127
|
+
return this._notify.asObservable().pipe(share(), filter(ls => ls.length !== 0));
|
128
|
+
}
|
129
|
+
clear() {
|
130
|
+
this.list = {};
|
131
|
+
this.cached = {};
|
132
|
+
}
|
133
|
+
load(paths) {
|
134
|
+
if (!Array.isArray(paths)) {
|
135
|
+
paths = [paths];
|
136
|
+
}
|
137
|
+
const promises = [];
|
138
|
+
paths.forEach(path => {
|
139
|
+
if (path.endsWith('.js')) {
|
140
|
+
promises.push(this.loadScript(path));
|
141
|
+
}
|
142
|
+
else {
|
143
|
+
promises.push(this.loadStyle(path));
|
144
|
+
}
|
145
|
+
});
|
146
|
+
return Promise.all(promises).then(res => {
|
147
|
+
this._notify.next(res);
|
148
|
+
return Promise.resolve(res);
|
149
|
+
});
|
150
|
+
}
|
151
|
+
loadScript(path, innerContent) {
|
152
|
+
return new Promise(resolve => {
|
153
|
+
if (this.list[path] === true) {
|
154
|
+
resolve({ ...this.cached[path], status: 'loading' });
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
this.list[path] = true;
|
158
|
+
const onSuccess = (item) => {
|
159
|
+
this.cached[path] = item;
|
160
|
+
resolve(item);
|
161
|
+
this._notify.next([item]);
|
162
|
+
};
|
163
|
+
const node = this.doc.createElement('script');
|
164
|
+
node.type = 'text/javascript';
|
165
|
+
node.src = path;
|
166
|
+
if (innerContent) {
|
167
|
+
node.innerHTML = innerContent;
|
168
|
+
}
|
169
|
+
node.onload = () => onSuccess({
|
170
|
+
path,
|
171
|
+
status: 'ok'
|
172
|
+
});
|
173
|
+
node.onerror = error => onSuccess({
|
174
|
+
path,
|
175
|
+
status: 'error',
|
176
|
+
error
|
177
|
+
});
|
178
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
179
|
+
});
|
180
|
+
}
|
181
|
+
loadStyle(path, rel = 'stylesheet', innerContent) {
|
182
|
+
return new Promise(resolve => {
|
183
|
+
if (this.list[path] === true) {
|
184
|
+
resolve(this.cached[path]);
|
185
|
+
return;
|
186
|
+
}
|
187
|
+
this.list[path] = true;
|
188
|
+
const node = this.doc.createElement('link');
|
189
|
+
node.rel = rel;
|
190
|
+
node.type = 'text/css';
|
191
|
+
node.href = path;
|
192
|
+
if (innerContent) {
|
193
|
+
node.innerHTML = innerContent;
|
194
|
+
}
|
195
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
196
|
+
const item = {
|
197
|
+
path,
|
198
|
+
status: 'ok'
|
199
|
+
};
|
200
|
+
this.cached[path] = item;
|
201
|
+
resolve(item);
|
202
|
+
});
|
203
|
+
}
|
204
|
+
}
|
205
|
+
LazyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LazyService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
206
|
+
LazyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LazyService, providedIn: 'root' });
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LazyService, decorators: [{
|
208
|
+
type: Injectable,
|
209
|
+
args: [{ providedIn: 'root' }]
|
210
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
211
|
+
type: Inject,
|
212
|
+
args: [DOCUMENT]
|
213
|
+
}] }]; } });
|
214
|
+
|
215
|
+
function throwError(msg, actual, expected, comparison) {
|
216
|
+
if (ngDevMode) {
|
217
|
+
throw new Error(`ASSERTION ERROR: ${msg}${comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`}`);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
/**
|
221
|
+
* Assert whether the expression and throw an error into console in dev mode
|
222
|
+
*
|
223
|
+
* 断言表达式是否符合预期,并在开发模式下会在控制台抛出一个错误
|
224
|
+
*/
|
225
|
+
function assert(expression, msg) {
|
226
|
+
if (!expression) {
|
227
|
+
throwError(msg);
|
228
|
+
}
|
229
|
+
}
|
230
|
+
/**
|
231
|
+
* Assert whether empty (`null` or `undefined`)
|
232
|
+
*
|
233
|
+
* 断言是否空值(`null` 或 `undefined`)
|
234
|
+
*/
|
235
|
+
function assertEmpty(actual, msg) {
|
236
|
+
if (actual == null) {
|
237
|
+
throwError(msg, typeof actual, 'NULL', '==');
|
238
|
+
}
|
239
|
+
}
|
240
|
+
/**
|
241
|
+
* Assert whether `number` type
|
242
|
+
*
|
243
|
+
* 断言是否 `number` 类型
|
244
|
+
*/
|
245
|
+
function assertNumber(actual, msg) {
|
246
|
+
if (!(typeof actual === 'number')) {
|
247
|
+
throwError(msg, typeof actual, 'number', '===');
|
248
|
+
}
|
249
|
+
}
|
250
|
+
/**
|
251
|
+
* Assert whether `string` type
|
252
|
+
*
|
253
|
+
* 断言是否 `string` 类型
|
254
|
+
*/
|
255
|
+
function assertString(actual, msg) {
|
256
|
+
if (!(typeof actual === 'string')) {
|
257
|
+
throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');
|
258
|
+
}
|
259
|
+
}
|
260
|
+
/**
|
261
|
+
* Assert whether `array` type
|
262
|
+
*
|
263
|
+
* 断言是否 `array` 类型
|
264
|
+
*/
|
265
|
+
function assertArray(actual, msg) {
|
266
|
+
if (!Array.isArray(actual)) {
|
267
|
+
throwError(msg, actual === null ? 'null' : typeof actual, 'array', '===');
|
268
|
+
}
|
269
|
+
}
|
270
|
+
/**
|
271
|
+
* Assert whether `Observable` type
|
272
|
+
*
|
273
|
+
* 断言是否 `Observable` 类型
|
274
|
+
*/
|
275
|
+
function assertObservable(obj, msg) {
|
276
|
+
if (!isObservable(obj)) {
|
277
|
+
throwError(msg, obj === null ? 'null' : typeof obj, 'Observable', '===');
|
278
|
+
}
|
279
|
+
}
|
280
|
+
|
281
|
+
function getUrlParam(url, name) {
|
282
|
+
try {
|
283
|
+
var reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`);
|
284
|
+
var r = url.split('?')[1].match(reg);
|
285
|
+
if (r != null)
|
286
|
+
return unescape(r[2]);
|
287
|
+
}
|
288
|
+
catch (e) {
|
289
|
+
return null;
|
290
|
+
}
|
291
|
+
return null;
|
292
|
+
}
|
293
|
+
|
294
|
+
const resizeWindow = () => {
|
295
|
+
window.dispatchEvent(new Event('resize'));
|
296
|
+
};
|
297
|
+
|
298
|
+
/**
|
299
|
+
* Generated bundle index. Do not edit.
|
300
|
+
*/
|
301
|
+
|
302
|
+
export { LazyService, PREFIX, assert, assertArray, assertEmpty, assertNumber, assertObservable, assertString, deepCopy, deepGet, deepMerge, deepMergeKey, getUrlParam, log, resizeWindow, warn, warnDeprecation };
|
303
|
+
//# sourceMappingURL=other.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"other.mjs","sources":["../../../../packages/util/other/deep.ts","../../../../packages/util/other/logger.ts","../../../../packages/util/other/lazy.service.ts","../../../../packages/util/other/assert.ts","../../../../packages/util/other/url.ts","../../../../packages/util/other/resize.ts","../../../../packages/util/other/other.ts"],"sourcesContent":["import extend from 'extend';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n/**\n * Gets the value at `path` of `object`, like `_.get` in lodash.\n *\n * 类似 `_.get`,根据 `path` 获取安全值\n */\nexport function deepGet(obj: NzSafeAny, path: string | string[] | null | undefined, defaultValue?: unknown): NzSafeAny {\n if (!obj || path == null || path.length === 0) return defaultValue;\n if (!Array.isArray(path)) {\n path = ~path.indexOf('.') ? path.split('.') : [path];\n }\n if (path.length === 1) {\n const checkObj = obj[path[0]];\n return typeof checkObj === 'undefined' ? defaultValue : checkObj;\n }\n const res = path.reduce((o, k) => (o || {})[k], obj);\n return typeof res === 'undefined' ? defaultValue : res;\n}\n\n/**\n * Base on [extend](https://github.com/justmoon/node-extend) deep copy.\n *\n * 基于 [extend](https://github.com/justmoon/node-extend) 的深度拷贝\n */\nexport function deepCopy<T extends { [key: string]: NzSafeAny } = NzSafeAny>(obj: T | null | undefined): T {\n const result = extend(true, {}, { _: obj });\n return result._ as T;\n}\n\n/**\n * Deep merge object.\n *\n * 深度合并对象\n *\n * @param original 原始对象\n * @param arrayProcessMethod 数组处理方式\n * - `true` 表示替换新值,不管新值为哪种类型\n * - `false` 表示会合并整个数组(将旧数据与新数据合并成新数组)\n * @param objects 要合并的对象\n */\nexport function deepMergeKey(original: unknown, arrayProcessMethod: boolean, ...objects: NzSafeAny[]): NzSafeAny {\n if (Array.isArray(original) || typeof original !== 'object') return original;\n\n const isObject = (v: unknown): boolean => typeof v === 'object';\n\n const merge = (target: NzSafeAny, obj: NzSafeAny): NzSafeAny => {\n Object.keys(obj)\n .filter(key => key !== '__proto__' && Object.prototype.hasOwnProperty.call(obj, key))\n .forEach(key => {\n const fromValue = obj[key];\n const toValue = target[key];\n if (Array.isArray(toValue)) {\n target[key] = arrayProcessMethod ? fromValue : [...toValue, ...fromValue];\n } else if (typeof fromValue === 'function') {\n target[key] = fromValue;\n } else if (fromValue != null && isObject(fromValue) && toValue != null && isObject(toValue)) {\n target[key] = merge(toValue, fromValue);\n } else {\n target[key] = deepCopy(fromValue);\n }\n });\n return target;\n };\n\n objects.filter(v => v != null && isObject(v)).forEach(v => merge(original, v));\n\n return original;\n}\n\n/**\n * Deep merge object.\n *\n * 深度合并对象\n */\nexport function deepMerge(original: unknown, ...objects: unknown[]): NzSafeAny {\n return deepMergeKey(original, false, ...objects);\n}\n","import type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\ndeclare const ngDevMode: boolean;\n\nconst record: Record<string, boolean> = {};\n\nexport const PREFIX = '[@YELON]:';\n\nfunction notRecorded(...args: NzSafeAny[]): boolean {\n const asRecord = args.reduce((acc, c) => acc + c.toString(), '');\n\n if (record[asRecord]) {\n return false;\n } else {\n record[asRecord] = true;\n return true;\n }\n}\n\nfunction consoleCommonBehavior(consoleFunc: (...args: NzSafeAny) => void, ...args: NzSafeAny[]): void {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && notRecorded(...args)) {\n consoleFunc(...args);\n }\n}\n\n// Warning should only be printed in dev mode and only once.\nexport const warn = (...args: NzSafeAny[]): void =>\n consoleCommonBehavior((...arg: NzSafeAny[]) => console.warn(PREFIX, ...arg), ...args);\n\nexport const warnDeprecation = (...args: NzSafeAny[]): NzSafeAny => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return () => {};\n }\n const stack = new Error().stack;\n return consoleCommonBehavior((...arg: NzSafeAny[]) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);\n};\n\n// Log should only be printed in dev mode.\nexport const log = (...args: NzSafeAny[]): void => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.log(PREFIX, ...args);\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, share } from 'rxjs/operators';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface LazyResult {\n path: string;\n status: 'ok' | 'error' | 'loading';\n error?: NzSafeAny;\n}\n\n/**\n * 延迟加载资源(js 或 css)服务\n */\n@Injectable({ providedIn: 'root' })\nexport class LazyService {\n private list: { [key: string]: boolean } = {};\n private cached: { [key: string]: LazyResult } = {};\n private _notify: BehaviorSubject<LazyResult[]> = new BehaviorSubject<LazyResult[]>([]);\n\n constructor(@Inject(DOCUMENT) private doc: NzSafeAny) {}\n\n get change(): Observable<LazyResult[]> {\n return this._notify.asObservable().pipe(\n share(),\n filter(ls => ls.length !== 0)\n );\n }\n\n clear(): void {\n this.list = {};\n this.cached = {};\n }\n\n load(paths: string | string[]): Promise<LazyResult[]> {\n if (!Array.isArray(paths)) {\n paths = [paths];\n }\n\n const promises: Array<Promise<LazyResult>> = [];\n paths.forEach(path => {\n if (path.endsWith('.js')) {\n promises.push(this.loadScript(path));\n } else {\n promises.push(this.loadStyle(path));\n }\n });\n\n return Promise.all(promises).then(res => {\n this._notify.next(res);\n return Promise.resolve(res);\n });\n }\n\n loadScript(path: string, innerContent?: string): Promise<LazyResult> {\n return new Promise(resolve => {\n if (this.list[path] === true) {\n resolve({ ...this.cached[path], status: 'loading' });\n return;\n }\n\n this.list[path] = true;\n const onSuccess = (item: LazyResult): void => {\n this.cached[path] = item;\n resolve(item);\n this._notify.next([item]);\n };\n\n const node = this.doc.createElement('script') as HTMLScriptElement;\n node.type = 'text/javascript';\n node.src = path;\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n node.onload = () =>\n onSuccess({\n path,\n status: 'ok'\n });\n node.onerror = error =>\n onSuccess({\n path,\n status: 'error',\n error\n });\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n });\n }\n\n loadStyle(path: string, rel: string = 'stylesheet', innerContent?: string): Promise<LazyResult> {\n return new Promise(resolve => {\n if (this.list[path] === true) {\n resolve(this.cached[path]);\n return;\n }\n\n this.list[path] = true;\n\n const node = this.doc.createElement('link') as HTMLLinkElement;\n node.rel = rel;\n node.type = 'text/css';\n node.href = path;\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n const item: LazyResult = {\n path,\n status: 'ok'\n };\n this.cached[path] = item;\n resolve(item);\n });\n }\n}\n","import { isObservable } from 'rxjs';\n\ndeclare const ngDevMode: boolean;\n\nfunction throwError(msg: string | null | undefined): void;\nfunction throwError(msg: string | null | undefined, actual: unknown, expected: unknown, comparison: string): void;\nfunction throwError(msg: string | null | undefined, actual?: unknown, expected?: unknown, comparison?: string): void {\n if (ngDevMode) {\n throw new Error(\n `ASSERTION ERROR: ${msg}${comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`}`\n );\n }\n}\n\n/**\n * Assert whether the expression and throw an error into console in dev mode\n *\n * 断言表达式是否符合预期,并在开发模式下会在控制台抛出一个错误\n */\nexport function assert(expression: boolean, msg?: string): void {\n if (!expression) {\n throwError(msg);\n }\n}\n\n/**\n * Assert whether empty (`null` or `undefined`)\n *\n * 断言是否空值(`null` 或 `undefined`)\n */\nexport function assertEmpty(actual: unknown, msg?: string): void {\n if (actual == null) {\n throwError(msg, typeof actual, 'NULL', '==');\n }\n}\n\n/**\n * Assert whether `number` type\n *\n * 断言是否 `number` 类型\n */\nexport function assertNumber(actual: unknown, msg?: string): void {\n if (!(typeof actual === 'number')) {\n throwError(msg, typeof actual, 'number', '===');\n }\n}\n\n/**\n * Assert whether `string` type\n *\n * 断言是否 `string` 类型\n */\nexport function assertString(actual: unknown, msg?: string): void {\n if (!(typeof actual === 'string')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');\n }\n}\n\n/**\n * Assert whether `array` type\n *\n * 断言是否 `array` 类型\n */\nexport function assertArray(actual: unknown, msg?: string): void {\n if (!Array.isArray(actual)) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'array', '===');\n }\n}\n\n/**\n * Assert whether `Observable` type\n *\n * 断言是否 `Observable` 类型\n */\nexport function assertObservable(obj: unknown, msg?: string): void {\n if (!isObservable(obj)) {\n throwError(msg, obj === null ? 'null' : typeof obj, 'Observable', '===');\n }\n}\n","import { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport function getUrlParam(url: NzSafeAny, name: string): string | null {\n try {\n var reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`);\n var r = url.split('?')[1].match(reg);\n if (r != null) return unescape(r[2]);\n } catch (e) {\n return null;\n }\n return null;\n}\n","export const resizeWindow = (): void => {\n window.dispatchEvent(new Event('resize'));\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { LOCALE_ID, Pipe, Inject, NgModule } from '@angular/core';
|
3
|
+
import * as i1 from '@yelon/util/format';
|
4
|
+
|
5
|
+
class CurrencyMegaPipe {
|
6
|
+
constructor(srv, locale) {
|
7
|
+
this.srv = srv;
|
8
|
+
this.isCN = false;
|
9
|
+
this.isCN = locale.startsWith('zh');
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* Large number format filter
|
13
|
+
*
|
14
|
+
* 大数据格式化
|
15
|
+
*/
|
16
|
+
transform(value, options) {
|
17
|
+
const res = this.srv.mega(value, options);
|
18
|
+
return res.value + (this.isCN ? res.unitI18n : res.unit);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
CurrencyMegaPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyMegaPipe, deps: [{ token: i1.CurrencyService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
22
|
+
CurrencyMegaPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyMegaPipe, name: "mega" });
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyMegaPipe, decorators: [{
|
24
|
+
type: Pipe,
|
25
|
+
args: [{ name: 'mega' }]
|
26
|
+
}], ctorParameters: function () { return [{ type: i1.CurrencyService }, { type: undefined, decorators: [{
|
27
|
+
type: Inject,
|
28
|
+
args: [LOCALE_ID]
|
29
|
+
}] }]; } });
|
30
|
+
|
31
|
+
class CurrencyPricePipe {
|
32
|
+
constructor(srv) {
|
33
|
+
this.srv = srv;
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Format a number with commas as thousands separators
|
37
|
+
*
|
38
|
+
* 格式化货币,用逗号将数字格式化为千位分隔符
|
39
|
+
* ```ts
|
40
|
+
* 10000 => `10,000`
|
41
|
+
* 10000.567 => `10,000.57`
|
42
|
+
* ```
|
43
|
+
*/
|
44
|
+
transform(value, options) {
|
45
|
+
return this.srv.format(value, options);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
CurrencyPricePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPricePipe, deps: [{ token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Pipe });
|
49
|
+
CurrencyPricePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPricePipe, name: "price" });
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPricePipe, decorators: [{
|
51
|
+
type: Pipe,
|
52
|
+
args: [{ name: 'price' }]
|
53
|
+
}], ctorParameters: function () { return [{ type: i1.CurrencyService }]; } });
|
54
|
+
|
55
|
+
class CurrencyCNYPipe {
|
56
|
+
constructor(srv) {
|
57
|
+
this.srv = srv;
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Converted into RMB notation.
|
61
|
+
*
|
62
|
+
* 转化成人民币表示法
|
63
|
+
*/
|
64
|
+
transform(value, options) {
|
65
|
+
return this.srv.cny(value, options);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
CurrencyCNYPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyCNYPipe, deps: [{ token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Pipe });
|
69
|
+
CurrencyCNYPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyCNYPipe, name: "cny" });
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyCNYPipe, decorators: [{
|
71
|
+
type: Pipe,
|
72
|
+
args: [{ name: 'cny' }]
|
73
|
+
}], ctorParameters: function () { return [{ type: i1.CurrencyService }]; } });
|
74
|
+
|
75
|
+
const PIPES = [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe];
|
76
|
+
class CurrencyPipeModule {
|
77
|
+
}
|
78
|
+
CurrencyPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
79
|
+
CurrencyPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPipeModule, declarations: [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe], exports: [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe] });
|
80
|
+
CurrencyPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPipeModule });
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CurrencyPipeModule, decorators: [{
|
82
|
+
type: NgModule,
|
83
|
+
args: [{
|
84
|
+
declarations: PIPES,
|
85
|
+
exports: PIPES
|
86
|
+
}]
|
87
|
+
}] });
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Generated bundle index. Do not edit.
|
91
|
+
*/
|
92
|
+
|
93
|
+
export { CurrencyCNYPipe, CurrencyMegaPipe, CurrencyPipeModule, CurrencyPricePipe };
|
94
|
+
//# sourceMappingURL=pipe-currency.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pipe-currency.mjs","sources":["../../../../packages/util/pipes/currency/mega.pipe.ts","../../../../packages/util/pipes/currency/price.pipe.ts","../../../../packages/util/pipes/currency/cny.pipe.ts","../../../../packages/util/pipes/currency/module.ts","../../../../packages/util/pipes/currency/pipe-currency.ts"],"sourcesContent":["import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\nimport { CurrencyMegaOptions, CurrencyService } from '@yelon/util/format';\n\n@Pipe({ name: 'mega' })\nexport class CurrencyMegaPipe implements PipeTransform {\n private isCN = false;\n constructor(private srv: CurrencyService, @Inject(LOCALE_ID) locale: string) {\n this.isCN = locale.startsWith('zh');\n }\n\n /**\n * Large number format filter\n *\n * 大数据格式化\n */\n transform(value: number | string, options?: CurrencyMegaOptions): string {\n const res = this.srv.mega(value, options);\n return res.value + (this.isCN ? res.unitI18n : res.unit);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { CurrencyFormatOptions, CurrencyService } from '@yelon/util/format';\n\n@Pipe({ name: 'price' })\nexport class CurrencyPricePipe implements PipeTransform {\n constructor(private srv: CurrencyService) {}\n /**\n * Format a number with commas as thousands separators\n *\n * 格式化货币,用逗号将数字格式化为千位分隔符\n * ```ts\n * 10000 => `10,000`\n * 10000.567 => `10,000.57`\n * ```\n */\n transform(value: number | string, options?: CurrencyFormatOptions): string {\n return this.srv.format(value, options);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { CurrencyCNYOptions, CurrencyService } from '@yelon/util/format';\n\n@Pipe({ name: 'cny' })\nexport class CurrencyCNYPipe implements PipeTransform {\n constructor(private srv: CurrencyService) {}\n\n /**\n * Converted into RMB notation.\n *\n * 转化成人民币表示法\n */\n transform(value: number | string, options?: CurrencyCNYOptions): string {\n return this.srv.cny(value, options);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CurrencyCNYPipe } from './cny.pipe';\nimport { CurrencyMegaPipe } from './mega.pipe';\nimport { CurrencyPricePipe } from './price.pipe';\n\nconst PIPES = [CurrencyMegaPipe, CurrencyPricePipe, CurrencyCNYPipe];\n\n@NgModule({\n declarations: PIPES,\n exports: PIPES\n})\nexport class CurrencyPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,gBAAgB;IAE3B,YAAoB,GAAoB,EAAqB,MAAc;QAAvD,QAAG,GAAH,GAAG,CAAiB;QADhC,SAAI,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACrC;;;;;;IAOD,SAAS,CAAC,KAAsB,EAAE,OAA6B;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;KAC1D;;6GAdU,gBAAgB,iDAEuB,SAAS;2GAFhD,gBAAgB;2FAAhB,gBAAgB;kBAD5B,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE;;0BAGuB,MAAM;2BAAC,SAAS;;;MCFhD,iBAAiB;IAC5B,YAAoB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;KAAI;;;;;;;;;;IAU5C,SAAS,CAAC,KAAsB,EAAE,OAA+B;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACxC;;8GAbU,iBAAiB;4GAAjB,iBAAiB;2FAAjB,iBAAiB;kBAD7B,IAAI;mBAAC,EAAE,IAAI,EAAE,OAAO,EAAE;;;MCCV,eAAe;IAC1B,YAAoB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;KAAI;;;;;;IAO5C,SAAS,CAAC,KAAsB,EAAE,OAA4B;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACrC;;4GAVU,eAAe;0GAAf,eAAe;2FAAf,eAAe;kBAD3B,IAAI;mBAAC,EAAE,IAAI,EAAE,KAAK,EAAE;;;ACErB,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;MAMxD,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBANhB,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,aAApD,gBAAgB,EAAE,iBAAiB,EAAE,eAAe;gHAMtD,kBAAkB;2FAAlB,kBAAkB;kBAJ9B,QAAQ;mBAAC;oBACR,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,KAAK;iBACf;;;ACXD;;;;;;"}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Pipe, NgModule } from '@angular/core';
|
3
|
+
|
4
|
+
class FilterPipe {
|
5
|
+
/**
|
6
|
+
* Filter array
|
7
|
+
*
|
8
|
+
* 过滤数组
|
9
|
+
*/
|
10
|
+
transform(array, matcher, ...args) {
|
11
|
+
return array.filter(i => matcher(i, ...args));
|
12
|
+
}
|
13
|
+
}
|
14
|
+
FilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
15
|
+
FilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipe, name: "filter" });
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipe, decorators: [{
|
17
|
+
type: Pipe,
|
18
|
+
args: [{ name: 'filter' }]
|
19
|
+
}] });
|
20
|
+
|
21
|
+
const PIPES = [FilterPipe];
|
22
|
+
class FilterPipeModule {
|
23
|
+
}
|
24
|
+
FilterPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
25
|
+
FilterPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipeModule, declarations: [FilterPipe], exports: [FilterPipe] });
|
26
|
+
FilterPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipeModule });
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FilterPipeModule, decorators: [{
|
28
|
+
type: NgModule,
|
29
|
+
args: [{
|
30
|
+
declarations: PIPES,
|
31
|
+
exports: PIPES
|
32
|
+
}]
|
33
|
+
}] });
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Generated bundle index. Do not edit.
|
37
|
+
*/
|
38
|
+
|
39
|
+
export { FilterPipe, FilterPipeModule };
|
40
|
+
//# sourceMappingURL=pipe-filter.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pipe-filter.mjs","sources":["../../../../packages/util/pipes/filter/filter.pipe.ts","../../../../packages/util/pipes/filter/module.ts","../../../../packages/util/pipes/filter/pipe-filter.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n /**\n * Filter array\n *\n * 过滤数组\n */\n transform<T>(array: readonly T[], matcher: (item: T, ...args: NzSafeAny[]) => boolean, ...args: NzSafeAny[]): T[] {\n return array.filter(i => matcher(i, ...args));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FilterPipe } from './filter.pipe';\n\nconst PIPES = [FilterPipe];\n\n@NgModule({\n declarations: PIPES,\n exports: PIPES\n})\nexport class FilterPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAKa,UAAU;;;;;;IAMrB,SAAS,CAAI,KAAmB,EAAE,OAAmD,EAAE,GAAG,IAAiB;QACzG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;KAC/C;;uGARU,UAAU;qGAAV,UAAU;2FAAV,UAAU;kBADtB,IAAI;mBAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;;;ACAxB,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;MAMd,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBANd,UAAU,aAAV,UAAU;8GAMZ,gBAAgB;2FAAhB,gBAAgB;kBAJ5B,QAAQ;mBAAC;oBACR,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,KAAK;iBACf;;;ACTD;;;;;;"}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Pipe, NgModule } from '@angular/core';
|
3
|
+
import { formatMask } from '@yelon/util/format';
|
4
|
+
|
5
|
+
class FormatMaskPipe {
|
6
|
+
/**
|
7
|
+
* Format mask
|
8
|
+
*
|
9
|
+
* 格式化掩码
|
10
|
+
*
|
11
|
+
* | 字符 | 描述 |
|
12
|
+
* | --- | --- |
|
13
|
+
* | `0` | 任意数字,若该位置字符不符合,则默认为 `0` 填充 |
|
14
|
+
* | `9` | 任意数字 |
|
15
|
+
* | `#` | 任意字符 |
|
16
|
+
* | `U` | 转换大写 |
|
17
|
+
* | `L` | 转换小写 |
|
18
|
+
* | `*` | 转换为 `*` 字符 |
|
19
|
+
*
|
20
|
+
* ```ts
|
21
|
+
* formatMask('123', '(###)') => (123)
|
22
|
+
* formatMask('15900000000', '999****9999') => 159****0000
|
23
|
+
* ```
|
24
|
+
*/
|
25
|
+
transform(value, mask) {
|
26
|
+
return formatMask(value, mask);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
FormatMaskPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
30
|
+
FormatMaskPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatMaskPipe, name: "mask" });
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatMaskPipe, decorators: [{
|
32
|
+
type: Pipe,
|
33
|
+
args: [{ name: 'mask' }]
|
34
|
+
}] });
|
35
|
+
|
36
|
+
const PIPES = [FormatMaskPipe];
|
37
|
+
class FormatPipeModule {
|
38
|
+
}
|
39
|
+
FormatPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
40
|
+
FormatPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatPipeModule, declarations: [FormatMaskPipe], exports: [FormatMaskPipe] });
|
41
|
+
FormatPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatPipeModule });
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormatPipeModule, decorators: [{
|
43
|
+
type: NgModule,
|
44
|
+
args: [{
|
45
|
+
declarations: PIPES,
|
46
|
+
exports: PIPES
|
47
|
+
}]
|
48
|
+
}] });
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Generated bundle index. Do not edit.
|
52
|
+
*/
|
53
|
+
|
54
|
+
export { FormatMaskPipe, FormatPipeModule };
|
55
|
+
//# sourceMappingURL=pipe-format.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pipe-format.mjs","sources":["../../../../packages/util/pipes/format/mask.pipe.ts","../../../../packages/util/pipes/format/module.ts","../../../../packages/util/pipes/format/pipe-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\nimport { formatMask, FormatMaskOption } from '@yelon/util/format';\n\n@Pipe({ name: 'mask' })\nexport class FormatMaskPipe implements PipeTransform {\n /**\n * Format mask\n *\n * 格式化掩码\n *\n * | 字符 | 描述 |\n * | --- | --- |\n * | `0` | 任意数字,若该位置字符不符合,则默认为 `0` 填充 |\n * | `9` | 任意数字 |\n * | `#` | 任意字符 |\n * | `U` | 转换大写 |\n * | `L` | 转换小写 |\n * | `*` | 转换为 `*` 字符 |\n *\n * ```ts\n * formatMask('123', '(###)') => (123)\n * formatMask('15900000000', '999****9999') => 159****0000\n * ```\n */\n transform(value: string, mask: string | FormatMaskOption): string {\n return formatMask(value, mask);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormatMaskPipe } from './mask.pipe';\n\nconst PIPES = [FormatMaskPipe];\n\n@NgModule({\n declarations: PIPES,\n exports: PIPES\n})\nexport class FormatPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,cAAc;;;;;;;;;;;;;;;;;;;;IAoBzB,SAAS,CAAC,KAAa,EAAE,IAA+B;QACtD,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAChC;;2GAtBU,cAAc;yGAAd,cAAc;2FAAd,cAAc;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE;;;ACAtB,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,CAAC;MAMlB,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBANd,cAAc,aAAd,cAAc;8GAMhB,gBAAgB;2FAAhB,gBAAgB;kBAJ5B,QAAQ;mBAAC;oBACR,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,KAAK;iBACf;;;ACTD;;;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pipes.mjs","sources":["../../../../packages/util/pipes/pipes.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { InjectionToken, inject } from '@angular/core';
|
3
|
+
import { fromEvent } from 'rxjs';
|
4
|
+
import { startWith, map, distinctUntilChanged, share } from 'rxjs/operators';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Access to global `window` object
|
8
|
+
*
|
9
|
+
* 访问全局 `window` 对象
|
10
|
+
*/
|
11
|
+
const WINDOW = new InjectionToken('WINDOW', {
|
12
|
+
factory: () => {
|
13
|
+
const { defaultView } = inject(DOCUMENT);
|
14
|
+
if (!defaultView) {
|
15
|
+
throw new Error('Window is not available');
|
16
|
+
}
|
17
|
+
return defaultView;
|
18
|
+
}
|
19
|
+
});
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Use the `visibilitychange` event to monitor whether the browser tab is visible, which is generally used when the user leaves the browser tab to temp interrupt the backend to continue sending requests
|
23
|
+
*
|
24
|
+
* 通过 `visibilitychange` 事件来监听浏览器选项卡是否可见,一般用于当用户离开应用时暂时中断后端持续发送请求时
|
25
|
+
*/
|
26
|
+
const PAGE_VISIBILITY = new InjectionToken('PAGE_VISIBILITY`', {
|
27
|
+
factory: () => {
|
28
|
+
const doc = inject(DOCUMENT);
|
29
|
+
return fromEvent(doc, 'visibilitychange').pipe(startWith(0), map(() => !doc.hidden), distinctUntilChanged(), share());
|
30
|
+
}
|
31
|
+
});
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Generated bundle index. Do not edit.
|
35
|
+
*/
|
36
|
+
|
37
|
+
export { PAGE_VISIBILITY, WINDOW };
|
38
|
+
//# sourceMappingURL=token.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"token.mjs","sources":["../../../../packages/util/token/window.ts","../../../../packages/util/token/page-visibility.ts","../../../../packages/util/token/token.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\n/**\n * Access to global `window` object\n *\n * 访问全局 `window` 对象\n */\nexport const WINDOW = new InjectionToken<Window>('WINDOW', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, share, startWith } from 'rxjs/operators';\n\n/**\n * Use the `visibilitychange` event to monitor whether the browser tab is visible, which is generally used when the user leaves the browser tab to temp interrupt the backend to continue sending requests\n *\n * 通过 `visibilitychange` 事件来监听浏览器选项卡是否可见,一般用于当用户离开应用时暂时中断后端持续发送请求时\n */\nexport const PAGE_VISIBILITY = new InjectionToken<Observable<boolean>>('PAGE_VISIBILITY`', {\n factory: () => {\n const doc = inject(DOCUMENT);\n return fromEvent(doc, 'visibilitychange').pipe(\n startWith(0),\n map(() => !doc.hidden),\n distinctUntilChanged(),\n share()\n );\n }\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;;;;MAKa,MAAM,GAAG,IAAI,cAAc,CAAS,QAAQ,EAAE;IACzD,OAAO,EAAE;QACP,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;QACD,OAAO,WAAW,CAAC;KACpB;CACF;;ACXD;;;;;MAKa,eAAe,GAAG,IAAI,cAAc,CAAsB,kBAAkB,EAAE;IACzF,OAAO,EAAE;QACP,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAC5C,SAAS,CAAC,CAAC,CAAC,EACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EACtB,oBAAoB,EAAE,EACtB,KAAK,EAAE,CACR,CAAC;KACH;CACF;;ACpBD;;;;;;"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
export * from '@yelon/util/array';
|
2
|
+
export * from '@yelon/util/browser';
|
3
|
+
export * from '@yelon/util/config';
|
4
|
+
export * from '@yelon/util/date-time';
|
5
|
+
export * from '@yelon/util/form';
|
6
|
+
export * from '@yelon/util/format';
|
7
|
+
export * from '@yelon/util/math';
|
8
|
+
export * from '@yelon/util/decorator';
|
9
|
+
export * from '@yelon/util/other';
|
10
|
+
export * from '@yelon/util/pipes';
|
11
|
+
export * from '@yelon/util/token';
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Generated bundle index. Do not edit.
|
15
|
+
*/
|
16
|
+
//# sourceMappingURL=yelon-util.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"yelon-util.mjs","sources":["../../../../packages/util/yelon-util.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;"}
|