✨ MAJOR FEATURES: • Auto-zoom intelligence với smart bounds fitting • Enhanced 3D GPS markers với pulsing effects • Professional route display với 6-layer rendering • Status-based parking icons với availability indicators • Production-ready build optimizations 🗺️ AUTO-ZOOM FEATURES: • Smart bounds fitting cho GPS + selected parking • Adaptive padding (50px) cho visual balance • Max zoom control (level 16) để tránh quá gần • Dynamic centering khi không có selection 🎨 ENHANCED VISUALS: • 3D GPS marker với multi-layer pulse effects • Advanced parking icons với status colors • Selection highlighting với animation • Dimming system cho non-selected items 🛣️ ROUTE SYSTEM: • OpenRouteService API integration • Multi-layer route rendering (glow, shadow, main, animated) • Real-time distance & duration calculation • Visual route info trong popup 📱 PRODUCTION READY: • SSR safe với dynamic imports • Build errors resolved • Global deployment via Vercel • Optimized performance 🌍 DEPLOYMENT: • Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app • Bundle size: 22.8 kB optimized • Global CDN distribution • HTTPS enabled 💾 VERSION CONTROL: • MapView-v2.0.tsx backup created • MAPVIEW_VERSIONS.md documentation • Full version history tracking
83 lines
3.3 KiB
JavaScript
Executable File
83 lines
3.3 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = isCurrency;
|
|
var _merge = _interopRequireDefault(require("./util/merge"));
|
|
var _assertString = _interopRequireDefault(require("./util/assertString"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
function currencyRegex(options) {
|
|
var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}");
|
|
options.digits_after_decimal.forEach(function (digit, index) {
|
|
if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}");
|
|
});
|
|
var symbol = "(".concat(options.symbol.replace(/\W/, function (m) {
|
|
return "\\".concat(m);
|
|
}), ")").concat(options.require_symbol ? '' : '?'),
|
|
negative = '-?',
|
|
whole_dollar_amount_without_sep = '[1-9]\\d*',
|
|
whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"),
|
|
valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],
|
|
whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"),
|
|
decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?');
|
|
var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');
|
|
|
|
// default is negative sign before symbol, but there are two other options (besides parens)
|
|
if (options.allow_negatives && !options.parens_for_negatives) {
|
|
if (options.negative_sign_after_digits) {
|
|
pattern += negative;
|
|
} else if (options.negative_sign_before_digits) {
|
|
pattern = negative + pattern;
|
|
}
|
|
}
|
|
|
|
// South African Rand, for example, uses R 123 (space) and R-123 (no space)
|
|
if (options.allow_negative_sign_placeholder) {
|
|
pattern = "( (?!\\-))?".concat(pattern);
|
|
} else if (options.allow_space_after_symbol) {
|
|
pattern = " ?".concat(pattern);
|
|
} else if (options.allow_space_after_digits) {
|
|
pattern += '( (?!$))?';
|
|
}
|
|
if (options.symbol_after_digits) {
|
|
pattern += symbol;
|
|
} else {
|
|
pattern = symbol + pattern;
|
|
}
|
|
if (options.allow_negatives) {
|
|
if (options.parens_for_negatives) {
|
|
pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")");
|
|
} else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {
|
|
pattern = negative + pattern;
|
|
}
|
|
}
|
|
|
|
// ensure there's a dollar and/or decimal amount, and that
|
|
// it doesn't start with a space or a negative sign followed by a space
|
|
return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$"));
|
|
}
|
|
var default_currency_options = {
|
|
symbol: '$',
|
|
require_symbol: false,
|
|
allow_space_after_symbol: false,
|
|
symbol_after_digits: false,
|
|
allow_negatives: true,
|
|
parens_for_negatives: false,
|
|
negative_sign_before_digits: false,
|
|
negative_sign_after_digits: false,
|
|
allow_negative_sign_placeholder: false,
|
|
thousands_separator: ',',
|
|
decimal_separator: '.',
|
|
allow_decimal: true,
|
|
require_decimal: false,
|
|
digits_after_decimal: [2],
|
|
allow_space_after_digits: false
|
|
};
|
|
function isCurrency(str, options) {
|
|
(0, _assertString.default)(str);
|
|
options = (0, _merge.default)(options, default_currency_options);
|
|
return currencyRegex(options).test(str);
|
|
}
|
|
module.exports = exports.default;
|
|
module.exports.default = exports.default; |