@syncfusion/ej2-base 20.2.39 → 20.2.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +60 -0
- package/.github/PULL_REQUEST_TEMPLATE/feature.md +42 -0
- package/CHANGELOG.md +8 -0
- package/{ReadMe.md → README.md} +1 -1
- package/bin/syncfusion-license.js +1 -1
- package/dist/ej2-base.umd.min.js +10 -1
- package/dist/ej2-base.umd.min.js.map +1 -1
- package/dist/es6/ej2-base.es2015.js +31 -28
- package/dist/es6/ej2-base.es2015.js.map +1 -1
- package/dist/es6/ej2-base.es5.js +17 -14
- package/dist/es6/ej2-base.es5.js.map +1 -1
- package/dist/global/ej2-base.min.js +10 -1
- package/dist/global/ej2-base.min.js.map +1 -1
- package/dist/global/index.d.ts +9 -0
- package/package.json +113 -5
- package/src/draggable.js +3 -3
- package/src/validate-lic.d.ts +1 -0
- package/src/validate-lic.js +14 -11
- package/styles/bootstrap-dark.css +12 -0
- package/styles/bootstrap.css +12 -0
- package/styles/bootstrap4.css +12 -0
- package/styles/bootstrap5-dark.css +12 -0
- package/styles/bootstrap5.css +12 -0
- package/styles/common/_core.scss +14 -0
- package/styles/fabric-dark.css +12 -0
- package/styles/fabric.css +12 -0
- package/styles/fluent-dark.css +12 -0
- package/styles/fluent.css +12 -0
- package/styles/highcontrast-light.css +12 -0
- package/styles/highcontrast.css +12 -0
- package/styles/material-dark.css +12 -0
- package/styles/material.css +12 -0
- package/styles/tailwind-dark.css +12 -0
- package/styles/tailwind.css +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-base.es5.js","sources":["../../src/util.js","../../src/intl/parser-base.js","../../src/hijri-parser.js","../../src/intl/date-formatter.js","../../src/intl/number-formatter.js","../../src/intl/date-parser.js","../../src/intl/number-parser.js","../../src/observer.js","../../src/internationalization.js","../../src/intl/intl-base.js","../../src/ajax.js","../../src/browser.js","../../src/event-handler.js","../../src/dom.js","../../src/base.js","../../src/notify-property-change.js","../../src/animation.js","../../src/module-loader.js","../../src/child-property.js","../../src/validate-lic.js","../../src/component.js","../../src/draggable.js","../../src/droppable.js","../../src/keyboard.js","../../src/l10n.js","../../src/touch.js","../../src/template.js","../../src/template-engine.js","../../src/sanitize-helper.js","../../src/index.js"],"sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== \"undefined\" ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[l]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +\n '<script> (function() { window.ready = true; })(); </script>' + '</body></html>');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n * <div id=\"Eventdiv\"> </div>\n * <script>\n * let node: HTMLElement = document.querySelector(\"#Eventdiv\");\n * EventHandler.addEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * EventHandler.addEventListener(node, \"onmouseover\", function(){\n * // mouseover handler function code\n * });\n * EventHandler.removeEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * eventObj.clearEvents();\n * </script>\n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex<Type>({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n * <div id='ripple'></div>\n * <script>\n * rippleEffect(document.getElementById('ripple'));\n * </script>\n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () { });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\n/**\n * License validation module\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.version = '20.2';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' Please include a valid license to permanently remove this license validation message.' +\n ' You can also obtain a free 30 day evaluation license to temporarily remove this message ' +\n 'during the evaluation period. Please refer to this <a style=\"color:yellow;text-decoration:none;\"' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing\">help topic</a> for more information.',\n trailExpired: 'Your Syncfusion trial license has expired. Please refer to this ' +\n '<a style=\"color:yellow;text-decoration:none;\"' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#trial-expired\">help topic</a> for more information.',\n versionMismatched: 'The included Syncfusion license (v##LicenseVersion) is invalid for version ' +\n '##Requireversion. Please refer to this <a style=\"color:yellow;text-decoration:none;\" ' +\n 'href=\"https://help.syncfusion.com/es/licensing/version-mismatch/\">help topic</a> for more information.',\n platformMismatched: 'The included Syncfusion license is invalid (Platform mismatch). Please refer' +\n ' to this <a style=\"color:yellow;text-decoration:none;\" ' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#platform-mismatch\">help topic</a> for more information.',\n invalidKey: 'The included Syncfusion license is invalid. Please refer to this ' +\n '<a style=\"color:yellow;text-decoration:none;\" ' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#invalid-key\">help topic</a> for more information.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n function set(key) { licKey = key; }\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = \"npxKeyReplace\";\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() != 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n if (validateMsg && typeof document !== \"undefined\" && !isNullOrUndefined(document)) {\n var errorDiv = createElement('div', {\n innerHTML: validateMsg +\n '<span style=\"position:absolute;right: 10px;top:27%;cursor:pointer;\"' +\n 'onClick=this.parentElement.remove();>' +\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\">' +\n '<line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" stroke=\"yellow\" stroke-width=\"2.5\" ' +\n 'stroke-miterlimit=\"10\" stroke-linecap=\"round\"></line><line x1=\"15\" y1=\"5\" ' +\n 'x2=\"5\" y2=\"15\" stroke=\"yellow\" stroke-width=\"2.5\" stroke-linecap=\"round\" ' +\n 'stroke-miterlimit=\"10\"></line></svg></span>',\n styles: 'position:fixed;top:0;left:0;right:0;font-family:\"Segoe UI\";font-size:16px;' +\n 'background:repeating-linear-gradient(45deg,#d70f0f,#d70f0f 10px,#e12121 10px,#e12121 17px);' +\n 'color:#ffffff;z-index:999999999;text-align:center;padding:10px 50px 10px 25px;'\n });\n errorDiv.setAttribute('id', 'js-licensing');\n document.body.appendChild(errorDiv);\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[k] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[i] = decodeStr[i].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[i]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n * @param {string} key - license key\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n validateLicense();\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n * <div id='drag'>Draggable</div>\n * <script>\n * var ele = document.getElementById('drag');\n * var drag:Draggable = new Draggable(ele,{\n * clone:false,\n * drag: function(e) {\n * //drag handler code.\n * },\n * handle:'.class'\n * });\n * </script>\n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[i])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[i].scrollHeight > nodeEl[i].clientHeight) {\n return nodeEl[i];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight - nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollHeight - nodeEle.clientHeight > draEleTop) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n * <div id='drop'>Droppable</div>\n * <script>\n * let ele:HTMLElement = document.getElementById('drop');\n * var drag:Droppable = new Droppable(ele,{\n * accept:'.drop',\n * drop: function(e) {\n * //drop handler code.\n * }\n * });\n * </script>\n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n * <div id='testEle'> </div>;\n * <script>\n * let node: HTMLElement = document.querySelector('#testEle');\n * let kbInstance = new KeyboardEvents({\n * element: node,\n * keyConfigs:{ selectAll : 'ctrl+a' },\n * keyAction: function (e:KeyboardEvent, action:string) {\n * // handler function code\n * }\n * });\n * </script>\n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\";\" + condtion + \" return str;\";\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+<tr|^<tr/;\nvar HAS_SVG = /^[\\n\\r.]+<svg|^<path|^<g/;\nexport var blazorTemplates = {};\n/**\n *\n * @returns {string} ?\n */\nexport function getRandomId() {\n return '-' + Math.random().toString(36).substr(2, 5);\n}\n/**\n * Compile the template string into template function.\n *\n * @param {string} templateString - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {NodeList} ?\n * @private\n */\n// eslint-disable-next-line\nexport function compile(templateString, helper, ignorePrefix) {\n var compiler = engineObj.compile(templateString, helper, ignorePrefix);\n // eslint-disable-next-line\n return function (data, component, propName, templateId, isStringTemplate, index, element, root) {\n var result = compiler(data, component, propName, element, root);\n var blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n var randomId = getRandomId();\n var blazorId = templateId + randomId;\n if (!blazorTemplates[templateId]) {\n blazorTemplates[templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n var keys = Object.keys(blazorTemplates[templateId][index]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key !== blazorTemplateId && data[key]) {\n blazorTemplates[templateId][index][key] = data[key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[templateId][index][key];\n }\n }\n }\n else {\n data[blazorTemplateId] = blazorId;\n blazorTemplates[templateId].push(data);\n }\n // eslint-disable-next-line\n return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :\n // eslint-disable-next-line\n [createElement('div', { id: blazorId, className: 'e-blazor-template' })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n var ele = createElement('svg', { innerHTML: result });\n return ele.childNodes;\n }\n else {\n var ele = createElement((HAS_ROW.test(result) ? 'table' : 'div'), { innerHTML: result });\n return ele.childNodes;\n }\n }\n else {\n return result;\n }\n };\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {string} comp ?\n * @param {boolean} isEmpty ?\n * @param {Function} callBack ?\n * @returns {void} ?\n */\nexport function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n var ejsIntrop = 'sfBlazor';\n window[ejsIntrop].updateTemplate(templateName, blazorTemplates[templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[templateId] = [];\n }\n }\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {number} index ?\n * @returns {void} ?\n */\nexport function resetBlazorTemplate(templateId, templateName, index) {\n var templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n // eslint-disable-next-line\n var innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (var i = 0; i < innerTemplates.length; i++) {\n var tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[index].getAttribute('data-templateId');\n }\n else {\n tempId = innerTemplates[i].getAttribute('data-templateId');\n }\n var tempElement = document.getElementById(tempId);\n if (tempElement) {\n var length_1 = tempElement.childNodes.length;\n for (var j = 0; j < length_1; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[index].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n }\n else {\n innerTemplates[i].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n *\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @returns {void} ?\n * @private\n */\nexport function setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n *\n * @returns {string} ?\n * @private\n */\nexport function getTemplateEngine() {\n return engineObj.compile;\n}\n//Default Engine Class\nvar Engine = /** @class */ (function () {\n function Engine() {\n }\n // eslint-disable-next-line\n Engine.prototype.compile = function (templateString, helper, ignorePrefix) {\n if (helper === void 0) { helper = {}; }\n return render(templateString, helper);\n };\n return Engine;\n}());\nvar engineObj = { compile: new Engine().compile };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue.replace('&', '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","/**\n * Base modules\n */\nexport * from './intl/intl-base';\nexport * from './ajax';\nexport * from './animation';\nexport * from './base';\nexport * from './browser';\nexport * from './component';\nexport * from './child-property';\nexport * from './draggable';\nexport * from './droppable';\nexport * from './event-handler';\nexport * from './internationalization';\nexport * from './keyboard';\nexport * from './l10n';\nexport * from './module-loader';\nexport * from './notify-property-change';\nexport * from './touch';\nexport * from './hijri-parser';\nexport * from './template-engine';\nexport * from './util';\nexport * from './dom';\nexport * from './observer';\nexport * from './sanitize-helper';\nexport * from './validate-lic';\n"],"names":["base","parser","mapper","standalone","timeSetter","Event","this","__extends","__decorate","compile","render"],"mappings":"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,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;CACf,CAAC;;;;;;AAMF,AAAO,SAAS,uBAAuB,CAAC,YAAY,EAAE;IAClD,OAAO,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;CAC3D;;AChXD;;;;AAIA,AAAO,IAAI,WAAW,CAAC;AACvB,CAAC,UAAU,WAAW,EAAE;IACpB,IAAI,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAClH,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,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"}
|
|
1
|
+
{"version":3,"file":"ej2-base.es5.js","sources":["../../src/util.js","../../src/intl/parser-base.js","../../src/hijri-parser.js","../../src/intl/date-formatter.js","../../src/intl/number-formatter.js","../../src/intl/date-parser.js","../../src/intl/number-parser.js","../../src/observer.js","../../src/internationalization.js","../../src/intl/intl-base.js","../../src/ajax.js","../../src/browser.js","../../src/event-handler.js","../../src/dom.js","../../src/base.js","../../src/notify-property-change.js","../../src/animation.js","../../src/module-loader.js","../../src/child-property.js","../../src/validate-lic.js","../../src/component.js","../../src/draggable.js","../../src/droppable.js","../../src/keyboard.js","../../src/l10n.js","../../src/touch.js","../../src/template.js","../../src/template-engine.js","../../src/sanitize-helper.js","../../src/index.js"],"sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== \"undefined\" ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[l]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +\n '<script> (function() { window.ready = true; })(); </script>' + '</body></html>');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n * <div id=\"Eventdiv\"> </div>\n * <script>\n * let node: HTMLElement = document.querySelector(\"#Eventdiv\");\n * EventHandler.addEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * EventHandler.addEventListener(node, \"onmouseover\", function(){\n * // mouseover handler function code\n * });\n * EventHandler.removeEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * eventObj.clearEvents();\n * </script>\n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex<Type>({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n * <div id='ripple'></div>\n * <script>\n * rippleEffect(document.getElementById('ripple'));\n * </script>\n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () { });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\n/**\n * License validation module\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.version = '20.2';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' Please include a valid license to permanently remove this license validation message.' +\n ' You can also obtain a free 30 day evaluation license to temporarily remove this message ' +\n 'during the evaluation period. Please refer to this <a class=\"e-license\"' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing\">help topic</a> for more information.',\n trailExpired: 'Your Syncfusion trial license has expired. Please refer to this ' +\n '<a class=\"e-license\"' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#trial-expired\">help topic</a> for more information.',\n versionMismatched: 'The included Syncfusion license (v##LicenseVersion) is invalid for version ' +\n '##Requireversion. Please refer to this <a class=\"e-license\" ' +\n 'href=\"https://help.syncfusion.com/es/licensing/version-mismatch/\">help topic</a> for more information.',\n platformMismatched: 'The included Syncfusion license is invalid (Platform mismatch). Please refer' +\n ' to this <a class=\"e-license\" ' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#platform-mismatch\">help topic</a> for more information.',\n invalidKey: 'The included Syncfusion license is invalid. Please refer to this ' +\n '<a class=\"e-license\" ' +\n 'href=\"https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#invalid-key\">help topic</a> for more information.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n function set(key) { licKey = key; }\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorDiv = createElement('div', {\n innerHTML: validateMsg +\n '<span id=\"license-banner-error\" class=\".e-license-banner\">' +\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\">' +\n '<line x1=\"5\" y1=\"5\" x2=\"15\" y2=\"15\" stroke=\"yellow\" stroke-width=\"2.5\" ' +\n 'stroke-miterlimit=\"10\" stroke-linecap=\"round\"></line><line x1=\"15\" y1=\"5\" ' +\n 'x2=\"5\" y2=\"15\" stroke=\"yellow\" stroke-width=\"2.5\" stroke-linecap=\"round\" ' +\n 'stroke-miterlimit=\"10\"></line></svg></span>',\n styles: 'position:fixed;top:0;left:0;right:0;font-family:\"Segoe UI\";font-size:16px;' +\n 'background:repeating-linear-gradient(45deg,#d70f0f,#d70f0f 10px,#e12121 10px,#e12121 17px);' +\n 'color:#ffffff;z-index:999999999;text-align:center;padding:10px 50px 10px 25px;'\n });\n errorDiv.setAttribute('id', 'js-licensing');\n document.body.appendChild(errorDiv);\n document.getElementById('license-banner-error').addEventListener('click', function () {\n document.getElementById('js-licensing').remove();\n });\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[k] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[i] = decodeStr[i].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[i]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n validateLicense();\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n * <div id='drag'>Draggable</div>\n * <script>\n * var ele = document.getElementById('drag');\n * var drag:Draggable = new Draggable(ele,{\n * clone:false,\n * drag: function(e) {\n * //drag handler code.\n * },\n * handle:'.class'\n * });\n * </script>\n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[i])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[i].scrollHeight > nodeEl[i].clientHeight) {\n return nodeEl[i];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight - nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollHeight - nodeEle.clientHeight > draEleTop) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n * <div id='drop'>Droppable</div>\n * <script>\n * let ele:HTMLElement = document.getElementById('drop');\n * var drag:Droppable = new Droppable(ele,{\n * accept:'.drop',\n * drop: function(e) {\n * //drop handler code.\n * }\n * });\n * </script>\n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n * <div id='testEle'> </div>;\n * <script>\n * let node: HTMLElement = document.querySelector('#testEle');\n * let kbInstance = new KeyboardEvents({\n * element: node,\n * keyConfigs:{ selectAll : 'ctrl+a' },\n * keyAction: function (e:KeyboardEvent, action:string) {\n * // handler function code\n * }\n * });\n * </script>\n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\";\" + condtion + \" return str;\";\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+<tr|^<tr/;\nvar HAS_SVG = /^[\\n\\r.]+<svg|^<path|^<g/;\nexport var blazorTemplates = {};\n/**\n *\n * @returns {string} ?\n */\nexport function getRandomId() {\n return '-' + Math.random().toString(36).substr(2, 5);\n}\n/**\n * Compile the template string into template function.\n *\n * @param {string} templateString - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {NodeList} ?\n * @private\n */\n// eslint-disable-next-line\nexport function compile(templateString, helper, ignorePrefix) {\n var compiler = engineObj.compile(templateString, helper, ignorePrefix);\n // eslint-disable-next-line\n return function (data, component, propName, templateId, isStringTemplate, index, element, root) {\n var result = compiler(data, component, propName, element, root);\n var blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n var randomId = getRandomId();\n var blazorId = templateId + randomId;\n if (!blazorTemplates[templateId]) {\n blazorTemplates[templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n var keys = Object.keys(blazorTemplates[templateId][index]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key !== blazorTemplateId && data[key]) {\n blazorTemplates[templateId][index][key] = data[key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[templateId][index][key];\n }\n }\n }\n else {\n data[blazorTemplateId] = blazorId;\n blazorTemplates[templateId].push(data);\n }\n // eslint-disable-next-line\n return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :\n // eslint-disable-next-line\n [createElement('div', { id: blazorId, className: 'e-blazor-template' })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n var ele = createElement('svg', { innerHTML: result });\n return ele.childNodes;\n }\n else {\n var ele = createElement((HAS_ROW.test(result) ? 'table' : 'div'), { innerHTML: result });\n return ele.childNodes;\n }\n }\n else {\n return result;\n }\n };\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {string} comp ?\n * @param {boolean} isEmpty ?\n * @param {Function} callBack ?\n * @returns {void} ?\n */\nexport function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n var ejsIntrop = 'sfBlazor';\n window[ejsIntrop].updateTemplate(templateName, blazorTemplates[templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[templateId] = [];\n }\n }\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {number} index ?\n * @returns {void} ?\n */\nexport function resetBlazorTemplate(templateId, templateName, index) {\n var templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n // eslint-disable-next-line\n var innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (var i = 0; i < innerTemplates.length; i++) {\n var tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[index].getAttribute('data-templateId');\n }\n else {\n tempId = innerTemplates[i].getAttribute('data-templateId');\n }\n var tempElement = document.getElementById(tempId);\n if (tempElement) {\n var length_1 = tempElement.childNodes.length;\n for (var j = 0; j < length_1; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[index].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n }\n else {\n innerTemplates[i].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n *\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @returns {void} ?\n * @private\n */\nexport function setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n *\n * @returns {string} ?\n * @private\n */\nexport function getTemplateEngine() {\n return engineObj.compile;\n}\n//Default Engine Class\nvar Engine = /** @class */ (function () {\n function Engine() {\n }\n // eslint-disable-next-line\n Engine.prototype.compile = function (templateString, helper, ignorePrefix) {\n if (helper === void 0) { helper = {}; }\n return render(templateString, helper);\n };\n return Engine;\n}());\nvar engineObj = { compile: new Engine().compile };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue.replace('&', '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","/**\n * Base modules\n */\nexport * from './intl/intl-base';\nexport * from './ajax';\nexport * from './animation';\nexport * from './base';\nexport * from './browser';\nexport * from './component';\nexport * from './child-property';\nexport * from './draggable';\nexport * from './droppable';\nexport * from './event-handler';\nexport * from './internationalization';\nexport * from './keyboard';\nexport * from './l10n';\nexport * from './module-loader';\nexport * from './notify-property-change';\nexport * from './touch';\nexport * from './hijri-parser';\nexport * from './template-engine';\nexport * from './util';\nexport * from './dom';\nexport * from './observer';\nexport * from './sanitize-helper';\nexport * from './validate-lic';\n"],"names":["base","parser","mapper","standalone","timeSetter","Event","this","__extends","__decorate","compile","render"],"mappings":"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,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;CACf,CAAC;;;;;;AAMF,AAAO,SAAS,uBAAuB,CAAC,YAAY,EAAE;IAClD,OAAO,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;CAC3D;;AChXD;;;;AAIA,AAAO,IAAI,WAAW,CAAC;AACvB,CAAC,UAAU,WAAW,EAAE;IACpB,IAAI,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAClH,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC5H,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,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"}
|