UNPKG

@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
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