{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/component.js","webpack:///./node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///./node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///./node_modules/@syncfusion/ej2-base/src/dom.js"],"names":["abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","m","h","H","s","d","f","datePartMatcher","timeSeparator","DateFormat","dateFormat","culture","option","cldr","_this","this","dependable","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","test","isServerRendered","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","type","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","replace","pattern","numMapper","getNumberMapper","parserObject","getNumberingSystem","patternMatch","match","_i","patternMatch_1","length","str","len","char","weekday","monthIndex","days","month","designator","eText","era","timeZone","value","isNaN","getDate","intDateFormatter","options","ret","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","isNumber","processNumber","curstr","getDay","date","toString","substring","curlength","i","year","substr","desig","getHours","dec","getFullYear","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","numberSymbols","getWeekOfYear","checkTwodigitNumber","convertValueParts","latnParseRegex","mapper","getHijriDate","getMonth","val","tVal","splt","split","curPattern","no","Math","abs","ishour","indexOf","floor","IntlBase","regExp","RegExp","blazorCultureFormats","negativeDataRegex","customRegex","fractionRegex","defaultCurrency","patternRegex","'","dateConverterMapper","defaultFirstDay","firstDayMapper","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","dPattern","tPattern","mode","calendartype","getMainObject","blazorDefaultObject","defaultObject","numericObject","dateString","getSymbolPattern","numSystem","obj","isAccount","convertMapper","tempString","curFormatMapper","getProperNumericSkeleton","toUpperCase","patternMatcher","fractionDigits","parseInt","getFormatData","needFraction","cSymbol","fractionOnly","nData","nlead","nend","changeCurrencySymbol","groupPattern","fraction","fmatch","minimumFraction","maximumFraction","sym","getCurrencySymbol","currencyCode","altSymbol","symbol","getCurrency","customFormat","dOptions","formatSplit","data","customNumberFormat","pData","minusSymbol","cOptions","minimumFractionDigits","maximumFractionDigits","undefined","integerPart","spaceCapture","spaceGrouping","useGrouping","fractionPart","minimumIntegerDigits","lastIndexOf","isCurrencyPercent","isCustomFormat","currencySymbol","isCurrency","percentSymbol","symbolPattern","numberMapper","numberSystem","groupSeparator","groupData","getGroupingDetails","parts","actual","part","loc","dateObj","getActualDateTimeFormat","isExcelFormat","actualPattern","tLength","timeZonePattern","options_1","Date","processSymbol","getActualNumberFormat","isExcel","minFrac","parseOptions","custom","numrericObject","curObj","curMatch","curCode","currency","hasNegativePattern","defaultMinimum","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","Object","keys","minDigits","maxDigits","a","diff","b","digits","temp","integer","x","hash","slice","getWeekData","firstDay","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","day","daynum","getTime","nYear","nday","3","4","5","C","P","N","A","E","EventHandler","addOrGetEventData","element","__eventList","events","add","eventName","listener","bindTo","intDebounce","debounceListener","eventData","bind","event","push","name","debounce","isIE","addEventListener","passive","remove","_loop_1","j","index","some","splice","removeEventListener","clearEvents","copyData","shift","trigger","eventProp","eventData_1","event_1","call","errorText","percentSign","minusSign","NumberFormat","numberFormatter","fOptions","symbols","isPercent","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","mval","mfrac","lfrac","isFinite","intNumberFormatter","p","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","text","range","curData","zeroData","fValue","processSignificantDigits","processFraction","processMinimumIntegers","decimalPart","toExponential","customPivotFormat","groupNumbers","min","max","tn","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","join","toFixed","lead","_a","decimal","ceil","lastPageID","__extends","extendStatics","setPrototypeOf","__proto__","Array","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","_super","Component","selector","randomId","isStringTemplate","needsID","isReactHybrid","enableRtl","setProperties","locale","moduleLoader","localObserver","on","detectFunction","window","document","getModuleName","appendTo","requiredModules","destroy","isDestroyed","enablePersistence","setPersistData","refreshing","cancel","clean","off","refresh","clearChanges","preRender","injectModules","render","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","id","localStorage","getItem","ej2StatePersistenceVersion","moduleClass","toLowerCase","isProtectedOnChange","getUniqueID","mergePersistData","inst","addInstance","renderComplete","wrapperElement","sfBlazor","isRendered","dataBind","handler","context","arg","event_2","notify","property","argument","getInjectedModules","injectedModules","Inject","moduleList","createElement","tagName","prop","isVDOM","triggerStateChange","setState","currentContext","calls","args","inject","JSON","parse","setItem","getPersistData","renderReactTemplates","callback","clearTemplate","templateName","definedName","isHistoryChanged","pageID","location","href","history","url","charCodeAt","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","properties","ignoreList","newObj","newList","filter","map","this_1","defaultPosition","left","top","bottom","right","isDraggedObject","isDragged","Position","apply","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","ele","handle","enableTapHold","isDevice","isTouch","mobileInitialize","initialize","isSafari","touchStartEvent","evt","currentTarget","setTimeout","removeTapholdTimer","tapHoldThreshold","touchMoveEvent","touchEndEvent","clearTimeout","getScrollableParent","axis","scroll","client","scrollTop","scrollLeft","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","parentNode","getScrollableValues","classList","contains","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","setAttribute","intCoord","getCoordinates","initialPosition","pageX","y","pageY","clone","pos","getBoundingClientRect","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","body","documentElement","isChangeTouch","intCordinate","styleProp","getComputedStyle","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","offset","calculateParentPosition","position","getMousePosition","isDragScroll","distance","sqrt","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","styles","parseFloat","enableScrollHandler","posValue","getProcessedPositionValue","style","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","el","offsetTop","offsetLeft","width","offsetWidth","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","instance","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","elements","querySelectorAll","getPathElements","scrollParent","getScrollParent","getScrollPosition","node","reverse","hasScroll","nodeEl","clientHeight","scrollingElement","overflow","nodeEle","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","returnValue","dragStop","dragStopCalled","intDrop","onPropertyChanged","newProp","oldProp","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","isPointer","info","version","elementFromPoint","oldEle","elem","isdragscroll","dragEle","srcElement","isOffsetParent","isVerticalScroll","isHorrizontalScroll","clientWidth","cursorAt","sender","className","innerHTML","appendChild","reset","draggable","draggedElement","dropIns","getDropInstance","parent_1","parentElement","drop","eleInst","ej2_instances","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","cName","numberingSystems","reverseObject","propKeys","res","propKeys_1","getSymbolRegex","props","regexStr","getSymbolMatch","matchKeys","matchKeys_1","constructRegex","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","needSymbols","blazorMode","cur","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","getBlazorCurrencySymbol","HijriParser","dateCorrection","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","z","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","mcjdn","julianDate","e","gDay","gMonth","gYear","latnRegex","minute","hour","second","milliseconds","DateParser","dateParser","numOptions","hourOnly","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","opt","periodValur","tval","tzone","hpattern","parseTimeZoneRegx","iString","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","tKeys","century","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","num","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","end","Infinity","NaN","exponent","convertMaxFracDigits","decimalSplitValue","onIntlChange","rightToLeft","cldrData","defaultCulture","defaultCurrencyCode","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","getNumberPattern","getFirstDayOfWeek","setCulture","loadCldr","data_1","getNumericObject","symbPattern","getDefaultDateObject","ChildProperty","parent","propName","defaultValue","isArray","isComplexArraySetter","changedProperties","childChangedProperties","oldProperties","finalUpdate","callChildDataBind","parentObj","controlParent","isParentArray","updateChange","updateTimeOut","changeTime_1","clearUpdate","muteOnChange","curIndex","saveChanges","newValue","oldValue","restrictServerDataBind","serverDataBind","isSaveChanges","action","newChanges","parentKey","getParentKey","complexKeys","isFinal","actionProperty","valueLength","SVG_REG","createElementNS","attrs","attributes","addClass","classes","getClassList","_b","classList_1","curClass","removeClass","canRemove","classList_2","classes_1","classArr","isVisible","visibility","prepend","fromElements","toElement","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","executeScript","append","NodeList","eleArray","forEach","script","head","detach","removeChild","keys_1","iKey","select","needsVDOM","querySelectId","querySelector","selectAll","nodeList","charRegex","idList","list","splitId","setId","closest","nodeType","setStyleAttribute","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector"],"mappings":"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MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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","file":"js/chunk-vendors~58639050.89afb259.4.2.0.js","sourcesContent":["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 { 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';\nvar regExp = RegExp;\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 /* eslint-disable */\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 = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[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 dOptions.isCustomFormat = true;\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[parseInt(i.toString(), 10)];\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(/[d‏M‏]([^d‏M])[d‏M‏]/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[parseInt(x.toString(), 10)] + 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 { 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 *
\n * \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[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], 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[parseInt(j.toString(), 10)] && 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[parseInt(j.toString(), 10)], 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[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].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","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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\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 fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\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, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\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 // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\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[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\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 // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\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 var regExp = RegExp;\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 *
Draggable
\n * \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 _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\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.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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[parseInt(i.toString(), 10)]))) {\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchstart' : 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 if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\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 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\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 if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\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[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\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 + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\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 + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : 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 ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : 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[parseInt(i.toString(), 10)];\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 if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\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 var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\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 if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\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 *
Droppable
\n * \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.isSafari() ? 'touchend' : 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.isSafari() ? 'touchend' : 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","/**\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 var regExp = RegExp;\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[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\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 var regExp = RegExp;\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[parseInt(i.toString(), 10)] > 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 { 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[parseInt(i.toString(), 10)];\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 var regExp = RegExp;\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 regExp = RegExp;\nvar parseRegex = new regExp('^([^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 { 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 { 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[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\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","/**\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 var regExp = RegExp;\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 if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\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[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = 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"],"sourceRoot":""}