| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- module.exports = (function() {
- var __MODS__ = {};
- var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
- var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
- var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
- var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
- __DEFINE__(1733984946602, function(require, module, exports) {
- /*!
- * currency.js - v2.0.4
- * http://scurker.github.io/currency.js
- *
- * Copyright (c) 2021 Jason Wilson
- * Released under MIT license
- */
- var defaults = {
- symbol: '$',
- separator: ',',
- decimal: '.',
- errorOnInvalid: false,
- precision: 2,
- pattern: '!#',
- negativePattern: '-!#',
- format: format,
- fromCents: false
- };
- var round = function round(v) {
- return Math.round(v);
- };
- var pow = function pow(p) {
- return Math.pow(10, p);
- };
- var rounding = function rounding(value, increment) {
- return round(value / increment) * increment;
- };
- var groupRegex = /(\d)(?=(\d{3})+\b)/g;
- var vedicRegex = /(\d)(?=(\d\d)+\d\b)/g;
- /**
- * Create a new instance of currency.js
- * @param {number|string|currency} value
- * @param {object} [opts]
- */
- function currency(value, opts) {
- var that = this;
- if (!(that instanceof currency)) {
- return new currency(value, opts);
- }
- var settings = Object.assign({}, defaults, opts),
- precision = pow(settings.precision),
- v = parse(value, settings);
- that.intValue = v;
- that.value = v / precision; // Set default incremental value
- settings.increment = settings.increment || 1 / precision; // Support vedic numbering systems
- // see: https://en.wikipedia.org/wiki/Indian_numbering_system
- if (settings.useVedic) {
- settings.groups = vedicRegex;
- } else {
- settings.groups = groupRegex;
- } // Intended for internal usage only - subject to change
- this.s = settings;
- this.p = precision;
- }
- function parse(value, opts) {
- var useRounding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
- var v = 0,
- decimal = opts.decimal,
- errorOnInvalid = opts.errorOnInvalid,
- decimals = opts.precision,
- fromCents = opts.fromCents,
- precision = pow(decimals),
- isNumber = typeof value === 'number',
- isCurrency = value instanceof currency;
- if (isCurrency && fromCents) {
- return value.intValue;
- }
- if (isNumber || isCurrency) {
- v = isCurrency ? value.value : value;
- } else if (typeof value === 'string') {
- var regex = new RegExp('[^-\\d' + decimal + ']', 'g'),
- decimalString = new RegExp('\\' + decimal, 'g');
- v = value.replace(/\((.*)\)/, '-$1') // allow negative e.g. (1.99)
- .replace(regex, '') // replace any non numeric values
- .replace(decimalString, '.'); // convert any decimal values
- v = v || 0;
- } else {
- if (errorOnInvalid) {
- throw Error('Invalid Input');
- }
- v = 0;
- }
- if (!fromCents) {
- v *= precision; // scale number to integer value
- v = v.toFixed(4); // Handle additional decimal for proper rounding.
- }
- return useRounding ? round(v) : v;
- }
- /**
- * Formats a currency object
- * @param currency
- * @param {object} [opts]
- */
- function format(currency, settings) {
- var pattern = settings.pattern,
- negativePattern = settings.negativePattern,
- symbol = settings.symbol,
- separator = settings.separator,
- decimal = settings.decimal,
- groups = settings.groups,
- split = ('' + currency).replace(/^-/, '').split('.'),
- dollars = split[0],
- cents = split[1];
- return (currency.value >= 0 ? pattern : negativePattern).replace('!', symbol).replace('#', dollars.replace(groups, '$1' + separator) + (cents ? decimal + cents : ''));
- }
- currency.prototype = {
- /**
- * Adds values together.
- * @param {number} number
- * @returns {currency}
- */
- add: function add(number) {
- var intValue = this.intValue,
- _settings = this.s,
- _precision = this.p;
- return currency((intValue += parse(number, _settings)) / (_settings.fromCents ? 1 : _precision), _settings);
- },
- /**
- * Subtracts value.
- * @param {number} number
- * @returns {currency}
- */
- subtract: function subtract(number) {
- var intValue = this.intValue,
- _settings = this.s,
- _precision = this.p;
- return currency((intValue -= parse(number, _settings)) / (_settings.fromCents ? 1 : _precision), _settings);
- },
- /**
- * Multiplies values.
- * @param {number} number
- * @returns {currency}
- */
- multiply: function multiply(number) {
- var intValue = this.intValue,
- _settings = this.s;
- return currency((intValue *= number) / (_settings.fromCents ? 1 : pow(_settings.precision)), _settings);
- },
- /**
- * Divides value.
- * @param {number} number
- * @returns {currency}
- */
- divide: function divide(number) {
- var intValue = this.intValue,
- _settings = this.s;
- return currency(intValue /= parse(number, _settings, false), _settings);
- },
- /**
- * Takes the currency amount and distributes the values evenly. Any extra pennies
- * left over from the distribution will be stacked onto the first set of entries.
- * @param {number} count
- * @returns {array}
- */
- distribute: function distribute(count) {
- var intValue = this.intValue,
- _precision = this.p,
- _settings = this.s,
- distribution = [],
- split = Math[intValue >= 0 ? 'floor' : 'ceil'](intValue / count),
- pennies = Math.abs(intValue - split * count),
- precision = _settings.fromCents ? 1 : _precision;
- for (; count !== 0; count--) {
- var item = currency(split / precision, _settings); // Add any left over pennies
- pennies-- > 0 && (item = item[intValue >= 0 ? 'add' : 'subtract'](1 / precision));
- distribution.push(item);
- }
- return distribution;
- },
- /**
- * Returns the dollar value.
- * @returns {number}
- */
- dollars: function dollars() {
- return ~~this.value;
- },
- /**
- * Returns the cent value.
- * @returns {number}
- */
- cents: function cents() {
- var intValue = this.intValue,
- _precision = this.p;
- return ~~(intValue % _precision);
- },
- /**
- * Formats the value as a string according to the formatting settings.
- * @param {boolean} useSymbol - format with currency symbol
- * @returns {string}
- */
- format: function format(options) {
- var _settings = this.s;
- if (typeof options === 'function') {
- return options(this, _settings);
- }
- return _settings.format(this, Object.assign({}, _settings, options));
- },
- /**
- * Formats the value as a string according to the formatting settings.
- * @returns {string}
- */
- toString: function toString() {
- var intValue = this.intValue,
- _precision = this.p,
- _settings = this.s;
- return rounding(intValue / _precision, _settings.increment).toFixed(_settings.precision);
- },
- /**
- * Value for JSON serialization.
- * @returns {float}
- */
- toJSON: function toJSON() {
- return this.value;
- }
- };
- module.exports = currency;
- }, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
- return __REQUIRE__(1733984946602);
- })()
- //miniprogram-npm-outsideDeps=[]
- //# sourceMappingURL=index.js.map
|