@yelon/util 12.0.19 → 13.0.0-beta.1
Sign up to get free protection for your applications and to get access to all the features.
- 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 +119 -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} +12 -9
- 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 +318 -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
File without changes
|
File without changes
|
@@ -0,0 +1,238 @@
|
|
1
|
+
import { CurrencyPipe, formatNumber } from '@angular/common';
|
2
|
+
import { DEFAULT_CURRENCY_CODE, Inject, Injectable, LOCALE_ID } from '@angular/core';
|
3
|
+
import { CurrencyMega_Powers } from './currency.types';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@yelon/util/config";
|
6
|
+
export class CurrencyService {
|
7
|
+
constructor(cog, locale, _defaultCurrencyCode = 'USD') {
|
8
|
+
this.locale = locale;
|
9
|
+
this.currencyPipe = new CurrencyPipe(locale, _defaultCurrencyCode);
|
10
|
+
this.c = cog.merge('utilCurrency', {
|
11
|
+
startingUnit: 'yuan',
|
12
|
+
megaUnit: { Q: '京', T: '兆', B: '亿', M: '万', K: '千' },
|
13
|
+
precision: 2,
|
14
|
+
ignoreZeroPrecision: true
|
15
|
+
});
|
16
|
+
}
|
17
|
+
/**
|
18
|
+
* Format a number with commas as thousands separators
|
19
|
+
*
|
20
|
+
* 格式化货币,用逗号将数字格式化为千位分隔符
|
21
|
+
* ```ts
|
22
|
+
* 10000 => `10,000`
|
23
|
+
* 10000.567 => `10,000.57`
|
24
|
+
* ```
|
25
|
+
*/
|
26
|
+
format(value, options) {
|
27
|
+
options = {
|
28
|
+
startingUnit: this.c.startingUnit,
|
29
|
+
precision: this.c.precision,
|
30
|
+
ignoreZeroPrecision: this.c.ignoreZeroPrecision,
|
31
|
+
ngCurrency: this.c.ngCurrency,
|
32
|
+
...options
|
33
|
+
};
|
34
|
+
let truthValue = Number(value);
|
35
|
+
if (value == null || isNaN(truthValue)) {
|
36
|
+
return '';
|
37
|
+
}
|
38
|
+
if (options.startingUnit === 'cent') {
|
39
|
+
truthValue = truthValue / 100;
|
40
|
+
}
|
41
|
+
if (options.ngCurrency != null) {
|
42
|
+
const cur = options.ngCurrency;
|
43
|
+
return this.currencyPipe.transform(truthValue, cur.currencyCode, cur.display, cur.digitsInfo, cur.locale || this.locale);
|
44
|
+
}
|
45
|
+
const res = formatNumber(truthValue, this.locale, `.${options.ignoreZeroPrecision ? 1 : options.precision}-${options.precision}`);
|
46
|
+
return options.ignoreZeroPrecision ? res.replace(/(?:\.[0]+)$/g, '') : res;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* Large number format filter
|
50
|
+
*
|
51
|
+
* 大数据格式化
|
52
|
+
* ```ts
|
53
|
+
* 1000 => { value: '1', unit: 'K', unitI18n: '千' }
|
54
|
+
* 12456 => { value: '12.46', unit: 'K', unitI18n: '千' }
|
55
|
+
* ```
|
56
|
+
*/
|
57
|
+
mega(value, options) {
|
58
|
+
options = { precision: this.c.precision, unitI18n: this.c.megaUnit, startingUnit: this.c.startingUnit, ...options };
|
59
|
+
let num = Number(value);
|
60
|
+
const res = { raw: value, value: '', unit: '', unitI18n: '' };
|
61
|
+
if (isNaN(num) || num === 0) {
|
62
|
+
res.value = value.toString();
|
63
|
+
return res;
|
64
|
+
}
|
65
|
+
if (options.startingUnit === 'cent') {
|
66
|
+
num = num / 100;
|
67
|
+
}
|
68
|
+
let abs = Math.abs(+num);
|
69
|
+
const rounder = Math.pow(10, options.precision);
|
70
|
+
const isNegative = num < 0;
|
71
|
+
for (const p of CurrencyMega_Powers) {
|
72
|
+
let reduced = abs / p.value;
|
73
|
+
reduced = Math.round(reduced * rounder) / rounder;
|
74
|
+
if (reduced >= 1) {
|
75
|
+
abs = reduced;
|
76
|
+
res.unit = p.unit;
|
77
|
+
break;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
res.value = (isNegative ? '-' : '') + abs;
|
81
|
+
res.unitI18n = options.unitI18n[res.unit];
|
82
|
+
return res;
|
83
|
+
}
|
84
|
+
/**
|
85
|
+
* Converted into RMB notation.
|
86
|
+
*
|
87
|
+
* 转化成人民币表示法
|
88
|
+
*/
|
89
|
+
cny(value, options) {
|
90
|
+
options = {
|
91
|
+
inWords: true,
|
92
|
+
minusSymbol: '负',
|
93
|
+
startingUnit: this.c.startingUnit,
|
94
|
+
...options
|
95
|
+
};
|
96
|
+
value = Number(value);
|
97
|
+
if (isNaN(value)) {
|
98
|
+
return '';
|
99
|
+
}
|
100
|
+
if (options.startingUnit === 'cent') {
|
101
|
+
value = value / 100;
|
102
|
+
}
|
103
|
+
value = value.toString();
|
104
|
+
let integer;
|
105
|
+
let decimal;
|
106
|
+
[integer, decimal] = value.split('.');
|
107
|
+
let symbol = '';
|
108
|
+
if (integer.startsWith('-')) {
|
109
|
+
symbol = options.minusSymbol;
|
110
|
+
integer = integer.substring(1);
|
111
|
+
}
|
112
|
+
if (/^-?\d+$/.test(value)) {
|
113
|
+
decimal = null;
|
114
|
+
}
|
115
|
+
integer = (+integer).toString();
|
116
|
+
const inWords = options.inWords;
|
117
|
+
const unit = {
|
118
|
+
num: inWords
|
119
|
+
? ['', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '点']
|
120
|
+
: ['', '一', '二', '三', '四', '五', '六', '七', '八', '九', '点'],
|
121
|
+
radice: inWords
|
122
|
+
? [
|
123
|
+
'',
|
124
|
+
'拾',
|
125
|
+
'佰',
|
126
|
+
'仟',
|
127
|
+
'万',
|
128
|
+
'拾',
|
129
|
+
'佰',
|
130
|
+
'仟',
|
131
|
+
'亿',
|
132
|
+
'拾',
|
133
|
+
'佰',
|
134
|
+
'仟',
|
135
|
+
'万亿',
|
136
|
+
'拾',
|
137
|
+
'佰',
|
138
|
+
'仟',
|
139
|
+
'兆',
|
140
|
+
'拾',
|
141
|
+
'佰',
|
142
|
+
'仟'
|
143
|
+
]
|
144
|
+
: [
|
145
|
+
'',
|
146
|
+
'十',
|
147
|
+
'百',
|
148
|
+
'千',
|
149
|
+
'万',
|
150
|
+
'十',
|
151
|
+
'百',
|
152
|
+
'千',
|
153
|
+
'亿',
|
154
|
+
'十',
|
155
|
+
'百',
|
156
|
+
'千',
|
157
|
+
'万亿',
|
158
|
+
'十',
|
159
|
+
'百',
|
160
|
+
'千',
|
161
|
+
'兆',
|
162
|
+
'十',
|
163
|
+
'百',
|
164
|
+
'千'
|
165
|
+
],
|
166
|
+
dec: ['角', '分', '厘', '毫']
|
167
|
+
};
|
168
|
+
if (inWords) {
|
169
|
+
value = (+value).toFixed(5).toString();
|
170
|
+
}
|
171
|
+
let integerRes = '';
|
172
|
+
const integerCount = integer.length;
|
173
|
+
if (integer === '0' || integerCount === 0) {
|
174
|
+
integerRes = '零';
|
175
|
+
}
|
176
|
+
else {
|
177
|
+
let cnDesc = '';
|
178
|
+
for (let i = 0; i < integerCount; i++) {
|
179
|
+
const n = +integer[i];
|
180
|
+
const j = integerCount - i - 1;
|
181
|
+
const isZero = i > 1 && n !== 0 && integer[i - 1] === '0';
|
182
|
+
const cnZero = isZero ? '零' : '';
|
183
|
+
const isEmpptyUnit = (n === 0 && j % 4 !== 0) || integer.substring(i - 3, i - 3 + 4) === '0000';
|
184
|
+
const descMark = cnDesc;
|
185
|
+
let cnNum = unit.num[n];
|
186
|
+
cnDesc = isEmpptyUnit ? '' : unit.radice[j];
|
187
|
+
// 第一位是一十
|
188
|
+
if (i === 0 && cnNum === '一' && cnDesc === '十')
|
189
|
+
cnNum = '';
|
190
|
+
const isChangeEr = n > 1 &&
|
191
|
+
cnNum === '二' && // 去除首位
|
192
|
+
['', '十', '百'].indexOf(cnDesc) === -1 && // 不读两\两十\两百
|
193
|
+
descMark !== '十'; // 不读十两
|
194
|
+
if (isChangeEr)
|
195
|
+
cnNum = '两';
|
196
|
+
integerRes += cnZero + cnNum + cnDesc;
|
197
|
+
}
|
198
|
+
}
|
199
|
+
// 小数部分拼接
|
200
|
+
let decimalRes = '';
|
201
|
+
const decimalCount = decimal ? decimal.toString().length : 0;
|
202
|
+
if (decimal === null) {
|
203
|
+
decimalRes = inWords ? '整' : '';
|
204
|
+
}
|
205
|
+
else if (decimal === '0') {
|
206
|
+
decimalRes = '零';
|
207
|
+
}
|
208
|
+
else {
|
209
|
+
for (let i = 0; i < decimalCount; i++) {
|
210
|
+
if (inWords && i > unit.dec.length - 1)
|
211
|
+
break;
|
212
|
+
const n = decimal[i];
|
213
|
+
const cnZero = n === '0' ? '零' : '';
|
214
|
+
const cnNum = unit.num[+n];
|
215
|
+
const cnDesc = inWords ? unit.dec[i] : '';
|
216
|
+
decimalRes += cnZero + cnNum + cnDesc;
|
217
|
+
}
|
218
|
+
}
|
219
|
+
const ret = symbol +
|
220
|
+
(inWords
|
221
|
+
? integerRes + (decimalRes === '零' ? '元整' : `元${decimalRes}`)
|
222
|
+
: integerRes + (decimalRes === '' ? '' : `点${decimalRes}`));
|
223
|
+
return ret;
|
224
|
+
}
|
225
|
+
}
|
226
|
+
CurrencyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyService, deps: [{ token: i1.YunzaiConfigService }, { token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Injectable });
|
227
|
+
CurrencyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyService, providedIn: 'root' });
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyService, decorators: [{
|
229
|
+
type: Injectable,
|
230
|
+
args: [{ providedIn: 'root' }]
|
231
|
+
}], ctorParameters: function () { return [{ type: i1.YunzaiConfigService }, { type: undefined, decorators: [{
|
232
|
+
type: Inject,
|
233
|
+
args: [LOCALE_ID]
|
234
|
+
}] }, { type: undefined, decorators: [{
|
235
|
+
type: Inject,
|
236
|
+
args: [DEFAULT_CURRENCY_CODE]
|
237
|
+
}] }]; } });
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvZm9ybWF0L2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLckYsT0FBTyxFQUtMLG1CQUFtQixFQUNwQixNQUFNLGtCQUFrQixDQUFDOzs7QUFHMUIsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDRSxHQUF3QixFQUNHLE1BQWMsRUFDVix1QkFBK0IsS0FBSztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUNqQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsU0FBUyxFQUFFLENBQUM7WUFDWixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUUsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxLQUFzQixFQUFFLE9BQStCO1FBQzVELE9BQU8sR0FBRztZQUNSLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVk7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMz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Q2IsQ0FBQzs7NEdBL09VLGVBQWUscURBTWhCLFNBQVMsYUFDVCxxQkFBcUI7Z0hBUHBCLGVBQWUsY0FERixNQUFNOzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTzdCLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBmb3JtYXROdW1iZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgREVGQVVMVF9DVVJSRU5DWV9DT0RFLCBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBZdW56YWlDb25maWdTZXJ2aWNlLCBZdW56YWlVdGlsQ3VycmVuY3lDb25maWcgfSBmcm9tICdAeWVsb24vdXRpbC9jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBDdXJyZW5jeUNOWU9wdGlvbnMsXG4gIEN1cnJlbmN5Rm9ybWF0T3B0aW9ucyxcbiAgQ3VycmVuY3lNZWdhT3B0aW9ucyxcbiAgQ3VycmVuY3lNZWdhUmVzdWx0LFxuICBDdXJyZW5jeU1lZ2FfUG93ZXJzXG59IGZyb20gJy4vY3VycmVuY3kudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XG4gIHByaXZhdGUgYzogWXVuemFpVXRpbEN1cnJlbmN5Q29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvZzogWXVuemFpQ29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZyxcbiAgICBASW5qZWN0KERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSkgX2RlZmF1bHRDdXJyZW5jeUNvZGU6IHN0cmluZyA9ICdVU0QnXG4gICkge1xuICAgIHRoaXMuY3VycmVuY3lQaXBlID0gbmV3IEN1cnJlbmN5UGlwZShsb2NhbGUsIF9kZWZhdWx0Q3VycmVuY3lDb2RlKTtcbiAgICB0aGlzLmMgPSBjb2cubWVyZ2UoJ3V0aWxDdXJyZW5jeScsIHtcbiAgICAgIHN0YXJ0aW5nVW5pdDogJ3l1YW4nLFxuICAgICAgbWVnYVVuaXQ6IHsgUTogJ+S6rCcsIFQ6ICflhYYnLCBCOiAn5Lq/JywgTTogJ+S4hycsIEs6ICfljYMnIH0sXG4gICAgICBwcmVjaXNpb246IDIsXG4gICAgICBpZ25vcmVaZXJvUHJlY2lzaW9uOiB0cnVlXG4gICAgfSkhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIG51bWJlciB3aXRoIGNvbW1hcyBhcyB0aG91c2FuZHMgc2VwYXJhdG9yc1xuICAgKlxuICAgKiDmoLzlvI/ljJbotKfluIHvvIznlKjpgJflj7flsIbmlbDlrZfmoLzlvI/ljJbkuLrljYPkvY3liIbpmpTnrKZcbiAgICogYGBgdHNcbiAgICogMTAwMDAgPT4gYDEwLDAwMGBcbiAgICogMTAwMDAuNTY3ID0+IGAxMCwwMDAuNTdgXG4gICAqIGBgYFxuICAgKi9cbiAgZm9ybWF0KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM/OiBDdXJyZW5jeUZvcm1hdE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBzdGFydGluZ1VuaXQ6IHRoaXMuYy5zdGFydGluZ1VuaXQsXG4gICAgICBwcmVjaXNpb246IHRoaXMuYy5wcmVjaXNpb24sXG4gICAgICBpZ25vcmVaZXJvUHJlY2lzaW9uOiB0aGlzLmMuaWdub3JlWmVyb1ByZWNpc2lvbixcbiAgICAgIG5nQ3VycmVuY3k6IHRoaXMuYy5uZ0N1cnJlbmN5LFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgbGV0IHRydXRoVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IGlzTmFOKHRydXRoVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnN0YXJ0aW5nVW5pdCA9PT0gJ2NlbnQnKSB7XG4gICAgICB0cnV0aFZhbHVlID0gdHJ1dGhWYWx1ZSAvIDEwMDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubmdDdXJyZW5jeSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXIgPSBvcHRpb25zLm5nQ3VycmVuY3khO1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcbiAgICAgICAgdHJ1dGhWYWx1ZSxcbiAgICAgICAgY3VyLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgY3VyLmRpc3BsYXksXG4gICAgICAgIGN1ci5kaWdpdHNJbmZvLFxuICAgICAgICBjdXIubG9jYWxlIHx8IHRoaXMubG9jYWxlXG4gICAgICApITtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gZm9ybWF0TnVtYmVyKFxuICAgICAgdHJ1dGhWYWx1ZSxcbiAgICAgIHRoaXMubG9jYWxlLFxuICAgICAgYC4ke29wdGlvbnMuaWdub3JlWmVyb1ByZWNpc2lvbiA/IDEgOiBvcHRpb25zLnByZWNpc2lvbn0tJHtvcHRpb25zLnByZWNpc2lvbn1gXG4gICAgKTtcbiAgICByZXR1cm4gb3B0aW9ucy5pZ25vcmVaZXJvUHJlY2lzaW9uID8gcmVzLnJlcGxhY2UoLyg/OlxcLlswXSspJC9nLCAnJykgOiByZXM7XG4gIH1cblxuICAvKipcbiAgICogTGFyZ2UgbnVtYmVyIGZvcm1hdCBmaWx0ZXJcbiAgICpcbiAgICog5aSn5pWw5o2u5qC85byP5YyWXG4gICAqIGBgYHRzXG4gICAqIDEwMDAgPT4geyB2YWx1ZTogJzEnLCB1bml0OiAnSycsIHVuaXRJMThuOiAn5Y2DJyB9XG4gICAqIDEyNDU2ID0+IHsgdmFsdWU6ICcxMi40NicsIHVuaXQ6ICdLJywgdW5pdEkxOG46ICfljYMnIH1cbiAgICogYGBgXG4gICAqL1xuICBtZWdhKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM/OiBDdXJyZW5jeU1lZ2FPcHRpb25zKTogQ3VycmVuY3lNZWdhUmVzdWx0IHtcbiAgICBvcHRpb25zID0geyBwcmVjaXNpb246IHRoaXMuYy5wcmVjaXNpb24sIHVuaXRJMThuOiB0aGlzLmMubWVnYVVuaXQsIHN0YXJ0aW5nVW5pdDogdGhpcy5jLnN0YXJ0aW5nVW5pdCwgLi4ub3B0aW9ucyB9O1xuICAgIGxldCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgIGNvbnN0IHJlczogQ3VycmVuY3lNZWdhUmVzdWx0ID0geyByYXc6IHZhbHVlLCB2YWx1ZTogJycsIHVuaXQ6ICcnLCB1bml0STE4bjogJycgfTtcbiAgICBpZiAoaXNOYU4obnVtKSB8fCBudW0gPT09IDApIHtcbiAgICAgIHJlcy52YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdGFydGluZ1VuaXQgPT09ICdjZW50Jykge1xuICAgICAgbnVtID0gbnVtIC8gMTAwO1xuICAgIH1cbiAgICBsZXQgYWJzID0gTWF0aC5hYnMoK251bSk7XG4gICAgY29uc3Qgcm91bmRlciA9IE1hdGgucG93KDEwLCBvcHRpb25zLnByZWNpc2lvbiEpO1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSBudW0gPCAwO1xuICAgIGZvciAoY29uc3QgcCBvZiBDdXJyZW5jeU1lZ2FfUG93ZXJzKSB7XG4gICAgICBsZXQgcmVkdWNlZCA9IGFicyAvIHAudmFsdWU7XG5cbiAgICAgIHJlZHVjZWQgPSBNYXRoLnJvdW5kKHJlZHVjZWQgKiByb3VuZGVyKSAvIHJvdW5kZXI7XG5cbiAgICAgIGlmIChyZWR1Y2VkID49IDEpIHtcbiAgICAgICAgYWJzID0gcmVkdWNlZDtcbiAgICAgICAgcmVzLnVuaXQgPSBwLnVuaXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlcy52YWx1ZSA9IChpc05lZ2F0aXZlID8gJy0nIDogJycpICsgYWJzO1xuICAgIHJlcy51bml0STE4biA9IChvcHRpb25zLnVuaXRJMThuIGFzIHsgW2tleTogc3RyaW5nXTogTnpTYWZlQW55IH0pW3Jlcy51bml0XTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRlZCBpbnRvIFJNQiBub3RhdGlvbi5cbiAgICpcbiAgICog6L2s5YyW5oiQ5Lq65rCR5biB6KGo56S65rOVXG4gICAqL1xuICBjbnkodmFsdWU6IG51bWJlciB8IHN0cmluZywgb3B0aW9ucz86IEN1cnJlbmN5Q05ZT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIGluV29yZHM6IHRydWUsXG4gICAgICBtaW51c1N5bWJvbDogJ+i0nycsXG4gICAgICBzdGFydGluZ1VuaXQ6IHRoaXMuYy5zdGFydGluZ1VuaXQsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnN0YXJ0aW5nVW5pdCA9PT0gJ2NlbnQnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlIC8gMTAwO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgbGV0IGludGVnZXI6IG51bWJlciB8IHN0cmluZztcbiAgICBsZXQgZGVjaW1hbDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgICBbaW50ZWdlciwgZGVjaW1hbF0gPSB2YWx1ZS5zcGxpdCgnLicpO1xuICAgIGxldCBzeW1ib2wgPSAnJztcbiAgICBpZiAoaW50ZWdlci5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgIHN5bWJvbCA9IG9wdGlvbnMubWludXNTeW1ib2whO1xuICAgICAgaW50ZWdlciA9IGludGVnZXIuc3Vic3RyaW5nKDEpO1xuICAgIH1cbiAgICBpZiAoL14tP1xcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgZGVjaW1hbCA9IG51bGw7XG4gICAgfVxuICAgIGludGVnZXIgPSAoK2ludGVnZXIpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaW5Xb3JkcyA9IG9wdGlvbnMuaW5Xb3JkcztcbiAgICBjb25zdCB1bml0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7XG4gICAgICBudW06IGluV29yZHNcbiAgICAgICAgPyBbJycsICflo7knLCAn6LSwJywgJ+WPgScsICfogoYnLCAn5LyNJywgJ+mZhicsICfmn5InLCAn5o2MJywgJ+eOlicsICfngrknXVxuICAgICAgICA6IFsnJywgJ+S4gCcsICfkuownLCAn5LiJJywgJ+WbmycsICfkupQnLCAn5YWtJywgJ+S4gycsICflhasnLCAn5LmdJywgJ+eCuSddLFxuICAgICAgcmFkaWNlOiBpbldvcmRzXG4gICAgICAgID8gW1xuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAn5ou+JyxcbiAgICAgICAgICAgICfkvbAnLFxuICAgICAgICAgICAgJ+S7nycsXG4gICAgICAgICAgICAn5LiHJyxcbiAgICAgICAgICAgICfmi74nLFxuICAgICAgICAgICAgJ+S9sCcsXG4gICAgICAgICAgICAn5LufJyxcbiAgICAgICAgICAgICfkur8nLFxuICAgICAgICAgICAgJ+aLvicsXG4gICAgICAgICAgICAn5L2wJyxcbiAgICAgICAgICAgICfku58nLFxuICAgICAgICAgICAgJ+S4h+S6vycsXG4gICAgICAgICAgICAn5ou+JyxcbiAgICAgICAgICAgICfkvbAnLFxuICAgICAgICAgICAgJ+S7nycsXG4gICAgICAgICAgICAn5YWGJyxcbiAgICAgICAgICAgICfmi74nLFxuICAgICAgICAgICAgJ+S9sCcsXG4gICAgICAgICAgICAn5LufJ1xuICAgICAgICAgIF1cbiAgICAgICAgOiBbXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICfljYEnLFxuICAgICAgICAgICAgJ+eZvicsXG4gICAgICAgICAgICAn5Y2DJyxcbiAgICAgICAgICAgICfkuIcnLFxuICAgICAgICAgICAgJ+WNgScsXG4gICAgICAgICAgICAn55m+JyxcbiAgICAgICAgICAgICfljYMnLFxuICAgICAgICAgICAgJ+S6vycsXG4gICAgICAgICAgICAn5Y2BJyxcbiAgICAgICAgICAgICfnmb4nLFxuICAgICAgICAgICAgJ+WNgycsXG4gICAgICAgICAgICAn5LiH5Lq/JyxcbiAgICAgICAgICAgICfljYEnLFxuICAgICAgICAgICAgJ+eZvicsXG4gICAgICAgICAgICAn5Y2DJyxcbiAgICAgICAgICAgICflhYYnLFxuICAgICAgICAgICAgJ+WNgScsXG4gICAgICAgICAgICAn55m+JyxcbiAgICAgICAgICAgICfljYMnXG4gICAgICAgICAgXSxcbiAgICAgIGRlYzogWyfop5InLCAn5YiGJywgJ+WOmCcsICfmr6snXVxuICAgIH07XG4gICAgaWYgKGluV29yZHMpIHtcbiAgICAgIHZhbHVlID0gKCt2YWx1ZSkudG9GaXhlZCg1KS50b1N0cmluZygpO1xuICAgIH1cbiAgICBsZXQgaW50ZWdlclJlcyA9ICcnO1xuICAgIGNvbnN0IGludGVnZXJDb3VudCA9IGludGVnZXIubGVuZ3RoO1xuICAgIGlmIChpbnRlZ2VyID09PSAnMCcgfHwgaW50ZWdlckNvdW50ID09PSAwKSB7XG4gICAgICBpbnRlZ2VyUmVzID0gJ+mbtic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjbkRlc2MgPSAnJztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZWdlckNvdW50OyBpKyspIHtcbiAgICAgICAgY29uc3QgbiA9ICtpbnRlZ2VyW2ldO1xuICAgICAgICBjb25zdCBqID0gaW50ZWdlckNvdW50IC0gaSAtIDE7XG4gICAgICAgIGNvbnN0IGlzWmVybyA9IGkgPiAxICYmIG4gIT09IDAgJiYgaW50ZWdlcltpIC0gMV0gPT09ICcwJztcbiAgICAgICAgY29uc3QgY25aZXJvID0gaXNaZXJvID8gJ+mbticgOiAnJztcbiAgICAgICAgY29uc3QgaXNFbXBwdHlVbml0ID0gKG4gPT09IDAgJiYgaiAlIDQgIT09IDApIHx8IGludGVnZXIuc3Vic3RyaW5nKGkgLSAzLCBpIC0gMyArIDQpID09PSAnMDAwMCc7XG4gICAgICAgIGNvbnN0IGRlc2NNYXJrID0gY25EZXNjO1xuICAgICAgICBsZXQgY25OdW0gPSB1bml0Lm51bVtuXTtcblxuICAgICAgICBjbkRlc2MgPSBpc0VtcHB0eVVuaXQgPyAnJyA6IHVuaXQucmFkaWNlW2pdO1xuICAgICAgICAvLyDnrKzkuIDkvY3mmK/kuIDljYFcbiAgICAgICAgaWYgKGkgPT09IDAgJiYgY25OdW0gPT09ICfkuIAnICYmIGNuRGVzYyA9PT0gJ+WNgScpIGNuTnVtID0gJyc7XG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlRXIgPVxuICAgICAgICAgIG4gPiAxICYmXG4gICAgICAgICAgY25OdW0gPT09ICfkuownICYmIC8vIOWOu+mZpOmmluS9jVxuICAgICAgICAgIFsnJywgJ+WNgScsICfnmb4nXS5pbmRleE9mKGNuRGVzYykgPT09IC0xICYmIC8vIOS4jeivu+S4pFxc5Lik5Y2BXFzkuKTnmb5cbiAgICAgICAgICBkZXNjTWFyayAhPT0gJ+WNgSc7IC8vIOS4jeivu+WNgeS4pFxuICAgICAgICBpZiAoaXNDaGFuZ2VFcikgY25OdW0gPSAn5LikJztcbiAgICAgICAgaW50ZWdlclJlcyArPSBjblplcm8gKyBjbk51bSArIGNuRGVzYztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDlsI/mlbDpg6jliIbmi7zmjqVcbiAgICBsZXQgZGVjaW1hbFJlcyA9ICcnO1xuICAgIGNvbnN0IGRlY2ltYWxDb3VudCA9IGRlY2ltYWwgPyBkZWNpbWFsLnRvU3RyaW5nKCkubGVuZ3RoIDogMDtcbiAgICBpZiAoZGVjaW1hbCA9PT0gbnVsbCkge1xuICAgICAgZGVjaW1hbFJlcyA9IGluV29yZHMgPyAn5pW0JyA6ICcnO1xuICAgIH0gZWxzZSBpZiAoZGVjaW1hbCA9PT0gJzAnKSB7XG4gICAgICBkZWNpbWFsUmVzID0gJ+mbtic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjaW1hbENvdW50OyBpKyspIHtcbiAgICAgICAgaWYgKGluV29yZHMgJiYgaSA+IHVuaXQuZGVjLmxlbmd0aCAtIDEpIGJyZWFrO1xuICAgICAgICBjb25zdCBuID0gZGVjaW1hbFtpXTtcbiAgICAgICAgY29uc3QgY25aZXJvID0gbiA9PT0gJzAnID8gJ+mbticgOiAnJztcbiAgICAgICAgY29uc3QgY25OdW0gPSB1bml0Lm51bVsrbl07XG4gICAgICAgIGNvbnN0IGNuRGVzYyA9IGluV29yZHMgPyB1bml0LmRlY1tpXSA6ICcnO1xuICAgICAgICBkZWNpbWFsUmVzICs9IGNuWmVybyArIGNuTnVtICsgY25EZXNjO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXQgPVxuICAgICAgc3ltYm9sICtcbiAgICAgIChpbldvcmRzXG4gICAgICAgID8gaW50ZWdlclJlcyArIChkZWNpbWFsUmVzID09PSAn6Zu2JyA/ICflhYPmlbQnIDogYOWFgyR7ZGVjaW1hbFJlc31gKVxuICAgICAgICA6IGludGVnZXJSZXMgKyAoZGVjaW1hbFJlcyA9PT0gJycgPyAnJyA6IGDngrkke2RlY2ltYWxSZXN9YCkpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cbiJdfQ==
|
File without changes
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9mb3JtYXQvZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
File without changes
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import { deepGet } from '@yelon/util/other';
|
2
|
+
/**
|
3
|
+
* String formatting
|
4
|
+
*
|
5
|
+
* 字符串格式化
|
6
|
+
* ```
|
7
|
+
* format('this is ${name}', { name: 'asdf' })
|
8
|
+
* // output: this is asdf
|
9
|
+
* format('this is ${user.name}', { user: { name: 'asdf' } }, true)
|
10
|
+
* // output: this is asdf
|
11
|
+
* ```
|
12
|
+
*/
|
13
|
+
export function format(str, obj, needDeepGet = false) {
|
14
|
+
return (str || '').replace(/\${([^}]+)}/g, (_work, key) => needDeepGet ? deepGet(obj, key.split('.'), '') : (obj || {})[key] || '');
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* Format mask
|
18
|
+
*
|
19
|
+
* 格式化掩码
|
20
|
+
*
|
21
|
+
* | 字符 | 描述 |
|
22
|
+
* | --- | --- |
|
23
|
+
* | `0` | 任意数字,若该位置字符不符合,则默认为 `0` 填充 |
|
24
|
+
* | `9` | 任意数字 |
|
25
|
+
* | `#` | 任意字符 |
|
26
|
+
* | `U` | 转换大写 |
|
27
|
+
* | `L` | 转换小写 |
|
28
|
+
* | `*` | 转换为 `*` 字符 |
|
29
|
+
*
|
30
|
+
* ```ts
|
31
|
+
* formatMask('123', '(###)') => (123)
|
32
|
+
* formatMask('15900000000', '999****9999') => 159****0000
|
33
|
+
* ```
|
34
|
+
*/
|
35
|
+
export function formatMask(value, option) {
|
36
|
+
if (!value) {
|
37
|
+
return '';
|
38
|
+
}
|
39
|
+
const opt = {
|
40
|
+
...(typeof option === 'string' ? { mask: option } : option)
|
41
|
+
};
|
42
|
+
const tokens = {
|
43
|
+
'0': { pattern: /\d/, default: '0' },
|
44
|
+
'9': { pattern: /\d/ },
|
45
|
+
'#': { pattern: /[a-zA-Z0-9]/ },
|
46
|
+
U: {
|
47
|
+
pattern: /[a-zA-Z]/,
|
48
|
+
transform: char => char.toLocaleUpperCase()
|
49
|
+
},
|
50
|
+
L: {
|
51
|
+
pattern: /[a-zA-Z]/,
|
52
|
+
transform: char => char.toLocaleLowerCase()
|
53
|
+
},
|
54
|
+
'*': {
|
55
|
+
pattern: /.*/,
|
56
|
+
transform: _ => `*`
|
57
|
+
},
|
58
|
+
...opt.tokens
|
59
|
+
};
|
60
|
+
const splitValue = value.split('');
|
61
|
+
return opt.mask
|
62
|
+
.split('')
|
63
|
+
.reduce((res, cur) => {
|
64
|
+
const token = tokens[cur];
|
65
|
+
if (!token) {
|
66
|
+
res.push(cur);
|
67
|
+
return res;
|
68
|
+
}
|
69
|
+
const value = splitValue.shift() ?? '';
|
70
|
+
if (!token.pattern.test(value)) {
|
71
|
+
if (token.default)
|
72
|
+
res.push(token.default);
|
73
|
+
return res;
|
74
|
+
}
|
75
|
+
if (typeof token.transform === 'function') {
|
76
|
+
res.push(token.transform(value));
|
77
|
+
}
|
78
|
+
else {
|
79
|
+
res.push(value);
|
80
|
+
}
|
81
|
+
return res;
|
82
|
+
}, [])
|
83
|
+
.join('');
|
84
|
+
}
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9mb3JtYXQvc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsR0FBOEIsRUFDOUIsR0FBaUMsRUFDakMsY0FBdUIsS0FBSztJQUU1QixPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FDeEUsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FDeEUsQ0FBQztBQUNKLENBQUM7QUFhRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhLEVBQUUsTUFBaUM7SUFDekUsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxNQUFNLEdBQUcsR0FBcUI7UUFDNUIsR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUM1RCxDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQXVDO1FBQ2pELEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNwQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1FBQ3RCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7UUFDL0IsQ0FBQyxFQUFFO1lBQ0QsT0FBTyxFQUFFLFVBQVU7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQzVDO1FBQ0QsQ0FBQyxFQUFFO1lBQ0QsT0FBTyxFQUFFLFVBQVU7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQzVDO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsT0FBTyxFQUFFLElBQUk7WUFDYixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHO1NBQ3BCO1FBQ0QsR0FBRyxHQUFHLENBQUMsTUFBTTtLQUNkLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDLElBQUk7U0FDWixLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ1QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ25CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFFRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFFRCxJQUFJLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDbEM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFjLENBQUM7U0FDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgZGVlcEdldCB9IGZyb20gJ0B5ZWxvbi91dGlsL290aGVyJztcblxuLyoqXG4gKiBTdHJpbmcgZm9ybWF0dGluZ1xuICpcbiAqIOWtl+espuS4suagvOW8j+WMllxuICogYGBgXG4gKiBmb3JtYXQoJ3RoaXMgaXMgJHtuYW1lfScsIHsgbmFtZTogJ2FzZGYnIH0pXG4gKiAvLyBvdXRwdXQ6IHRoaXMgaXMgYXNkZlxuICogZm9ybWF0KCd0aGlzIGlzICR7dXNlci5uYW1lfScsIHsgdXNlcjogeyBuYW1lOiAnYXNkZicgfSB9LCB0cnVlKVxuICogLy8gb3V0cHV0OiB0aGlzIGlzIGFzZGZcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KFxuICBzdHI6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG9iajogTnpTYWZlQW55IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgbmVlZERlZXBHZXQ6IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIChzdHIgfHwgJycpLnJlcGxhY2UoL1xcJHsoW159XSspfS9nLCAoX3dvcms6IHN0cmluZywga2V5OiBzdHJpbmcpID0+XG4gICAgbmVlZERlZXBHZXQgPyBkZWVwR2V0KG9iaiwga2V5LnNwbGl0KCcuJyksICcnKSA6IChvYmogfHwge30pW2tleV0gfHwgJydcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRNYXNrT3B0aW9uIHtcbiAgbWFzazogc3RyaW5nO1xuICB0b2tlbnM/OiB7IFtrZXk6IHN0cmluZ106IEZvcm1hdE1hc2tUb2tlbiB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE1hc2tUb2tlbiB7XG4gIHBhdHRlcm46IFJlZ0V4cDtcbiAgZGVmYXVsdD86IE56U2FmZUFueTtcbiAgdHJhbnNmb3JtPzogKGNoYXI6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIEZvcm1hdCBtYXNrXG4gKlxuICog5qC85byP5YyW5o6p56CBXG4gKlxuICogfCDlrZfnrKYgfCDmj4/ov7AgfFxuICogfCAtLS0gfCAtLS0gfFxuICogfCBgMGAgfCDku7vmhI/mlbDlrZfvvIzoi6Xor6XkvY3nva7lrZfnrKbkuI3nrKblkIjvvIzliJnpu5jorqTkuLogYDBgIOWhq+WFhSB8XG4gKiB8IGA5YCB8IOS7u+aEj+aVsOWtlyB8XG4gKiB8IGAjYCB8IOS7u+aEj+Wtl+espiB8XG4gKiB8IGBVYCB8IOi9rOaNouWkp+WGmSB8XG4gKiB8IGBMYCB8IOi9rOaNouWwj+WGmSB8XG4gKiB8IGAqYCB8IOi9rOaNouS4uiBgKmAg5a2X56ymIHxcbiAqXG4gKiBgYGB0c1xuICogZm9ybWF0TWFzaygnMTIzJywgJygjIyMpJykgPT4gKDEyMylcbiAqIGZvcm1hdE1hc2soJzE1OTAwMDAwMDAwJywgJzk5OSoqKio5OTk5JykgPT4gMTU5KioqKjAwMDBcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TWFzayh2YWx1ZTogc3RyaW5nLCBvcHRpb246IHN0cmluZyB8IEZvcm1hdE1hc2tPcHRpb24pOiBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IG9wdDogRm9ybWF0TWFza09wdGlvbiA9IHtcbiAgICAuLi4odHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyB7IG1hc2s6IG9wdGlvbiB9IDogb3B0aW9uKVxuICB9O1xuICBjb25zdCB0b2tlbnM6IHsgW2tleTogc3RyaW5nXTogRm9ybWF0TWFza1Rva2VuIH0gPSB7XG4gICAgJzAnOiB7IHBhdHRlcm46IC9cXGQvLCBkZWZhdWx0OiAnMCcgfSxcbiAgICAnOSc6IHsgcGF0dGVybjogL1xcZC8gfSxcbiAgICAnIyc6IHsgcGF0dGVybjogL1thLXpBLVowLTldLyB9LFxuICAgIFU6IHtcbiAgICAgIHBhdHRlcm46IC9bYS16QS1aXS8sXG4gICAgICB0cmFuc2Zvcm06IGNoYXIgPT4gY2hhci50b0xvY2FsZVVwcGVyQ2FzZSgpXG4gICAgfSxcbiAgICBMOiB7XG4gICAgICBwYXR0ZXJuOiAvW2EtekEtWl0vLFxuICAgICAgdHJhbnNmb3JtOiBjaGFyID0+IGNoYXIudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgIH0sXG4gICAgJyonOiB7XG4gICAgICBwYXR0ZXJuOiAvLiovLFxuICAgICAgdHJhbnNmb3JtOiBfID0+IGAqYFxuICAgIH0sXG4gICAgLi4ub3B0LnRva2Vuc1xuICB9O1xuXG4gIGNvbnN0IHNwbGl0VmFsdWUgPSB2YWx1ZS5zcGxpdCgnJyk7XG4gIHJldHVybiBvcHQubWFza1xuICAgIC5zcGxpdCgnJylcbiAgICAucmVkdWNlKChyZXMsIGN1cikgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbY3VyXTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgcmVzLnB1c2goY3VyKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSBzcGxpdFZhbHVlLnNoaWZ0KCkgPz8gJyc7XG4gICAgICBpZiAoIXRva2VuLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHRva2VuLmRlZmF1bHQpIHJlcy5wdXNoKHRva2VuLmRlZmF1bHQpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRva2VuLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXMucHVzaCh0b2tlbi50cmFuc2Zvcm0odmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgW10gYXMgc3RyaW5nW10pXG4gICAgLmpvaW4oJycpO1xufVxuIl19
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvbWF0aC9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
4
|
+
import { filter, share } from 'rxjs/operators';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
/**
|
7
|
+
* 延迟加载资源(js 或 css)服务
|
8
|
+
*/
|
9
|
+
export class LazyService {
|
10
|
+
constructor(doc) {
|
11
|
+
this.doc = doc;
|
12
|
+
this.list = {};
|
13
|
+
this.cached = {};
|
14
|
+
this._notify = new BehaviorSubject([]);
|
15
|
+
}
|
16
|
+
get change() {
|
17
|
+
return this._notify.asObservable().pipe(share(), filter(ls => ls.length !== 0));
|
18
|
+
}
|
19
|
+
clear() {
|
20
|
+
this.list = {};
|
21
|
+
this.cached = {};
|
22
|
+
}
|
23
|
+
load(paths) {
|
24
|
+
if (!Array.isArray(paths)) {
|
25
|
+
paths = [paths];
|
26
|
+
}
|
27
|
+
const promises = [];
|
28
|
+
paths.forEach(path => {
|
29
|
+
if (path.endsWith('.js')) {
|
30
|
+
promises.push(this.loadScript(path));
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
promises.push(this.loadStyle(path));
|
34
|
+
}
|
35
|
+
});
|
36
|
+
return Promise.all(promises).then(res => {
|
37
|
+
this._notify.next(res);
|
38
|
+
return Promise.resolve(res);
|
39
|
+
});
|
40
|
+
}
|
41
|
+
loadScript(path, innerContent) {
|
42
|
+
return new Promise(resolve => {
|
43
|
+
if (this.list[path] === true) {
|
44
|
+
resolve({ ...this.cached[path], status: 'loading' });
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
this.list[path] = true;
|
48
|
+
const onSuccess = (item) => {
|
49
|
+
this.cached[path] = item;
|
50
|
+
resolve(item);
|
51
|
+
this._notify.next([item]);
|
52
|
+
};
|
53
|
+
const node = this.doc.createElement('script');
|
54
|
+
node.type = 'text/javascript';
|
55
|
+
node.src = path;
|
56
|
+
node.charset = 'utf-8';
|
57
|
+
if (innerContent) {
|
58
|
+
node.innerHTML = innerContent;
|
59
|
+
}
|
60
|
+
if (node.readyState) {
|
61
|
+
// IE
|
62
|
+
node.onreadystatechange = () => {
|
63
|
+
if (node.readyState === 'loaded' || node.readyState === 'complete') {
|
64
|
+
node.onreadystatechange = null;
|
65
|
+
onSuccess({
|
66
|
+
path,
|
67
|
+
status: 'ok'
|
68
|
+
});
|
69
|
+
}
|
70
|
+
};
|
71
|
+
}
|
72
|
+
else {
|
73
|
+
node.onload = () => onSuccess({
|
74
|
+
path,
|
75
|
+
status: 'ok'
|
76
|
+
});
|
77
|
+
}
|
78
|
+
node.onerror = (error) => onSuccess({
|
79
|
+
path,
|
80
|
+
status: 'error',
|
81
|
+
error
|
82
|
+
});
|
83
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
84
|
+
});
|
85
|
+
}
|
86
|
+
loadStyle(path, rel = 'stylesheet', innerContent) {
|
87
|
+
return new Promise(resolve => {
|
88
|
+
if (this.list[path] === true) {
|
89
|
+
resolve(this.cached[path]);
|
90
|
+
return;
|
91
|
+
}
|
92
|
+
this.list[path] = true;
|
93
|
+
const node = this.doc.createElement('link');
|
94
|
+
node.rel = rel;
|
95
|
+
node.type = 'text/css';
|
96
|
+
node.href = path;
|
97
|
+
if (innerContent) {
|
98
|
+
node.innerHTML = innerContent;
|
99
|
+
}
|
100
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
101
|
+
const item = {
|
102
|
+
path,
|
103
|
+
status: 'ok'
|
104
|
+
};
|
105
|
+
this.cached[path] = item;
|
106
|
+
resolve(item);
|
107
|
+
});
|
108
|
+
}
|
109
|
+
}
|
110
|
+
LazyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LazyService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
111
|
+
LazyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LazyService, providedIn: 'root' });
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LazyService, decorators: [{
|
113
|
+
type: Injectable,
|
114
|
+
args: [{ providedIn: 'root' }]
|
115
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
116
|
+
type: Inject,
|
117
|
+
args: [DOCUMENT]
|
118
|
+
}] }]; } });
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9vdGhlci9sYXp5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFVL0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUFzQyxHQUFjO1FBQWQsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUo1QyxTQUFJLEdBQStCLEVBQUUsQ0FBQztRQUN0QyxXQUFNLEdBQWtDLEVBQUUsQ0FBQztRQUMzQyxZQUFPLEdBQWtDLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRWhDLENBQUM7SUFFeEQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDckMsS0FBSyxFQUFFLEVBQ1AsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQXdCO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxR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LEVBQUUsTUFBTSxFQUFFOzswQkFNbkIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBMYXp5UmVzdWx0IHtcbiAgcGF0aDogc3RyaW5nO1xuICBzdGF0dXM6ICdvaycgfCAnZXJyb3InIHwgJ2xvYWRpbmcnO1xuICBlcnJvcj86IE56U2FmZUFueTtcbn1cblxuLyoqXG4gKiDlu7bov5/liqDovb3otYTmupDvvIhqcyDmiJYgY3Nz77yJ5pyN5YqhXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGF6eVNlcnZpY2Uge1xuICBwcml2YXRlIGxpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIHByaXZhdGUgY2FjaGVkOiB7IFtrZXk6IHN0cmluZ106IExhenlSZXN1bHQgfSA9IHt9O1xuICBwcml2YXRlIF9ub3RpZnk6IEJlaGF2aW9yU3ViamVjdDxMYXp5UmVzdWx0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXp5UmVzdWx0W10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogTnpTYWZlQW55KSB7fVxuXG4gIGdldCBjaGFuZ2UoKTogT2JzZXJ2YWJsZTxMYXp5UmVzdWx0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fbm90aWZ5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzaGFyZSgpLFxuICAgICAgZmlsdGVyKGxzID0+IGxzLmxlbmd0aCAhPT0gMClcbiAgICApO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ID0ge307XG4gICAgdGhpcy5jYWNoZWQgPSB7fTtcbiAgfVxuXG4gIGxvYWQocGF0aHM6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxMYXp5UmVzdWx0W10+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aHMpKSB7XG4gICAgICBwYXRocyA9IFtwYXRoc107XG4gICAgfVxuXG4gICAgY29uc3QgcHJvbWlzZXM6IEFycmF5PFByb21pc2U8TGF6eVJlc3VsdD4+ID0gW107XG4gICAgcGF0aHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9hZFNjcmlwdChwYXRoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9hZFN0eWxlKHBhdGgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihyZXMgPT4ge1xuICAgICAgdGhpcy5fbm90aWZ5Lm5leHQocmVzKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRTY3JpcHQocGF0aDogc3RyaW5nLCBpbm5lckNvbnRlbnQ/OiBzdHJpbmcpOiBQcm9taXNlPExhenlSZXN1bHQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAodGhpcy5saXN0W3BhdGhdID09PSB0cnVlKSB7XG4gICAgICAgIHJlc29sdmUoeyAuLi50aGlzLmNhY2hlZFtwYXRoXSwgc3RhdHVzOiAnbG9hZGluZycgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5saXN0W3BhdGhdID0gdHJ1ZTtcbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChpdGVtOiBMYXp5UmVzdWx0KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2FjaGVkW3BhdGhdID0gaXRlbTtcbiAgICAgICAgcmVzb2x2ZShpdGVtKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5Lm5leHQoW2l0ZW1dKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSBhcyBOelNhZmVBbnk7XG4gICAgICBub2RlLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgIG5vZGUuc3JjID0gcGF0aDtcbiAgICAgIG5vZGUuY2hhcnNldCA9ICd1dGYtOCc7XG4gICAgICBpZiAoaW5uZXJDb250ZW50KSB7XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaW5uZXJDb250ZW50O1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucmVhZHlTdGF0ZSkge1xuICAgICAgICAvLyBJRVxuICAgICAgICBub2RlLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICBpZiAobm9kZS5yZWFkeVN0YXRlID09PSAnbG9hZGVkJyB8fCBub2RlLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIG5vZGUub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIHN0YXR1czogJ29rJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiAnb2snXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBub2RlLm9uZXJyb3IgPSAoZXJyb3I6IE56U2FmZUFueSkgPT5cbiAgICAgICAgb25TdWNjZXNzKHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBlcnJvclxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkU3R5bGUocGF0aDogc3RyaW5nLCByZWw6IHN0cmluZyA9ICdzdHlsZXNoZWV0JywgaW5uZXJDb250ZW50Pzogc3RyaW5nKTogUHJvbWlzZTxMYXp5UmVzdWx0PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKHRoaXMubGlzdFtwYXRoXSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXNvbHZlKHRoaXMuY2FjaGVkW3BhdGhdKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RbcGF0aF0gPSB0cnVlO1xuXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnbGluaycpIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICAgIG5vZGUucmVsID0gcmVsO1xuICAgICAgbm9kZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgIG5vZGUuaHJlZiA9IHBhdGg7XG4gICAgICBpZiAoaW5uZXJDb250ZW50KSB7XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaW5uZXJDb250ZW50O1xuICAgICAgfVxuICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIGNvbnN0IGl0ZW06IExhenlSZXN1bHQgPSB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHN0YXR1czogJ29rJ1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2FjaGVkW3BhdGhdID0gaXRlbTtcbiAgICAgIHJlc29sdmUoaXRlbSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
File without changes
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL290aGVyL290aGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
File without changes
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { Pipe } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@yelon/util/format";
|
4
|
+
export class CurrencyCNYPipe {
|
5
|
+
constructor(srv) {
|
6
|
+
this.srv = srv;
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* Converted into RMB notation.
|
10
|
+
*
|
11
|
+
* 转化成人民币表示法
|
12
|
+
*/
|
13
|
+
transform(value, options) {
|
14
|
+
return this.srv.cny(value, options);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
CurrencyCNYPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyCNYPipe, deps: [{ token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Pipe });
|
18
|
+
CurrencyCNYPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyCNYPipe, name: "cny" });
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyCNYPipe, decorators: [{
|
20
|
+
type: Pipe,
|
21
|
+
args: [{ name: 'cny' }]
|
22
|
+
}], ctorParameters: function () { return [{ type: i1.CurrencyService }]; } });
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY255LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2N1cnJlbmN5L2NueS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFLcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsR0FBb0I7UUFBcEIsUUFBRyxHQUFILEdBQUcsQ0FBaUI7SUFBRyxDQUFDO0lBRTVDOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBc0IsRUFBRSxPQUE0QjtRQUM1RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs0R0FWVSxlQUFlOzBHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEN1cnJlbmN5Q05ZT3B0aW9ucywgQ3VycmVuY3lTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwvZm9ybWF0JztcblxuQFBpcGUoeyBuYW1lOiAnY255JyB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5Q05ZUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNydjogQ3VycmVuY3lTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0ZWQgaW50byBSTUIgbm90YXRpb24uXG4gICAqXG4gICAqIOi9rOWMluaIkOS6uuawkeW4geihqOekuuazlVxuICAgKi9cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM/OiBDdXJyZW5jeUNOWU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNydi5jbnkodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|
@@ -1,4 +1,5 @@
|
|
1
1
|
export * from './mega.pipe';
|
2
2
|
export * from './price.pipe';
|
3
3
|
export * from './module';
|
4
|
-
|
4
|
+
export * from './cny.pipe';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2N1cnJlbmN5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZWdhLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY255LnBpcGUnO1xuIl19
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { Inject, LOCALE_ID, Pipe } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@yelon/util/format";
|
4
|
+
export class CurrencyMegaPipe {
|
5
|
+
constructor(srv, locale) {
|
6
|
+
this.srv = srv;
|
7
|
+
this.isCN = false;
|
8
|
+
this.isCN = locale.startsWith('zh');
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* Large number format filter
|
12
|
+
*
|
13
|
+
* 大数据格式化
|
14
|
+
*/
|
15
|
+
transform(value, options) {
|
16
|
+
const res = this.srv.mega(value, options);
|
17
|
+
return res.value + (this.isCN ? res.unitI18n : res.unit);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
CurrencyMegaPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyMegaPipe, deps: [{ token: i1.CurrencyService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
21
|
+
CurrencyMegaPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyMegaPipe, name: "mega" });
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CurrencyMegaPipe, decorators: [{
|
23
|
+
type: Pipe,
|
24
|
+
args: [{ name: 'mega' }]
|
25
|
+
}], ctorParameters: function () { return [{ type: i1.CurrencyService }, { type: undefined, decorators: [{
|
26
|
+
type: Inject,
|
27
|
+
args: [LOCALE_ID]
|
28
|
+
}] }]; } });
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9waXBlcy9jdXJyZW5jeS9tZWdhLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBS3ZFLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsR0FBb0IsRUFBcUIsTUFBYztRQUF2RCxRQUFHLEdBQUgsR0FBRyxDQUFpQjtRQURoQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxLQUFzQixFQUFFLE9BQTZCO1FBQzdELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7NkdBZFUsZ0JBQWdCLGlEQUV1QixTQUFTOzJHQUZoRCxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7OzBCQUd1QixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIExPQ0FMRV9JRCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdXJyZW5jeU1lZ2FPcHRpb25zLCBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbC9mb3JtYXQnO1xuXG5AUGlwZSh7IG5hbWU6ICdtZWdhJyB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5TWVnYVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBpc0NOID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3J2OiBDdXJyZW5jeVNlcnZpY2UsIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZykge1xuICAgIHRoaXMuaXNDTiA9IGxvY2FsZS5zdGFydHNXaXRoKCd6aCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIExhcmdlIG51bWJlciBmb3JtYXQgZmlsdGVyXG4gICAqXG4gICAqIOWkp+aVsOaNruagvOW8j+WMllxuICAgKi9cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM/OiBDdXJyZW5jeU1lZ2FPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLnNydi5tZWdhKHZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gcmVzLnZhbHVlICsgKHRoaXMuaXNDTiA/IHJlcy51bml0STE4biA6IHJlcy51bml0KTtcbiAgfVxufVxuIl19
|