@syncfusion/ej2-base
Version:
A common package of Essential JS 2 base libraries, methods and class definitions
1,549 lines (1,547 loc) • 510 kB
JavaScript
var instances = 'ej2_instances';
var uid = 0;
var isBlazorPlatform = false;
/**
* Function to check whether the platform is blazor or not.
*
* @returns {void} result
* @private
*/
function disableBlazorMode() {
isBlazorPlatform = false;
}
/**
* Create Instance from constructor function with desired parameters.
*
* @param {Function} classFunction - Class function to which need to create instance
* @param {any[]} params - Parameters need to passed while creating instance
* @returns {any} ?
* @private
*/
function createInstance(classFunction, params) {
var arrayParam = params;
arrayParam.unshift(undefined);
return new (Function.prototype.bind.apply(classFunction, arrayParam));
}
/**
* To run a callback function immediately after the browser has completed other operations.
*
* @param {Function} handler - callback function to be triggered.
* @returns {Function} ?
* @private
*/
function setImmediate(handler) {
var unbind;
var num = new Uint16Array(5);
var intCrypto = window.msCrypto || window.crypto;
intCrypto.getRandomValues(num);
var secret = 'ej2' + combineArray(num);
var messageHandler = function (event) {
if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {
handler();
unbind();
}
};
window.addEventListener('message', messageHandler, false);
window.postMessage(secret, '*');
return unbind = function () {
window.removeEventListener('message', messageHandler);
handler = messageHandler = secret = undefined;
};
}
/**
* To get nameSpace value from the desired object.
*
* @param {string} nameSpace - String value to the get the inner object
* @param {any} obj - Object to get the inner object value.
* @returns {any} ?
* @private
*/
function getValue(nameSpace, obj) {
var value = obj;
var splits = nameSpace.replace(/\[/g, '.').replace(/\]/g, '').split('.');
for (var i = 0; i < splits.length && !isUndefined(value); i++) {
value = value[splits[parseInt(i.toString(), 10)]];
}
return value;
}
/**
* To set value for the nameSpace in desired object.
*
* @param {string} nameSpace - String value to the get the inner object
* @param {any} value - Value that you need to set.
* @param {any} obj - Object to get the inner object value.
* @returns {any} ?
* @private
*/
function setValue(nameSpace, value, obj) {
var keys = nameSpace.replace(/\[/g, '.').replace(/\]/g, '').split('.');
var start = obj || {};
var fromObj = start;
var i;
var length = keys.length;
var key;
for (i = 0; i < length; i++) {
key = keys[parseInt(i.toString(), 10)];
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
continue;
}
if (i + 1 === length) {
fromObj["" + key] = value === undefined ? {} : value;
}
else if (isNullOrUndefined(fromObj["" + key])) {
fromObj["" + key] = {};
}
fromObj = fromObj["" + key];
}
return start;
}
/**
* Delete an item from Object
*
* @param {any} obj - Object in which we need to delete an item.
* @param {string} key - String value to the get the inner object
* @returns {void} ?
* @private
*/
function deleteObject(obj, key) {
delete obj["" + key];
}
/**
*@private
*/
var containerObject = typeof window !== 'undefined' ? window : {};
/**
* Check weather the given argument is only object.
*
* @param {any} obj - Object which is need to check.
* @returns {boolean} ?
* @private
*/
function isObject(obj) {
var objCon = {};
return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);
}
/**
* To get enum value by giving the string.
*
* @param {any} enumObject - Enum object.
* @param {string} enumValue - Enum value to be searched
* @returns {any} ?
* @private
*/
function getEnumValue(enumObject, enumValue) {
return enumObject["" + enumValue];
}
/**
* Merge the source object into destination object.
*
* @param {any} source - source object which is going to merge with destination object
* @param {any} destination - object need to be merged
* @returns {void} ?
* @private
*/
function merge(source, destination) {
if (!isNullOrUndefined(destination)) {
var temrObj = source;
var tempProp = destination;
var keys = Object.keys(destination);
var deepmerge = 'deepMerge';
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
var key = keys_1[_i];
if (!isNullOrUndefined(temrObj["" + deepmerge]) && (temrObj["" + deepmerge].indexOf(key) !== -1) &&
(isObject(tempProp["" + key]) || Array.isArray(tempProp["" + key]))) {
extend(temrObj["" + key], temrObj["" + key], tempProp["" + key], true);
}
else {
temrObj["" + key] = tempProp["" + key];
}
}
}
}
/**
* Extend the two object with newer one.
*
* @param {any} copied - Resultant object after merged
* @param {Object} first - First object need to merge
* @param {Object} second - Second object need to merge
* @param {boolean} deep ?
* @returns {Object} ?
* @private
*/
function extend(copied, first, second, deep) {
var result = copied && typeof copied === 'object' ? copied : {};
var length = arguments.length;
var args = [copied, first, second, deep];
if (deep) {
length = length - 1;
}
var _loop_1 = function (i) {
if (!args[parseInt(i.toString(), 10)]) {
return "continue";
}
var obj1 = args[parseInt(i.toString(), 10)];
Object.keys(obj1).forEach(function (key) {
var src = result["" + key];
var copy = obj1["" + key];
var clone;
var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);
var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;
if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {
if (isObject(copy)) {
clone = src ? src : {};
if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {
extend(clone, {}, copy, deep);
}
else {
result["" + key] = extend(clone, {}, copy, deep);
}
}
else {
/* istanbul ignore next */
clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];
result["" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));
}
}
else {
result["" + key] = copy;
}
});
};
for (var i = 1; i < length; i++) {
_loop_1(i);
}
return result;
}
/**
* To check whether the object is null or undefined.
*
* @param {any} value - To check the object is null or undefined
* @returns {boolean} ?
* @private
*/
function isNullOrUndefined(value) {
return value === undefined || value === null;
}
/**
* To check whether the object is undefined.
*
* @param {any} value - To check the object is undefined
* @returns {boolean} ?
* @private
*/
function isUndefined(value) {
return ('undefined' === typeof value);
}
/**
* To return the generated unique name
*
* @param {string} definedName - To concatenate the unique id to provided name
* @returns {string} ?
* @private
*/
function getUniqueID(definedName) {
return definedName + '_' + uid++;
}
/**
* It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.
*
* @param {Function} eventFunction - Specifies the function to run when the event occurs
* @param {number} delay - A number that specifies the milliseconds for function delay call option
* @returns {Function} ?
* @private
*/
function debounce(eventFunction, delay) {
var out;
return function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var later = function () {
out = null;
return eventFunction.apply(_this, args);
};
clearTimeout(out);
out = setTimeout(later, delay);
};
}
/**
* To convert the object to string for query url
*
* @param {Object} data ?
* @returns {string} ?
* @private
*/
function queryParams(data) {
var array = [];
var keys = Object.keys(data);
for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
var key = keys_2[_i];
array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data["" + key]));
}
return array.join('&');
}
/**
* To check whether the given array contains object.
*
* @param {any} value - Specifies the T type array to be checked.
* @returns {boolean} ?
* @private
*/
function isObjectArray(value) {
var parser = Object.prototype.toString;
if (parser.call(value) === '[object Array]') {
if (parser.call(value[0]) === '[object Object]') {
return true;
}
}
return false;
}
/**
* To check whether the child element is descendant to parent element or parent and child are same element.
*
* @param {Element} child - Specifies the child element to compare with parent.
* @param {Element} parent - Specifies the parent element.
* @returns {boolean} ?
* @private
*/
function compareElementParent(child, parent) {
var node = child;
if (node === parent) {
return true;
}
else if (node === document || !node) {
return false;
}
else {
return compareElementParent(node.parentNode, parent);
}
}
/**
* To throw custom error message.
*
* @param {string} message - Specifies the error message to be thrown.
* @returns {void} ?
* @private
*/
function throwError(message) {
try {
throw new Error(message);
}
catch (e) {
throw new Error(e.message + '\n' + e.stack);
}
}
/**
* This function is used to print given element
*
* @param {Element} element - Specifies the print content element.
* @param {Window} printWindow - Specifies the print window.
* @returns {Window} ?
* @private
*/
function print(element, printWindow) {
var div = document.createElement('div');
var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));
var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));
if (blinks.length) {
for (var l = 0, len = blinks.length; l < len; l++) {
links.push(blinks[parseInt(l.toString(), 10)]);
}
}
var reference = '';
if (isNullOrUndefined(printWindow)) {
printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');
}
div.appendChild(element.cloneNode(true));
for (var i = 0, len = links.length; i < len; i++) {
reference += links[parseInt(i.toString(), 10)].outerHTML;
}
printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +
'<script> (function() { window.ready = true; })(); </script>' + '</body></html>');
printWindow.document.close();
printWindow.focus();
var interval = setInterval(function () {
if (printWindow.ready) {
printWindow.print();
printWindow.close();
clearInterval(interval);
}
}, 500);
return printWindow;
}
/**
* Function to normalize the units applied to the element.
*
* @param {number|string} value ?
* @returns {string} result
* @private
*/
function formatUnit(value) {
var result = value + '';
if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {
return result;
}
return result + 'px';
}
/**
* Function to check whether the platform is blazor or not.
*
* @returns {void} result
* @private
*/
function enableBlazorMode() {
isBlazorPlatform = true;
}
/**
* Function to check whether the platform is blazor or not.
*
* @returns {boolean} result
* @private
*/
function isBlazor() {
return isBlazorPlatform;
}
/**
* Function to convert xPath to DOM element in blazor platform
*
* @returns {HTMLElement} result
* @param {HTMLElement | object} element ?
* @private
*/
function getElement(element) {
var xPath = 'xPath';
if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element["" + xPath])) {
return document.evaluate(element["" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
return element;
}
/**
* Function to fetch the Instances of a HTML element for the given component.
*
* @param {string | HTMLElement} element ?
* @param {any} component ?
* @returns {Object} ?
* @private
*/
function getInstance(element, component) {
var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;
if (elem["" + instances]) {
for (var _i = 0, _a = elem["" + instances]; _i < _a.length; _i++) {
var inst = _a[_i];
if (inst instanceof component) {
return inst;
}
}
}
return null;
}
/**
* Function to add instances for the given element.
*
* @param {string | HTMLElement} element ?
* @param {Object} instance ?
* @returns {void} ?
* @private
*/
function addInstance(element, instance) {
var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;
if (elem["" + instances]) {
elem["" + instances].push(instance);
}
else {
elem["" + instances] = [instance];
}
}
/**
* Function to generate the unique id.
*
* @returns {any} ?
* @private
*/
function uniqueID() {
if ((typeof window) === 'undefined') {
return;
}
var num = new Uint16Array(5);
var intCrypto = window.msCrypto || window.crypto;
return intCrypto.getRandomValues(num);
}
/**
*
* @param {Int16Array} num ?
* @returns {string} ?
*/
function combineArray(num) {
var ret = '';
for (var i = 0; i < 5; i++) {
ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];
}
return ret;
}
/* eslint-disable @typescript-eslint/no-explicit-any */
/**
* Parser
*/
var defaultNumberingSystem = {
'latn': {
'_digits': '0123456789',
'_type': 'numeric'
}
};
var defaultNumberSymbols = {
'decimal': '.',
'group': ',',
'percentSign': '%',
'plusSign': '+',
'minusSign': '-',
'infinity': '∞',
'nan': 'NaN',
'exponential': 'E'
};
var latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
/**
* Interface for parser base
*
* @private
*/
var ParserBase = /** @__PURE__ @class */ (function () {
function ParserBase() {
}
/**
* Returns the cldr object for the culture specifies
*
* @param {Object} obj - Specifies the object from which culture object to be acquired.
* @param {string} cName - Specifies the culture name.
* @returns {Object} ?
*/
ParserBase.getMainObject = function (obj, cName) {
var value = isBlazor() ? cName : 'main.' + cName;
return getValue(value, obj);
};
/**
* Returns the numbering system object from given cldr data.
*
* @param {Object} obj - Specifies the object from which number system is acquired.
* @returns {Object} ?
*/
ParserBase.getNumberingSystem = function (obj) {
return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;
};
/**
* Returns the reverse of given object keys or keys specified.
*
* @param {Object} prop - Specifies the object to be reversed.
* @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.
* @returns {Object} ?
*/
ParserBase.reverseObject = function (prop, keys) {
var propKeys = keys || Object.keys(prop);
var res = {};
for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {
var key = propKeys_1[_i];
if (!Object.prototype.hasOwnProperty.call(res, prop["" + key])) {
res[prop["" + key]] = key;
}
}
return res;
};
/**
* Returns the symbol regex by skipping the escape sequence.
*
* @param {string[]} props - Specifies the array values to be skipped.
* @returns {RegExp} ?
*/
ParserBase.getSymbolRegex = function (props) {
var regexStr = props.map(function (str) {
return str.replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1');
}).join('|');
var regExp = RegExp;
return new regExp(regexStr, 'g');
};
/**
*
* @param {Object} prop ?
* @returns {Object} ?
*/
ParserBase.getSymbolMatch = function (prop) {
var matchKeys = Object.keys(defaultNumberSymbols);
var ret = {};
for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {
var key = matchKeys_1[_i];
ret[prop["" + key]] = defaultNumberSymbols["" + key];
}
return ret;
};
/**
* Returns regex string for provided value
*
* @param {string} val ?
* @returns {string} ?
*/
ParserBase.constructRegex = function (val) {
var len = val.length;
var ret = '';
for (var i = 0; i < len; i++) {
if (i !== len - 1) {
ret += val[parseInt(i.toString(), 10)] + '|';
}
else {
ret += val[parseInt(i.toString(), 10)];
}
}
return ret;
};
/**
* Returns the replaced value of matching regex and obj mapper.
*
* @param {string} value - Specifies the values to be replaced.
* @param {RegExp} regex - Specifies the regex to search.
* @param {Object} obj - Specifies the object matcher to be replace value parts.
* @returns {string} ?
*/
ParserBase.convertValueParts = function (value, regex, obj) {
return value.replace(regex, function (str) {
return obj["" + str];
});
};
/**
* Returns default numbering system object for formatting from cldr data
*
* @param {Object} obj ?
* @returns {NumericObject} ?
*/
ParserBase.getDefaultNumberingSystem = function (obj) {
var ret = {};
ret.obj = getValue('numbers', obj);
ret.nSystem = getValue('defaultNumberingSystem', ret.obj);
return ret;
};
/**
* Returns the replaced value of matching regex and obj mapper.
*
* @param {Object} curObj ?
* @param {Object} numberSystem ?
* @param {boolean} needSymbols ?
* @param {boolean} blazorMode ?
* @returns {Object} ?
*/
ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {
var ret = {};
var cur = this.getDefaultNumberingSystem(curObj);
if (!isUndefined(cur.nSystem) || blazorMode) {
var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);
if (!isUndefined(digits)) {
ret.numericPair = this.reverseObject(digits, latnNumberSystem);
var regExp = RegExp;
ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');
ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';
if (needSymbols) {
ret.numericRegex = digits[0] + '-' + digits[9];
ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);
ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);
ret.numberSystem = cur.nSystem;
}
}
}
return ret;
};
/**
* Returns number mapper object for the provided cldr data
*
* @param {Object} curObj ?
* @param {Object} numberSystem ?
* @param {boolean} isNumber ?
* @returns {NumberMapper} ?
*/
ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {
var ret = { mapper: {} };
var cur = this.getDefaultNumberingSystem(curObj);
if (!isUndefined(cur.nSystem)) {
ret.numberSystem = cur.nSystem;
ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);
ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);
var digits = getValue(cur.nSystem + '._digits', numberSystem);
if (!isUndefined(digits)) {
for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {
var i = latnNumberSystem_1[_i];
ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];
}
}
}
return ret;
};
ParserBase.nPair = 'numericPair';
ParserBase.nRegex = 'numericRegex';
ParserBase.numberingSystems = defaultNumberingSystem;
return ParserBase;
}());
/**
* @private
*/
var blazorCurrencyData = {
'DJF': 'Fdj',
'ERN': 'Nfk',
'ETB': 'Br',
'NAD': '$',
'ZAR': 'R',
'XAF': 'FCFA',
'GHS': 'GH₵',
'XDR': 'XDR',
'AED': 'د.إ.',
'BHD': 'د.ب.',
'DZD': 'د.ج.',
'EGP': 'ج.م.',
'ILS': '₪',
'IQD': 'د.ع.',
'JOD': 'د.ا.',
'KMF': 'CF',
'KWD': 'د.ك.',
'LBP': 'ل.ل.',
'LYD': 'د.ل.',
'MAD': 'د.م.',
'MRU': 'أ.م.',
'OMR': 'ر.ع.',
'QAR': 'ر.ق.',
'SAR': 'ر.س.',
'SDG': 'ج.س.',
'SOS': 'S',
'SSP': '£',
'SYP': 'ل.س.',
'TND': 'د.ت.',
'YER': 'ر.ي.',
'CLP': '$',
'INR': '₹',
'TZS': 'TSh',
'EUR': '€',
'AZN': '₼',
'RUB': '₽',
'BYN': 'Br',
'ZMW': 'K',
'BGN': 'лв.',
'NGN': '₦',
'XOF': 'CFA',
'BDT': '৳',
'CNY': '¥',
'BAM': 'КМ',
'UGX': 'USh',
'USD': '$',
'CZK': 'Kč',
'GBP': '£',
'DKK': 'kr.',
'KES': 'Ksh',
'CHF': 'CHF',
'MVR': 'ރ.',
'BTN': 'Nu.',
'XCD': 'EC$',
'AUD': '$',
'BBD': '$',
'BIF': 'FBu',
'BMD': '$',
'BSD': '$',
'BWP': 'P',
'BZD': '$',
'CAD': '$',
'NZD': '$',
'FJD': '$',
'FKP': '£',
'GIP': '£',
'GMD': 'D',
'GYD': '$',
'HKD': '$',
'IDR': 'Rp',
'JMD': '$',
'KYD': '$',
'LRD': '$',
'MGA': 'Ar',
'MOP': 'MOP$',
'MUR': 'Rs',
'MWK': 'MK',
'MYR': 'RM',
'PGK': 'K',
'PHP': '₱',
'PKR': 'Rs',
'RWF': 'RF',
'SBD': '$',
'SCR': 'SR',
'SEK': 'kr',
'SGD': '$',
'SHP': '£',
'SLL': 'Le',
'ANG': 'NAf.',
'SZL': 'E',
'TOP': 'T$',
'TTD': '$',
'VUV': 'VT',
'WST': 'WS$',
'ARS': '$',
'BOB': 'Bs',
'BRL': 'R$',
'COP': '$',
'CRC': '₡',
'CUP': '$',
'DOP': '$',
'GTQ': 'Q',
'HNL': 'L',
'MXN': '$',
'NIO': 'C$',
'PAB': 'B/.',
'PEN': 'S/',
'PYG': '₲',
'UYU': '$',
'VES': 'Bs.S',
'IRR': 'ريال',
'GNF': 'FG',
'CDF': 'FC',
'HTG': 'G',
'XPF': 'FCFP',
'HRK': 'kn',
'HUF': 'Ft',
'AMD': '֏',
'ISK': 'kr',
'JPY': '¥',
'GEL': '₾',
'CVE': '',
'KZT': '₸',
'KHR': '៛',
'KPW': '₩',
'KRW': '₩',
'KGS': 'сом',
'AOA': 'Kz',
'LAK': '₭',
'MZN': 'MTn',
'MKD': 'ден',
'MNT': '₮',
'BND': '$',
'MMK': 'K',
'NOK': 'kr',
'NPR': 'रु',
'AWG': 'Afl.',
'SRD': '$',
'PLN': 'zł',
'AFN': '؋',
'STN': 'Db',
'MDL': 'L',
'RON': 'lei',
'UAH': '₴',
'LKR': 'රු.',
'ALL': 'Lekë',
'RSD': 'дин.',
'TJS': 'смн',
'THB': '฿',
'TMT': 'm.',
'TRY': '₺',
'UZS': 'сўм',
'VND': '₫',
'TWD': 'NT$'
};
/**
*
* @param {string} currencyCode ?
* @returns {string} ?
*/
function getBlazorCurrencySymbol(currencyCode) {
return getValue(currencyCode || '', blazorCurrencyData);
}
/**
* Specifies default currency code to be considered
*
* @private
*/
var defaultCurrencyCode = 'USD';
var NumberFormat = null;
var DateFormat = null;
function setDefaultCurrencyCode(value) { defaultCurrencyCode = value; }
function setNumberFormat(value) { NumberFormat = value; }
function setDateFormat(value) { DateFormat = value; }
var regExp = RegExp;
var blazorCultureFormats = {
'en-US': {
'd': 'M/d/y',
'D': 'EEEE, MMMM d, y',
'f': 'EEEE, MMMM d, y h:mm a',
'F': 'EEEE, MMMM d, y h:mm:s a',
'g': 'M/d/y h:mm a',
'G': 'M/d/yyyy h:mm:ss tt',
'm': 'MMMM d',
'M': 'MMMM d',
'r': 'ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'',
'R': 'ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'',
's': 'yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss',
't': 'h:mm tt',
'T': 'h:m:s tt',
'u': 'yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'',
'U': 'dddd, MMMM d, yyyy h:mm:ss tt',
'y': 'MMMM yyyy',
'Y': 'MMMM yyyy'
}
};
/**
* Date base common constants and function for date parser and formatter.
*/
// eslint-disable-next-line @typescript-eslint/no-namespace
var IntlBase;
(function (IntlBase) {
// eslint-disable-next-line security/detect-unsafe-regex
IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;
// eslint-disable-next-line security/detect-unsafe-regex
IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\.[0#]*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;
IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;
var fractionRegex = /[0-9]/g;
IntlBase.defaultCurrency = '$';
var mapper = ['infinity', 'nan', 'group', 'decimal'];
var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;
var patternMatch = {
'G': '',
'M': 'm',
'L': 'm',
'H': 'h',
'c': 'd',
'\'': '"',
' a': ' AM/PM',
'yy': 'yy',
'y': 'yyyy',
'EEEE': 'dddd',
'E': 'ddd'
};
IntlBase.dateConverterMapper = /dddd|ddd/ig;
var defaultFirstDay = 'sun';
IntlBase.islamicRegex = /^islamic/;
var firstDayMapper = {
'sun': 0,
'mon': 1,
'tue': 2,
'wed': 3,
'thu': 4,
'fri': 5,
'sat': 6
};
IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');
IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');
IntlBase.curWithoutNumberRegex = /(c|a)$/ig;
var typeMapper = {
'$': 'isCurrency',
'%': 'isPercent',
'-': 'isNegative',
0: 'nlead',
1: 'nend'
};
IntlBase.dateParseRegex = /([a-z])\1*|'([^']|'')+'|''|./gi;
IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];
IntlBase.defaultObject = {
'dates': {
'calendars': {
'gregorian': {
'months': {
'stand-alone': {
'abbreviated': {
'1': 'Jan',
'2': 'Feb',
'3': 'Mar',
'4': 'Apr',
'5': 'May',
'6': 'Jun',
'7': 'Jul',
'8': 'Aug',
'9': 'Sep',
'10': 'Oct',
'11': 'Nov',
'12': 'Dec'
},
'narrow': {
'1': 'J',
'2': 'F',
'3': 'M',
'4': 'A',
'5': 'M',
'6': 'J',
'7': 'J',
'8': 'A',
'9': 'S',
'10': 'O',
'11': 'N',
'12': 'D'
},
'wide': {
'1': 'January',
'2': 'February',
'3': 'March',
'4': 'April',
'5': 'May',
'6': 'June',
'7': 'July',
'8': 'August',
'9': 'September',
'10': 'October',
'11': 'November',
'12': 'December'
}
}
},
'days': {
'stand-alone': {
'abbreviated': {
'sun': 'Sun',
'mon': 'Mon',
'tue': 'Tue',
'wed': 'Wed',
'thu': 'Thu',
'fri': 'Fri',
'sat': 'Sat'
},
'narrow': {
'sun': 'S',
'mon': 'M',
'tue': 'T',
'wed': 'W',
'thu': 'T',
'fri': 'F',
'sat': 'S'
},
'short': {
'sun': 'Su',
'mon': 'Mo',
'tue': 'Tu',
'wed': 'We',
'thu': 'Th',
'fri': 'Fr',
'sat': 'Sa'
},
'wide': {
'sun': 'Sunday',
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday'
}
}
},
'dayPeriods': {
'format': {
'wide': {
'am': 'AM',
'pm': 'PM'
}
}
},
'eras': {
'eraNames': {
'0': 'Before Christ',
'0-alt-variant': 'Before Common Era',
'1': 'Anno Domini',
'1-alt-variant': 'Common Era'
},
'eraAbbr': {
'0': 'BC',
'0-alt-variant': 'BCE',
'1': 'AD',
'1-alt-variant': 'CE'
},
'eraNarrow': {
'0': 'B',
'0-alt-variant': 'BCE',
'1': 'A',
'1-alt-variant': 'CE'
}
},
'dateFormats': {
'full': 'EEEE, MMMM d, y',
'long': 'MMMM d, y',
'medium': 'MMM d, y',
'short': 'M/d/yy'
},
'timeFormats': {
'full': 'h:mm:ss a zzzz',
'long': 'h:mm:ss a z',
'medium': 'h:mm:ss a',
'short': 'h:mm a'
},
'dateTimeFormats': {
'full': '{1} \'at\' {0}',
'long': '{1} \'at\' {0}',
'medium': '{1}, {0}',
'short': '{1}, {0}',
'availableFormats': {
'd': 'd',
'E': 'ccc',
'Ed': 'd E',
'Ehm': 'E h:mm a',
'EHm': 'E HH:mm',
'Ehms': 'E h:mm:ss a',
'EHms': 'E HH:mm:ss',
'Gy': 'y G',
'GyMMM': 'MMM y G',
'GyMMMd': 'MMM d, y G',
'GyMMMEd': 'E, MMM d, y G',
'h': 'h a',
'H': 'HH',
'hm': 'h:mm a',
'Hm': 'HH:mm',
'hms': 'h:mm:ss a',
'Hms': 'HH:mm:ss',
'hmsv': 'h:mm:ss a v',
'Hmsv': 'HH:mm:ss v',
'hmv': 'h:mm a v',
'Hmv': 'HH:mm v',
'M': 'L',
'Md': 'M/d',
'MEd': 'E, M/d',
'MMM': 'LLL',
'MMMd': 'MMM d',
'MMMEd': 'E, MMM d',
'MMMMd': 'MMMM d',
'ms': 'mm:ss',
'y': 'y',
'yM': 'M/y',
'yMd': 'M/d/y',
'yMEd': 'E, M/d/y',
'yMMM': 'MMM y',
'yMMMd': 'MMM d, y',
'yMMMEd': 'E, MMM d, y',
'yMMMM': 'MMMM y'
}
}
},
'islamic': {
'months': {
'stand-alone': {
'abbreviated': {
'1': 'Muh.',
'2': 'Saf.',
'3': 'Rab. I',
'4': 'Rab. II',
'5': 'Jum. I',
'6': 'Jum. II',
'7': 'Raj.',
'8': 'Sha.',
'9': 'Ram.',
'10': 'Shaw.',
'11': 'Dhuʻl-Q.',
'12': 'Dhuʻl-H.'
},
'narrow': {
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': '10',
'11': '11',
'12': '12'
},
'wide': {
'1': 'Muharram',
'2': 'Safar',
'3': 'Rabiʻ I',
'4': 'Rabiʻ II',
'5': 'Jumada I',
'6': 'Jumada II',
'7': 'Rajab',
'8': 'Shaʻban',
'9': 'Ramadan',
'10': 'Shawwal',
'11': 'Dhuʻl-Qiʻdah',
'12': 'Dhuʻl-Hijjah'
}
}
},
'days': {
'stand-alone': {
'abbreviated': {
'sun': 'Sun',
'mon': 'Mon',
'tue': 'Tue',
'wed': 'Wed',
'thu': 'Thu',
'fri': 'Fri',
'sat': 'Sat'
},
'narrow': {
'sun': 'S',
'mon': 'M',
'tue': 'T',
'wed': 'W',
'thu': 'T',
'fri': 'F',
'sat': 'S'
},
'short': {
'sun': 'Su',
'mon': 'Mo',
'tue': 'Tu',
'wed': 'We',
'thu': 'Th',
'fri': 'Fr',
'sat': 'Sa'
},
'wide': {
'sun': 'Sunday',
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday'
}
}
},
'dayPeriods': {
'format': {
'wide': {
'am': 'AM',
'pm': 'PM'
}
}
},
'eras': {
'eraNames': {
'0': 'AH'
},
'eraAbbr': {
'0': 'AH'
},
'eraNarrow': {
'0': 'AH'
}
},
'dateFormats': {
'full': 'EEEE, MMMM d, y G',
'long': 'MMMM d, y G',
'medium': 'MMM d, y G',
'short': 'M/d/y GGGGG'
},
'timeFormats': {
'full': 'h:mm:ss a zzzz',
'long': 'h:mm:ss a z',
'medium': 'h:mm:ss a',
'short': 'h:mm a'
},
'dateTimeFormats': {
'full': '{1} \'at\' {0}',
'long': '{1} \'at\' {0}',
'medium': '{1}, {0}',
'short': '{1}, {0}',
'availableFormats': {
'd': 'd',
'E': 'ccc',
'Ed': 'd E',
'Ehm': 'E h:mm a',
'EHm': 'E HH:mm',
'Ehms': 'E h:mm:ss a',
'EHms': 'E HH:mm:ss',
'Gy': 'y G',
'GyMMM': 'MMM y G',
'GyMMMd': 'MMM d, y G',
'GyMMMEd': 'E, MMM d, y G',
'h': 'h a',
'H': 'HH',
'hm': 'h:mm a',
'Hm': 'HH:mm',
'hms': 'h:mm:ss a',
'Hms': 'HH:mm:ss',
'M': 'L',
'Md': 'M/d',
'MEd': 'E, M/d',
'MMM': 'LLL',
'MMMd': 'MMM d',
'MMMEd': 'E, MMM d',
'MMMMd': 'MMMM d',
'ms': 'mm:ss',
'y': 'y G',
'yyyy': 'y G',
'yyyyM': 'M/y GGGGG',
'yyyyMd': 'M/d/y GGGGG',
'yyyyMEd': 'E, M/d/y GGGGG',
'yyyyMMM': 'MMM y G',
'yyyyMMMd': 'MMM d, y G',
'yyyyMMMEd': 'E, MMM d, y G',
'yyyyMMMM': 'MMMM y G',
'yyyyQQQ': 'QQQ y G',
'yyyyQQQQ': 'QQQQ y G'
}
}
}
},
'timeZoneNames': {
'hourFormat': '+HH:mm;-HH:mm',
'gmtFormat': 'GMT{0}',
'gmtZeroFormat': 'GMT'
}
},
'numbers': {
'currencies': {
'USD': {
'displayName': 'US Dollar',
'symbol': '$',
'symbol-alt-narrow': '$'
},
'EUR': {
'displayName': 'Euro',
'symbol': '€',
'symbol-alt-narrow': '€'
},
'GBP': {
'displayName': 'British Pound',
'symbol-alt-narrow': '£'
}
},
'defaultNumberingSystem': 'latn',
'minimumGroupingDigits': '1',
'symbols-numberSystem-latn': {
'decimal': '.',
'group': ',',
'list': ';',
'percentSign': '%',
'plusSign': '+',
'minusSign': '-',
'exponential': 'E',
'superscriptingExponent': '×',
'perMille': '‰',
'infinity': '∞',
'nan': 'NaN',
'timeSeparator': ':'
},
'decimalFormats-numberSystem-latn': {
'standard': '#,##0.###'
},
'percentFormats-numberSystem-latn': {
'standard': '#,##0%'
},
'currencyFormats-numberSystem-latn': {
'standard': '¤#,##0.00',
'accounting': '¤#,##0.00;(¤#,##0.00)'
},
'scientificFormats-numberSystem-latn': {
'standard': '#E0'
}
}
};
IntlBase.blazorDefaultObject = {
'numbers': {
'mapper': {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9'
},
'mapperDigits': '0123456789',
'numberSymbols': {
'decimal': '.',
'group': ',',
'plusSign': '+',
'minusSign': '-',
'percentSign': '%',
'nan': 'NaN',
'timeSeparator': ':',
'infinity': '∞'
},
'timeSeparator': ':',
'currencySymbol': '$',
'currencypData': {
'nlead': '$',
'nend': '',
'groupSeparator': ',',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
},
'percentpData': {
'nlead': '',
'nend': '%',
'groupSeparator': ',',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
},
'percentnData': {
'nlead': '-',
'nend': '%',
'groupSeparator': ',',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
},
'currencynData': {
'nlead': '($',
'nend': ')',
'groupSeparator': ',',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
},
'decimalnData': {
'nlead': '-',
'nend': '',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
},
'decimalpData': {
'nlead': '',
'nend': '',
'groupData': {
'primary': 3
},
'maximumFraction': 2,
'minimumFraction': 2
}
},
'dates': {
'dayPeriods': {
'am': 'AM',
'pm': 'PM'
},
'dateSeperator': '/',
'days': {
'abbreviated': {
'sun': 'Sun',
'mon': 'Mon',
'tue': 'Tue',
'wed': 'Wed',
'thu': 'Thu',
'fri': 'Fri',
'sat': 'Sat'
},
'short': {
'sun': 'Su',
'mon': 'Mo',
'tue': 'Tu',
'wed': 'We',
'thu': 'Th',
'fri': 'Fr',
'sat': 'Sa'
},
'wide': {
'sun': 'Sunday',
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday'
}
},
'months': {
'abbreviated': {
'1': 'Jan',
'2': 'Feb',
'3': 'Mar',
'4': 'Apr',
'5': 'May',
'6': 'Jun',
'7': 'Jul',
'8': 'Aug',
'9': 'Sep',
'10': 'Oct',
'11': 'Nov',
'12': 'Dec'
},
'wide': {
'1': 'January',
'2': 'February',
'3': 'March',
'4': 'April',
'5': 'May',
'6': 'June',
'7': 'July',
'8': 'August',
'9': 'September',
'10': 'October',
'11': 'November',
'12': 'December'
}
},
'eras': {
'1': 'AD'
}
}
};
IntlBase.monthIndex = {
3: 'abbreviated',
4: 'wide',
5: 'narrow',
1: 'abbreviated'
};
/**
*
*/
IntlBase.month = 'months';
IntlBase.days = 'days';
/**
* Default numerber Object
*/
IntlBase.patternMatcher = {
C: 'currency',
P: 'percent',
N: 'decimal',
A: 'currency',
E: 'scientific'
};
/**
* Returns the resultant pattern based on the skeleton, dateObject and the type provided
*
* @private
* @param {string} skeleton ?
* @param {Object} dateObject ?
* @param {string} type ?
* @param {boolean} isIslamic ?
* @param {string} blazorCulture ?
* @returns {string} ?
*/
function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {
var resPattern;
var iType = type || 'date';
if (blazorCulture) {
resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||
compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;
}
else {
if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {
resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);
if (iType === 'dateTime') {
var dPattern = getValue('dateFormats.' + skeleton, dateObject);
var tPattern = getValue('timeFormats.' + skeleton, dateObject);
resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);
}
}
else {
resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);
}
if (isUndefined(resPattern) && skeleton === 'yMd') {
resPattern = 'M/d/y';
}
}
return resPattern;
}
IntlBase.getResultantPattern = getResultantPattern;
/**
* Returns the dependable object for provided cldr data and culture
*
* @private
* @param {Object} cldr ?
* @param {string} culture ?
* @param {st