{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack:///./src/views/administration/general/State.vue?d18d","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datepicker/datepicker.component.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/multi-select/multiselect.component.js","webpack:///./src/common/syncfusion.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/utils.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-reader.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/tab/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/tab/tab.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./src/views/administration/GeneralMain.vue?c370","webpack:///./src/views/administration/general/Currency.vue?de58","webpack:///src/views/administration/general/Currency.vue","webpack:///./src/views/administration/general/Currency.vue?1abb","webpack:///./src/views/administration/general/Currency.vue","webpack:///./src/views/administration/general/ReferenceType.vue?c3b6","webpack:///src/views/administration/general/ReferenceType.vue","webpack:///./src/views/administration/general/ReferenceType.vue?6678","webpack:///./src/views/administration/general/ReferenceType.vue","webpack:///./src/views/administration/general/Sector.vue?747e","webpack:///src/views/administration/general/Sector.vue","webpack:///src/views/administration/general/State.vue","webpack:///./src/views/administration/general/Sector.vue?3d40","webpack:///./src/views/administration/general/Sector.vue","webpack:///./src/views/administration/general/State.vue?5c67","webpack:///./src/common/worldMap.js","webpack:///./src/views/administration/general/State.vue?afe7","webpack:///./src/views/administration/general/State.vue","webpack:///./src/views/administration/general/StrategyType.vue?f04b","webpack:///src/views/administration/general/StrategyType.vue","webpack:///./src/views/administration/general/StrategyType.vue?3819","webpack:///./src/views/administration/general/StrategyType.vue","webpack:///./src/views/administration/general/DefaultMechanism.vue?a899","webpack:///src/views/administration/general/DefaultMechanism.vue","webpack:///./src/views/administration/general/DefaultMechanism.vue?6e46","webpack:///./src/views/administration/general/DefaultMechanism.vue","webpack:///./src/views/administration/general/Supplier.vue?0b39","webpack:///src/views/administration/general/Supplier.vue","webpack:///src/views/administration/general/PriceArea.vue","webpack:///./src/views/administration/general/Supplier.vue?6d91","webpack:///./src/views/administration/general/Supplier.vue","webpack:///./src/views/administration/general/PriceArea.vue?b9a4","webpack:///./src/views/administration/general/PriceArea.vue?599c","webpack:///./src/views/administration/general/PriceArea.vue","webpack:///src/views/administration/GeneralMain.vue","webpack:///./src/views/administration/GeneralMain.vue?219c","webpack:///./src/views/administration/GeneralMain.vue","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/files.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/uploader.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./src/views/administration/GeneralMain.vue?7663","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/calendar/calendar.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","element","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","position","indexOf","split","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","top","left","getTooltipPosition","classList","remove","popupObj","height","width","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","y","scalingFactors","elementsWithTransform","closest","contains","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","match","map","parseFloat","style","display","parentWithZoomStyle","zoom","pos","getBoundingClientRect","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","undefined","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","body","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","name","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","offsetLeft","pageXOffset","scrollLeft","offsetTop","pageYOffset","scrollTop","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","parseInt","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","DATEWRAPPER","LIBRARY","CONTROL","POPUPWRAPPER","INPUTWRAPPER","POPUP","INPUTCONTAINER","INPUTFOCUS","INPUTROOT","ERROR","ACTIVE","OVERFLOW","DATEICON","ICONS","OPENDURATION","OFFSETVALUE","SELECTED","FOCUSEDDATE","NONEDIT","containerAttr","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isAngular","preventChange","isIconClicked","isDynamicValueChanged","moduleName","isFocused","isBlur","isKeyAction","datepickerOptions","bindEvents","floatLabelType","calculateWidth","inputElement","inputWrapper","buttons","getElementsByClassName","disabled","enabled","setTimeZone","serverTimezoneOffset","offsetValue","value","clientTimeZoneDiff","Date","getTimezoneOffset","serverTimezoneDiff","timeZoneDiff","isDayLightSaving","getTime","updateInput","firstOffset","getFullYear","secondOffset","max","setAllowEdit","allowEdit","readonly","updateIconState","checkInvalidValue","enableMask","notify","module","createInput","updateHtmlAttributeToWrapper","placeholder","updateInputValue","previousElementValue","previousDate","inputValueCopy","ariaAttrs","l10nLocale","globalize","locale","l10n","getConstant","fullScreenMode","updatedCssClassValues","replace","isBindClearAction","bindClearAction","properties","showClearButton","setWidth","tabIndex","addAttributes","isDynamic","formatOptions","isCalendar","disabledDates","isNaN","checkValue","strictMode","validateDate","minMaxUpdates","minMaxUpdate","dateValue","dateString","tempFormat","formatString","dateTimeFormat","calendarMode","formatDate","format","skeleton","calendar","min","changedArgs","errorClass","checkStringValue","val","returnDate","formatDateTime","culture","getDatePattern","checkDateValue","parseDate","valueDate","valueString","invalid","extISOString","basicISOString","test","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keyupHandler","keydownHandler","inputChangeHandler","clearButton","resetHandler","formElement","resetFormHandler","defaultKeyConfigs","keyConfigs","keyboardModules","eventName","keyAction","inputKeyActionHandle","code","unBindEvents","restoreValue","currentDate","stopPropagation","bindClearEvent","clearedArgs","popupUpdate","changeEvent","keyupEvent","createEvent","initEvent","dispatchEvent","preventEventBubbling","interopAdaptor","invokeMethodAsync","setValue","blur","focus","htmlAttributes","updatedClassValues","setStyle","charAt","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","setCssClass","popupWrapper","calendarKeyActionHandle","action","children","selectionStart","selectionEnd","focusArguments","model","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","activeElement","blurArguments","calendarKeyboardModules","calendarElement","firstElementChild","documentHandler","parentElement","depth","toLowerCase","generateTodayVal","focusOut","clickedView","currentView","start","end","length_1","headerTitleElement","defaultAction","keyActionHandle","setActiveDescendant","previousDateTime","querySelectorAll","targetdate","navigateTo","dateOptions","date","pattern","charPattern","len","modifiedValue","toLocaleUpperCase","setFullYear","setHours","getHours","getMinutes","getSeconds","getMilliseconds","createCalendar","modelHeader","modal","relateTo","targetType","zIndex","collision","iconRight","marginRight","swipe","CalendarSwipeHandler","TouchStartHandler","resetCalendar","preventArgs","setAriaAttributes","targetExitViewport","direction","swipeDirection","touchStart","navigateNext","navigatePrevious","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","textContent","modelCloseIcon","modelCloseHandler","modelTodayButton","insertBefore","valueOf","navigatedEvent","navigatedArgs","selectCalendar","requiredModules","modules","args","member","prevent_1","outOfRange","mobilePopupWrapper","popup","appendTo","eventArgs","refreshPosition","openAnimation","setOverlayIndex","tableBodyElement","dlgOverlay","prevent_2","closeEventCallback","prevent","keyboardModule","outerHTML","focusIn","triggerEvent","view","removeAttributes","inputElementCopy","ensureInputAttribute","ngTag","insertAdjacentElement","attributes","cloneNode","validationAttribute","getDefaultKeyConfig","checkHtmlAttributes","hasAttribute","altUpArrow","altDownArrow","escape","enter","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","select","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","shiftTab","tab","nameAttribute","attribute","attr","checkFormat","skeletonString","dynamic","checkView","attributes_1","valueCopy","previousValCopy","renderDayCell","inputVal","dateIdString","isDisabledDate","setMilliseconds","setPlaceholder","setReadonly","setEnabled","setLocale","setEnableRtl","setClearButton","removeFloating","addFloating","day","month","year","hour","minute","second","dayOfTheWeek","ForeignKey","parent","serviceLocator","isDestroyed","on","initForeignKeyColumns","getForeignKeyData","generateQueryFormData","columns","dataSource","eventfPromise","query","column","state","getStateEventArgument","def","deff","dataModule","getDataModule","requestType","foreignKeyDataState","isDataChanged","setForeignKeyDataState","isPending","resolver","resolve","promise","then","setColumnData","setForeignKeyData","foreignColumns","getForeignKeyColumns","allPromise","_loop_1","isComplex","this_1","genarateColumnQuery","genarateQuery","result","params","ready","offline","executeQuery","Promise","all","responses","columnData","editType","edit","fields","foreignKeyField","field","text","foreignKeyValue","catch","log","reject","predicate","fromData","needQuery","gObj","predicates","allowPaging","enableVirtualization","allowGrouping","groupSettings","records","executeLocal","filteredValue","distinct","getDay","operator","matchCase","where","or","queryColumn","isFiltered","isTrue","filterQuery","searchSettings","sSettings","adaptor","searchQuery","search","ignoreCase","filterColumn","filterSettings","filter","fColumn","uid","destroyEvent","off","modelProps","testProp","props","watch","emitProbs","modelProps_1","props_1","DatePickerComponent","mixins","emits","provide","custom","data","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","isVue3","templateCollection","created","_trigger","bindProperties","_setProperties","updated","h","slots","$slots","default","methods","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","ele","__vue__","$destroy","muteOnChange","referModels","vueInstance","$emit","eventProp","successHandler","propKey","$props","isLazyUpdate","addDate","dates","createContent","removeDate","DatePickerPlugin","install","Vue","component","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","Uint8Array","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","floor","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","get","enumerable","configurable","compressedString","String","fromCharCode","write","offset","Error","encode","getBytes","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","s","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","set","subarray","updateHash","m","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","distance","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","count","uint","Uint32Array","pendingBufferFlushBits","isClose","array","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","temp","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pPos","leafsCount","nodesCount","child","values","node","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","path","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","floatLinelement","floatLabelElement","innerText","encodePlaceholder","updateFloatLabelState","label","componentWrapper","placeholderText","placeholderElement","floatLine","setPlaceHolder","floatLabelFocus","floatLabelBlur","spanElement","hiddenInput","FOCUS","DISABLED","OVER_ALL_WRAPPER","ELEMENT_WRAPPER","ELEMENT_MOBILE_WRAPPER","HIDE_LIST","DELIMITER_VIEW","CHIP_WRAPPER","CHIP","CHIP_CONTENT","CHIP_CLOSE","CHIP_SELECTED","SEARCHBOX_WRAPPER","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","REMAIN_WRAPPER","CLOSEICON_CLASS","DELIMITER_WRAPPER","POPUP_WRAPPER","INPUT_ELEMENT","RTL_CLASS","CLOSE_ICON_HIDE","MOBILE_CHIP","FOOTER","HEADER","DISABLE_ICON","SPINNER_CLASS","HIDDEN_ELEMENT","dropdownIcon","iconAnimation","TOTAL_COUNT_WRAPPER","BOX_ELEMENT","FILTERPARENT","CUSTOM_WIDTH","FILTERINPUT","MultiSelect","option","clearIconWidth","previousFilterText","isValidKey","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","mode","isGroupChecking","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","allowCustomValue","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","htmlAttr","updatedClassValue","enable","refreshPlaceHolder","defaultAttr","validateAttr","hiddenElement","updateReadonly","updateClearButton","overAllClear","parentNode","updateOldPropCssClass","oldClass","onPopupShown","allowFiltering","proxy_1","onpopstate","hidePopup","history","pushState","animModel","focusAtFirstListItem","groupBy","updateListItems","list","mainList","showDropDownIcon","refreshPopup","updateAriaActiveDescendant","isFirstClick","loadTemplate","showSelectAll","clickHandler","listItems","mainListItems","findGroupStart","deselectHeader","refreshListItems","removeFocus","setScrollPosition","valueEle","findListElement","ulElement","scrollBottom","li","addListFocus","focusAtLastListItem","liCollections","item","isPopupOpen","getAriaAttributes","ariaAttributes","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","selectedElem","chipCollectionWrapper","elements","tempValues","customValue","getFormattedValue","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","listData","refreshSelection","checkPlaceholderSize","removeSelectedChip","onActionFailure","targetInputElement","getForQuery","valuecheck","getQuery","clone","onActionComplete","isUpdated","updateSelectElementData","proxy","checkEle","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","ignoreAccent","checkForCustomValue","mainData","mainListCollection","remoteCustomValue","inputFocus","tempQuery","unwireListEvents","wireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","selected","previousSibling","previousElementSibling","group","nextElementSibling","hideGroupItem","listEle","l10nUpdate","noData","ariaValue","checkSelectAll","checkMaxSelection","element1","j","temp1","getValidLi","liElement","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","showPopup","keyUp","char","isWordCharacter","ctrlKey","expandTextbox","showOverAllClear","remoteFilterAction","dataUpdater","filterAction","dataType","typeOfData","typeof","filterType","isDataFetched","backCommand","resetList","dataChecks","getValueByText","customData","dataItem","random","tempData","JSON","parse","stringify","isRemoteSelection","getNgDirective","wrapperClick","onBlurHandler","eve","isDocClickFromCheck","isIE","addTagOnBlur","listLiElement","allowChipAddition","updateListSelection","updateDataList","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","paddingRight","downIconWidth","dropIcon","setPlaceholderSize","validateValues","newValue","oldValue","sort","newVal","oldVal","initStatus","updateTempValue","getPagingCount","getItems","pageUpSelection","collection","previousItem","getIndexByValue","pageDownSelection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","resolveCollision","checkTextLength","popupKeyActions","updateAriaAttribute","focusedItem","filterInput","homeNavigation","isHome","scrollEle","onKeyDown","altKey","activeIndex","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","selectedLI","currentOffset","nextBottom","nextOffset","boxRange","fixedHeaderElement","isValidLI","lastElementChild","selectAllItem","selectAllCheckBox","childNodes","addChipSelection","moveByTop","filterInputClassName","updateCheck","checkElement","chipClick","elem","onChipRemove","which","button","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","concat","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","getDataByValue","itemData","removeIndex","hideElement","scrollStop","removeChip","targetEle_1","isSelectAllTarget","items","isChecked","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","checkTemplate","exception","encodeHtmlEntities","input","charCodeAt","compiledString","chip","chipContent","valueTemplate","valueCompTemp","valueTemplateId","isStringTemplate","setClass","classes","isPreventChange","popupWidth","inputWidth","mouseIn","mouseOut","listOption","iconCss","fieldProperty","listCurrentOptions","showIcon","groupItemRole","checkboxFilter","filterParent","overAllHeight","popupHeight","visibility","headerTemplate","setHeaderTemplate","header","footerTemplate","setFooterTemplate","footer","selectAllHeight","popupElement","searchBoxHeight","maxHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","headercheck","headerTemplateId","onListMouseDown","footercheck","footerTemplateId","clearAll","selectAllItems","selectedElementID","resetValueHandler","textVal","wireEvent","onInput","pasteHandler","info","eventArgs_1","preventDefaultAction","updateData","initializeData","updateDataAttribute","getLocaleName","initial","delim","valueLength","hiddenElementContent","valueItem","listValue","getTextByValue","updateWrapperText","addValidInputClass","textArr","renderList","isEmptyData","noRecordsTemplate","childElementCount","removeListSelection","indexItem","noDataEle","addItem","replaceChild","updateActionCompleteData","updateAddItemList","itemCount","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","itemTemplate","removeHover","temp_1","fieldValue","data_1","newData","selectedItems","selectItems","hoveredItem","hover","mainlist","addListHover","ariaCheck","delimChar","onMouseClick","headerLi","liChecked","liUnchecked","groupValues","findGroupAttrtibutes","updateCheckBox","listElement","checked","unChecked","groupHeader","checkBoxElement","onMouseOver","currentLi","onMouseLeave","onDocumentClick","showSpinner","spinnerElement","filterClear","hideSpinner","wrapperType","wrapperData","tempIndex","wrapperleng","remaining","overAllContainer","actionFailureTemplate","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","paddingLeft","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","firstChild","nodeType","nodeValue","removeChild","remainTemp","totalTemp","pop","newTemp","unWireEvent","groupTemplate","selectionLimit","focusedElement","textboxValueUpdate","updateValue","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","setZIndex","updateDataSource","onLoadSelect","isDynamicDataChange","setUpdateInitial","updateVal","filterBarPlaceholder","dropDownIcon","reInitializePoup","removeScrollEvent","msProps","getPropObject","newProperty","oldProperty","itemIndex","mainLiLength","liLength","selectAll","spellcheck","autocomplete","tabindex","opacity","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","MultiSelectComponent","MultiSelectPlugin","CustomWebApiAdaptor","_WebApiAdaptor","_classCallCheck","_callSuper","_inherits","_createClass","dm","xhttp","p3","originalFail","onFailure","err","token","authToken","logger","apis","unprotectedApi","put","Token","resp","rules","getPermissions","checkUIPermissions","navigateToLogin","location","pathname","_superPropGet","WebApiAdaptor","SyncHelper","getDataManager","relativePath","queryString","DataManager","url","urls","apiBaseUrl","crossDomain","headers","Authorization","Data","dataState","initDataManager","addRows","reorderRows","removeRows","crudActions","getData","refreshFilteredCols","dataManager","json","toIndex","fromIndex","isQueryInvokedFromData","isVue","generateQuery","skipPage","isAutoCompleteCall","columnQueryMode","getColumns","isPrimaryKey","visible","selectQueryFields","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","groupQuery","rows","aggregates","row","cols","types","k","aggregate","fName","queries","enableInfiniteScrolling","pageSettings","currentPage","pageCount","pageSize","infiniteScrollModule","page","pagerModule","pagerObj","isAllPage","isManualRefresh","enableLazyLoading","lazyLoad","getColumnByField","columnName","isGrpFmt","enableGroupByFormat","formatGroupColumn","allowSorting","sortSettings","sortGrp","col","setSortDirection","fn","sortComparer","isRemote","isForeignColumn","sortByForeignKey","sortBy","getSortDirection","fcolumn","isForeignKey","getSearchColumnFieldNames","predicateList","needForeignKeySearch","some","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","colType","foreignCols","defaultFltrCols","columns_1","gridColumn","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","getPredicate","_c","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","_f","_g","and","fPredicate","getKey","foreignKeyData","getPrimaryKeyFieldNames","eventPromise","crud","fromTable","changes","addedRecords","deletedRecords","changedRecords","saveChanges","requiresCount","insert","isArray","deferred_1","getFormatter","formatVal","toView","pr","update","previousData","original","endEdit","setState","getState","getForeignKeyDataState","adaptr","processQuery","pvtData","dataArgs","disablePageWiseAggregates","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","OTHERMONTH","OTHERDECADE","CONTENTTABLE","YEAR","MONTH","DECADE","PREVICON","NEXTICON","PREVSPAN","NEXTSPAN","ICONCONTAINER","OVERLAY","WEEKEND","WEEKNUMBER","FOCUSEDCELL","OTHERMONTHROW","TODAY","TITLE","LINK","CELL","WEEKHEADER","ZOOMIN","BTN","FLAT","CSS","PRIMARY","DAYHEADERLONG","dayMilliSeconds","minutesMilliSeconds","CalendarBase","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","setSeconds","firstDayOfWeek","getFirstDayOfWeek","todayDisabled","todayDate","createHeader","spacebar","altRightArrow","altLeftArrow","ariaPrevAttrs","ariaNextAttrs","ariaTitleAttrs","tabIndexAttr","headerElement","iconContainer","previousIcon","selector","isCenterRipple","nextIcon","adjustLongHeaderSize","contentElement","table","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","selectedDate","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","obj","toCapitalize","toUpperCase","daysCount","html","tableHeadElement","weekNumber","shortNames","shiftArray","days","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","today","todayButtonClick","ref","keyConfig","navigateTitle","dateWireEvents","serverModuleName","isCustomDate","getViewNumber","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","title","firstDay","lastDay","addMonths","addYears","number","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","cellsCount","getDate","timezone","currentMonth","getMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isDisabled","isOutOfRange","argument","renderDayCellEvent","argsDate","localDateString","tempDateString","otherMnthBool","disabledCls","getDateVal","tempValue","copyValues","type_1","formatOptions_1","localDateString_1","tempDateString_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","setMonth","setDate","localMonth","yearCell","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","timeOffset","abs","findLastDay","classNm","trEle","weekNumCell","numberCell","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","toGregorian","switchView","keyEntity","skipIndex","tempValueString","minFormatOption","minStringValue","minString","maxFormatOption","maxStringValue","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","previous","islamicPrevious","next","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","ceil","time","tzOffset","tzOffsetDiff","setTime","getMaxDays","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","previousValue","checkPrevious","compare","startDate","endDate","modifier","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","timeZone","Calendar","isMultiSelection","copyDate","previousValues","setEnable","form","formResetHandler","setMinutes","changeHandler","triggerChange","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","tempDates","setTodayDate","Number","NaN","highlightSearch","ignoreRegex","replaceQuery","findTextNode","RegExp","revertHighlightSearch","parent_1","createTextNode","icon","AutoComplete","_this_1","searchList","virtualGroupDataSource","mapping","suggestionCount","queryElements","take","takeValue","getTakeValue","skip","virtualItemStartIndex","searchLists","isTyped","isSelectCustom","checkAndResetCache","isSelected","isNoDataElement","minLength","isFiltering","isPreventScrollAction","previousStartIndex","virtualListInfo","getTransformValues","virualElement","GetVirtualTrackHeight","totalItemCount","getFilteringSkeletonCount","property","postBackAction","autofill","searchItem","setAutoFill","setSelection","setHoverList","preventAutoFill","isKeyNavigate","fieldsSettings","itemCreated","highlight","isHtmlElement","itemCreated_1","isEditTextBox","isPopupButton","showPopupButton","isSelectFocusItem","setInputValue","typedString","allowCustom","setOldText","setOldValue","checkFields_1_1","listLength_1","_this_2","updateValues","viewPortInfo","startIndex","previousEndIndex","endIndex","appendSpan","dropDownClick","atcProps","renderHightSearch","isHighlight","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","change","beforeOpen","initialFrozenColumnIndex","LABEL","RIPPLE","WRAPPER","ATTRIBUTES","RadioButton","RadioButton_1","updateChange","instance","radioGrp","getRadioGroup","angularValue","radioWrap","wrapper","unWireEvents","forEach","refreshing","focusHandler","focusOutHandler","getLabel","getSelectedValue","getWrapper","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","rippleSpan","for","setText","keyUpHandler","labelMouseDownHandler","labelMouseLeaveHandler","rippleElem","labelMouseUpHandler","wrap","labelPosition","formControlName","textLabel","rippleLabel","getElementsByTagName","click","Column","disableHtmlEncode","allowResizing","allowReordering","showColumnMenu","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","toJSON","commands","textAlign","template","commandsTemplate","templateFn","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","ddEditedData","a_1","xObj","yObj","z","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","Scroll","oneTimeReady","widthService","addEventListener","uiupdate","setWidthToColumns","toolbarModule","toolbar","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","enableAdaptiveUI","refreshOverflow","setHeight","mHdrHeight","getContent","enableColumnVirtualization","isFrozenGrid","getScrollBarWidth","frozenRows","getHeaderContent","height_1","getRowHeight","isInitialLoad","loadingIndicator","indicatorType","ensureOverflow","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","border","padding","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","setScrollLeft","removeEventListener","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","userAgent","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isHeader","isPreventScrollEvent","errorFreeze","errorFixed","getVisibleFrozenLeftCount","widthVal","getVisibleFrozenRightCount","isEdit","isLeft","isDown","scrollDown","isFooter","cont","hdr","pointerType","isFrozen","pageXY","getPointXY","mHdr","mCont","scrollBar","getScrollbleParent","scrollingElement","overflowY","defaultView","scrollHeight","addStickyListener","isAdd","eventElement","makeStickyHeader","resizeFrozenRowBorder","div","frzCols","enableStickyHeader","sLeft","sHeight","getContentTable","setLastRowCell","css","contentRect","getClientRects","headerEle","toolbarEle","groupHeaderEle","parentTop","top_1","colMenuEle","bottom","elemTop","showDropArea","setSticky","ccDlg","topStyle","gridElement","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","generateRows","buildSummaryData","getGeneratedRow","level","parentUid","summaryRow","raw","tmp","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","class","cells","isAggregateRow","cell","isDataCell","cellType","indent","sColumn","scolumn","headerText","dummy","summaryRows","single","setTemplate","helper","a","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","prev","cur","isEmpty","CaptionSummary","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","inserted","mCell","isIntersecting","intersectingCell","Width","Height","base","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","strikeThrough","wrapText","hAlign","vAlign","rotation","numberFormat","borders","Borders","isGlobalStyle","Font","sz","u","color","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","lineStyle","right","Row","Rows","Image","Cell","Cells","Utils","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteToString","str","byteIntToString","arrayCopy","source","sourceIndex","destination","destinationIndex","dataToCopy","mergeArray","arrayOne","arrayTwo","mergedArray","encodedString","chr1","chr2","chr3","encode1","encode2","encode3","encode4","keyStr","resultIndex","totalLength","output","DecompressorHuffmanTree","init","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","tree","pointer","increment","revcode","subTree","treeLen","m_Tree","unpackSymbol","lookahead","symbol","peekBits","skipBits","subtree","bitlen","availableBits","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","CompressedStreamReader","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","DOMException","mInputStream","readZLibHeader","decodeBlockHeader","fillBuffer","bitMask","mBuffer","bytesRead","read","readInt16","pow","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","lengthComplement","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","tempArray","readHuffman","free","dataRead","readdata","numDataRead","numReadMore","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","extra","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","readInt32","DEF_REVERSE_BITS","Stream","inputStream","byteLength","readByte","toByteArray","CRC32TABLE","INT_SIZE","SHORT_SIZE","CentralDirectoryEndSignature","CentralDirSizeOffset","CentralHeaderSignature","BufferSize","ZipArchive","initCrc32Table","files","isMicrosoftBrowser","navigator","msSaveBlob","file","ZipArchiveItem","addDirectory","directoryName","getItem","base64String","zipByteArray","lCentralDirEndPosition","findValueFromEnd","iCentralDirSize","ReadInt32","lCentralDirPosition","readCentralDirectoryDataAndExtractItems","itemHelper","readCentralDirectoryData","readData","checkCrc","decompressData","unCompressedStream","save","fileName","zipArchive","saveInternal","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","reader_1","FileReader","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","nextIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","shift","writeFooter","Blob","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","bytes","modTime","modiDate","lStreamSize","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","ReadInt16","ReadUInt16","ZipArchiveItemHelper","headerSignature","crc32","compressionMethod","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","localHeaderOffset","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","reader","compressedStream","iReadBytes","iNameLength","iExtraLength","headerVal","dataStream","iBytesLeft","iBytesToRead","itemName","decompressedStream","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","displayText","CsvHelper","separator","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","error","has","dataUrl_1","URL","createObjectURL","dwlLink","createElementNS","download","href","event_1","revokeObjectURL","encodingType","encoding","encodeString","BlobHelper","parts","append","part","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","currency","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","category","company","manager","subject","createdDate","modifiedDate","tags","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","fromJson","toJson","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","rowIndex","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","colSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","rgbColors","processCellValue","cellValue","processedVal","startindex","processString","substring","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","changeNumberFormats","regex","returnFormat","getNumberPattern","useGrouping","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","value_1","sstvalue","imagesLength","image","parserImage","lastRow","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_h","_j","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","ArrayBuffer","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","alignment","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","topRelation","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","isLeapYear","timeToTicks","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","AriaService","setOptions","setStateAndProperties","config","setExpand","expand","setSort","setBusy","isBusy","busy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","multiselectable","haspopup","colcount","rowcount","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_HSCROLLBAR","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","el","ej2_instances","tempId","destroyItems","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollStep","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","trgt","clst","keyHandling","navChk","scrollChk","nodes","rootEle","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","ele_1","activeEleRemove","tbarScrollChk","disable","eleContains","sib","skipEle","tbrItems","itemObj","isPopupElement","clsList","popupNav","popupClickHandler","tempItem","clickedArgs","getElementOffsetY","minHeight","renderControl","portals","ariaAttr","renderItems","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","createPopupIcon","innerNavDom","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","eleStyles","borderRightWidth","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","scrollVal","scrollY","innerHeight","overflowHeight","tbEleData","popupOffset","documentElement","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","nav","navItem","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","state_1","refreshPositioning","margin","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","enableItems","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","regEx","tempStr","toolbarTemplateID","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","curEle","multirowele","updateHideEleTabIndex","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","innerItems_1","CLS_ROOT","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","scroll","touchHandler","swipeHandler","createOverlay","createNavIcon","setScrollState","scrollDiv","innerEle_1","overflowX","scrollItems","overlay","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","clearInterval","timeout","scrollDis","timeoutFun","setInterval","isContinuous","frameScrollRequest","swipeEle","velocity","distanceX","animate","step","sin","cancelAnimationFrame","requestAnimationFrame","scrollUpdating","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","Reorder","idx","headerDrop","enableAfterRender","drag","dragStart","dragStop","createReorderElement","keyPressHandler","chkDropPosition","srcElem","destElem","bool","lockColumn","isEqualNode","targetParentContainerIndex","chkDropAllCols","isFound","getHeaderCells","findColParent","cnt","getColumnsModel","isNotStackedHeader","columnModel","subCols","dropElement","uId","destElemDiv","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","newIndex","destElement","oldIdx","isActionPrevent","destIndex","reorderByColumn","preventRefresh","handler","arg1","arg2","getColParent","srcIdx","lockcolPositionCount","frozenColumns","getFrozenLeftCount","getFrozenRightColumnsCount","toColumnUid","cols_1","refreshColumnIndex","stackedHdrColumn","getStackedColumns","stackedCols","getAllStackedheaderParentColumns","flatColumns","parents","reorderSingleColumn","fromFName","toFName","reorderMultipleColumns","fromFNames","getColumnIndexByField","getColumnByIndex","moveTargetColumn","reorderSingleColumnByTarget","fieldName","reorderMultipleColumnByTarget","reorderColumns","fromCol","reorderColumnByIndex","reorderColumnByTargetIndex","isXaxis","setDisplay","upArrow","downArrow","getColumnHeaderByField","focusModule","onClick","isMacLike","platform","metaKey","currentInfo","visibleCols","getVisibleColumns","toCol","cloneElement","getHeaderTable","stopTimer","updateScrollPostion","updateArrowPosition","draggableType","cliRect","cliRectBaseRight","cliRectBaseLeft","scrollElem","timer","cliRectBase","TabItemsDirective","inject","getTag","TabItemsPlugin","TabItemDirective","TabItemPlugin","TabComponent","addTab","enableTab","getItemIndex","tabItemId","hideTab","refreshActiveTab","refreshActiveTabBorder","removeTab","TabPlugin","ExportHelper","hideColumnInclude","parentDetails","totalRecordsCount","getFData","getGridRowModel","isExpand","hierarchyPrintMode","expandedRows","generateCells","processColumns","childGridLevel","generateCell","getColumnData","gridObj","columnPromise","fColumns","colData","getHeaders","isHideColumnInclude","colDepth","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","gridRows","StackedHeader","isIgnoreFirstCell","Header","columnIndexes","getColumnIndexesInView","len_1","HeaderIndent","checkAndExport","gridPool","globalResolve","failureHandler","childGridObj","createChildGrid","exportType","detailRowModule","getGridModel","isPrinting","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","exportId","isExportGrid","getGridExportColumns","actualGridColumns","gridColumns","ExportValueFormatter","internationalization","returnFormattedValue","customFormat","formatCellValue","cFormat","ExcelExport","locator","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isChild","isElementIdChanged","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","getService","isExporting","exportValueFormatter","grid","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","Child","workbk","isMultiEx","hierarchyExportMode","gridObject","processRecords","exportingSuccess","blobPromise","gridInstance","allPromise_1","processInnerRecords","getCurrentViewRecords","query_1","isCountRequired","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","processGridExport","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","headerRows","initialIndex","childRows","excelRows","theme","gColumns","headerRow","groupIndent","processHeaderContent","groupData","lazyloadData","acc","curr","lazQuery","contentModule","lazyLoadQuery","currentViewData","processRecordContent","capTemplate","returnType","currentViewRecords","excelRow","record","processRecordRows","processGroupedRows","GroupGuid","processAggregates","excelExportProperties","dataSource_1","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","span","col_1","templateRowHeight","gCell","valueAccessor","arr","fkData","excelCellArgs","base64","setImage","getColumnStyle","parentRow","processDetailTemplate","returnVal","actionFailure","beforeDataBound","childGridCell","rowObj","templateData","detailCellIndex","detailIndent","columnHeader","processCell_1","currentCell","getHeaderThemeStyle","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","processRow","currentRow","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","columnsDetails","getAggreateValue","Sum","Average","Max","Min","Count","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","row_1","dummyOutlineLevel","dummyGrouping","txt","JSON1","JSON2","attrname","columnIndex","headerRotation","degree","spannedCells","parseStyles","currentCellIndex","gridCell","DetailHeader","getIndex","spannedCell","headerTextAlign","excelHeaderCellArgs","updateThemeStyle","themestyle","caption","noRows","updatedCellIndex","footerRows","spannedCells_1","getCloneProperties","Print","isAsyncPrint","defered","isContentReady","actionBeginFunction","actionBegin","onEmpty","hierarchyPrint","isPrintGrid","contentReady","removeColGroup","printGridObj","printModule","print","renderPrintGrid","printGrid","getFrozenColumns","load","getInjectedModules","injectedModues","setInjectedModules","printgrid","selectedRows","contentDiv","headerDiv","waitingPop","printGridElement","printWind","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","groupCaption","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","WRAPPERCLASS","POPUPDIMENSION","DAY","HOVER","NAVIGATION","ICONANIMATION","LISTCLASS","HALFPOSITION","ANIMATIONDURATION","OFFSETVAL","EDITABLE","wrapperAttributes","TimePickerBase","createListItems","createdEl","timeFormat","interval","timeCollections","listTag","createList","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","keyConfigure","down","up","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","anchor","inputEleValue","getDateObject","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","initValue","defaultCulture","checkTimeFormat","checkInValue","scrollTo","checkAttributes","localeText","isNavigate","isPreventBlur","isTextSelected","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrTime","dateFormat","cldrFormat","isInvalid","valueExpression","valueExp","setCurrentDate","cldrDateTimeString","getCultureTimeObject","ariaAttribute","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","getPopupHeight","rippleModel","containerStyle","setPopupWidth","unWireListEvents","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","disableElement","selectInputText","setSelectionRange","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","listHeight","liHeight","initialTime","scrollTime","getText","getValue","cldrTimeFormat","cldrDateFormat","cldrDate","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","closePopup","mouseDownHandler","curPos","cursorDetails","focusSelection","isSeparator","keyHandler","objToString","createMask","previousState","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","isNavigation","valueProcess","prevValue","setHover","minVal","maxVal","dateVal","strictOperation","maxValue","minValue","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","removeSelection","validateValue","newval","findNextElement","timeVal","collections","selectNextItem","validLiElement","elementValue","backward","elementIndex","isCheck","nextItem","isUpdate","getHoverItem","setActiveClass","formatStr","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","DATEPICKERROOT","DATETIMEWRAPPER","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","DateTimePicker","scrollInvoked","formatRegex","dateFormatString","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","cldrDateTime","isDatePopupOpen","toggle","listCreation","dateObject","TimePopupFormat","startTime","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","modelWrapper","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","nextElement","lineHeight","listContent","getFullDateTime","tempVal","combineDateTime","minutes","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","range","method","hours","milliseconds","tempStartValue","tempMin","formatCount","formatValueSpecifier","formattext","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","getDateParser","getNumberParser","fromView","setCulture","FilterCellRenderer","getGui","tr","innerDIV","fltrData","isReactCompiler","isReactChild","parentInstObj","tempID","renderTemplates","filterBarTemplate","Element","clearIconElem","localeObj","appendHtml","showFilterBarOperator","operatorIconRender","templateWrite","innerHtml","operators","fbicon","filterModule","dropOptr","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","ddOpen","dropDownOpen","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","dlgObj","dialogObj","optr","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","valInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","StringFilterUI","serLocator","processDataOperation","getAutoCompleteOptions","foreignColumnQuery","filteredData","getDistinct","enableCaseSensitivity","autoComplete","sortOrder","localizeText","acFocus","acComplete","actionComplete","acOpen","defObj","deffered","actObj","afterRenderFilterUI","struiObj","filterOptr","filterObj","actuiObj","filterValue","filterByColumn","getOptrInstance","mapObj","NumberFilterUI","keyEventHandler","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","ddComplete","drpuiObj","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","dateuiObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearCustomFilter","clearBtnClick","applyCustomFilter","filterBtnClick","openDialog","renderDlgContent","closeDialog","getElementById","columnType","filterModel","mainDiv","dlgDiv","responsiveCnt","showCloseIcon","closeOnEscape","dialogCreated","buttonModel","isPrimary","animationSettings","renderResponsiveDialog","isModal","currentDialogCreatedColumn","renderFilterUI","ui","writeMethod","renderFlValueUI","menuOperator","valueDiv","fObj","instanceofFilterUI","valueInString","compElement","cBox","getAllData","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","closeResponsiveDialog","removeFilteredColsByField","getFilterUIInfo","renderCheckBoxMenu","updateModel","getAndSetChkElem","btnClick","getLocalizedLabel","dlg","sBox","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","clearFilter","fltrBtnHandler","ExcelFilterBase","childRefs","eventHandlers","focusedMenuItem","isExcel","getCMenuDS","string","datetime","dateonly","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","menu","ul","isResponsiveFilter","hdrele","getColumnHeaderByUid","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","menuItem","focusNextOrPrevElement","focusableElements","focusClassName","shiftKey","focusClass","excelSetFocus","from","prevElem","isCMenuOpen","contextKeyDownHandler","cmenu","submenu","selectedMenu","menuOptions","selectHandler","onClose","beforeClose","preventClose","client","contextRect","getContextBounds","innerWidth","getCMenuYPosition","existingPredicate","isFilterBack","MouseEvent","contextWidth","targetPosition","leftPos","targetBorder","showDialog","filterLength","filteredColumns","renderDialogue","complexFieldName","overlayClick","dropDownList","templateField_1","createdDialog","rowResponsiveDlg","destroyTemplate","removeObjects","renderCustomFilter","dialog","dlgFields","fieldSet","displayName","checkBoxValue","colValue","fValue","fOperator","sValue","sOperator","checkBox","andRadio","firstOperator","firstValue","secondOperator","secondValue","mPredicate","fColl","arg","arg3","arg4","arg5","arg6","arg7","arg8","filterCollection","ejpredicate","actualPredicate","foreignKeyFilter","elementID","isFirst","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","includes","getSelectedText","renderRadioButton","td","radioDiv","frstpredicate","secndpredicate","renderMatchCase","orRadio","elements_1","elementId","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","checkbox","inputValue","isRtl","datePicker","dateTimePicker","completeAction","numericTextBox","colObj","acActionComplete","mapObject","columnvalue","ExcelFilter","excelFilterBase","isCustomFilter","Filter","contentRefresh","filterByMethod","cellText","nextFlMenuOpen","filterOperators","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","wildCard","isNull","notNull","like","fltrDlgDetails","skipNumberInput","skipStringInput","setFullScreenDialog","getObject","getLocalizedCustomOperators","fltrElem","rowRenderer","cellrender","addCellRenderer","generateRow","rowdrag","detail","gCells","case","showCustomFilter","responsiveDialogRenderer","isCustomDialog","showResponsiveDialog","renderResponsiveChangeAction","setFilterModel","updateFilterMsg","dropdownlist","filterBarElement","registerAdaptiveService","isFilter","getFrozenMode","RowDragHIcon","filterObjIndex","getFilteredColsIndexByField","prevFilterObject","arrayVal","isMenuNotEqual","currentFilterObject","actualFilterValue","actualOperator","i_1","isRemove","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","initialEnd","initialLoad","columnPositionChanged","filterMenuClose","docClickHandler","refreshClearIcon","columnMenuFilter","filterIconClickHandler","targetText","filterOperator","filterCell","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","flag","colLen","actualData","checkboxPrevFilterObject","checkboxFilterObject","iconClass","filterIconElement","updateFilterIcon","refreshFilterSettings","updateFilter","updateExternalMessage","refreshHeader","filterElement","getFilterBarElement","fltrIconElement","refreshFilter","clearFiltering","renderModule","colUid","f","filteredcols","fltrElement","filterDialogOpen","createOptions","hideSearchbox","filterHandler","localizedStrings","getLocaleConstants","allowCaseSensitive","parentTotalDataCount","totalDataRecordsCount","getFilteredRecords","parentCurrentViewDataCount","parentFilteredLocalRecords","isClearFilterBar","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","clearIndicator","updateCrossIcon","getFormatFlValue","showFilterBarStatus","formater","isSkip","operatorSymbols","startTimer","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","dateonlyOperator","booleanOperator","gClient","fClient","filterOperatorElement","inputId","datepickerEle","hasDialog","hasDialogClosed","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","inputObject","ComboBox","preventBlur","targetFocus","onFilterUp","onFilterDown","bindCommonEvent","valueMuteChange","setHiddenValue","detachChangeEvent","getElementByText","getElementByValue","isExistItem","getItemData","clearIconHide","incrementalSearch","setSearchBox","searchBoxContainer","inlineSearch","getFocusElement","isDropDownClick","sortedData","activeItem","updatingincrementalindex","incrementalEndIndex","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","skeletonCount","fixedHead","selectedLiOffsetTop","removeFillSelection","checkCustomValue","disableIcon","isHover","currentValue","currentFillValue","updateSelectedItem","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","getSelectionPoints","prevEnd","prevSelectPoints","curEnd","prevStart","curStart","focusItem","selection","substr","unBindCommonEvent","selectCurrentItem","onChangeEvent","preventFocus","onFocus","previousValue_1","updateCustomValueCallback","changeData","checkData","setReadOnly","comboProps","isEscape","isEscapeKey","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tempCells","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isDataRow","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","_loop_2","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","CommandColumn","requireTemplateRef","isTemplate","thisRef_1","requestTypeAction","isRowSpanned","rowsObject","getRowsObject","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","emptyColspan","getFrozenLeftColumnsCount","freezeCells","oldColspan","colspan","rowHeight","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","isDraggable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","vFTable","summarycell","lastSummaryCell","firstSummaryCell","thisRef","eventArg","selectionModule","isPartialSelection","selRowIndex","chkBox","isDrag","cellIdx","isDetail","isAltRow","isCaptionRow","rowindex","dataUID","ariaSelected","RowModelGenerator","getInfiniteIndex","enableImmutableMode","ensureColumns","RowDragIcon","pid","tIndex","parentGid","enableAltRow","refreshForeignKeyRow","foreignKeyColumns","dummies","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","deltaY","swipeElement","distanceY","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","ErrorOption","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","required","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","digits","rangeLength","tel","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validate","validateRules","rules_1","name_1","clearForm","getInputElement","validClass","elements_2","inputParent","grandParent","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","rule","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","message","annotationMessage","getErrorMessage","isCheckable","submitHandler","clearEvents","excludeKeys","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","inputName","isValid","ignore","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","param","currentRule","checkValidator","ruleValue","formats","errorOption","Message","errorContainer","containerId","divElement","customPlacement","nextSibling","checkRequired","inputType","uNum","compareTo","Label","HeaderRender","frzIdx","notfrzIdx","isFirstCol","isReplaceDragEle","draggable","currentStateTarget","parentEle","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","colIndex","pointerEvents","drop","droppedElement","ariaService","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","renderPanel","isRendered","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","getRows","tHead","createTable","tableEle","tableName","cellspacing","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","updateColGroup","colHeader","indexes","len_2","enablePersistence","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","getColSpan","isFirstCol_1","isLaststackedCol","getColumnIndexByUid","lockColsCount","displayVal","clen","getNormalizedColumnIndex","refreshUI","freezeReorder","appendContent","updateDefaultCursor","firstHeaderCell","stackedHdr","dragTarget","abort","droppableDestroy","droppable","accept","toolbarItems","toolbarLeft","toolbarItem","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","localizer","fltrMenuEle","prepareHeader","clean","hValueAccer","elementDesc","headerValueAccessor","checkAllWrap","buildAttributeFromCell","matchFlColumns","customAttributes","extendPrepareHeader","headerTempID","isReactChild_1","copied","clipMode","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","tempObj","getTemplate","tempValue_1","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","infiniteScrollSettings","enableCache","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","refreshDataManager","flIcon","Columns","headerCell","allowSelection","searchString","pageSizes","checkAll","dataLength","prevPageMoving","lazyLoadRender","getGroupCache","refreshContentRows","resetTemplates","detailTemplateID","toolbarTemplate","guid","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","showMaskRow","virtualInfo","sentinelInfo","axis","isFActon","isNeedForeignAction","deffered_1","validateGroupRecords","dataManagerSuccess","dataManagerFailure","deferred","foreignKey","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","isTrigger","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","renderEmpty","dynamicColumnChange","updateColumnType","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","prevCurrentView","removeMaskRow","updatesOnInitialRender","agg","immutableModeRendering","alert","setRowElements","setRowObjects","preventAdjustColumns","setRowCount","setFirstFocusableTabIndex","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","groups","curDm","curFilter","newQuery","rPredicate","updateGroupInfo","current","untouched","uGroup","itemGroup","uGroupItem","l","context","customAggregate","CellRendererFactory","cellRenderMap","ServiceLocator","services","register","isAdaptiveUI","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Search","refreshSearch","onSearchComplete","actionCompleteFunc","cancelBeginEvent","ShowHide","colName","isShowHide","evtHandlers","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","finalized","getKeyBy","batchActionPrevent","changedStateColumns","closeEdit","groupModule","visibleRows","showHideArgs","currentViewCols","emptyVcRows","getSelectedRecords","clearSelection","colsInCurrentView","col1","col2","isModeChg","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","keyDownHandler","selectedRowCellIndexes","getSelectedRowCellIndexes","copy","clipBoardTextArea","editSettings","cellSelectionMode","x_1","scrollX","y_1","paste","cellIndexes","isAvail","cIdx","rIdx","getRowByIndex","getCellFromIndex","editModule","updateCell","selectCellsByRange","cellIndex","setCopyData","withHeader","getSelection","getDataRows","selectedIndexes","headerTextArray","getCopyData","leftCols","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","isCell","splitKey","colIdx","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","SortDescriptor","SortSettings","Predicate","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","Grid","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movableCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","rowUid","translateX","isAutoFitColumns","enableDeepCompare","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","commandDelIndex","asyncTimeOut","enableLogger","needsID","Grid_1","Inject","mergePersistGridData","ignoreOnPersist","selectedRowIndex","scrollPosition","currentObject","settings","assign","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","sortedColumns","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","isInitial","mediaCol","allowServerDataBinding","ignoreCollectionWatch","isPersistSelection","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","ctrlEnter","shiftEnter","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","updateColumnModel","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","refreshMaskRow","axisDirection","dialogElement","headerModule","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","rowCount","gridContentScrollHeight","maskTable","transform","maskColgroup","createMaskRow","frzTd","valueX","maskTHead","maskTBody","rowCountElement","altRow","altNumber","rowsQuery","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","displayAsCheckBox","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","hideAtMedia","pushMediaColumn","updateFrozenColumnsWidth","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","matches","invokedFromMedia","showHider","refreshMediaCol","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","clipboardModule","enableBoxSelection","enableAutoFill","setCSSClass","oldCSSClass","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","isCancel","updateAutoFillPosition","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParent","currentParentInstance","currentChildObject","oldProperties","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","pending_1","getPrototypeOf","deepWatch","pKeyField","setRowData","gResult","names","scrollRefresh","isSelectedRowIndexUpdating","selectRow","setWidthToTable","enableVerticalRendering","fn_1","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","frozenCount","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","stackedHeader","individualColumn","stackedColumn","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getRowElements","getFrozenRightRowByIndex","getRowInfo","getRowObjectFromUID","rowData","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","hdrTbody","freezeRows","addMovableRows","dataRows","generateDataRows","fRows","mrows","includAdd","dRows","isCollapseStateEnabled","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","setCellValue","rowIdx","rowuID","pkName","fieldIdx","rowObjects","selectedRow","Idx","sRow","refreshTD","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","findIndex","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","rowObject","getMovableRowsObject","getFrozenRightRowsObject","getUidByColumnField","getColumnFieldNames","columnNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","tWidth_1","gWidth","this_2","isPercentageWidthGrid","refreshSplitFrozenColumn","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","changedProperties","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","visibleFrozenColumns","goToPage","pageNo","sortColumn","isMultiSort","sortModule","changeDataSource","clearSorting","removeSortColumn","clearGridActions","isToggle","selectRows","selectCell","deleteRecord","fieldname","startEdit","addRecord","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","toFixed","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderModule","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","contentTable","disValue","autoFitColumns","fieldNames","resizeModule","resizeSettings","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","setProperty","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","_loop_3","sLen","this_3","isFromGroup","showGroupedColumn","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","gridLines","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","innerElement","tag","myTableDiv","cssText","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","dblClickHandler","tapEvent","refreshFrozenPosition","dataBoundFunction","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","persistedData","getLocalData","dataObj","keys_1","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","stopImmediatePropagation","collapse","elementToFocus","focusContent","addOutline","injectedModules","refreshColumns","excelExport","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","currentGridInstance","exportPromise","exportedGridResults","groupColumn","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","getRowIndexByPrimaryKey","isDetailRow","pKvalue","getUserAgent","getRowUid","prefix","getRowElementByUID","rowEle","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","containerHeight","pagesize","nonContentHeight","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","gridModel","include","sorted","setHeaderText","gridInput","submit","getFormat","isExpanded","updateRowValue","colpending","resetFilterDlgPosition","filterDlg","callBack","batchUpdate","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","keyField","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","modelData","addRowObject","updateVisibleExpandCollapseRows","getHeight","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomSort","showResponsiveCustomColumnChooser","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols","gridCols_1","CHECK","FRAME","INDETERMINATE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","frameSpan","indeterminate","changeEventArgs","updateVueArrayModel","labelWrap","formElem","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","ejInstance","angularTagName","formEle","attributeName","nodeName","incrementTitle","decrementTitle","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","elementPrevValue","setNumber","stepValue","currencyCode","updatedCssClassValue","getNumericValidClassList","inputObj","updateHTMLAttrToWrapper","pro","newClass","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","formattedValue","maximumFractionDigits","minimumFractionDigits","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveEvent","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","isInteraction","beforeUpdate","numericRegex","preventHandler","iOS","currentPos","prevPos","valArray","numericObject","ignoreKeyCode","prevVal","lastIndexOf","cursorPosChanged","validateDecimalOnType","parseValue","numerictextboxObj","fireFox","parsedValue","localChange","nonZeroRegex","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","exec","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","formatNumber","serverDecimalSeparator","EXPREGEXP","decimalPart","result1","result2","cancelEvent","version","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","delta","rawEvent","wheelDelta","focusEventArgs","formatValue_1","isIos","blurEventArgs","focusEvent","getElementData","mouseUpClick","timeOut","touchEvent","elementFromPoint","clientX","clientY","floatLabelTypeUpdate","decrement","attrArray","validateInputType","updateSpinButton","propValue","CheckBoxFilterBase","isExecuteLocal","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","searchHandler","searchBoxKeyUp","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","infiniteUnloadParentExistPred","searchBox","inputargs","spinner","dialogOpen","renderResponsiveFilter","dialogLabel","showMask","getListHeight","isBlanks","filterTemplateCol","filterItemTemplate","searchInput","check","ddlValue","caseSen","defaults","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","pred","dummyDefaults","unshift","infiniteSearchPred","firstVal","foreignQuery","parsed","predicte","addDistinct","filterChoiceCount","itemsCount","filterargs","emptyValPredicte","generatePredicate","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","distincts","queryGenerate","filteredColumn","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","listDiv","rect","maskItemHeight","maskList","wrapperElem","removeMask","backgroundColor","borderStyle","borderWidth","borderColor","insertAdjacentHTML","maskLists","maskParent","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","runArray","executeQueryOperations","args1","processDataSource","updateResult","createFilterItems","result_1","res","updateAllCBoxes","updateInfiniteManualSelectPred","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","cBoxes","cBoxes_1","createCheckbox","dummyData","checkboxUid","nullCounter","selectAllValue","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","args_1","updateInfiniteUnLoadedCheckboxExistPred","getCheckedState","lastChild","addCurrSelectionParent","updatePredArr","checkState","ejValue","lookup","currentFilterValue","foreignDataObj","operate","updateDateFilter","getCaseValue","CellRenderer","rowChkBox","evaluate","fData","CSPTemplate","literals_1","templateID","invokeFormatter","refreshCell","newTD","cloneAttributes","arialabelText","localeStr","fromFormatter","checkWrap","rowID","setAttributes","isCheckBoxType","colindex","InlineEditRender","addNew","newRowPosition","getEditElement","checkLastRow","tdElement","gLen","appendChildren","isCustomFormValidation","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialog","createDialogHeader","responsiveDlgRenderer","renderResponsiveHeader","getDialogEditTemplateElement","primaryKeyValue","allowDragging","dialogClose","adaptiveDlgTarget","dialogEditTemplates","templateName","dialogTemp","tempDiv","setRules","formObj","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","focusElement","isFocus","preventScroll","tArgs","isInput","isIdentity","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","classNames","selectChkBox","chkState","editRow","cbChange","checkBoxChange","DropDownEditCell","isInline","dropDownClose","editCellDialogClose","ddCreated","dropdownCreated","ddBeforeOpen","dropdownBeforeOpen","ddActionComplete","dlgElement","NumericEditCell","instances","DefaultEditCell","Event","bubbles","cancelable","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","editedData","isScroll","primaryKeys","primaryKeyValues","primaryKey","virtualRow","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","virtualData","getCurrentEditedData","eleLength","endEditArgs","destroyElements","destroyWidgets","destroyForm","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","isLastRow","blazorTemplate","dragRow","dragRowUid","dragRowObject_1","groupedColumn","comparer1","comparer2","dropRowObject","groupedRowReorder","checkboxOnly","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","frozen","needRefresh","leftrightCells","closeEditArgs","isLazyLoad","defaultValue","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","initialRender","validationColObj","addBatchRow","prevEditedBatchCell","onBeforeCellFocused","onCellFocused","editNextValCell","dataBound","batchCancelFunction","batchCancel","restoreFocus","mouseDownElement","setCellIdx","isAddRow","validateFormObj","byClick","keyArgs","clickArgs","isContent","active","matrix","prevEditedBatchCellMatrix","crtRowIndex","byKey","actualIndex","isLastCellPrimaryKey","editCellFromIndex","isAdded","isInsert","isDirty","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","bulkDelete","bulkAddRow","batchSave","checkAllBox","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","isTop","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","dataObjects","visibleColumns","defaultData","getDefaultData","beforeBatchAddArgs","forgetPrevious","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","validation","dValues","editCellExtend","getDataByIndex","getColIndex","getCellIdx","cellEditArgs","isColored","rowObj_1","newReactTd_1","newReactTd","setChanges","rowcell","insertedRows","isSingleInsert","escapeCellEdit","generateCellArgs","successCallBack","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","editedBatchCellMatrix","editedBatchCell","addCancelWhilePaging","ARROWLEFT","ARROWRIGHT","ARROWUP","ARROWDOWN","TAB","SHIFTTAB","END","HOME","MaskedDateTime","mask","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","navigated","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","isLeadingZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","validCharacterCheck","maskInputHandler","maskKeydownHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","validChar","navigateSelection","formatText","dateAlteration","isPersist","differenceCheck","previousVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","yearValue","periodString","periodkeys","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","isZero","resultValue","isSegment","isDecrement","incrementValue","newMonth","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","templteCell","editCellType","alertDObj","lastTr","refreshToolbar","showConfirmDialog","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","isForceCancel","executeAction","destroyEditComponents","eventDetails","preventBatch","onActionBegin","actionCompleteFunction","actions","inputs","addRow","restrictedRequestTypes","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","preventObj","newRule","mRules","frRules","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","offSet","customForm","validationForBottomRowPos","gcontent","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHearderRows","insertRow","inputClient","arrow","getEditCell","gHeight","rowsCount","rowsHeight","AddEditors","editors","ResponsiveDialogRenderer","sortedCols","sortPredicate","closeCustomDialog","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","filterClearBtn","getHeaderTitle","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","isColMenu","sortColumns","sortBtnParent","filteredCols","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","closeCustomFilter","isRowResponsive","colDiv","isDialogClose","removeCustomDlgFilterEle","renderCustomFilterDialog","setTopToChildDialog","dialogEle","colMenu","outerDiv","customFilterDlg","getDialogOptions","beforeDialogClose","sortField","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","removeCustomFilterElement","custommenu","mainfilterdiv","destroyCustomFilterDialog","customEle","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","links","updateLinksHtml","refreshAriaAttrLabel","updateStyles","link","frag","createDocumentFragment","totalPages","auxiliaryClickHandler","numericContainer","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","classList_1","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Of","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","compile","resizePager","onFocusIn","onFocusOut","focusedTabIndexElement","getFocusedTabindexElement","dropDownPage","getDropDownPage","focusablePagerElements","getFocusablePagerElements","addFocus","getFocusedElement","setTabIndexForFocusLastElement","checkPagerHasFocus","changePagerFocus","setPagerFocus","setPagerContainerFocus","setPagerFocusForActiveElement","currentActivePage","offsetParent","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","tabindexElements","currentItemPagerFocus","incrementNumber","decrementNumber","lastCell","checkFirstPagerFocus","selectedClass","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","mPrev","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","uri","calculateActualWidth","actualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","showFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","numericItemWidth","diff","numToHide","hideIndex","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItems","showItem","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","isPageSizeAll","beforeValueChange","pageSizeValue","pageSizeNum","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","onSelect","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainerDiv","previousPage","keyActions","appendToElement","handlers","complete","updateLayout","inboundChange","Selection","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","factory","initializeSelection","fDataUpdate","getRowObj","hidePopUp","isEditing","getCurrentBatchRecordChanges","currentRecords","selectedGroupedData","enableSimpleMultiRowSelection","addRowsToSelection","selectData","isRemoved","selectedIndex","isAvailable","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","getCollectionFromIndexes","selectedDataUpdate","selectedData","selectableRowIndex","isSingleSel","prevRow","isDragged","selectRowFn","selectableRowIndex_1","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","reverse","clearRowCallBack","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","ensureCheckboxFieldSelection","updatePersistDelete","pKey","isPresent","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","checkSelectAllClicked","clearColumnSelection","prevCIdxs","prevECIdxs","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","cancl_1","isSingleDeSel","rowDeselectObj","rowInString","rowidx","rowidxex","dataTxt","isHeaderCheckBxClick","isCellType","selectedCell","isCellSelected","previousRowCell","getCellIndex","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","gBRect","x1","y1","x2","y2","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","timer1","timer2","isAutoFillSel","findNextCell","e_1","colInd","rowInd","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","strCell","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastCell","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","startCellIndex","trIdx","mUPTarget","closeRowCell","updateStartCellsIndex","rindex","isFrozenRow","isFrozenRight","clientRect","colWidth","enableDrag","postion","clearSelAfterRefresh","isInfiniteScroll","pkValue","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rIndex","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","checkToSelectAll","checkedLen","spanEle","getRecord","targetHeadCell","targetRowCell","isCheckBox","allowColumnSelection","popUpClickHandler","chkSelect","headerSelectionHandler","find","checkboxColumnIndexCheck","isJump","headerAction","thLen","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","writeText","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","isInfinitecroll","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","fWidth","editTableCol","movableScrollbar","movableWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","isAutoResize","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","ENTER","ESCAPE","FOCUSED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","CARET","ITEM","HIDE","TEMPLATE_PROPERTY","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","allPopup","keyType","openMenu","aEle","sli","isCMenu","changedTouches","canOpen","ulIndex","isIterated","isMenuVisible","item_1","wrapper_1","beforeCloseArgs","popups","getPopups","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","closeArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","lItem","elemId","uList","getField","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","srcElement","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","actionOnScroll","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","menuType","observedOpenArgs","checkScrollOffset","animationOptions","easing","setPosition","collide","offWidth","blankIconList","iconLi","cssProp","iconCssProps","iconSize","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","isVisible","hasField","itemNavigable","itemCreating","curData","liTrgt","ulId","hdrWrapper","isDifferentElem","isClosed","propName","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","isUniqueId","isText","setItem","newItem","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","wrapper1","ul1","lis","popStr","uls","targetSelctor","parent_2","isMenuOpen","pUlHeight","pElement","begin","progress","nIndex","isCallBack","skipItem","showHideItems","hideItems","ishide","validUl","iitems","insertItems","isAfter","menuitem","itemId","parentId","StackedColumnsDirective","StackedColumnsPlugin","StackedColumnDirective","StackedColumnPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","GridComponent","GridPlugin","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","generate","validator","passiveFocus","firstHeaderCellIndex","skipAction","onBlur","isGantt","setLastContentCellTabIndex","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","allowToPaging","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","parentCell","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","outline","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","cellColIndex","cellCol","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentTable","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","th","inputTarget","focusVirtualElement","isKeyFocus","empty","setFocusedElement","getFocusInfo","cellElem","focusHeader","resetFocus","getInfo","focusedColumnUid","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","matrixcs","hdrLen","handlerInstance","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","groupSortFocus","groupTextFocus","groupCancelFocus","toFrozen","focusEle","getFocusable","Matrix","allow","emptyTable","inValid","vector","columnsCount","rowColumns","currentColumnCount","indexesByKey","navigators","getCurrentFromAction","editNextRow","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","isCellWidth","getGridSeletion","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","cursor","searchBlur","rowDataBound","queryCellInfo","headerCellInfo","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","rowDragStartHelper","rowDragStart","rowDrag","rowDrop","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","uiUpdate","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","reorderComplete","rowDragAndDropComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","saveComplete","deleteComplete","dialogDestroy","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","exportDetailTemplate","freezeRender","columnMenuClick","columnMenuOpen","filterOpen","filterDialogCreated","initForeignKeyColumn","showEmptyGrid","columnDataStateChange","dataStateChange","dataSourceChanged","rtlUpdated","textWrapRefresh","recordAdded","cancelBegin","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","getFilterBarOperator","resetColumns","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","pagerRefresh","closeInline","resetVirtualFocus","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","beforeCheckboxfilterRenderer","commandColumnDestroy","batchCnfrmDlgCancel","refreshResizePosition","renderResponsiveColumnChooserDiv","ContentRender","movableRows","freezeRowElements","isLoaded","infiniteCache","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","setRowsInLazyGroup","maxBlock","maxBlocks","rowElements","startIdx","generator","getModelGenerator","pressedKey","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentMovableRows","initialPageRecords","refFrag","refHdrfrag","hdrfrag","trElement","tbdy","isGroupFrozenHdr","checkCache","isFrozenLeft","templatetoclear","templates","updateVirtualCells","blockLoad","offsets","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","headerCellHeight","cellHeight","boxSizing","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","setDisplayNone","isFreeze","getHeaderColGroup","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","trs","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","isDate","updateCellIndex","_vm","$createElement","_self","headerText2","currencyTemplate","headerText1","statesTemplate","headerText8","priceAreaTemplate","headerText7","suppliersTemplate","headerText3","defaultMechanismTemplate","headerText4","referenceTypesTemplate","headerText5","sectorsTemplate","headerText6","strategiesTemplate","staticRenderFns","currencyData","filterOptions","requiredRules","symbolRules","staticClass","rtData","sectorData","nameRules","stateData","states","stateParams","currencyParams","alpha2Rules","alpha3Rules","worldMap","stData","dmData","supplierData","countryParams","countries","utilityParams","utilities","priceAreaData","excelQueryCellPA","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","getGroupedRecords","ensureRowVisibility","parentid","childId","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","childRow","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","total","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","getActualProperties","templateCompiler","validSelector","setStyleAndAttributes","copyAttr","literals","extend","exclude","moved","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","isBottomTail","getPopupLeftPosition","getPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","removeElement","getUid","calculateAggregate","Global","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","inst","clName","addRemoveActiveClasses","distinctStringValues","getFilterMenuPostion","elementVisible","dlgWidth","getZIndexCalcualtion","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","padZero","filterObject","datePredicate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","object","splits","newCase","getCustomDateFormat","formatvalue","getExpandedState","printMode","getPrintGridModel","printGridModel","extendObjWithFn","deep","obj1","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","getColumnModelByFieldName","transformV","replacedTv","translateY","rootElement","getScrollWidth","resetColspanGroupCaption","gridWidth","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","newColspan","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","startRowIndex","compareChanges","newArray","o","isChildColumn","uids","pushuid","frozenDirection","addFixedColumnBorder","addStickyColumnPosition","getCellsByTableName","getCellByColAndRowIndex","setValidationRuels","patternRegex","mtch_1","'","addBiggerDialog","dialogs","performComplexDataOperation","returnObj","duplicateMap","setDisplayValue","addRemoveEventListener","isOn","evt_1","createEditElement","registerEventHandlers","evts","removeEventHandlers","clearReactVueTemplates","generateExpandPredicates","filterCols","getPredicates","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","capitalizeFirstLetter","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","merge","getIndexFromAllColumns","vColumnIndices","predefinedItems","isSearched","isRightToolbarMenu","gridID","preItems","isAdaptive","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","responsiveToolbarMenu","renderResponsiveToolbarpopup","isRight","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","getItemObject","toolbarItems_1","itemObject","gID","openResponsiveToolbarMenuPopup","newArgs","toolbarargs","tarElement","toolbarMenuElement","getMenuItems","toolbarItems_2","getLocaleText","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","CONTROL_WRAPPER","INPUT_WRAPPER","DROP_AREA","DROP_WRAPPER","LIST_PARENT","FILE","STATUS","ACTION_BUTTONS","UPLOAD_BUTTONS","CLEAR_BUTTONS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PROGRESS_INNER_WRAPPER","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr","FORM_UPLOAD","HIDDEN_INPUT","INVALID_FILE","INFORMATION","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","multiple","uploadedFilesData","isForm","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","browse","upload","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","listParent","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","isPureReactComponent","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","clearText","dropAreaWrapper","setDropArea","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","resetForm","metaData","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","removeUrl","emitError","formData","FormData","beforeSend","currentRequest","httpRequest","removingEventCallback","onLoad","removeCompleted","onError","removeFailed","send","postRawFile","updateFormData","customFormData","updateCustomheader","request","setRequestHeader","response","getResponse","readyState","updateStatus","statusElement","getFilesFromFolder","filesEntries","validDirectoryUpload","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","fullPath","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","entries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","readAsDataURL","onerror","directory","isModified","modifiedFilesData","progressInterval","updateInitialFileDetails","sanitizeFile","beforeSanitize","sanitizeFileName","serializeValue","currentFileName","isUTF8","htmlTagRegex","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","getFileType","webkitRelativePath","fileDetails","validatedFileSize","fileSource","dataFiles","updateSortedFileList","allowFormUpload","saveUrl","singleUpload","previousListClone","added","oldList","createParentUL","isBlank","dropFiles","extensions","extensions_1","extension","toLocaleLowerCase","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","uploadTemplateFn","templateComplier","liTempCompiler","fromElements","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","textContainer","textElement","fileExtension","preventActionComplete","getSlicedName","nameElement","dataset","tail","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","loaded","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","iconEle","ajax_1","removecanceledFile","renderFailureState","requestResponse","removeProgressbar","deleteIcon","pauseButton","retryElement","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","statusText","getAllResponseHeaders","withCredentials","spinnerEle","raiseActionComplete","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","progressAnimation","animateProgressBar","uploadTemplate","isMutiple","fileIndex","chunkSize","chunkIndex","retryCount","sendRequest","totalChunk","async","contentType","chunkUploadComplete","onUploadProgress","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","updateMetaData","sendNextRequest","name_2","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","cancelButton","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","clearIcon","progressVal","totalChunks","abortIcon","sortedFileNames","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","contents","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","liIndex","beforeEventArgs","removingFiles","isLiRemoved","removingFiles_1","validUrl","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","FilesDirective","FilesPlugin","UploadedFilesDirective","UploadedFilesPlugin","UploaderComponent","UploaderPlugin","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","refreshSortIcons","gObj_1","initiateSort","showPopUp","enableSortMultiTouch","allowUnsort","updateAriaAttr","CLS_TAB","CLS_HEADER","CLS_BLA_TEM","CLS_CONTENT","CLS_NEST","CLS_ACTIVE","CLS_FOCUS","CLS_ICONS","CLS_ICON","CLS_ICON_TAB","CLS_ICON_CLOSE","CLS_CLOSE_SHOW","CLS_TEXT","CLS_INDICATOR","CLS_WRAP","CLS_TEXT_WRAP","CLS_TAB_ICON","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POP","CLS_TB_POPUP","CLS_HOR_NAV","CLS_POPUP_OPEN","CLS_POPUP_CLOSE","CLS_PROGRESS","CLS_IGNORE","CLS_HSCRCNT","CLS_VSCRCNT","CLS_VTAB","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TABITEMPREFIX","CLS_REORDER_ACTIVE_ITEM","TabActionSettings","TabAnimationSettings","TabItem","Tab","isIconAlone","draggableItems","tbObj","expTemplateContent","cntEle","btnCls","hdrEle","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","draggingItems","nested","prevIndex","isNested","isPopup","initRender","isSwiped","itemIndexArray","allowDragAndDrop","dragArea","updatePopAnimationConfig","tabId","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","scrCnt","scrCntClass","setContentHeight","selectedItem","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","parseObject","setCloseButton","showCloseButton","toolbarHeader","hdrItem","reRenderItems","maxId","isReplace","idList_1","getIndexFromEle","txtWrapEle","tItems","spliceArray","tbId","hidden","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","attrObj","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","isOverflow","ripEle","actEleId","prevEle","trg","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","itemCollection","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","isPrevent","openEff","clsEff","setActiveBorder","trgParent","trgIndex","getEleIndex","selectTab","eleStr","templateCompile","compileElement","templateFUN","eleVal","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","headerPos","contentPos","heightAdjustMode","cs","trgHdrEle","reorderActiveTab","bar","tbHeight","tbWidth","skipDataBind","serverDataBind","trg_1","enableAnimation","eleTrg","refreshItemVisibility","previousIndex","selectedContent","selectingID","selectEventArgs","tbPopObj","bindDraggable","initializeDrag","spaceKeyDown","tabKeyModule","nestedTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","selectElement","changedProp","cntItem","clearTabTemplate","isHiddenEle","strVal","clearTemplates","dragObj","itemDragStart","dropIndex","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","isSameNode","dragAction","droppedIndex","itemDragStop","tabItemDragArgs","intDestroy","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","isValDiff","makechanges","CalendarComponent","CalendarPlugin","resizeClassList","suppress","Resize","tapped","isDblClk","resizeProcess","findColumn","newarray","resizeColumn","footerTable","footerTextClone","contentDivTag","footerDivTag","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","contentwidth","refreshResizefrzCols","adaptiveClass","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","refreshResizeFixedCols","isAutoFitCol","width_1","frzHdrRefresh","width_2","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","w","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","cTable","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","doc","ownerDocument","timeoutHandler","HIDE_CLEAR","TEXTBOX_FOCUS","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","multiline","textarea","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","initialValue","inputClassName","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","addIcon","icons","mimeType","getMimeType","downloadLink","hasDownloadAttribute","isPopupBlocked","onloadend","Encoding","includeBom","emitBOM","initBOM","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","charCode","high","low","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","out","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16","ContextMenu"],"mappings":"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mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,oBAAqB,mBAAoB,EAAE,oBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,oBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,mBAAoB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,oBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,kBAAmB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,oBAAqB,kBAAqB,EAAE,kBAAmB,mBAAoB,EAAE,oBAAqB,mBAAqB,EAAE,oBAAqB,mBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,oBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,kBAAqB,kBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBA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sB,mBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,kBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAqB,CAAC,kBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAqB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,kBAAqB,CAAC,kBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAsB,kBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,kBAAmB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAqB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAqB,oBAAqB,CAAC,oBAAqB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,kBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAqB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,kBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAqB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAqB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,kBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,oBAAqB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,oBAAsB,oBAAqB,CAAC,mBAAsB,mBAAqB,CAAC,oBAAsB,mBAAqB,CAAC,oBAAsB,mBA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,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,kBAAoB,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,QAAS,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QA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AAE,mBAAqB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,kBAAmB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAoB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAoB,mBAAoB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAoB,EAAE,mBAAqB,wBACxvJ,CAAE,KAAQ,UAAW,WAAc,CAAE,MAAS,QAAS,KAAQ,QAAS,UAAa,QAAU,SAAY,CAAE,KAAQ,eAAgB,YAAe,CAAC,CAAC,CAAC,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,iBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,sBAAuB,CAAC,CAAC,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,iBAAqB,oBAAqB,CAAC,kBAAqB,kBAAqB,CAAC,kBAAqB,mBAAqB,CAAC,kBAAqB,mBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,kBAAqB,mBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,kBAAqB,CAAC,kBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,kBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,kBAAqB,CAAC,mBAAqB,kBAAmB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,kBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,mBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,iBAAoB,mBAAqB,CAAC,kBAAmB,mBAAqB,CAAC,iBAAoB,mBAAqB,CAAC,kBAAmB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAoB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAmB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,gBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAoB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,iBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAmB,mBAAqB,CAAC,kBAAmB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,gBAAoB,oBAAqB,CAAC,kBAAoB,mBAAoB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,kBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAmB,oBAAqB,CAAC,iBAAoB,mBAAoB,CAAC,kBAAoB,mBAAqB,CAAC,kBAAoB,mBAAqB,CAAC,iBAAoB,mBAAqB,CAAC,kBAAoB,oBAAqB,CAAC,kBAAoB,mBAAqB,C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AAC,oBAAqB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,oBAAqB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,iBAAkB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,kBAAmB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,kBAAmB,CAAC,mBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,oBAAqB,iBAAkB,CAAC,oBAAqB,mBAAoB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,oBAAqB,kBAAoB,CAAC,oBAAqB,kBAAoB,CAAC,oBAAqB,kBAAoB,CAAC,mBAAoB,kBAAoB,CAAC,mBAAoB,kBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,kBAAmB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,kBAAoB,mBAAoB,CAAC,kBAAoB,kBAAmB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,kBAAmB,mBAAoB,CAAC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,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,QAAS,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,QAAS,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EAAE,UAAW,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,WAAY,EAAE,UAAW,WAAY,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,GAAM,mBAAqB,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,UAAW,EAAE,SAAU,SAAU,EA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B,CAAC,mBAAsB,kBAAmB,CAAC,oBAAsB,qBAAsB,CAAC,CAAC,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,kBAAmB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,kBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,qBAAsB,CAAC,CAAC,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,kBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,qBAAsB,CAAC,CAAC,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAqB,kBAAmB,CAAC,mBAAsB,qBAAsB,CAAC,CAAC,CAAC,oBAAsB,kBAAmB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,oBAAqB,CAAC,CAAC,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,kBAAmB,CAAC,mBAAoB,mBAAoB,CAAC,oBAAsB,kBAAmB,CAAC,oBAAqB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,kBAAsB,kBAAmB,CAAC,oBAAsB,mBAAoB,CAAC,oBAAsB,mBAAoB,CAAC,mBAAsB,mBAAoB,CAAC,oBA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,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAmB,mBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,kBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAmB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,mBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,mBAAoB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,mBAAoB,EAAE,kBAAoB,mBAAoB,EAAE,kBAAoB,mBAAoB,EAAE,kBAAoB,mBAAqB,EAAE,iBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,iBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAoB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAoB,mBAAqB,EA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AAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,kBAAqB,oBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,qBAAuB,CAAC,CAAC,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,qBAAsB,CAAC,CAAC,CAAC,kBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,sBAAuB,CAAC,CAAC,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,kBAAmB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,kBAAqB,oBAAqB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAqB,sBAAuB,CAAC,CAAC,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,kBAAmB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAoB,mBAAqB,CAAC,mBAAqB,sBAAuB,CAAC,CAAC,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,mBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAqB,CAAC,mBAAqB,oBAAq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AW,oBAAqB,EAAE,mBAAqB,UAAW,EAAE,UAAW,UAAW,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,kBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,kBAAqB,mBAAoB,EAAE,mBAAoB,mBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAoB,kBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAoB,EAAE,gBAAqB,mBAAqB,EAAE,mBAAoB,mBAAqB,EAAE,kBAAqB,kBAAqB,EAAE,iBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,oBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,mBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB,EAAE,iBAAqB,mBAAqB,EAAE,kBAAqB,mBAAqB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","file":"js/chunk-8815feec.5aad9b2c.js","sourcesContent":["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 { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./State.vue?vue&type=style&index=0&id=87db548e&prod&lang=css\"","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})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { initForeignKeyColumn, getForeignKeyData, generateQuery } from '../base/constant';\nimport { getDatePredicate } from '../base/util';\nimport { Data } from './data';\nimport * as events from '../base/constant';\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @class */ (function (_super) {\n __extends(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].dataSource = (columns[parseInt(i.toString(), 10)].dataSource instanceof DataManager ?\n columns[parseInt(i.toString(), 10)].dataSource :\n (isNullOrUndefined(columns[parseInt(i.toString(), 10)].dataSource) ? new DataManager() :\n 'result' in columns[parseInt(i.toString(), 10)].dataSource ? columns[parseInt(i.toString(), 10)].dataSource :\n new DataManager(columns[parseInt(i.toString(), 10)].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(events.columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[parseInt(i.toString(), 10)]) :\n this_1.genarateQuery(foreignColumns[parseInt(i.toString(), 10)], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[parseInt(i.toString(), 10)].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[parseInt(i.toString(), 10)]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[parseInt(i.toString(), 10)].columnData = responses[parseInt(i.toString(), 10)].result;\n if (foreignColumns[parseInt(i.toString(), 10)].editType === 'dropdownedit' && 'result' in foreignColumns[parseInt(i.toString(), 10)].dataSource) {\n foreignColumns[parseInt(i.toString(), 10)].edit.params = extend(foreignColumns[parseInt(i.toString(), 10)]\n .edit.params, {\n dataSource: responses[parseInt(i.toString(), 10)].result,\n query: new Query(), fields: {\n value: foreignColumns[parseInt(i.toString(), 10)].foreignKeyField ||\n foreignColumns[parseInt(i.toString(), 10)].field,\n text: foreignColumns[parseInt(i.toString(), 10)].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[parseInt(i.toString(), 10)] && filteredValue[parseInt(i.toString(), 10)].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[parseInt(i.toString(), 10)], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[parseInt(i.toString(), 10)], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\nexport { ForeignKey };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enableMask', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'maskPlaceholder', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'strictMode', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DatePicker Component.\n * ```html\n * \n * ```\n */\nexport var DatePickerComponent = vueDefineComponent({\n name: 'DatePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DatePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addDate: function (dates) {\n return this.ej2Instances.addDate(dates);\n },\n createContent: function () {\n return this.ej2Instances.createContent();\n },\n currentView: function () {\n return this.ej2Instances.currentView();\n },\n focusIn: function (triggerEvent) {\n return this.ej2Instances.focusIn(triggerEvent);\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n navigateTo: function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n },\n removeDate: function (dates) {\n return this.ej2Instances.removeDate(dates);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (type, e) {\n return this.ej2Instances.show(type, e);\n },\n }\n});\nexport var DatePickerPlugin = {\n name: 'ejs-datepicker',\n install: function (Vue) {\n Vue.component(DatePickerPlugin.name, DatePickerComponent);\n }\n};\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect) || this.closePopupOnSelect) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n this.resetList(this.listData, field, query);\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data);\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n this.isSelectAllTarget = (length === index_1 + 1);\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.isSelectAllTarget = (length === index_1 + 1);\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_1 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nexport var properties = ['isLazyUpdate', 'plugins', 'actionFailureTemplate', 'addTagOnBlur', 'allowCustomValue', 'allowFiltering', 'changeOnBlur', 'closePopupOnSelect', 'cssClass', 'dataSource', 'delimiterChar', 'enableGroupCheckBox', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'enableSelectionOrder', 'enabled', 'fields', 'filterBarPlaceholder', 'filterType', 'floatLabelType', 'footerTemplate', 'groupTemplate', 'headerTemplate', 'hideSelectedItem', 'htmlAttributes', 'ignoreAccent', 'ignoreCase', 'itemTemplate', 'locale', 'maximumSelectionLength', 'mode', 'noRecordsTemplate', 'openOnClick', 'placeholder', 'popupHeight', 'popupWidth', 'query', 'readonly', 'selectAllText', 'showClearButton', 'showDropDownIcon', 'showSelectAll', 'sortOrder', 'text', 'unSelectAllText', 'value', 'valueTemplate', 'width', 'zIndex', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeOpen', 'beforeSelectAll', 'blur', 'change', 'chipSelection', 'close', 'created', 'customValueSelection', 'dataBound', 'destroyed', 'filtering', 'focus', 'open', 'removed', 'removing', 'select', 'selectedAll', 'tagging'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * MultiSelect component allows the user to select a value from the predefined list of values.\n * ```html\n * \n * ```\n */\nexport var MultiSelectComponent = vueDefineComponent({\n name: 'MultiSelectComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new MultiSelect({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addItem: function (items, itemIndex) {\n return this.ej2Instances.addItem(items, itemIndex);\n },\n clear: function () {\n return this.ej2Instances.clear();\n },\n filter: function (dataSource, query, fields) {\n return this.ej2Instances.filter(dataSource, query, fields);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getDataByValue: function (value) {\n return this.ej2Instances.getDataByValue(value);\n },\n getItems: function () {\n return this.ej2Instances.getItems();\n },\n hidePopup: function (e) {\n return this.ej2Instances.hidePopup(e);\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n selectAll: function (state) {\n return this.ej2Instances.selectAll(state);\n },\n showPopup: function (e) {\n return this.ej2Instances.showPopup(e);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n }\n});\nexport var MultiSelectPlugin = {\n name: 'ejs-multiselect',\n install: function (Vue) {\n Vue.component(MultiSelectPlugin.name, MultiSelectComponent);\n }\n};\n","import urls from './urls'\r\nimport authToken from './authToken';\r\nimport { DataManager, WebApiAdaptor } from \"@syncfusion/ej2-data\";\r\nimport apis from './network'\r\nimport logger from './logger'\r\nimport rules from './permissions'\r\nimport checkUIPermissions from './UIPermissions'\r\n\r\nclass CustomWebApiAdaptor extends WebApiAdaptor {\r\n beforeSend(dm, xhttp, p3) {\r\n\r\n const originalFail = p3.onFailure;\r\n\r\n p3.onFailure = function (err) {\r\n if (err.status === 401) {\r\n const token = authToken.get();\r\n if (token) {\r\n logger.log(\"trying token refresh...\", err);\r\n apis.unprotectedApi.put(\r\n \"/auth\",\r\n {\r\n Token: token\r\n }\r\n ).then((r) => r.data).then((resp) => { \r\n authToken.set(resp.token || resp.Token);\r\n rules.getPermissions(resp.token || resp.Token);\r\n checkUIPermissions();\r\n logger.log(\"refreshed\");\r\n }).catch((err) => {\r\n logger.log(\"refresh token failed\", err)\r\n //navigate to login - some questions asked\r\n apis.navigateToLogin(window.location.pathname);\r\n });\r\n } else {\r\n logger.log(\"No token to refresh...\", err)\r\n apis.navigateToLogin(window.location.pathname);\r\n }\r\n }\r\n\r\n if (originalFail && typeof (originalFail) === \"function\") {\r\n try {\r\n originalFail(err);\r\n } catch (e) {\r\n logger.log(\"original error handler failed\", err);\r\n logger.log(\"new error\", e);\r\n }\r\n \r\n }\r\n }\r\n\r\n super.beforeSend(dm, xhttp, p3);\r\n }\r\n}\r\n\r\nconst SyncHelper = {\r\n getDataManager: (relativePath, queryString) => {\r\n return new DataManager({\r\n url: `${urls.apiBaseUrl}${relativePath}${(queryString ? ('?' + queryString) : '')}`,\r\n adaptor: new CustomWebApiAdaptor,\r\n crossDomain: true,\r\n headers: [{ Authorization: `Bearer ${authToken.get()}`}]\r\n });\r\n }\r\n};\r\n\r\nexport default SyncHelper;","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (gObj.isVue) {\n gObj.setProperties({ query: gObj.query instanceof Query ? gObj.query : new Query() }, true);\n }\n else {\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\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};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calandar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else if ((!this.enableVirtualization) || (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource)))) {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n filterQuery.skip(this.virtualItemStartIndex);\n filterQuery.take(takeValue);\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\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 { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\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 { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\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})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\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})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\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})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\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})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\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})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n/* eslint-enable */ \n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n this.csvStr += '\\r\\n';\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1 || value.indexOf('\\\"') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n /**\n * Returns a Blob object containing CSV data with optional encoding.\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n CsvHelper.prototype.saveAsBlob = function (encodingType) {\n if (encodingType != undefined) {\n var encoding = new Encoding();\n var encodeString = 'UTF-8';\n if (encodingType.toUpperCase() == \"ANSI\") {\n encoding.type = 'Ansi';\n encodeString = 'ANSI';\n }\n else if (encodingType.toUpperCase() == \"UNICODE\") {\n encoding.type = 'Unicode';\n encodeString = 'UNICODE';\n }\n else {\n encoding.type = 'Utf8';\n encodeString = 'UTF-8';\n }\n var buffer = encoding.getBytes(this.csvStr, 0, this.csvStr.length);\n return new Blob([buffer], { type: 'text/csv;charset=' + encodeString });\n }\n else\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n /**\n * Returns a Promise with a Blob based on the specified BlobSaveType and optional encoding.\n * @param {BlobSaveType} blobSaveType - A string indicating the type of Blob to generate ('text/csv' or other).\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n Workbook.prototype.saveAsBlob = function (blobSaveType, encodingType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob(encodingType);\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\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 { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.idx = 0;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n for (var i = 0, len = cols.length; i < len; i++) {\n if (!isNullOrUndefined(cols[parseInt(i.toString(), 10)])) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if ((parent || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n if (this.parent.frozenColumns) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].freeze === 'Left') {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n else {\n if (this.parent.getFrozenLeftCount() > destIndex) {\n column.freeze = 'Left';\n }\n else if ((cols.length - this.parent.getFrozenRightColumnsCount()) <= destIndex) {\n column.freeze = 'Right';\n }\n else {\n column.freeze = column.freeze === 'Fixed' ? 'Fixed' : undefined;\n }\n }\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n if (this.parent.isFrozenGrid()) {\n var cols_1 = this.parent.columns;\n this.idx = 0;\n this.refreshColumnIndex(cols_1);\n this.parent.notify(events.refreshFrozenPosition, {});\n }\n };\n Reorder.prototype.refreshColumnIndex = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].index = this.idx;\n this.idx++;\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n this.refreshColumnIndex(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'leftArrow') {\n e.action = 'ctrlLeftArrow';\n }\n else if (e.action === 'rightArrow') {\n e.action = 'ctrlRightArrow';\n }\n }\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n var uid = target.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target)) &&\n gObj.getColumnByUid(uid).allowReordering && e.column.allowReordering) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n else {\n if (closest && closest.isEqualNode(this.element) &&\n !((gObj.allowGrouping && e.column.allowGrouping) || e.column.allowReordering)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else if (!closest && !(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n var cliRectBaseLeft = cliRect.left;\n var scrollElem = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var TabItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-tabitems';\n }\n }\n});\nexport var TabItemsPlugin = {\n name: 'e-tabitems',\n install: function (Vue) {\n Vue.component(TabItemsPlugin.name, TabItemsDirective);\n }\n};\n/**\n * 'e-tabitem' directive represent a item of the Vue Tab\n * It must be contained in a Tab component(`ejs-tab`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var TabItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-tabitem';\n }\n }\n});\nexport var TabItemPlugin = {\n name: 'e-tabitem',\n install: function (Vue) {\n Vue.component(TabItemPlugin.name, TabItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { TabItemsDirective, TabItemDirective, TabItemsPlugin, TabItemPlugin } from './items.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragAndDrop', 'animation', 'clearTemplates', 'cssClass', 'dragArea', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'headerPlacement', 'height', 'heightAdjustMode', 'items', 'loadOn', 'locale', 'overflowMode', 'reorderActiveTab', 'scrollStep', 'selectedItem', 'showCloseButton', 'width', 'added', 'adding', 'created', 'destroyed', 'dragged', 'dragging', 'onDragStart', 'removed', 'removing', 'selected', 'selecting'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the VueJS Tab Component.\n * ```html\n * \n * ```\n */\nexport var TabComponent = vueDefineComponent({\n name: 'TabComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Tab({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-tabitems\": \"e-tabitem\" },\n tagNameMapper: { \"e-tabitems\": \"e-items\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addTab: function (items, index) {\n return this.ej2Instances.addTab(items, index);\n },\n disable: function (value) {\n return this.ej2Instances.disable(value);\n },\n enableTab: function (index, value) {\n return this.ej2Instances.enableTab(index, value);\n },\n getItemIndex: function (tabItemId) {\n return this.ej2Instances.getItemIndex(tabItemId);\n },\n hideTab: function (index, value) {\n return this.ej2Instances.hideTab(index, value);\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshActiveTab: function () {\n return this.ej2Instances.refreshActiveTab();\n },\n refreshActiveTabBorder: function () {\n return this.ej2Instances.refreshActiveTabBorder();\n },\n removeTab: function (index) {\n return this.ej2Instances.removeTab(index);\n },\n select: function (args, event) {\n return this.ej2Instances.select(args, event);\n },\n }\n});\nexport var TabPlugin = {\n name: 'ejs-tab',\n install: function (Vue) {\n Vue.component(TabPlugin.name, TabComponent);\n Vue.component(TabItemPlugin.name, TabItemDirective);\n Vue.component(TabItemsPlugin.name, TabItemsDirective);\n }\n};\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid || gObj.detailTemplate) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'dateonly' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\nimport { defaultCurrencyCode } from '@syncfusion/ej2-base';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if ((grid.childGrid || grid.detailTemplate) && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild,\n grpFooterTemplates: this.grpFooterTemplates\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n this.grpFooterTemplates = args['grpFooterTemplates'];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : { gridInstance: this.parent });\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, defaultCurrencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, defaultCurrencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && (!isNullOrUndefined(gObj.childGrid) || !isNullOrUndefined(gObj.detailTemplate))) {\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n else {\n var args = { parentRow: row, row: excelRow, value: {}, action: 'excelexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n excelRow.childRows = this.processDetailTemplate(args);\n }\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n var rows = [];\n var templateRowHeight;\n var detailIndent = 2;\n var detailCellIndex;\n if (templateData.value.columnHeader || templateData.value.rows) {\n var processCell_1 = function (currentCell, isHeader) {\n var cell = {};\n if (isNullOrUndefined(currentCell.index)) {\n currentCell.index = detailCellIndex;\n detailCellIndex++;\n }\n cell.index = currentCell.index + detailIndent;\n if (!isNullOrUndefined(currentCell.value)) {\n cell.value = currentCell.value;\n }\n if (!isNullOrUndefined(currentCell.colSpan)) {\n cell.colSpan = currentCell.colSpan;\n }\n if (!isNullOrUndefined(currentCell.rowSpan)) {\n cell.rowSpan = currentCell.rowSpan;\n }\n if (isHeader) {\n cell.style = _this.getHeaderThemeStyle(_this.theme);\n }\n else {\n cell.style = _this.getRecordThemeStyle(_this.theme);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n fontColor: currentCell.style.fontColor,\n fontName: currentCell.style.fontName,\n fontSize: currentCell.style.fontSize,\n hAlign: currentCell.style.excelHAlign,\n vAlign: currentCell.style.excelVAlign,\n rotation: currentCell.style.excelRotation,\n bold: currentCell.style.bold,\n indent: currentCell.style.indent,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n backColor: currentCell.style.backColor,\n wrapText: currentCell.style.wrapText,\n borders: currentCell.style.excelBorders,\n numberFormat: currentCell.style.excelNumberFormat,\n type: currentCell.style.excelType,\n strikeThrough: currentCell.style.strikeThrough\n };\n cell.style = _this.mergeOptions(cellStyle, cell.style);\n }\n if (!isNullOrUndefined(currentCell.image) && !isNullOrUndefined(currentCell.image.base64)) {\n if (currentCell.rowSpan > 1) {\n _this.setImage(currentCell, cell.index);\n }\n else {\n templateRowHeight = _this.setImage(currentCell, cell.index);\n if (currentCell.image.height && currentCell.value !== '') {\n templateRowHeight += 30;\n }\n }\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n cell.hyperlink = { target: currentCell.hyperLink.target };\n cell.value = currentCell.hyperLink.displayText;\n }\n return cell;\n };\n var processRow = function (currentRow, isHeader) {\n var excelDetailCells = [];\n detailCellIndex = 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n var currentCell = currentRow.cells[parseInt(j.toString(), 10)];\n var detailCell = processCell_1(currentCell, isHeader);\n excelDetailCells.push(detailCell);\n }\n var row = { index: _this.rowLength++, cells: excelDetailCells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n };\n if (templateData.value.columnHeader) {\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], true);\n }\n }\n if (templateData.value.rows) {\n for (var i = 0; i < templateData.value.rows.length; i++) {\n processRow(templateData.value.rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (templateData.value.image) {\n templateRowHeight = this.setImage(templateData.value, detailIndent);\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n }\n else if (templateData.value.text) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n value: templateData.value.text,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n else if (templateData.value.hyperLink) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: 2,\n hyperlink: { target: templateData.value.hyperLink.target },\n value: templateData.value.hyperLink.displayText,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = {\n outlineLevel: 1, isCollapsed: !templateData.parentRow.isExpand, isHidden: !templateData.parentRow.isExpand\n };\n }\n return rows;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n var columnsDetails = {};\n if (!isNullOrUndefined(cell.attributes.index)) {\n columnsDetails = this.parent.getColumnByIndex(cell.attributes.index);\n }\n if (cell.cellType === CellType.DetailFooterIntent || columnsDetails.type === 'checkbox') {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell,\n cell: cell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (gObj, cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type === 'dateonly' ? 'date' : format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type === 'dateonly' ? 'date' : col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto' && !gObj.childGridLevel) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\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})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren, addStickyColumnPosition } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell', attrs: { role: 'columnheader' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : ''\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n break;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n if (!isNullOrUndefined(column.filterTemplate)) {\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.focus();\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.classList.add('e-input-focus');\n }\n else if (!isNullOrUndefined(this.dlgDiv.querySelector('.e-flmenu-input'))) {\n this.dlgDiv.querySelector('.e-flmenu-input').focus();\n this.dlgDiv.querySelector('.e-flmenu-input').parentElement.classList.add('e-input-focus');\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\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})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.focusedMenuItem = null;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.tabIndex = li.classList.contains('e-disabled') ? -1 : 0;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n }\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyUp, this);\n EventHandler.add(this.dlg, 'keydown', this.keyDown, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n }\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyUp);\n EventHandler.remove(this.dlg, 'keydown', this.keyDown);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if ((this.options.isResponsiveFilter || Browser.isDevice)\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.focusNextOrPrevElement = function (e, focusableElements, focusClassName) {\n var nextIndex = (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var focusClass = nextElement.classList.contains('e-chk-hidden') ? 'e-chkfocus' : focusClassName;\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : parentsUntil(nextElement, 'e-menu-item');\n this.excelSetFocus(target, focusClass);\n }\n };\n ExcelFilterBase.prototype.keyUp = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n var focusClass = e.target.classList.contains('e-chk-hidden') ? 'e-chkfocus' : 'e-menufocus';\n var target = e.target.classList.contains('e-menu-item')\n ? parentsUntil(e.target, 'e-menu-item') : parentsUntil(e.target, 'e-ftrchk');\n this.excelSetFocus(target, focusClass);\n }\n else if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey) {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n this.focusNextOrPrevElement(e, focusableElements, 'e-menufocus');\n }\n else if ((e.key === 'Enter' || e.code === 'ArrowRight') && e.target.classList.contains('e-menu-item')) {\n e.preventDefault();\n e.target.click();\n if (e.target.classList.contains('e-submenu')) {\n this.hoverHandler(e);\n this.menuObj.element.querySelector('.e-menu-item').focus();\n this.excelSetFocus(parentsUntil(this.menuObj.element.querySelector('.e-menu-item'), 'e-menu-item'), 'e-focused');\n this.focusedMenuItem = this.menuObj.element.querySelector('.e-menu-item');\n }\n }\n };\n ExcelFilterBase.prototype.keyDown = function (e) {\n //prevented up and down arrow key press default functionality to prevent the browser scroll when performing keyboard navigation in excel filter element.\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n };\n ExcelFilterBase.prototype.excelSetFocus = function (elem, className) {\n var prevElem = document.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (elem) {\n elem.classList.add(className);\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n EventHandler.remove(this.menuObj.element, 'keydown', this.contextKeyDownHandler);\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n EventHandler.add(this.menuObj.element, 'keydown', this.contextKeyDownHandler, this);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.contextKeyDownHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n e.preventDefault();\n var focusableElements = Array.from(this.menuObj.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n // Focus the next / previous context menu item\n this.focusNextOrPrevElement(e, focusableElements, 'e-focused');\n }\n else if (e.key === 'ArrowLeft' || e.key === 'Escape') {\n e.preventDefault();\n this.menuObj.close();\n this.focusedMenuItem = null;\n document.querySelector('.e-submenu.e-menu-item').classList.remove('e-selected');\n document.querySelector('.e-submenu.e-menu-item').focus();\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.closeDialog();\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: true,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var rows = [].slice.call(_this.dlgObj.element.querySelectorAll('table.e-xlfl-table tr.e-xlfl-fields'));\n for (var i = 0; i < rows.length; i++) {\n var valInput = rows[i].children[1].querySelector('.e-control');\n var dropDownList = rows[i]\n .querySelector('.e-dropdownlist.e-control')['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (valInput && !isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n var valInput = args.element.closest('.e-xlfl-fields').children[1].querySelector('.e-control');\n var dropDownList = args.element['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\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})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil, addFixedColumnBorder, applyStickyLeftRightPosition } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n if (this.element.querySelectorAll('.e-leftfreeze').length &&\n (this.element.querySelectorAll('.e-indentcell').length || this.element.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = this.element.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n addFixedColumnBorder(this.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n if (rowdrag.classList.contains('e-leftfreeze')) {\n rowdrag.className = 'e-dragheadercell e-mastercell e-leftfreeze';\n }\n else {\n rowdrag.className = 'e-filterbarcell e-mastercell';\n }\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n Filter.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator, col.isForeignKey);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @param {boolean} isForeignColumn - Defines whether it is a foreign key column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator, isForeignColumn) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName, isForeignColumn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if ((this.filterSettings.type === 'CheckBox' || this.filterSettings.type === 'Excel')) {\n this.filterSettings.columns = (this.actualData.length <= 1) ? this.checkboxPrevFilterObject :\n this.checkboxFilterObject;\n this.actualPredicate[this.column.field] = this.filterSettings.columns;\n var col_1 = this.parent.getColumnByField(this.column.field);\n var iconClass = this.parent.showColumnMenu && col_1.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(this.column.field)\n .querySelector(iconClass);\n if (this.checkboxPrevFilterObject.length === 0) {\n filterIconElement.classList.remove('e-filtered');\n }\n else {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.isresetFocus = false;\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal',\n parentTotalDataCount: gObj.getDataModule().isRemote() && gObj.allowPaging ? gObj.pagerModule.pagerObj.totalRecordsCount :\n gObj.getDataModule().isRemote() ? gObj.totalDataRecordsCount : gObj.getFilteredRecords().length,\n parentCurrentViewDataCount: gObj.currentViewData.length,\n parentFilteredLocalRecords: !gObj.getDataModule().isRemote() ? gObj.getFilteredRecords() : []\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n if (!isNullOrUndefined(this.column)) {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(field);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n }\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar' && !parentsUntil(e.target, 'e-toolbar')\n && isNullOrUndefined(this.parent.element.querySelector('.e-filter-popup'))) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent, this.column.isForeignColumn());\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((this.filterModule && hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && !parentsUntil(target, 'e-date-overflow') && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle\n && !(parentsUntil(target, 'e-search-wrapper') && !hasDialogClosed)) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id && !(parentsUntil(target, 'e-search-wrapper')\n && hasDialogClosed);\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n this.actualData = Object.keys(this.actualPredicate);\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n this.checkboxFilterObject = dataManager.dataSource.json;\n this.checkboxPrevFilterObject = dataManager.executeLocal(query);\n for (var i = 0; i < this.checkboxPrevFilterObject.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (this.checkboxPrevFilterObject[parseInt(i.toString(), 10)].field ===\n this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n var isExistItem = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\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 { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\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 { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\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})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\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})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\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})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\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})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow', attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\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 { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\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 { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this_1.enableLogger = true;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) &&\n !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto' && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-multi-select-list-wrapper')) && parentsUntil(relatedTarget, 'e-input-group'))\n && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\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 { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\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 { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n this.options.parentTotalDataCount = this.options.parentTotalDataCount;\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
A
';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height) :\n Math.floor(parseInt(computedStyle.height.split('px')[0])) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount + this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, addClass, extend } from '@syncfusion/ej2-base';\nimport { appendChildren, setStyleAndAttributes, addFixedColumnBorder, addStickyColumnPosition } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (this.parent.getContentTable().querySelector('.e-emptyrow')) {\n var emptyRow = this.parent.getContentTable().querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.frozenRows && this.parent.element.querySelector('.e-frozenrow-empty')) {\n this.parent.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length +\n this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var inputValue;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n inputValue = (elements[col.uid]).value;\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, col, td_1);\n if (this.parent.enableColumnVirtualization) {\n if (col.freeze === 'Left' && !isNullOrUndefined(col.valueX)) {\n td_1.style.left = (col.valueX - this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Right' && !isNullOrUndefined(col.valueX)) {\n td_1.style.right = (col.valueX + this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n td_1.style.left = (this.parent.leftrightColumnWidth('left') - this.parent.translateX) + 'px';\n td_1.style.right = (this.parent.leftrightColumnWidth('right') + this.parent.translateX) + 'px';\n }\n }\n }\n td_1.setAttribute('aria-label', inputValue + this.parent.localeObj.getConstant('ColumnHeader') + col.headerText);\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n addFixedColumnBorder(tr);\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.setAttribute('aria-label', args.cell.innerHTML + this.parent.localeObj.getConstant('ColumnHeader') + args.columnObject.field);\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var _this = this;\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn, padZero } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[0];\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = (this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\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})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\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})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(e['index']);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableColumnVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableColumnVirtualization ||\n (this.parent.enableInfiniteScrolling && !this.previousData)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[0];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length\n && this.parent.groupSettings.showGroupedColumn) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef = this_1;\n rows = rows.filter(function (data) {\n var flag = data.isDataRow && data !== dragRowObject_1;\n if (flag) {\n var groupedColumn = thisRef.parent.groupSettings.columns[parseInt(i.toString(), 10)].split('.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer1 = data.data[groupedColumn[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer2 = args.data[groupedColumn[0]];\n for (var j = 1; j < groupedColumn.length; j++) {\n comparer1 = comparer1[groupedColumn[j]];\n comparer2 = comparer2[groupedColumn[j]];\n }\n return flag && comparer1 === comparer2;\n }\n else {\n return flag;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.cloneFrozen) {\n this.cloneFrozen.remove();\n if (this.frozen) {\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n for (var i = 0; i < tr.length; i++) {\n addFixedColumnBorder(tr[parseInt(i.toString(), 10)]);\n if (this.parent.enableColumnVirtualization &&\n tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze').length) {\n var cols = this.parent.getColumns();\n var leftrightCells = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze.e-fixedfreeze'));\n for (var j = 0; j < leftrightCells.length; j++) {\n if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-leftfreeze')) {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (cols[parseInt(j.toString(), 10)].valueX - this.parent.translateX) + 'px';\n }\n else if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-rightfreeze')) {\n var idx = parseInt(leftrightCells[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10);\n leftrightCells[parseInt(j.toString(), 10)].style.right = ((cols[parseInt(idx.toString(), 10)].valueX + this.parent.translateX)) + 'px';\n }\n else {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (this.parent.leftrightColumnWidth('left') -\n this.parent.translateX) + 'px';\n leftrightCells[parseInt(j.toString(), 10)].style.right = (this.parent.leftrightColumnWidth('right') +\n this.parent.translateX) + 'px';\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_2 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_2(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\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})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select, EventHandler } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, refreshForeignData, getObject, addRemoveEventListener, } from '../base/util';\nimport { getCellByColAndRowIndex, addFixedColumnBorder } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(this.parent.element, 'mousedown', this.mouseDownHandler, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n EventHandler.remove(this.parent.element, 'mousedown', this.mouseDownHandler);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.mouseDownHandler = function (e) {\n if (!isNullOrUndefined(this.parent.element.querySelector('.e-gridform'))) {\n this.mouseDownElement = e.target;\n }\n else {\n this.mouseDownElement = undefined;\n }\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if ((this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td'))\n && isNullOrUndefined(this.mouseDownElement) || this.mouseDownElement === e.target) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear) {\n if ((this.parent.isEdit && clear)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var actualIndex = e.element.getAttribute('data-colindex') ? parseInt(e.element.getAttribute('data-colindex')) : cellIndex;\n if (actualIndex !== cellIndex) {\n cellIndex = actualIndex;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += ((this.parent.getContent().querySelector('.e-hiddenrow') ? 0 : this.parent.frozenRows) +\n this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length);\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (var i = 0; i < rows.length; i++) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n isInsert = this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n if (isInsert) {\n i--;\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n var rowClone = row.clone();\n if (isTop) {\n gObj.getRowsObject().unshift(rowClone);\n }\n else {\n gObj.getRowsObject().push(rowClone);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (selectedRows.length === 1 || data) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataObjects = gObj.getRowsObject().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n rows[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rows[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n dataObjects[parseInt(i.toString(), 10)].index = j;\n j++;\n }\n else {\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n dataObjects[parseInt(i.toString(), 10)].index = -1;\n }\n }\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n if (gObj.isEdit) {\n this.saveCell();\n }\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n addFixedColumnBorder(tr);\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-empty')) {\n gObj.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject() });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n });\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n // if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n // return i;\n // } else \n if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].allowEditing && cols[parseInt(i.toString(), 10)].visible &&\n !(cols[parseInt(i.toString(), 10)].isIdentity && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n var row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n // cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj_1 = gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n if (gObj.isEdit ||\n (!rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.data[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.data[\"\" + field]).toString() !== new Date(value).toString()))) ||\n (rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.changes[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.changes[\"\" + field]).toString() !== new Date(value).toString())))) {\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n }\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n if (rowObj) {\n this.setChanges(rowObj, column.field, value);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n }\n var rowcell = rowObj ? rowObj.cells : undefined;\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (rowObj) {\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n }\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td:not(.e-hide)')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerHTML === '') {\n this.editCell(parseInt(insertedRows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10), this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n args.cell.removeAttribute('aria-label');\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n // cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n if (!(_this.parent.isReact || _this.parent.isVue)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n if (_this.parent.isReact || _this.parent.isVue) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell');\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = void 0;\n if (rowcell) {\n cell = rowcell.querySelector('.e-field');\n }\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.editNext = false;\n this.mouseDownElement = undefined;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\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})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month == 1) {\n if (this.isLeadingZero && month == 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\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})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker, MaskedDateTime } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nDatePicker.Inject(MaskedDateTime);\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, getParsedFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, padZero } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.fieldname = '';\n this.data = {};\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length || isNullOrUndefined(this.parent.getRowByIndex(parseInt(this.parent.getSelectedRows()[0].getAttribute('data-rowindex'), 10)))) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\n }\n var lastTr = gObj.getContent().querySelector('tr:last-child');\n var hdrTbody = gObj.getHeaderContent().querySelector('tbody');\n if (gObj.frozenRows && isNullOrUndefined(lastTr) && hdrTbody && hdrTbody.querySelector('tr:last-child')) {\n this.isLastRow = tr.rowIndex === parseInt(gObj.getHeaderContent().querySelector('tbody').querySelector('tr:last-child').getAttribute('data-rowindex'), 10);\n }\n else if (lastTr) {\n this.isLastRow = tr.rowIndex === lastTr.rowIndex;\n }\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.fieldname = fieldname;\n this.data = data;\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n if (this.parent.isFrozenGrid()) {\n if (this.parent.element.querySelector('.e-gridheader')) {\n this.parent.element.querySelector('.e-gridheader').style.position = '';\n }\n this.parent.element.querySelector('.e-gridcontent').style.position = '';\n }\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord(this.fieldname, this.data);\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterAfterOpen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterAfterOpen', 'filterBeforeOpen', 'filterchoicerequest', 'filterSearchBegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey && e.action === 'ctrlEnter') {\n e.action = 'insert';\n }\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var idx = 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = 1;\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n rules = extend(rules, mRules, frRules);\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n if (!(event && event['relatedTarget'] && event['relatedTarget'].classList.contains('e-cancelbutton'))) {\n _this.valErrorPlacement(inputElement, error);\n }\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + getParsedFieldID(id) + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n var field = inputElement.name;\n table = this.parent.isFrozenGrid() ? gObj.element : isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var formObj = this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n rows = [].slice.call(this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHearderRows = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n isFHdr = fHearderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHearderRows.length - 1;\n var insertRow = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (insertRow.length === 1 && (insertRow[0].classList.contains('e-addedrow') || insertRow[0].classList.contains('e-insertedrow'))) {\n isFHdrLastRow = true;\n }\n }\n if (isFHdrLastRow || (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows)) {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n formObj.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n formObj.appendChild(div);\n }\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n this.formObj.element.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n }\n if (!isNullOrUndefined(td)) {\n if (td.classList.contains('e-fixedfreeze')) {\n div.classList.add('e-fixederror');\n }\n else if (td.classList.contains('e-leftfreeze') || td.classList.contains('e-rightfreeze')) {\n div.classList.add('e-freezeerror');\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if (this.parent.frozenRows && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || this.parent.frozenRows) {\n // gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization && !(div.classList.contains('e-freezeerror') && div.classList.contains('e-fixederror'))) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @returns {string}\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\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 { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n gObj.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (e, position, scrollElem) {\n var _this = this;\n var cliRect = scrollElem.getBoundingClientRect();\n if (cliRect.left >= position.x - 20) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'left', e); }, 200);\n }\n else if (cliRect.left + scrollElem.clientWidth - 20 -\n (this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'right', e); }, 200);\n }\n if (cliRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'up', e); }, 200);\n }\n else if (cliRect.top + scrollElem.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElem.firstElementChild.scrollWidth > scrollElem.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'down', e); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElem, direction, e) {\n var rowIndex = -1;\n var colIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n colIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (e && closest(e.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElem.scrollTop = 0 : scrollElem.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n scrollElem.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollHeight;\n }\n break;\n case 'left':\n if (colIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().left > 0))) {\n colIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < 1 ? scrollElem.scrollLeft = 0 : scrollElem.scrollLeft -= nextEle.offsetWidth;\n }\n break;\n case 'right':\n if (colIndex < this.parent.columns.length - 1) {\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < this.parent.columns.length - 1 ? scrollElem.scrollLeft += nextEle.offsetWidth : scrollElem.scrollLeft = scrollElem.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && colIndex > -1) {\n var e_1 = { target: this.parent.getCellFromIndex(rowIndex, colIndex) };\n this.endAFCell = e_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(e_1, rowIndex, colIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElem, direction, colInd, rowInd) {\n var nextEle = this.parent.getCellFromIndex(rowInd, direction === 'left' ? colInd - 1 : colInd + 1);\n if (nextEle && nextEle.classList.contains('e-hide')) {\n var siblingEles = nextEle.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextEle.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextEle = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextEle;\n }\n else {\n scrollElem.scrollLeft = 0;\n return null;\n }\n }\n return nextEle;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.isAutoFillSel = false;\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize')) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\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 { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StackedColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-stacked-columns';\n }\n }\n});\nexport var StackedColumnsPlugin = {\n name: 'e-stacked-columns',\n install: function (Vue) {\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n }\n};\nexport var StackedColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stacked-column';\n }\n }\n});\nexport var StackedColumnPlugin = {\n name: 'e-stacked-column',\n install: function (Vue) {\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregateColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregatesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-aggregates';\n }\n }\n});\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-aggregate';\n }\n }\n});\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { StackedColumnsDirective, StackedColumnDirective, StackedColumnsPlugin, StackedColumnPlugin } from './stacked-column.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoFit', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'cssClass', 'currencyCode', 'currentAction', 'currentViewData', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'emptyRecordTemplate', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableStickyHeader', 'enableVirtualMaskRow', 'enableVirtualization', 'exportGrids', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'loadingIndicator', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'showHider', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nexport var GridComponent = vueDefineComponent({\n name: 'GridComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Grid({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": { \"e-column\": { \"e-stacked-columns\": \"e-stacked-column\" } }, \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } },\n tagNameMapper: { \"e-stacked-columns\": \"e-columns\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addRecord: function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n },\n addShimmerEffect: function () {\n return this.ej2Instances.addShimmerEffect();\n },\n autoFitColumns: function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n },\n batchAsyncUpdate: function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n },\n batchUpdate: function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n },\n calculatePageSizeByParentHeight: function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n },\n changeDataSource: function (dataSource, columns) {\n return this.ej2Instances.changeDataSource(dataSource, columns);\n },\n clearCellSelection: function () {\n return this.ej2Instances.clearCellSelection();\n },\n clearFiltering: function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n },\n clearGrouping: function () {\n return this.ej2Instances.clearGrouping();\n },\n clearRowSelection: function () {\n return this.ej2Instances.clearRowSelection();\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n closeEdit: function () {\n return this.ej2Instances.closeEdit();\n },\n copy: function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n dataReady: function () {\n return this.ej2Instances.dataReady();\n },\n deleteRecord: function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n },\n deleteRow: function (tr) {\n return this.ej2Instances.deleteRow(tr);\n },\n destroyTemplate: function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n },\n detailCollapseAll: function () {\n return this.ej2Instances.detailCollapseAll();\n },\n detailExpandAll: function () {\n return this.ej2Instances.detailExpandAll();\n },\n editCell: function (index, field) {\n return this.ej2Instances.editCell(index, field);\n },\n enableToolbarItems: function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n },\n endEdit: function () {\n return this.ej2Instances.endEdit();\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n extendRequiredModules: function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n },\n getBatchChanges: function () {\n return this.ej2Instances.getBatchChanges();\n },\n getCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n },\n getColumnByField: function (field) {\n return this.ej2Instances.getColumnByField(field);\n },\n getColumnByUid: function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n },\n getColumnFieldNames: function () {\n return this.ej2Instances.getColumnFieldNames();\n },\n getColumnHeaderByField: function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n },\n getColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n },\n getColumnHeaderByUid: function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n },\n getColumnIndexByField: function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n },\n getColumnIndexByUid: function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n },\n getColumns: function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getContentTable: function () {\n return this.ej2Instances.getContentTable();\n },\n getCurrentViewRecords: function () {\n return this.ej2Instances.getCurrentViewRecords();\n },\n getDataModule: function () {\n return this.ej2Instances.getDataModule();\n },\n getDataRows: function () {\n return this.ej2Instances.getDataRows();\n },\n getFilterUIInfo: function () {\n return this.ej2Instances.getFilterUIInfo();\n },\n getFilteredRecords: function () {\n return this.ej2Instances.getFilteredRecords();\n },\n getFooterContent: function () {\n return this.ej2Instances.getFooterContent();\n },\n getFooterContentTable: function () {\n return this.ej2Instances.getFooterContentTable();\n },\n getForeignKeyColumns: function () {\n return this.ej2Instances.getForeignKeyColumns();\n },\n getFrozenDataRows: function () {\n return this.ej2Instances.getFrozenDataRows();\n },\n getFrozenLeftColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n },\n getFrozenLeftCount: function () {\n return this.ej2Instances.getFrozenLeftCount();\n },\n getFrozenMode: function () {\n return this.ej2Instances.getFrozenMode();\n },\n getFrozenRightCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n },\n getFrozenRightColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n },\n getFrozenRightDataRows: function () {\n return this.ej2Instances.getFrozenRightDataRows();\n },\n getFrozenRightRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n },\n getFrozenRightRows: function () {\n return this.ej2Instances.getFrozenRightRows();\n },\n getFrozenRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n },\n getHeaderContent: function () {\n return this.ej2Instances.getHeaderContent();\n },\n getHeaderTable: function () {\n return this.ej2Instances.getHeaderTable();\n },\n getHiddenColumns: function () {\n return this.ej2Instances.getHiddenColumns();\n },\n getMediaColumns: function () {\n return this.ej2Instances.getMediaColumns();\n },\n getMovableCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n },\n getMovableColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n },\n getMovableDataRows: function () {\n return this.ej2Instances.getMovableDataRows();\n },\n getMovableRowByIndex: function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n },\n getMovableRows: function () {\n return this.ej2Instances.getMovableRows();\n },\n getPager: function () {\n return this.ej2Instances.getPager();\n },\n getPrimaryKeyFieldNames: function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getRowIndexByPrimaryKey: function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n },\n getRowInfo: function (target) {\n return this.ej2Instances.getRowInfo(target);\n },\n getRows: function () {\n return this.ej2Instances.getRows();\n },\n getSelectedColumnsUid: function () {\n return this.ej2Instances.getSelectedColumnsUid();\n },\n getSelectedRecords: function () {\n return this.ej2Instances.getSelectedRecords();\n },\n getSelectedRowCellIndexes: function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n },\n getSelectedRowIndexes: function () {\n return this.ej2Instances.getSelectedRowIndexes();\n },\n getSelectedRows: function () {\n return this.ej2Instances.getSelectedRows();\n },\n getSummaryValues: function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n },\n getUidByColumnField: function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n },\n getVisibleColumns: function () {\n return this.ej2Instances.getVisibleColumns();\n },\n goToPage: function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n },\n groupCollapseAll: function () {\n return this.ej2Instances.groupCollapseAll();\n },\n groupColumn: function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n },\n groupExpandAll: function () {\n return this.ej2Instances.groupExpandAll();\n },\n hideColumns: function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n },\n hideScroll: function () {\n return this.ej2Instances.hideScroll();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n isFrozenGrid: function () {\n return this.ej2Instances.isFrozenGrid();\n },\n openColumnChooser: function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshColumns: function () {\n return this.ej2Instances.refreshColumns();\n },\n refreshHeader: function () {\n return this.ej2Instances.refreshHeader();\n },\n removeMaskRow: function () {\n return this.ej2Instances.removeMaskRow();\n },\n reorderColumnByIndex: function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n },\n reorderColumnByTargetIndex: function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n },\n saveCell: function () {\n return this.ej2Instances.saveCell();\n },\n search: function (searchString) {\n return this.ej2Instances.search(searchString);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCells: function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n },\n selectCellsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n },\n selectRowsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n },\n serverCsvExport: function (url) {\n return this.ej2Instances.serverCsvExport(url);\n },\n serverExcelExport: function (url) {\n return this.ej2Instances.serverExcelExport(url);\n },\n serverPdfExport: function (url) {\n return this.ej2Instances.serverPdfExport(url);\n },\n setCellValue: function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n },\n setGridContent: function (element) {\n return this.ej2Instances.setGridContent(element);\n },\n setGridContentTable: function (element) {\n return this.ej2Instances.setGridContentTable(element);\n },\n setGridHeaderContent: function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n },\n setGridHeaderTable: function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n },\n setGridPager: function (element) {\n return this.ej2Instances.setGridPager(element);\n },\n setRowData: function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n },\n showAdaptiveFilterDialog: function () {\n return this.ej2Instances.showAdaptiveFilterDialog();\n },\n showAdaptiveSortDialog: function () {\n return this.ej2Instances.showAdaptiveSortDialog();\n },\n showColumns: function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n },\n showMaskRow: function (axisDirection, dialogElement) {\n return this.ej2Instances.showMaskRow(axisDirection, dialogElement);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n },\n startEdit: function () {\n return this.ej2Instances.startEdit();\n },\n ungroupColumn: function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n },\n updateCell: function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n },\n updateExternalMessage: function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n },\n updateRow: function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n },\n updateRowValue: function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n },\n }\n});\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\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})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-row');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('ClearButton'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableColumnVirtualization && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('ejs-tab',{ref:\"productsTab\",attrs:{\"id\":\"element\"}},[_c('e-tabitems',[_c('e-tabitem',{attrs:{\"header\":_vm.headerText2,\"content\":_vm.currencyTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText1,\"content\":_vm.statesTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText8,\"content\":_vm.priceAreaTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText7,\"content\":_vm.suppliersTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText3,\"content\":_vm.defaultMechanismTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText4,\"content\":_vm.referenceTypesTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText5,\"content\":_vm.sectorsTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText6,\"content\":_vm.strategiesTemplate}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.currencyData,\"allowFiltering\":true,\"allowPaging\":true,\"enablePersistence\":true,\"allowResizing\":true,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"currencyId\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Name\",\"validationRules\":_vm.requiredRules,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"symbol\",\"headerText\":\"Symbol\",\"validationRules\":_vm.symbolRules,\"width\":\"120\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Currency.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Currency.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Currency.vue?vue&type=template&id=3c7a1d22\"\nimport script from \"./Currency.vue?vue&type=script&lang=js\"\nexport * from \"./Currency.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"simplest-grid\"},[_c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.rtData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"enablePersistence\":true,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Name\",\"validationRules\":_vm.requiredRules,\"width\":\"120\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceType.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceType.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ReferenceType.vue?vue&type=template&id=fe02da9e\"\nimport script from \"./ReferenceType.vue?vue&type=script&lang=js\"\nexport * from \"./ReferenceType.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"simplest-grid\"},[_c('CRow',[_c('CCol',[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.sectorData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"enablePersistence\":true,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"editSettings\":_vm.editSettings,\"pageSettings\":_vm.pageSettings,\"filterSettings\":_vm.filterOptions,\"toolbarClick\":_vm.toolbarClick,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"sectorId\",\"headerText\":\"\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Name\",\"validationRules\":_vm.nameRules,\"width\":\"120\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Sector.vue?vue&type=template&id=5a274bf1\"\nimport script from \"./Sector.vue?vue&type=script&lang=js\"\nexport * from \"./Sector.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('CRow',[_c('CCol',[_c('ejs-grid',{ref:\"grid\",attrs:{\"id\":\"gridStates\",\"dataSource\":_vm.stateData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"editSettings\":_vm.editSettings,\"pageSettings\":_vm.pageSettings,\"filterSettings\":_vm.filterOptions,\"toolbarClick\":_vm.toolbarClick,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"stateId\",\"headerText\":\"\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{ref:\"dplState\",attrs:{\"field\":\"stateName\",\"headerText\":\"Country\",\"validationRules\":_vm.requiredRules,\"width\":\"120\",\"dataSource\":_vm.states,\"edit\":_vm.stateParams}}),_c('e-column',{attrs:{\"field\":\"currencyId\",\"headerText\":\"Currency\",\"validationRules\":_vm.requiredRules,\"width\":\"120\",\"edit\":_vm.currencyParams,\"foreignKeyField\":\"currencyId\",\"foreignKeyValue\":\"name\",\"dataSource\":_vm.currency,\"editType\":\"dropdownedit\"}}),_c('e-column',{attrs:{\"field\":\"alpha2\",\"headerText\":\"Alpha 2 Code\",\"validationRules\":_vm.alpha2Rules,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"alpha3\",\"headerText\":\"Alpha 3 Code\",\"validationRules\":_vm.alpha3Rules,\"width\":\"120\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export let worldMap = {\r\n \"type\": \"FeatureCollection\",\r\n \"crs\": { \"type\": \"name\", \"properties\": { \"name\": \"urn:ogc:def:crs:OGC:1.3:CRS84\" } },\r\n \"features\": [\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Afghanistan\", \"name\": \"Afghanistan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[61.21081709172573, 35.650072333309218], [62.230651483005879, 35.270663967422287], [62.984662306576588, 35.404040839167614], [63.193538445900337, 35.857165635718907], [63.982895949158696, 36.007957465146596], [64.546479119733888, 36.31207326918426], [64.746105177677393, 37.111817735333297], [65.588947788357828, 37.305216783185628], [65.745630731066811, 37.661164048812061], [66.217384881459324, 37.393790188133913], [66.518606805288655, 37.362784328758785], [67.075782098259609, 37.35614390720928], [67.829999627559502, 37.144994004864678], [68.135562371701369, 37.023115139304302], [68.859445835245921, 37.344335842430588], [69.196272820924364, 37.15114350030742], [69.518785434857946, 37.608996690413413], [70.116578403610319, 37.588222764632086], [70.270574171840124, 37.73516469985401], [70.376304152309274, 38.138395901027515], [70.806820509732873, 38.486281643216408], [71.348131137990251, 38.258905341132156], [71.239403924448155, 37.953265082341879], [71.541917759084768, 37.905774441065631], [71.448693475230229, 37.065644843080513], [71.84463829945058, 36.738171291646914], [72.193040805962383, 36.94828766534566], [72.636889682917271, 37.047558091778349], [73.260055779924983, 37.495256862938994], [73.948695916646486, 37.421566270490786], [74.980002475895404, 37.419990139305888], [75.158027785140902, 37.13303091078911], [74.575892775372964, 37.02084137628345], [74.067551710917812, 36.836175645488446], [72.920024855444453, 36.720007025696312], [71.846291945283909, 36.509942328429851], [71.262348260385735, 36.074387518857797], [71.498767938121077, 35.650563259415996], [71.613076206350698, 35.153203436822857], [71.115018751921625, 34.733125718722228], [71.156773309213449, 34.348911444632144], [70.881803012988385, 33.988855902638512], [69.93054324735958, 34.020120144175102], [70.323594191371583, 33.358532619758385], [69.687147251264847, 33.105498969041228], [69.262522007122541, 32.501944078088293], [69.317764113242546, 31.901412258424436], [68.926676873657655, 31.620189113892064], [68.556932000609308, 31.713310044882011], [67.792689243444769, 31.582930406209623], [67.683393589147457, 31.303154201781414], [66.938891229118454, 31.304911200479346], [66.38145755398601, 30.738899237586448], [66.346472609324408, 29.88794342703617], [65.046862013616092, 29.472180691031902], [64.350418735618504, 29.560030625928089], [64.148002150331237, 29.340819200145965], [63.550260858011164, 29.468330796826162], [62.549856805272775, 29.318572496044304], [60.874248488208778, 29.829238999952604], [61.78122155136343, 30.735850328081231], [61.699314406180811, 31.379506130492661], [60.941944614511115, 31.548074652628745], [60.863654819588952, 32.182919623334421], [60.536077915290761, 32.981268825811561], [60.963700392505991, 33.528832302376252], [60.528429803311575, 33.676446031217999], [60.80319339380744, 34.404101874319856], [61.21081709172573, 35.650072333309218]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Angola\", \"name\": \"Angola\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[16.326528354567042, -5.877470391466217], [16.573179965896141, -6.622644545115092], [16.860190870845226, -7.222297865429978], [17.089995965247166, -7.545688978712474], [17.472970004962288, -8.068551120641656], [18.134221632569048, -7.987677504104865], [18.464175652752683, -7.847014255406475], [19.016751743249664, -7.988245944860138], [19.166613396896079, -7.738183688999724], [19.417502475673214, -7.155428562044277], [20.037723016040214, -7.116361179231658], [20.091621534920616, -6.943090101756949], [20.60182295093832, -6.939317722199688], [20.514748162526526, -7.299605808138663], [21.728110792739752, -7.290872491081315], [21.74645592620336, -7.920084730667113], [21.949130893652033, -8.305900974158304], [21.80180138518795, -8.908706556842985], [21.875181919042397, -9.523707777548564], [22.208753289486417, -9.894796237836529], [22.155268182064326, -11.084801120653777], [22.402798292742428, -10.99307545333569], [22.837345411884762, -11.017621758674334], [23.456790805767461, -10.867863457892481], [23.912215203555743, -10.926826267137541], [24.017893507592614, -11.237298272347115], [23.904153680118235, -11.722281589406332], [24.079905226342895, -12.191296888887305], [23.930922072045373, -12.565847670138821], [24.0161365088947, -12.91104623784855], [21.933886346125941, -12.898437188369353], [21.887842644953871, -16.080310153876891], [22.562478468524283, -16.898451429921831], [23.215048455506086, -17.523116143465952], [21.377176141045592, -17.930636488519706], [18.956186964603628, -17.789094740472233], [18.263309360434217, -17.309950860262003], [14.209706658595049, -17.353100681225708], [14.058501417709035, -17.423380629142653], [13.462362094789963, -16.971211846588741], [12.814081251688405, -16.941342868724075], [12.21546146001938, -17.111668389558059], [11.734198846085146, -17.301889336824498], [11.640096062881609, -16.673142185129205], [11.778537224991563, -15.793816013250687], [12.123580763404444, -14.878316338767927], [12.175618930722264, -14.449143568583889], [12.500095249083014, -13.547699883684398], [12.738478631245439, -13.137905775609934], [13.312913852601834, -12.483630466362511], [13.633721144269824, -12.038644707897189], [13.738727654686924, -11.297863050993142], [13.686379428775293, -10.73107594161584], [13.38732791510216, -10.373578383020726], [13.120987583069873, -9.766897067914112], [12.875369500386567, -9.166933689005488], [12.929061313537797, -8.959091078327573], [13.23643273280987, -8.56262948978434], [12.933040398824314, -7.596538588087752], [12.728298374083916, -6.927122084178803], [12.227347039446441, -6.294447523629372], [12.322431674863562, -6.100092461779651], [12.735171339578695, -5.965682061388476], [13.024869419006988, -5.984388929878106], [13.375597364971892, -5.864241224799555], [16.326528354567042, -5.877470391466217]]], [[[12.436688266660919, -5.684303887559223], [12.182336866920277, -5.789930515163801], [11.914963006242115, -5.037986748884733], [12.318607618873923, -4.606230157086158], [12.620759718484548, -4.438023369976121], [12.995517205465202, -4.781103203961918], [12.631611769265842, -4.991271254092935], [12.468004184629759, -5.248361504744991], [12.436688266660919, -5.684303887559223]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Albania\", \"name\": \"Albania\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[20.590247430104906, 41.855404161133592], [20.463175083099195, 41.515089016275333], [20.605181919037356, 41.086226304685219], [21.020040317476397, 40.842726955725873], [20.99998986174722, 40.580003973953964], [20.67499677906363, 40.43499990494302], [20.61500044117275, 40.110006822259365], [20.150015903410516, 39.624997666983965], [19.980000441170144, 39.694993394523401], [19.9600016618732, 39.915005805006039], [19.40608198413673, 40.250773423822459], [19.319058872157139, 40.727230129553554], [19.403549838954287, 41.409565741535445], [19.540027296637099, 41.71998607031275], [19.371768833094958, 41.87754751237064], [19.304486118250786, 42.195745144207812], [19.738051385179627, 42.688247382165564], [19.801613396898681, 42.500093492190835], [20.0707, 42.58863], [20.28375451018189, 42.320259507815074], [20.52295, 42.21787], [20.590247430104906, 41.855404161133592]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"United Arab Emirates\", \"name\": \"United Arab Emirates\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[51.579518670463258, 24.245497137951102], [51.757440626844172, 24.294072984305462], [51.794389275932865, 24.019826158132499], [52.577080519425593, 24.177439276622703], [53.404006788960139, 24.151316840099167], [54.008000929587574, 24.121757920828212], [54.693023716048614, 24.797892360935084], [55.439024692614126, 25.439145209244934], [56.070820753814544, 26.055464178973978], [56.261041701080948, 25.714606431576762], [56.396847365143991, 24.924732163995483], [55.886232537667993, 24.92083059335744], [55.804118686756212, 24.269604193615258], [55.981213820220454, 24.130542914317822], [55.528631626208231, 23.933604030853498], [55.525841098864461, 23.524869289640929], [55.234489373602869, 23.110992743415316], [55.208341098863187, 22.708329982997039], [55.006803012924898, 22.496947536707129], [52.000733270074321, 23.001154486578937], [51.617707553926969, 24.014219265228824], [51.579518670463258, 24.245497137951102]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Argentina\", \"name\": \"Argentina\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-65.5, -55.2], [-66.45, -55.25], [-66.95992, -54.89681], [-67.56244, -54.87001], [-68.63335, -54.8695], [-68.634010227583147, -52.636370458874453], [-68.25, -53.1], [-67.75, -53.85], [-66.45, -54.45], [-65.05, -54.7], [-65.5, -55.2]]], [[[-64.964892137294569, -22.075861504812348], [-64.377021043542257, -22.79809132252354], [-63.986838141522462, -21.993644301035953], [-62.84646847192154, -22.034985446869452], [-62.685057135657885, -22.249029229422401], [-60.846564704009928, -23.880712579038299], [-60.028966030503973, -24.032796319273238], [-58.807128465394939, -24.771459242453268], [-57.777217169817952, -25.162339776309032], [-57.633660040911124, -25.603656508081666], [-58.618173590719707, -27.123718763947117], [-57.609759690976134, -27.395898532828419], [-56.486701626192989, -27.548499037386243], [-55.695845506398186, -27.387837009390815], [-54.788794928595038, -26.621785577096087], [-54.625290696823541, -25.739255466415479], [-54.130049607954412, -25.547639255477243], [-53.628348965048716, -26.12486500417743], [-53.648735317587885, -26.923472588816104], [-54.490725267135517, -27.474756768505767], [-55.162286342984586, -27.881915378533414], [-56.290899624239088, -28.852760512000849], [-57.62513342958291, -30.21629485445424], [-57.874937303281897, -31.016556084926158], [-58.14244035504074, -32.044503676076182], [-58.132647671121404, -33.040566908502008], [-58.349611172098818, -33.263188978815428], [-58.427074144104367, -33.909454441057541], [-58.495442064026541, -34.4314897600701], [-57.225829637263629, -35.288026625307886], [-57.362358771378737, -35.977390232081497], [-56.737487352105447, -36.413125909166574], [-56.788285285048339, -36.901571547189327], [-57.749156867083421, -38.183870538079901], [-59.231857062401865, -38.720220228837199], [-61.2374452378656, -38.92842457454114], [-62.335956997310134, -38.827707208004362], [-62.125763108962914, -39.424104913084868], [-62.33053097191943, -40.172586358400316], [-62.145994432205228, -40.676896661136723], [-62.74580278181697, -41.028761488612083], [-63.770494757732514, -41.166789239263657], [-64.732089809819698, -40.802677097335128], [-65.118035244391578, -41.064314874028874], [-64.97856055363583, -42.058000990569312], [-64.303407965742466, -42.359016208669495], [-63.755947842042339, -42.043686618824495], [-63.458059048095883, -42.563138116222355], [-64.378803880456289, -42.873558444999638], [-65.181803961839691, -43.495380954767782], [-65.328823411710133, -44.501366062193689], [-65.565268927661592, -45.03678557716978], [-66.509965786389344, -45.039627780945843], [-67.293793911392427, -45.551896254255183], [-67.580546434180079, -46.301772963242527], [-66.597066413017259, -47.033924655953804], [-65.641026577401433, -47.23613453551188], [-65.98508826360073, -48.133289076531128], [-67.166178961847649, -48.697337334996931], [-67.816087612566449, -49.869668877970412], [-68.728745083273154, -50.26421843851886], [-69.138539191347789, -50.732510267947788], [-68.815561489523517, -51.771104011594097], [-68.149994879820397, -52.349983406127699], [-68.571545376241332, -52.299443855346247], [-69.498362189396076, -52.142760912637236], [-71.914803839796321, -52.009022305865912], [-72.329403856074023, -51.425956312872394], [-72.309973517532342, -50.677009779666342], [-72.975746832964617, -50.741450290734299], [-73.328050910114456, -50.378785088909865], [-73.415435757120022, -49.318436374712952], [-72.648247443314929, -48.878618259476774], [-72.331160854771937, -48.244238376661819], [-72.44735531278026, -47.738532810253517], [-71.917258470330196, -46.884838148791786], [-71.552009446891233, -45.560732924177117], [-71.659315558545316, -44.973688653341434], [-71.222778896759721, -44.784242852559409], [-71.329800788036195, -44.407521661151677], [-71.793622606071935, -44.207172133156099], [-71.464056159130493, -43.787611179378324], [-71.915423956983901, -43.408564548517404], [-72.148898078078517, -42.254888197601375], [-71.746803758415453, -42.051386407235988], [-71.915734015577542, -40.832339369470716], [-71.680761277946445, -39.808164157878061], [-71.413516608349042, -38.916022230791107], [-70.814664272734703, -38.552995293940732], [-71.118625047475419, -37.576827487947192], [-71.121880662709771, -36.65812387466233], [-70.364769253201658, -36.005088799789931], [-70.388049485949082, -35.169687595359441], [-69.817309129501453, -34.193571465798279], [-69.814776984319209, -33.273886000299839], [-70.074399380153622, -33.09120981214803], [-70.535068935819439, -31.365010267870279], [-69.919008348251921, -30.336339206668306], [-70.013550381129861, -29.367922865518544], [-69.656130337183143, -28.459141127233686], [-69.001234910748266, -27.521213881136127], [-68.295541551370391, -26.899339694935787], [-68.594799770772667, -26.50690886811126], [-68.386001146097342, -26.185016371365229], [-68.417652960876111, -24.518554782816874], [-67.328442959244128, -24.025303236590908], [-66.985233934177629, -22.986348565362825], [-67.106673550063604, -22.735924574476392], [-66.273339402924833, -21.832310479420677], [-64.964892137294569, -22.075861504812348]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Armenia\", \"name\": \"Armenia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[43.582745802592726, 41.09214325618256], [44.972480096218071, 41.248128567055588], [45.179495883979335, 40.985353908851401], [45.560351189970433, 40.812289537105919], [45.359174839058156, 40.561503811193447], [45.891907179555076, 40.218475653639992], [45.610012241402913, 39.899993801425175], [46.034534132680662, 39.628020738273058], [46.483498976432443, 39.464154771475528], [46.505719842317966, 38.770605373686287], [46.143623081248812, 38.74120148371221], [45.735379266143006, 39.319719143219736], [45.739978468616975, 39.473999131827114], [45.298144972521456, 39.471751207022422], [45.00198733905674, 39.740003567049548], [44.793989699081934, 39.713002631177041], [44.400008579288695, 40.005000311842267], [43.656436395040934, 40.253563951166178], [43.752657911968399, 40.740200914058754], [43.582745802592726, 41.09214325618256]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"French Southern and Antarctic Lands\", \"name\": \"Fr. S. Antarctic Lands\", \"continent\": \"Seven seas (open ocean)\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[68.935, -48.625], [69.58, -48.94], [70.525, -49.065], [70.56, -49.255], [70.28, -49.71], [68.745, -49.775], [68.72, -49.2425], [68.8675, -48.83], [68.935, -48.625]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Australia\", \"name\": \"Australia\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[145.397978143494782, -40.792548516605883], [146.364120721623692, -41.137695407883335], [146.908583612250823, -41.000546156580668], [147.689259474884125, -40.808258152022681], [148.289067824495987, -40.875437514002122], [148.359864536735785, -42.062445163746439], [148.017301467073082, -42.40702361426861], [147.914051955353784, -43.211522312188485], [147.564564243763982, -42.937688897473855], [146.87034305235494, -43.634597263362082], [146.663327264593647, -43.580853773778543], [146.048377720320389, -43.54974456153888], [145.431929559510536, -42.693776137056268], [145.295090366801674, -42.03360971452755], [144.7180713238306, -41.162551771815707], [144.743754510679622, -40.703975111657705], [145.397978143494782, -40.792548516605883]]], [[[143.561811151299935, -13.763655694232209], [143.922099237238882, -14.548310642152], [144.563713820574804, -14.171176039285879], [144.894908075133515, -14.594457696188622], [145.374723748963419, -14.984976495018284], [145.271991001567244, -15.428205254785691], [145.48525963763575, -16.285672295804769], [145.637033319276952, -16.784918308176611], [145.888904250267672, -16.906926364817647], [146.160308872664473, -17.76165455492524], [146.063673944278662, -18.280072523677315], [146.387478469019584, -18.958274021075905], [147.471081577747896, -19.480722751546676], [148.177601760042478, -19.955939222902767], [148.848413527623222, -20.391209812097252], [148.717465448195583, -20.633468926681513], [149.289420200802056, -21.260510756111096], [149.678337030230637, -22.342511895438388], [150.07738244038859, -22.122783705333315], [150.482939081015161, -22.556142266533012], [150.727265252891158, -22.402404880464655], [150.899554478152254, -23.462236830338679], [151.609175246384211, -24.076256198830755], [152.07353966695905, -24.45788665130619], [152.855197381805908, -25.267501316023008], [153.136162144176751, -26.071173191026187], [153.161948683890358, -26.641319268502439], [153.09290897034856, -27.260299574494503], [153.569469028944184, -28.110066827102099], [153.512108189100218, -28.995077406532751], [153.339095493787056, -29.458201592732443], [153.069241164358857, -30.350240166954809], [153.089601678681788, -30.923641859665445], [152.891577590139377, -31.640445651985949], [152.450002476205327, -32.550002536755237], [151.709117466436766, -33.041342054986337], [151.343971795862387, -33.816023451473846], [151.010555454715103, -34.310360202777879], [150.714139439089024, -35.173459974916803], [150.328219842733233, -35.671879164371923], [150.075212030232251, -36.420205580390508], [149.946124302367139, -37.109052422841224], [149.997283970336127, -37.425260512035123], [149.423882277625523, -37.772681166333463], [148.304622430615893, -37.809061374666875], [147.38173302631526, -38.219217217767543], [146.922122837511324, -38.606532077795116], [146.317921991154776, -39.035756524411433], [145.489652134380549, -38.593767999019043], [144.876976353128157, -38.41744801203911], [145.032212355732952, -37.896187839510972], [144.485682407814011, -38.085323581699257], [143.609973586196077, -38.809465427405321], [142.745426873952965, -38.538267510737519], [142.17832970598198, -38.380034275059835], [141.606581659104677, -38.308514092767872], [140.638578729413211, -38.019332777662541], [139.992158237874321, -37.402936293285094], [139.806588169514043, -36.643602797188272], [139.574147577065219, -36.138362318670666], [139.082808058834075, -35.732754001611774], [138.120747918856296, -35.612296237939397], [138.449461704664998, -35.127261244447887], [138.207564325106659, -34.384722588845925], [137.719170363516128, -35.07682504653102], [136.829405552314711, -35.260534763328614], [137.352371047108477, -34.707338555644093], [137.503886346588331, -34.130267836240769], [137.890116001537649, -33.640478610978327], [137.810327590079112, -32.900007012668105], [136.996837192940347, -33.752771498348629], [136.372069126531642, -34.094766127256186], [135.98904341038434, -34.89011809666048], [135.208212518454104, -34.478670342752601], [135.239218377829161, -33.947953383114971], [134.613416782774607, -33.222778008763136], [134.085903761939107, -32.848072198214759], [134.273902622617015, -32.617233575166949], [132.990776808809812, -32.011224053680188], [132.288080682504869, -31.982646986622761], [131.326330601120901, -31.495803318001041], [129.535793898639668, -31.590422865527476], [128.240937534702198, -31.948488864877849], [127.102867466338282, -32.282266941051041], [126.148713820501129, -32.2159660784206], [125.088623488465586, -32.728751316052829], [124.22164798390493, -32.959486586236061], [124.028946567888511, -33.483847344701708], [123.65966678273071, -33.890179131812722], [122.811036411633609, -33.914467054989835], [122.18306440642283, -34.003402194964217], [121.299190708502579, -33.821036065406126], [120.580268182458113, -33.930176690406618], [119.893695103028222, -33.976065362281808], [119.298899367348781, -34.50936614353396], [119.007340936357977, -34.464149265278529], [118.505717808100769, -34.746819349915093], [118.024971958489516, -35.064732761374707], [117.295507440257438, -35.025458672832862], [116.62510908413492, -35.025096937806829], [115.564346958479689, -34.386427911111547], [115.026808709779516, -34.196517022438918], [115.048616164206763, -33.623425388322026], [115.545123325667078, -33.487257989232951], [115.714673700016661, -33.259571628554944], [115.679378696761376, -32.900368747694124], [115.801645135563959, -32.205062351207026], [115.689610630355105, -31.612437025683782], [115.160909051576937, -30.601594333622455], [114.99704308477942, -30.030724786094162], [115.040037876446249, -29.461095472940794], [114.64197431850198, -28.810230808224706], [114.61649783738217, -28.516398614213042], [114.173579136208446, -28.118076674107321], [114.048883905088132, -27.33476531342712], [113.477497593236876, -26.543134047147898], [113.338953078262477, -26.116545098578477], [113.77835778204026, -26.549025160429174], [113.440962355606587, -25.621278171493152], [113.936901076311642, -25.911234633082877], [114.232852004047288, -26.298446140245868], [114.216160516417006, -25.786281019801105], [113.721255324357685, -24.998938897402123], [113.625343866024025, -24.683971042583146], [113.393523390762667, -24.384764499613262], [113.502043898575607, -23.80635019297025], [113.706992629045146, -23.56021534596406], [113.843418410295669, -23.059987481378734], [113.736551548316072, -22.475475355725372], [114.149756300921865, -21.755881036061009], [114.225307244932651, -22.51748829517863], [114.64776207891866, -21.829519952076904], [115.460167270979298, -21.495173435148541], [115.94737267462699, -21.068687839443708], [116.711615431791529, -20.701681817306817], [117.166316359527684, -20.623598728113802], [117.441545037914238, -20.746898695562162], [118.229558953932951, -20.374208265873232], [118.836085239742701, -20.263310642174822], [118.987807244951753, -20.044202569257319], [119.252493931150624, -19.952941989829835], [119.805225050944543, -19.976506442954978], [120.856220330896633, -19.683707777589188], [121.399856398607199, -19.239755547769729], [121.655137974129062, -18.70531788500713], [122.241665480641757, -18.197648614171765], [122.286623976735655, -17.798603204013911], [122.312772251475408, -17.254967136303446], [123.012574497571904, -16.405199883695854], [123.433789097183009, -17.268558037996225], [123.859344517106592, -17.069035332917249], [123.503242222183232, -16.596506036040363], [123.817073195491915, -16.11131601325199], [124.258286574399847, -16.32794361741956], [124.379726190285794, -15.567059828353973], [124.926152785340022, -15.07510019293532], [125.167275018413875, -14.680395603090004], [125.670086704613823, -14.510070082256018], [125.685796340030493, -14.230655612853834], [126.125149367376096, -14.347340996968949], [126.142822707219864, -14.095986830301211], [126.582589146023736, -13.95279143642041], [127.065867140817332, -13.817967624570922], [127.804633416861932, -14.276906019755042], [128.359689976108939, -14.869169610252253], [128.985543247595899, -14.875990899314738], [129.621473423379598, -14.969783623924553], [129.409600050982988, -14.420669854391031], [129.888640578328591, -13.618703301653481], [130.339465773642928, -13.357375583553473], [130.183506300985982, -13.107520033422301], [130.617795037966971, -12.536392103732464], [131.223494500859999, -12.183648776908113], [131.73509118054946, -12.302452894747159], [132.575298293183096, -12.114040622611013], [132.557211541881031, -11.603012383676683], [131.824698114143644, -11.273781833545097], [132.357223748911395, -11.128519382372641], [133.019560581596409, -11.376411228076844], [133.550845981989028, -11.786515394745134], [134.393068475481982, -12.042365411022173], [134.678632440327021, -11.9411829565947], [135.298491245667975, -12.248606052299051], [135.882693312727611, -11.962266940969796], [136.258380975489445, -12.049341729381606], [136.492475213771627, -11.857208754120389], [136.951620314684988, -12.351958916882735], [136.685124953355739, -12.887223402562054], [136.305406528875096, -13.291229750219895], [135.961758254134111, -13.324509372615889], [136.077616815332533, -13.72427825282578], [135.783836297753226, -14.223989353088211], [135.4286641786112, -14.715432224183896], [135.500184360903177, -14.997740573794427], [136.295174595281367, -15.550264987859121], [137.065360142159477, -15.870762220933353], [137.580470819244795, -16.215082289294084], [138.303217401278971, -16.807604261952658], [138.58516401586337, -16.806622409739173], [139.108542922115475, -17.062679131745366], [139.260574985918197, -17.371600843986183], [140.215245396078274, -17.710804945550063], [140.875463495039241, -17.36906869880394], [141.071110467696258, -16.832047214426719], [141.274095493738798, -16.388870131091604], [141.398222284103781, -15.840531508042584], [141.702183058844611, -15.044921156476928], [141.563380161708665, -14.561333103089506], [141.635520461188094, -14.270394789286284], [141.519868605718955, -13.698078301653805], [141.650920038011009, -12.944687595270562], [141.842691278246207, -12.741547539931187], [141.68699018775078, -12.407614434461134], [141.928629185147543, -11.877465915578778], [142.118488397387978, -11.328042087451619], [142.14370649634634, -11.04273650476814], [142.51526004452495, -10.668185723516642], [142.797310011974048, -11.157354831591515], [142.866763136974271, -11.784706719614929], [143.11594689348567, -11.90562957117791], [143.158631626558758, -12.325655612846187], [143.522123651299864, -12.834358412327429], [143.597157830987669, -13.400422051652594], [143.561811151299935, -13.763655694232209]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Austria\", \"name\": \"Austria\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[16.979666782304033, 48.123497015976298], [16.903754103267257, 47.714865627628321], [16.340584344150411, 47.712901923201215], [16.534267612380372, 47.496170966169103], [16.202298211337361, 46.852385972676949], [16.011663852612653, 46.683610744811688], [15.137091912504982, 46.658702704447016], [14.632471551174827, 46.431817328469535], [13.806475457421524, 46.509306138691201], [12.376485223040813, 46.767559109069843], [12.153088006243051, 47.115393174826437], [11.164827915093268, 46.941579494812721], [11.048555942436533, 46.751358547546324], [10.442701450246627, 46.893546250997424], [9.932448357796657, 46.920728054382948], [9.479969516649019, 47.102809963563367], [9.632931756232974, 47.347601223329974], [9.594226108446346, 47.525058091820256], [9.896068149463188, 47.58019684507569], [10.402083774465209, 47.302487697939156], [10.544504021861625, 47.566399237653762], [11.426414015354736, 47.523766181012967], [12.141357456112784, 47.703083401065761], [12.620759718484491, 47.672387600284395], [12.932626987365945, 47.467645575543983], [13.025851271220487, 47.637583523135824], [12.884102817443901, 48.289145819687903], [13.243357374736998, 48.41611481382904], [13.595945672264433, 48.877171942737135], [14.33889773932472, 48.555305284207193], [14.901447381254055, 48.964401760445817], [15.253415561593979, 49.039074205107575], [16.029647251050218, 48.733899034207916], [16.49928266771877, 48.785808010445095], [16.960288120194573, 48.596982326850593], [16.879982944412998, 48.470013332709463], [16.979666782304033, 48.123497015976298]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Azerbaijan\", \"name\": \"Azerbaijan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[45.001987339056789, 39.740003567049591], [45.298144972521435, 39.471751207022422], [45.739978468616997, 39.473999131827149], [45.735379266143092, 39.319719143219785], [46.143623081248812, 38.74120148371221], [45.457721795438729, 38.874139105783108], [44.952688022650264, 39.33576467544642], [44.79398969908199, 39.713002631177027], [45.001987339056789, 39.740003567049591]]], [[[47.373315464066216, 41.219732367511249], [47.81566572448471, 41.151416124021338], [47.987283156126033, 41.405819200194223], [48.584352654826283, 41.808869533854669], [49.110263706260653, 41.282286688800518], [49.618914829309588, 40.572924302729966], [50.084829542853093, 40.526157131505776], [50.392821079312704, 40.256561184239096], [49.569202101444795, 40.176100979160701], [49.395259230350419, 39.39948171646224], [49.2232283872507, 39.04921885838791], [48.856532423707584, 38.815486355131775], [48.883249139202533, 38.320245266262638], [48.634375441284831, 38.270377509100925], [48.010744256386502, 38.794014797514528], [48.355529412637928, 39.288764960276886], [48.060095249225256, 39.582235419262439], [47.685079380083117, 39.508363959301185], [46.505719842317966, 38.770605373686251], [46.483498976432443, 39.464154771475528], [46.034534132680697, 39.628020738273044], [45.610012241402913, 39.899993801425175], [45.891907179555133, 40.21847565363997], [45.359174839058156, 40.561503811193482], [45.560351189970469, 40.812289537105947], [45.179495883979392, 40.98535390885143], [44.972480096218156, 41.248128567055623], [45.217426385281634, 41.411451931314041], [45.962600538930438, 41.123872585609789], [46.501637404166978, 41.064444688474104], [46.637908156120567, 41.181672675128219], [46.145431756378983, 41.72280243587263], [46.404950799348818, 41.860675157227341], [46.686070591016652, 41.827137152669899], [47.373315464066216, 41.219732367511249]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Burundi\", \"name\": \"Burundi\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[29.339997592900342, -4.499983412294092], [29.276383904749046, -3.293907159034063], [29.02492638521678, -2.839257907730157], [29.632176141078585, -2.917857761246096], [29.938359002407935, -2.348486830254238], [30.469696079232978, -2.413857517103458], [30.527677036264457, -2.807631931167534], [30.743012729624692, -3.034284763199686], [30.752262811004943, -3.359329522315569], [30.505559523243559, -3.568567396665364], [30.116332635221166, -4.090137627787242], [29.753512404099919, -4.45238941815328], [29.339997592900342, -4.499983412294092]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Belgium\", \"name\": \"Belgium\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3.314971144228536, 51.345780951536071], [4.047071160507527, 51.267258612668556], [4.973991326526913, 51.475023708698124], [5.60697594567, 51.037298488969768], [6.156658155958779, 50.803721015010574], [6.043073357781109, 50.128051662794221], [5.782417433300905, 50.090327867221205], [5.674051954784828, 49.52948354755749], [4.799221632515809, 49.985373033236371], [4.286022983425084, 49.90749664977254], [3.588184441755685, 50.378992418003563], [3.123251580425801, 50.780363267614561], [2.658422071960274, 50.796848049515731], [2.513573032246142, 51.148506171261815], [3.314971144228536, 51.345780951536071]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Benin\", \"name\": \"Benin\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2.691701694356254, 6.258817246928628], [1.865240512712318, 6.14215770102973], [1.618950636409238, 6.832038072126236], [1.664477573258381, 9.128590399609378], [1.46304284018467, 9.334624335157086], [1.425060662450136, 9.825395412632998], [1.077795037448737, 10.175606594275022], [0.772335646171484, 10.470808213742357], [0.899563022474069, 10.997339382364258], [1.243469679376488, 11.11051076908346], [1.447178175471066, 11.547719224488857], [1.93598554851988, 11.641150214072551], [2.154473504249921, 11.940150051313337], [2.49016360841793, 12.233052069543671], [2.84864301922667, 12.235635891158266], [3.611180454125558, 11.660167141155966], [3.572216424177469, 11.327939357951516], [3.797112257511713, 10.734745591673104], [3.600070021182801, 10.332186184119406], [3.705438266625918, 10.063210354040207], [3.220351596702101, 9.4441525333997], [2.912308383810255, 9.13760793704432], [2.723792758809509, 8.506845404489708], [2.74906253420022, 7.870734361192886], [2.691701694356254, 6.258817246928628]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Burkina Faso\", \"name\": \"Burkina Faso\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-2.827496303712706, 9.642460842319775], [-3.511898972986272, 9.900326239456216], [-3.980449184576684, 9.862344061721698], [-4.330246954760383, 9.610834865757139], [-4.779883592131966, 9.821984768101741], [-4.954653286143098, 10.152713934769732], [-5.404341599946973, 10.370736802609144], [-5.470564947929004, 10.951269842976044], [-5.197842576508648, 11.375145778850136], [-5.220941941743119, 11.713858954307224], [-4.427166103523802, 12.542645575404292], [-4.280405035814879, 13.228443508349738], [-4.006390753587225, 13.472485459848112], [-3.52280270019986, 13.337661647998612], [-3.103706834312759, 13.54126679122859], [-2.967694464520576, 13.798150336151506], [-2.191824510090384, 14.246417548067352], [-2.001035122068771, 14.559008287000887], [-1.066363491205663, 14.973815009007764], [-0.515854458000348, 15.116157741755725], [-0.26625729003058, 14.924308986872147], [0.374892205414682, 14.928908189346128], [0.295646396495101, 14.444234930880651], [0.429927605805517, 13.988733018443922], [0.993045688490071, 13.335749620003821], [1.024103224297477, 12.851825669806573], [2.177107781593775, 12.625017808477532], [2.154473504249921, 11.940150051313337], [1.93598554851988, 11.641150214072551], [1.447178175471066, 11.547719224488857], [1.243469679376488, 11.11051076908346], [0.899563022474069, 10.997339382364258], [0.023802524423701, 11.018681748900802], [-0.438701544588582, 11.09834096927872], [-0.761575893548183, 10.936929633015053], [-1.203357713211431, 11.009819240762736], [-2.94040930827046, 10.962690334512557], [-2.963896246747111, 10.395334784380081], [-2.827496303712706, 9.642460842319775]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Bangladesh\", \"name\": \"Bangladesh\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[92.672720981825549, 22.041238918541247], [92.652257114637976, 21.324047552978481], [92.30323449093865, 21.475485337809815], [92.368553501355606, 20.670883287025344], [92.082886183646124, 21.192195135985767], [92.025215285208361, 21.701569729086764], [91.834890985077408, 22.182935695885561], [91.417087029997646, 22.765019029221218], [90.496006300827247, 22.805016587815125], [90.586956821660948, 22.392793687422863], [90.272970819055544, 21.836367702720107], [89.847467075564268, 22.039146023033421], [89.70204959509492, 21.857115790285299], [89.41886274613546, 21.966178900637296], [89.031961297566198, 22.055708319582973], [88.876311883503064, 22.879146429937826], [88.529769728553759, 23.631141872649163], [88.699940220090895, 24.233714911388557], [88.084422235062405, 24.501657212821918], [88.30637251175601, 24.866079413344199], [88.931553989623069, 25.238692328384769], [88.209789259802477, 25.768065700782707], [88.56304935094974, 26.446525580342716], [89.355094028687276, 26.014407253518065], [89.832480910199592, 25.965082098895476], [89.920692580121838, 25.269749864192171], [90.872210727912105, 25.13260061288954], [91.799595981822065, 25.14743174895731], [92.376201613334786, 24.976692816664961], [91.915092807994398, 24.130413723237108], [91.467729933643668, 24.072639471934789], [91.158963250699713, 23.503526923104381], [91.706475050832083, 22.985263983649183], [91.869927606171302, 23.62434642180278], [92.146034783906799, 23.62749868417259], [92.672720981825549, 22.041238918541247]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Bulgaria\", \"name\": \"Bulgaria\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[22.657149692482985, 44.234923000661276], [22.94483239105184, 43.823785305347123], [23.332302280376322, 43.897010809904707], [24.100679152124169, 43.741051337247846], [25.569271681426923, 43.688444729174712], [26.065158725699739, 43.943493760751259], [27.242399529740904, 44.175986029632398], [27.970107049275068, 43.812468166675202], [28.55808149589199, 43.707461656258118], [28.039095086384712, 43.293171698574177], [27.673897739378042, 42.577892361006214], [27.996720411905383, 42.007358710287775], [27.135739373490473, 42.141484890301335], [26.117041863720793, 41.826904608724554], [26.106138136507205, 41.328898830727766], [25.197201368925441, 41.234485988930523], [24.492644891058031, 41.583896185872028], [23.692073601992345, 41.309080918943842], [22.952377150166445, 41.337993882811141], [22.881373732197424, 41.999297186850242], [22.380525750424585, 42.320259507815081], [22.545011834409614, 42.461362006188025], [22.436594679461273, 42.580321153323929], [22.604801466571324, 42.898518785161137], [22.986018507588479, 43.211161200526959], [22.500156691180276, 43.642814439460977], [22.410446404721593, 44.008063462899948], [22.657149692482985, 44.234923000661276]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"The Bahamas\", \"name\": \"Bahamas\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-77.53466, 23.75975], [-77.78, 23.71], [-78.03405, 24.28615], [-78.40848, 24.57564], [-78.19087, 25.2103], [-77.89, 25.17], [-77.54, 24.34], [-77.53466, 23.75975]]], [[[-77.82, 26.58], [-78.91, 26.42], [-78.98, 26.79], [-78.51, 26.87], [-77.85, 26.84], [-77.82, 26.58]]], [[[-77.0, 26.59], [-77.17255, 25.87918], [-77.35641, 26.00735], [-77.34, 26.53], [-77.78802, 26.92516], [-77.79, 27.04], [-77.0, 26.59]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Bosnia and Herzegovina\", \"name\": \"Bosnia and Herz.\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[19.005486281010118, 44.860233669609144], [19.36803, 44.863], [19.11761, 44.42307], [19.59976, 44.03847], [19.454, 43.568100000000115], [19.21852, 43.52384], [19.03165, 43.43253], [18.70648, 43.20011], [18.56, 42.65], [17.674921502358981, 43.028562527023603], [17.297373488034449, 43.446340643887353], [16.916156447017325, 43.667722479825663], [16.456442905348862, 44.041239732431265], [16.239660271884528, 44.351143296885695], [15.750026075918978, 44.81871165626255], [15.959367303133373, 45.233776760430935], [16.318156772535868, 45.004126695325901], [16.534939406000202, 45.211607570977705], [17.00214603035101, 45.233776760430935], [17.861783481526398, 45.067740383477137], [18.553214145591646, 45.08158966733145], [19.005486281010118, 44.860233669609144]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Belarus\", \"name\": \"Belarus\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[23.484127638449841, 53.912497667041123], [24.45068362803703, 53.905702216194747], [25.536353794056989, 54.282423407602515], [25.768432651479792, 54.846962592175082], [26.588279249790386, 55.167175604871659], [26.494331495883749, 55.61510691997762], [27.102459751094525, 55.783313707087672], [28.17670942557799, 56.169129950578807], [29.2295133806603, 55.918344224666356], [29.371571893030669, 55.67009064393617], [29.896294386522353, 55.789463202530406], [30.87390913262, 55.550976467503396], [30.971835971813132, 55.081547756564028], [30.75753380709871, 54.811770941784303], [31.384472283663733, 54.157056382862422], [31.791424187962232, 53.974638576872117], [31.731272820774503, 53.794029446012011], [32.405598585751157, 53.618045355842028], [32.693643019346034, 53.351420803432106], [32.304519484188226, 53.132726141972903], [31.497643670382924, 53.167426866256889], [31.30520063652801, 53.073995876673195], [31.540018344862254, 52.742052313846344], [31.78599816257158, 52.10167796488544], [30.927549269338975, 52.042353420614383], [30.619454380014837, 51.822806098022362], [30.55511722181145, 51.319503485715643], [30.157363722460889, 51.416138414101454], [29.254938185347921, 51.368234361366881], [28.992835320763522, 51.602044379271462], [28.617612745892242, 51.427713934934836], [28.241615024536564, 51.572227077839059], [27.454066196408426, 51.59230337178446], [26.337958611768549, 51.832288723347915], [25.327787713327005, 51.910656032918538], [24.553106316839511, 51.888461005249177], [24.005077752384206, 51.617443956094448], [23.52707075368437, 51.578454087930233], [23.508002150168689, 52.023646552124717], [23.19949384938618, 52.486977444053664], [23.799198846133375, 52.691099351606553], [23.804934930117774, 53.08973135030606], [23.527535841574995, 53.47012156840654], [23.484127638449841, 53.912497667041123]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Belize\", \"name\": \"Belize\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-89.143080410503302, 17.808318996649316], [-89.150909389995519, 17.955467637600414], [-89.029857347351808, 18.001511338772485], [-88.848343878926585, 17.883198147040229], [-88.490122850279334, 18.486830552641603], [-88.300031094093669, 18.499982204659897], [-88.296336229184803, 18.353272813383263], [-88.106812913754368, 18.348673610909284], [-88.123478563168476, 18.076674709541003], [-88.285354987322776, 17.644142971258031], [-88.197866787452625, 17.489475409408453], [-88.302640753924422, 17.13169363043566], [-88.239517991879893, 17.036066392479551], [-88.355428229510551, 16.530774237529624], [-88.551824510435821, 16.265467434143144], [-88.732433641295927, 16.233634751851351], [-88.930612759135244, 15.887273464415072], [-89.229121670269265, 15.886937567605166], [-89.15080603713092, 17.015576687075832], [-89.143080410503302, 17.808318996649316]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Bolivia\", \"name\": \"Bolivia\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-62.84646847192154, -22.034985446869442], [-63.986838141522462, -21.993644301035946], [-64.377021043542243, -22.798091322523533], [-64.964892137294598, -22.07586150481232], [-66.273339402924833, -21.832310479420713], [-67.10667355006359, -22.735924574476414], [-67.82817989772272, -22.872918796482171], [-68.219913092711266, -21.494346612231858], [-68.757167121033731, -20.372657972904459], [-68.442225104430904, -19.405068454671426], [-68.966818406841853, -18.9816834449041], [-69.100246955019472, -18.260125420812674], [-69.590423753524036, -17.580011895419329], [-68.959635382753291, -16.500697930571267], [-69.389764166934697, -15.66012908291165], [-69.160346645774936, -15.323973890853015], [-69.339534674747, -14.953195489158828], [-68.94888668483658, -14.45363941819328], [-68.929223802349526, -13.602683607643007], [-68.880079515239956, -12.89972909917665], [-68.665079718689611, -12.561300144097171], [-69.52967810736493, -10.951734307502193], [-68.786157599549469, -11.036380303596276], [-68.27125362819325, -11.014521172736817], [-68.048192308205373, -10.712059014532484], [-67.173801235610725, -10.30681243249961], [-66.646908331962791, -9.931331475466861], [-65.33843522811641, -9.76198780684639], [-65.444837002205375, -10.51145110437543], [-65.321898769783004, -10.895872084194675], [-65.402281460213018, -11.566270440317151], [-64.31635291203159, -12.461978041232191], [-63.196498786050562, -12.627032565972433], [-62.803060268796372, -13.000653171442682], [-62.127080857986371, -13.19878061284972], [-61.713204311760769, -13.489202162330049], [-61.084121263255646, -13.479383640194595], [-60.503304002511122, -13.775954685117656], [-60.459198167550014, -14.354007256734551], [-60.264326341377355, -14.645979099183638], [-60.251148851142922, -15.077218926659318], [-60.542965664295131, -15.093910414289592], [-60.158389655179022, -16.258283786690082], [-58.241219855366673, -16.299573256091289], [-58.388058437724027, -16.877109063385273], [-58.280804002502244, -17.271710300366014], [-57.734558274960989, -17.552468357007765], [-57.498371141170971, -18.174187513911289], [-57.676008877174297, -18.961839694904025], [-57.949997321185819, -19.400004164306814], [-57.853801642474494, -19.969995212486186], [-58.166392381408038, -20.176700941653674], [-58.183471442280492, -19.868399346600359], [-59.11504248720609, -19.356906019775398], [-60.043564622626477, -19.342746677327419], [-61.786326463453761, -19.633736667562957], [-62.265961269770784, -20.513734633061272], [-62.291179368729203, -21.051634616787389], [-62.685057135657871, -22.24902922942238], [-62.84646847192154, -22.034985446869442]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Brazil\", \"name\": \"Brazil\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-57.625133429582945, -30.216294854454258], [-56.290899624239067, -28.852760512000884], [-55.162286342984558, -27.881915378533456], [-54.49072526713551, -27.474756768505785], [-53.648735317587885, -26.923472588816086], [-53.628348965048737, -26.124865004177465], [-54.130049607954376, -25.547639255477247], [-54.625290696823562, -25.739255466415507], [-54.428946092330577, -25.162184747012162], [-54.293476325077435, -24.570799655863958], [-54.292959560754511, -24.021014092710722], [-54.652834235235119, -23.839578138933955], [-55.027901780809543, -24.001273695575225], [-55.400747239795407, -23.956935316668797], [-55.517639329639621, -23.57199757252663], [-55.61068274598113, -22.655619398694839], [-55.797958136606894, -22.356929620047815], [-56.473317430229379, -22.086300144135279], [-56.881509568902885, -22.282153822521476], [-57.937155727761287, -22.090175876557169], [-57.870673997617786, -20.732687676681948], [-58.166392381408038, -20.176700941653674], [-57.853801642474494, -19.969995212486186], [-57.949997321185819, -19.400004164306814], [-57.676008877174297, -18.961839694904025], [-57.498371141170971, -18.174187513911289], [-57.734558274960989, -17.552468357007765], [-58.280804002502244, -17.271710300366014], [-58.388058437724027, -16.877109063385273], [-58.241219855366673, -16.299573256091289], [-60.158389655179022, -16.258283786690082], [-60.542965664295131, -15.093910414289592], [-60.251148851142922, -15.077218926659318], [-60.264326341377355, -14.645979099183638], [-60.459198167550014, -14.354007256734551], [-60.503304002511122, -13.775954685117656], [-61.084121263255646, -13.479383640194595], [-61.713204311760769, -13.489202162330049], [-62.127080857986371, -13.19878061284972], [-62.803060268796372, -13.000653171442682], [-63.196498786050562, -12.627032565972433], [-64.31635291203159, -12.461978041232191], [-65.402281460213018, -11.566270440317151], [-65.321898769783004, -10.895872084194675], [-65.444837002205375, -10.51145110437543], [-65.33843522811641, -9.76198780684639], [-66.646908331962791, -9.931331475466861], [-67.173801235610725, -10.30681243249961], [-68.048192308205373, -10.712059014532484], [-68.27125362819325, -11.014521172736817], [-68.786157599549469, -11.036380303596276], [-69.52967810736493, -10.951734307502193], [-70.093752204046879, -11.123971856331011], [-70.548685675728393, -11.009146823778462], [-70.481893886991159, -9.490118096558842], [-71.302412278921523, -10.079436130415372], [-72.184890713169821, -10.05359791426943], [-72.563033006465631, -9.520193780152715], [-73.226713426390148, -9.462212823121233], [-73.015382656532537, -9.03283334720806], [-73.571059332967053, -8.424446709835832], [-73.987235480429646, -7.523829847853063], [-73.723401455363486, -7.340998630404412], [-73.724486660441627, -6.918595472850638], [-73.120027431923575, -6.629930922068238], [-73.219711269814596, -6.089188734566076], [-72.964507208941185, -5.741251315944892], [-72.891927659787243, -5.274561455916979], [-71.748405727816532, -4.59398284263301], [-70.928843349883564, -4.401591485210367], [-70.79476884630229, -4.251264743673302], [-69.893635219996611, -4.298186944194326], [-69.444101935489599, -1.556287123219817], [-69.420485805932216, -1.122618503426409], [-69.577065395776586, -0.549991957200163], [-70.02065589057004, -0.185156345219539], [-70.015565761989293, 0.541414292804205], [-69.452396002872447, 0.706158758950693], [-69.252434048119042, 0.602650865070075], [-69.218637661400166, 0.985676581217433], [-69.804596727157701, 1.089081122233466], [-69.816973232691609, 1.714805202639624], [-67.868565029558823, 1.692455145673392], [-67.537810024674684, 2.037162787276329], [-67.25999752467358, 1.719998684084956], [-67.065048183852483, 1.130112209473225], [-66.876325853122566, 1.253360500489336], [-66.325765143484944, 0.724452215982012], [-65.548267381437554, 0.78925446207603], [-65.354713304288353, 1.0952822941085], [-64.611011928959854, 1.328730576987041], [-64.199305792890499, 1.49285492594602], [-64.083085496666072, 1.91636912679408], [-63.368788011311644, 2.200899562993129], [-63.422867397705105, 2.411067613124174], [-64.269999152265783, 2.497005520025566], [-64.408827887617903, 3.126786200366623], [-64.368494432214092, 3.797210394705246], [-64.816064012294007, 4.056445217297422], [-64.628659430587533, 4.14848094320925], [-63.888342861574145, 4.020530096854571], [-63.093197597899092, 3.770571193858784], [-62.804533047116692, 4.006965033377951], [-62.085429653559125, 4.162123521334308], [-60.966893276601517, 4.536467596856638], [-60.601179165271922, 4.918098049332129], [-60.733574184803707, 5.2002772078619], [-60.213683437731319, 5.2444863956876], [-59.980958624904865, 5.014061184098138], [-60.111002366767373, 4.574966538914082], [-59.767405768458701, 4.423502915866606], [-59.538039923731219, 3.958802598481937], [-59.815413174057852, 3.606498521332085], [-59.974524909084543, 2.755232652188055], [-59.718545701726732, 2.249630438644359], [-59.646043667221242, 1.786893825686789], [-59.030861579002639, 1.317697658692722], [-58.540012986878288, 1.26808828369252], [-58.429477098205957, 1.46394196207872], [-58.113449876525003, 1.507195135907025], [-57.660971035377358, 1.682584947105638], [-57.33582292339689, 1.948537705895759], [-56.782704230360814, 1.863710842288653], [-56.53938574891454, 1.89952260986692], [-55.995698004771739, 1.817667141116601], [-55.905600145070871, 2.021995754398659], [-56.073341844290283, 2.220794989425499], [-55.973322109589361, 2.510363877773016], [-55.569755011605984, 2.42150625244713], [-55.097587449755125, 2.523748073736612], [-54.524754197799709, 2.311848863123785], [-54.088062506717243, 2.105556545414629], [-53.778520677288903, 2.376702785650081], [-53.554839240113537, 2.33489655192595], [-53.4184651352953, 2.05338918701598], [-52.939657151894949, 2.124857692875636], [-52.556424730018414, 2.504705308437053], [-52.249337531123942, 3.241094468596244], [-51.657797410678882, 4.156232408053028], [-51.317146369010842, 4.203490505383953], [-51.069771287629649, 3.65039765056403], [-50.508875291533641, 1.901563828942456], [-49.974075893745045, 1.736483465986069], [-49.947100796088705, 1.046189683431223], [-50.699251268096901, 0.222984117021681], [-50.388210822132123, -0.078444512536819], [-48.620566779156313, -0.235489190271821], [-48.584496629416577, -1.237805271005001], [-47.824956427590621, -0.5816179337628], [-46.566583624851219, -0.941027520352776], [-44.9057030909904, -1.551739597178134], [-44.417619187993658, -2.137750339367975], [-44.581588507655773, -2.691308282078523], [-43.418791266440188, -2.383110039889793], [-41.47265682632824, -2.912018324397116], [-39.97866533055403, -2.87305429444904], [-38.50038347019656, -3.700652357603394], [-37.223252122535193, -4.820945733258915], [-36.45293738457638, -5.109403578312153], [-35.597795783010454, -5.149504489770648], [-35.235388963347553, -5.464937432480245], [-34.896029832486825, -6.738193047719709], [-34.729993455533027, -7.343220716992965], [-35.128212042774216, -8.996401462442284], [-35.636966518687707, -9.649281508017811], [-37.046518724096991, -11.040721123908799], [-37.683611619607355, -12.17119475672582], [-38.423876512188436, -13.038118584854285], [-38.673887091616507, -13.057652276260615], [-38.953275722802537, -13.79336964280002], [-38.882298143049645, -15.667053724838764], [-39.161092495264306, -17.208406670808468], [-39.267339240056394, -17.867746270420479], [-39.583521491034219, -18.262295830968934], [-39.76082333022763, -19.599113457927402], [-40.774740770010332, -20.90451181405242], [-40.944756232250597, -21.937316989837807], [-41.75416419123821, -22.370675551037454], [-41.988284267736546, -22.970070489190888], [-43.074703742024738, -22.967693373305462], [-44.647811855637798, -23.351959323827838], [-45.35213578955991, -23.796841729428579], [-46.472093268405523, -24.088968601174539], [-47.648972337420645, -24.885199069927715], [-48.495458136577689, -25.877024834905647], [-48.641004808127725, -26.623697605090928], [-48.474735887228647, -27.175911960561887], [-48.661520351747612, -28.186134535435713], [-48.888457404157393, -28.674115085567877], [-49.587329474472668, -29.224469089476333], [-50.696874152211478, -30.984465020472953], [-51.576226162306149, -31.777698256153204], [-52.256081305538032, -32.245369968394662], [-52.71209998229768, -33.196578057591175], [-53.373661668498229, -33.768377780900757], [-53.650543992718084, -33.202004082981823], [-53.209588995971529, -32.727666110974717], [-53.787951626182185, -32.047242526987617], [-54.572451544805105, -31.494511407193745], [-55.601510179249331, -30.853878676071385], [-55.97324459494093, -30.883075860316296], [-56.976025763564721, -30.109686374636119], [-57.625133429582945, -30.216294854454258]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Brunei\", \"name\": \"Brunei\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[114.204016554828343, 4.525873928236805], [114.599961379048707, 4.900011298029965], [115.450710483869798, 5.447729803891532], [115.405700311343566, 4.955227565933837], [115.347460972150643, 4.316636053887009], [114.869557326315373, 4.348313706881924], [114.659595981913498, 4.007636826997753], [114.204016554828343, 4.525873928236805]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Bhutan\", \"name\": \"Bhutan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[91.69665652869665, 27.771741848251661], [92.10371178585973, 27.4526140406332], [92.033483514375078, 26.838310451763554], [91.217512648486405, 26.808648179628019], [90.37327477413406, 26.875724188742872], [89.744527622438838, 26.71940298105995], [88.835642531289366, 27.098966376243755], [88.814248488320544, 27.299315904239361], [89.475810174521101, 28.04275889740639], [90.015828891971154, 28.296438503527209], [90.730513950567769, 28.064953925075748], [91.258853794319904, 28.040614325466287], [91.69665652869665, 27.771741848251661]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Botswana\", \"name\": \"Botswana\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[25.649163445750155, -18.536025892818987], [25.850391473094724, -18.714412937090533], [26.164790887158478, -19.293085625894935], [27.296504754350501, -20.391519870690995], [27.724747348753247, -20.499058526290387], [27.727227817503252, -20.851801853114711], [28.02137007010861, -21.485975030200578], [28.794656202924209, -21.639454034107445], [29.432188348109033, -22.091312758067584], [28.017235955525244, -22.827753594659072], [27.119409620886238, -23.574323011979772], [26.78640669119741, -24.240690606383478], [26.485753208123292, -24.616326592713097], [25.941652052522151, -24.696373386333214], [25.765848829865206, -25.174845472923671], [25.664666375437712, -25.486816094669706], [25.025170525825782, -25.719670098576891], [24.211266717228792, -25.670215752873567], [23.733569777122703, -25.39012948985161], [23.312096795350179, -25.268689873965712], [22.824271274514896, -25.500458672794768], [22.579531691180584, -25.979447523708142], [22.105968865657864, -26.28025603607913], [21.60589603036939, -26.726533705351748], [20.889609002371731, -26.828542982695907], [20.666470167735437, -26.477453301704916], [20.758609246511831, -25.868136488551446], [20.165725538827186, -24.917961928000768], [19.895767856534427, -24.767790215760588], [19.895457797940672, -21.849156996347865], [20.881134067475866, -21.814327080983144], [20.910641310314531, -18.252218926672018], [21.655040317478971, -18.219146010005222], [23.196858351339298, -17.869038181227783], [23.579005568137713, -18.281261081620055], [24.217364536239209, -17.889347019118485], [24.520705193792534, -17.887124932529932], [25.084443393664564, -17.661815687737366], [25.264225701608005, -17.736539808831413], [25.649163445750155, -18.536025892818987]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Central African Republic\", \"name\": \"Central African Rep.\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[15.279460483469107, 7.421924546737968], [16.106231723706767, 7.497087917506504], [16.290561557691884, 7.754307359239304], [16.456184523187343, 7.734773667832966], [16.705988396886251, 7.508327541529978], [17.964929640380884, 7.890914008002865], [18.389554884523218, 8.281303615751822], [18.911021762780504, 8.630894680206351], [18.81200971850927, 8.982914536978596], [19.094008009526018, 9.074846910025837], [20.059685499764267, 9.01270600019485], [21.00086836109616, 9.475985215691507], [21.723821648859452, 10.567055568885973], [22.231129184668784, 10.971888739460507], [22.864165480244218, 11.142395127807543], [22.977543572692603, 10.714462591998538], [23.554304233502187, 10.089255275915306], [23.557249790142826, 9.681218166538683], [23.394779087017181, 9.26506785729222], [23.459012892355979, 8.954285793488891], [23.805813429466745, 8.666318874542425], [24.567369012152078, 8.229187933785466], [25.114932488716786, 7.825104071479172], [25.12413089366472, 7.500085150579436], [25.796647983511171, 6.979315904158069], [26.21341840994511, 6.546603298362071], [26.465909458123232, 5.94671743410187], [27.213409051225163, 5.550953477394557], [27.374226108517483, 5.233944403500059], [27.044065382604703, 5.127852688004835], [26.402760857862535, 5.150874538590869], [25.650455356557465, 5.256087754737123], [25.278798455514302, 5.170408229997191], [25.128833449003274, 4.927244777847789], [24.805028924262409, 4.897246608902349], [24.41053104014625, 5.108784084489129], [23.297213982850135, 4.609693101414221], [22.841479526468103, 4.710126247573483], [22.704123569436284, 4.633050848810156], [22.405123732195531, 4.02916006104732], [21.659122755630019, 4.224341945813719], [20.927591180106273, 4.322785549329736], [20.290679152108932, 4.691677761245287], [19.467783644293146, 5.031527818212779], [18.932312452884755, 4.709506130385973], [18.542982211997778, 4.201785183118317], [18.453065219809925, 3.504385891123348], [17.809900343505259, 3.560196437998569], [17.133042433346297, 3.728196519379451], [16.537058139724135, 3.198254706226278], [16.01285241055535, 2.267639675298084], [15.907380812247649, 2.557389431158612], [15.862732374747479, 3.013537298998982], [15.405395948964379, 3.335300604664339], [15.036219516671249, 3.851367295747123], [14.950953403389658, 4.21038930909492], [14.478372430080466, 4.732605495620446], [14.558935988023501, 5.03059764243153], [14.459407179429345, 5.451760565610299], [14.536560092841111, 6.22695872642069], [14.776545444404572, 6.408498033062044], [15.279460483469107, 7.421924546737968]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Canada\", \"name\": \"Canada\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-63.6645, 46.55001], [-62.9393, 46.41587], [-62.01208, 46.44314], [-62.50391, 46.03339], [-62.87433, 45.96818], [-64.1428, 46.39265], [-64.39261, 46.72747], [-64.01486, 47.03601], [-63.6645, 46.55001]]], [[[-61.806305, 49.10506], [-62.29318, 49.08717], [-63.58926, 49.40069], [-64.51912, 49.87304], [-64.17322, 49.95718], [-62.85829, 49.70641], [-61.835585, 49.28855], [-61.806305, 49.10506]]], [[[-123.510001587551116, 48.51001089130343], [-124.012890788399474, 48.370846259141402], [-125.655012777338342, 48.825004584338494], [-125.954994466792726, 49.179995835967638], [-126.850004435871853, 49.530000311880421], [-127.029993449544392, 49.814995835970073], [-128.059336304366212, 49.994959011426594], [-128.444584107102145, 50.53913768167611], [-128.358413656255408, 50.770648098343678], [-127.308581096029883, 50.552573554071948], [-126.695000977212302, 50.40090322529538], [-125.755006673823161, 50.295018215529367], [-125.415001587558791, 49.950000515332604], [-124.920768189119315, 49.47527497008339], [-123.92250870832099, 49.062483628935794], [-123.510001587551116, 48.51001089130343]]], [[[-56.134035814017111, 50.687009792679298], [-56.795881720595261, 49.812308661490945], [-56.143105027884289, 50.15011749938283], [-55.471492275602934, 49.935815334668447], [-55.822401089080913, 49.587128607779093], [-54.93514258484565, 49.313010972686833], [-54.473775397343772, 49.556691189159167], [-53.47654944519131, 49.24913890237405], [-53.786013759971233, 48.516780503933617], [-53.086133999226249, 48.687803656603528], [-52.95864824076223, 48.157164211614472], [-52.648098720904173, 47.53554840757549], [-53.069158291218336, 46.655498765644936], [-53.521456264853029, 46.618291734394823], [-54.178935512902527, 46.807065741556997], [-53.961868659060471, 47.625207017601909], [-54.240482143762122, 47.752279364607617], [-55.400773078011483, 46.88499380145312], [-55.997480841685835, 46.919720363953289], [-55.291219041552765, 47.389562486350982], [-56.250798712780508, 47.632545070987383], [-57.325229254777085, 47.572807115257987], [-59.26601518414676, 47.603347886742498], [-59.41949418805369, 47.89945384377485], [-58.796586473207398, 48.251525376979473], [-59.23162451845652, 48.523188381537793], [-58.391804979065213, 49.125580552764163], [-57.358689744686025, 50.718274034215845], [-56.738650071831998, 51.287438259478527], [-55.87097693543528, 51.632094224649187], [-55.406974249886602, 51.588272610065722], [-55.600218268442077, 51.317074693397913], [-56.134035814017111, 50.687009792679298]]], [[[-133.180004041711669, 54.169975490935308], [-132.710007884431292, 54.040009315423518], [-131.749989584003259, 54.120004380909208], [-132.049480347350965, 52.984621487024519], [-131.179042521826574, 52.18043284769827], [-131.577829549822894, 52.182370713909236], [-132.180428426778519, 52.639707139692391], [-132.549992432313843, 53.100014960332132], [-133.054611178755493, 53.411468817755363], [-133.239664482792676, 53.851080227262386], [-133.180004041711669, 54.169975490935308]]], [[[-79.26582, 62.158675], [-79.65752, 61.63308], [-80.09956, 61.7181], [-80.36215, 62.01649], [-80.315395, 62.085565], [-79.92939, 62.3856], [-79.52002, 62.36371], [-79.26582, 62.158675]]], [[[-81.89825, 62.7108], [-83.06857, 62.15922], [-83.77462, 62.18231], [-83.99367, 62.4528], [-83.25048, 62.91409], [-81.87699, 62.90458], [-81.89825, 62.7108]]], [[[-85.161307949549851, 65.657284654392797], [-84.975763719405933, 65.217518215588981], [-84.464012010419495, 65.371772365980163], [-83.88262630891974, 65.109617824963536], [-82.78757687043877, 64.766693020274673], [-81.642013719392509, 64.455135809986942], [-81.553440314444245, 63.979609280037131], [-80.817361212878851, 64.057485663500998], [-80.103451300766594, 63.725981350348597], [-80.991019863595653, 63.41124603947496], [-82.547178107416997, 63.651722317145229], [-83.108797573565042, 64.101875718839707], [-84.100416632813847, 63.569711819098004], [-85.523404710618991, 63.052379055424076], [-85.866768764982339, 63.637252916103542], [-87.221983201836721, 63.541238104905212], [-86.352759772471259, 64.035833238370699], [-86.224886440765133, 64.822916978608262], [-85.883847825854858, 65.738778388117041], [-85.161307949549851, 65.657284654392797]]], [[[-75.86588, 67.14886], [-76.98687, 67.09873], [-77.2364, 67.58809], [-76.81166, 68.14856], [-75.89521, 68.28721], [-75.1145, 68.01036], [-75.10333, 67.58202], [-75.21597, 67.44425], [-75.86588, 67.14886]]], [[[-95.647681203800488, 69.107690358321761], [-96.269521203800579, 68.757040358321731], [-97.61740120380054, 69.060030358321782], [-98.431801203800504, 68.950700358321768], [-99.797401203800504, 69.400030358321786], [-98.917401203800523, 69.710030358321788], [-98.218261203800466, 70.143540358321744], [-97.157401203800532, 69.860030358321794], [-96.557401203800524, 69.680030358321758], [-96.257401203800498, 69.490030358321761], [-95.647681203800488, 69.107690358321761]]], [[[-90.5471, 69.49766], [-90.55151, 68.47499], [-89.21515, 69.25873], [-88.01966, 68.61508], [-88.31749, 67.87338], [-87.35017, 67.19872], [-86.30607, 67.92146], [-85.57664, 68.78456], [-85.52197, 69.88211], [-84.10081, 69.80539], [-82.62258, 69.65826], [-81.28043, 69.16202], [-81.2202, 68.66567], [-81.96436, 68.13253], [-81.25928, 67.59716], [-81.38653, 67.11078], [-83.34456, 66.41154], [-84.73542, 66.2573], [-85.76943, 66.55833], [-86.0676, 66.05625], [-87.03143, 65.21297], [-87.32324, 64.77563], [-88.48296, 64.09897], [-89.91444, 64.03273], [-90.70398, 63.61017], [-90.77004, 62.96021], [-91.93342, 62.83508], [-93.15698, 62.02469], [-94.24153, 60.89865], [-94.62931, 60.11021], [-94.6846, 58.94882], [-93.21502, 58.78212], [-92.76462, 57.84571], [-92.297029999999893, 57.08709], [-90.89769, 57.28468], [-89.03953, 56.85172], [-88.03978, 56.47162], [-87.32421, 55.99914], [-86.07121, 55.72383], [-85.01181, 55.3026], [-83.36055, 55.24489], [-82.27285, 55.14832], [-82.4362, 54.28227], [-82.12502, 53.27703], [-81.40075, 52.15788], [-79.91289, 51.20842], [-79.14301, 51.53393], [-78.60191, 52.56208], [-79.12421, 54.14145], [-79.82958, 54.66772], [-78.22874, 55.13645], [-77.0956, 55.83741], [-76.54137, 56.53423], [-76.62319, 57.20263], [-77.30226, 58.05209], [-78.51688, 58.80458], [-77.33676, 59.85261], [-77.77272, 60.75788], [-78.10687, 62.31964], [-77.41067, 62.55053], [-75.69621, 62.2784], [-74.6682, 62.18111], [-73.83988, 62.4438], [-72.90853, 62.10507], [-71.67708, 61.52535], [-71.37369, 61.13717], [-69.59042, 61.06141], [-69.62033, 60.22125], [-69.2879, 58.95736], [-68.37455, 58.80106], [-67.64976, 58.21206], [-66.20178, 58.76731], [-65.24517, 59.87071], [-64.58352, 60.33558], [-63.80475, 59.4426], [-62.50236, 58.16708], [-61.39655, 56.96745], [-61.79866, 56.33945], [-60.46853, 55.77548], [-59.56962, 55.20407], [-57.97508, 54.94549], [-57.3332, 54.6265], [-56.93689, 53.78032], [-56.15811, 53.64749], [-55.75632, 53.27036], [-55.68338, 52.14664], [-56.40916, 51.7707], [-57.12691, 51.41972], [-58.77482, 51.0643], [-60.03309, 50.24277], [-61.72366, 50.08046], [-63.86251, 50.29099], [-65.36331, 50.2982], [-66.39905, 50.22897], [-67.23631, 49.51156], [-68.51114, 49.06836], [-69.95362, 47.74488], [-71.10458, 46.82171], [-70.25522, 46.98606], [-68.65, 48.3], [-66.55243, 49.1331], [-65.05626, 49.23278], [-64.17099, 48.74248], [-65.11545, 48.07085], [-64.79854, 46.99297], [-64.47219, 46.23849], [-63.17329, 45.73902], [-61.52072, 45.88377], [-60.51815, 47.00793], [-60.4486, 46.28264], [-59.80287, 45.9204], [-61.03988, 45.26525], [-63.25471, 44.67014], [-64.24656, 44.26553], [-65.36406, 43.54523], [-66.1234, 43.61867], [-66.16173, 44.46512], [-64.42549, 45.29204], [-66.02605, 45.25931], [-67.13741, 45.13753], [-67.79134, 45.70281], [-67.79046, 47.06636], [-68.23444, 47.35486], [-68.905, 47.185], [-69.237216, 47.447781], [-69.99997, 46.69307], [-70.305, 45.915], [-70.66, 45.46], [-71.08482, 45.30524], [-71.405, 45.255], [-71.50506, 45.0082], [-73.34783, 45.00738], [-74.867, 45.00048], [-75.31821, 44.81645], [-76.375, 44.09631], [-76.5, 44.018458893758712], [-76.820034145805565, 43.628784288093748], [-77.737885097957687, 43.62905558936329], [-78.720279914042365, 43.625089423184868], [-79.171673550111862, 43.466339423184216], [-79.01, 43.27], [-78.92, 42.965], [-78.939362148743683, 42.863611355148031], [-80.247447679347928, 42.366199856122584], [-81.277746548167144, 42.209025987306845], [-82.439277716791608, 41.675105088867149], [-82.690089280920162, 41.675105088867149], [-83.029810146806909, 41.832795722005834], [-83.141999681312555, 41.975681057292825], [-83.12, 42.08], [-82.9, 42.43], [-82.43, 42.98], [-82.137642381503881, 43.571087551439909], [-82.337763125431053, 44.44], [-82.550924648758169, 45.347516587905368], [-83.592850714843067, 45.816893622412373], [-83.469550747394621, 45.994686387712584], [-83.616130947590563, 46.116926988299056], [-83.890765347005726, 46.116926988299056], [-84.091851264161463, 46.27541860613816], [-84.14211951367335, 46.512225857115723], [-84.3367, 46.40877], [-84.6049, 46.4396], [-84.543748745445853, 46.538684190449132], [-84.779238247399888, 46.637101955749038], [-84.876079881514855, 46.900083319682366], [-85.652363247403414, 47.220218817730498], [-86.461990831228249, 47.553338019392037], [-87.439792623300207, 47.94], [-88.378114183286698, 48.302917588893727], [-89.272917446636654, 48.019808254582657], [-89.6, 48.01], [-90.83, 48.27], [-91.64, 48.14], [-92.61, 48.45], [-93.63087, 48.60926], [-94.32914, 48.67074], [-94.64, 48.84], [-94.81758, 49.38905], [-95.15609, 49.38425], [-95.159069509172014, 49.0], [-97.228720000004799, 49.0007], [-100.65, 49.0], [-104.04826, 48.99986], [-107.05, 49.0], [-110.05, 49.0], [-113.0, 49.0], [-116.04818, 49.0], [-117.03121, 49.0], [-120.0, 49.0], [-122.84, 49.0], [-122.97421, 49.002537777777789], [-124.91024, 49.98456], [-125.62461, 50.41656], [-127.43561, 50.83061], [-127.99276, 51.71583], [-127.85032, 52.32961], [-129.12979, 52.75538], [-129.30523, 53.56159], [-130.51497, 54.28757], [-130.53611, 54.80278], [-129.98, 55.285], [-130.00778, 55.91583], [-131.70781, 56.55212], [-132.73042, 57.69289], [-133.35556, 58.41028], [-134.27111, 58.86111], [-134.945, 59.27056], [-135.47583, 59.78778], [-136.47972, 59.46389], [-137.4525, 58.905], [-138.34089, 59.56211], [-139.039, 60.0], [-140.013, 60.27682], [-140.99778, 60.30639], [-140.9925, 66.00003], [-140.986, 69.712], [-139.12052, 69.47102], [-137.54636, 68.99002], [-136.50358, 68.89804], [-135.62576, 69.31512], [-134.41464, 69.62743], [-132.92925, 69.50534], [-131.43136, 69.94451], [-129.79471, 70.19369], [-129.10773, 69.77927], [-128.36156, 70.01286], [-128.13817, 70.48384], [-127.44712, 70.37721], [-125.75632, 69.48058], [-124.42483, 70.1584], [-124.28968, 69.39969], [-123.06108, 69.56372], [-122.6835, 69.85553], [-121.47226, 69.79778], [-119.94288, 69.37786], [-117.60268, 69.01128], [-116.22643, 68.84151], [-115.2469, 68.90591], [-113.89794, 68.3989], [-115.30489, 67.90261], [-113.49727, 67.68815], [-110.798, 67.80612], [-109.94619, 67.98104], [-108.8802, 67.38144], [-107.79239, 67.88736], [-108.81299, 68.31164], [-108.16721, 68.65392], [-106.95, 68.7], [-106.15, 68.8], [-105.34282, 68.56122], [-104.33791, 68.018], [-103.22115, 68.09775], [-101.45433, 67.64689], [-99.90195, 67.80566], [-98.4432, 67.78165], [-98.5586, 68.40394], [-97.66948, 68.57864], [-96.11991, 68.23939], [-96.12588, 67.29338], [-95.48943, 68.0907], [-94.685, 68.06383], [-94.23282, 69.06903], [-95.30408, 69.68571], [-96.47131, 70.08976], [-96.39115, 71.19482], [-95.2088, 71.92053], [-93.88997, 71.76015], [-92.87818, 71.31869], [-91.51964, 70.19129], [-92.40692, 69.69997], [-90.5471, 69.49766]]], [[[-114.167169999999871, 73.12145], [-114.66634, 72.65277], [-112.441019999999867, 72.9554], [-111.05039, 72.4504], [-109.920349999999857, 72.96113], [-109.00654, 72.63335], [-108.188349999999886, 71.65089], [-107.68599, 72.06548], [-108.39639, 73.08953], [-107.51645, 73.23598], [-106.522589999999866, 73.07601], [-105.402459999999877, 72.67259], [-104.77484, 71.6984], [-104.464759999999814, 70.99297], [-102.78537, 70.49776], [-100.980779999999868, 70.02432], [-101.089289999999892, 69.58447000000011], [-102.731159999999875, 69.50402], [-102.09329, 69.11962], [-102.43024, 68.75282], [-104.24, 68.91], [-105.96, 69.180000000000135], [-107.12254, 69.11922], [-108.999999999999872, 68.78], [-111.534148875200117, 68.630059156817921], [-113.3132, 68.53554], [-113.854959999999807, 69.007440000000102], [-115.22, 69.28], [-116.10794, 69.16821], [-117.34, 69.960000000000107], [-116.674729999999869, 70.06655], [-115.13112, 70.2373], [-113.72141, 70.19237], [-112.4161, 70.36638], [-114.35, 70.6], [-116.48684, 70.52045], [-117.9048, 70.540560000000127], [-118.43238, 70.9092], [-116.11311, 71.30918], [-117.65568, 71.2952], [-119.40199, 71.55859], [-118.56267, 72.30785], [-117.866419999999877, 72.70594], [-115.18909, 73.314590000000109], [-114.167169999999871, 73.12145]]], [[[-104.5, 73.42], [-105.38, 72.76], [-106.94, 73.46], [-106.6, 73.6], [-105.26, 73.64], [-104.5, 73.42]]], [[[-76.34, 73.102684989953005], [-76.251403808593736, 72.826385498046861], [-77.314437866210895, 72.85554504394527], [-78.391670227050795, 72.876655578613253], [-79.486251831054645, 72.742202758789062], [-79.775833129882827, 72.80290222167973], [-80.876098632812514, 73.333183288574205], [-80.833885192871051, 73.693183898925767], [-80.353057861328111, 73.75971984863277], [-78.064437866210923, 73.651931762695327], [-76.34, 73.102684989953005]]], [[[-86.562178514334107, 73.157447007938444], [-85.774371304044521, 72.534125881633798], [-84.850112474288224, 73.34027822538711], [-82.315590176100969, 73.750950832810574], [-80.600087653307611, 72.716543687624181], [-80.748941616524391, 72.061906643350753], [-78.770638597310764, 72.352173163534147], [-77.824623989559569, 72.749616604291035], [-75.605844692675717, 72.243678493937381], [-74.228616095664975, 71.767144273557889], [-74.099140794557698, 71.330840155717638], [-72.242225714797641, 71.556924546994495], [-71.200015428335192, 70.920012518997211], [-68.78605424668487, 70.525023708774242], [-67.914970465756923, 70.121947536897594], [-66.969033372654152, 69.18608734809186], [-68.805122850200533, 68.720198472764409], [-66.449866095633851, 68.067163397892003], [-64.862314419195215, 67.847538560651614], [-63.424934454996745, 66.928473212340649], [-61.851981370680569, 66.862120673277829], [-62.163176845942296, 66.160251369889593], [-63.91844438338417, 64.998668524832837], [-65.148860236253611, 65.426032619886669], [-66.72121904159853, 66.388041083432185], [-68.015016038673949, 66.262725735124391], [-68.141287400979152, 65.689789130304362], [-67.089646165623392, 65.108455105236985], [-65.732080451099748, 64.64840566675862], [-65.320167609301265, 64.382737128346051], [-64.669406297449669, 63.392926744227474], [-65.013803880458894, 62.674185085695974], [-66.275044725190455, 62.945098781986069], [-68.783186204692711, 63.745670071051805], [-67.369680752213029, 62.883965562584869], [-66.328297288667201, 62.28007477482204], [-66.165568203380147, 61.930897121825879], [-68.877366502544632, 62.330149237712803], [-71.023437059193824, 62.910708116295829], [-72.23537858751898, 63.397836005295154], [-71.886278449171286, 63.679989325608837], [-73.37830624051837, 64.193963121183813], [-74.834418911422588, 64.679075629323776], [-74.818502570276706, 64.389093329517962], [-77.709979824520019, 64.229542344816778], [-78.55594885935416, 64.572906399180127], [-77.897281053361908, 65.309192206474776], [-76.018274298797181, 65.326968899183143], [-73.95979529488271, 65.454764716240888], [-74.293883429649625, 65.81177134872938], [-73.94491248238262, 66.310578111426722], [-72.65116716173938, 67.284575507263853], [-72.926059943316076, 67.726925767682374], [-73.311617804645721, 68.069437160912898], [-74.8433072577768, 68.554627183701271], [-76.869100918266739, 68.894735622830254], [-76.228649054657339, 69.147769273547411], [-77.28736996123709, 69.769540106883269], [-78.168633999326588, 69.826487535268896], [-78.95724219431672, 70.166880194775402], [-79.492455003563649, 69.871807766388898], [-81.305470954091732, 69.743185126414332], [-84.944706183598456, 69.966634019644388], [-87.060003424817864, 70.260001125765356], [-88.681713223001495, 70.410741278760796], [-89.513419562523012, 70.762037665480975], [-88.467721116880753, 71.218185533321318], [-89.888151211287465, 71.222552191849942], [-90.205160285181989, 72.235074367960792], [-89.43657670770493, 73.129464219852352], [-88.408241543312784, 73.537888902471209], [-85.826151089200906, 73.803815823045213], [-86.562178514334107, 73.157447007938444]]], [[[-100.35642, 73.84389], [-99.16387, 73.63339], [-97.38, 73.76], [-97.12, 73.47], [-98.05359, 72.99052], [-96.54, 72.56], [-96.72, 71.66], [-98.35966, 71.27285], [-99.32286, 71.35639], [-100.01482, 71.73827], [-102.5, 72.51], [-102.48, 72.83], [-100.43836, 72.70588], [-101.54, 73.36], [-100.35642, 73.84389]]], [[[-93.196295539100205, 72.771992499473342], [-94.26904659704725, 72.024596259235949], [-95.409855516322637, 72.061880805134578], [-96.033745083382428, 72.940276801231789], [-96.01826799191096, 73.437429918095788], [-95.495793423224001, 73.862416897264154], [-94.503657599652328, 74.134906724739196], [-92.420012173211745, 74.100025132942179], [-90.509792853542578, 73.85673248971203], [-92.003965216829869, 72.966244208458477], [-93.196295539100205, 72.771992499473342]]], [[[-120.46, 71.383601793087578], [-123.09219, 70.90164], [-123.62, 71.34], [-125.92894873747332, 71.868688463011395], [-125.499999999999872, 72.292260811795003], [-124.80729, 73.02256], [-123.94, 73.680000000000135], [-124.917749999999899, 74.292750000000112], [-121.53788, 74.44893], [-120.10978, 74.24135], [-117.55564, 74.18577], [-116.58442, 73.89607], [-115.51081, 73.47519], [-116.767939999999882, 73.22292], [-119.22, 72.52], [-120.46, 71.82], [-120.46, 71.383601793087578]]], [[[-93.612755906940464, 74.979997260224437], [-94.156908738973812, 74.59234650338685], [-95.60868058956558, 74.666863918751758], [-96.820932176484561, 74.927623196096576], [-96.288587409229791, 75.377828274223333], [-94.850819871789113, 75.647217515760886], [-93.977746548217908, 75.296489569795952], [-93.612755906940464, 74.979997260224437]]], [[[-98.5, 76.72], [-97.735585, 76.25656], [-97.704415, 75.74344], [-98.16, 75.0], [-99.80874, 74.89744], [-100.88366, 75.05736], [-100.86292, 75.64075], [-102.50209, 75.5638], [-102.56552, 76.3366], [-101.48973, 76.30537], [-99.98349, 76.64634], [-98.57699, 76.58859], [-98.5, 76.72]]], [[[-108.21141, 76.20168], [-107.81943, 75.84552], [-106.92893, 76.01282], [-105.881, 75.9694], [-105.70498, 75.47951], [-106.31347, 75.00527], [-109.7, 74.85], [-112.22307, 74.41696], [-113.74381, 74.39427], [-113.87135, 74.72029], [-111.79421, 75.1625], [-116.31221, 75.04343], [-117.7104, 75.2222], [-116.34602, 76.19903], [-115.40487, 76.47887], [-112.59056, 76.14134], [-110.81422, 75.54919], [-109.0671, 75.47321], [-110.49726, 76.42982], [-109.5811, 76.79417], [-108.54859, 76.67832], [-108.21141, 76.20168]]], [[[-94.684085862999439, 77.097878323058367], [-93.573921068073105, 76.776295884906062], [-91.605023159536586, 76.778517971494594], [-90.741845872749209, 76.449597479956807], [-90.969661424507976, 76.074013170059445], [-89.822237921899244, 75.847773749485626], [-89.187082892599776, 75.610165513807615], [-87.838276333349611, 75.566188869927217], [-86.379192267588664, 75.482421373182163], [-84.789625210290595, 75.699204006646497], [-82.753444586910049, 75.784315090631225], [-81.12853084992436, 75.713983466282016], [-80.05751095245914, 75.336848863415867], [-79.833932868148324, 74.923127346487192], [-80.457770758775823, 74.657303778777774], [-81.948842536125511, 74.442459011524321], [-83.2288936022114, 74.564027818490928], [-86.097452358733292, 74.410032050261137], [-88.150350307960196, 74.392307033984977], [-89.764722052758358, 74.515555325001117], [-92.422440965529418, 74.837757880340973], [-92.768285488642789, 75.38681997344213], [-92.889905972041717, 75.882655341282629], [-93.893824022175977, 76.319243679500516], [-95.962457445035795, 76.44138092722244], [-97.121378953829463, 76.751077785947587], [-96.745122850312342, 77.161388658345132], [-94.684085862999439, 77.097878323058367]]], [[[-116.198586595507322, 77.645286770326194], [-116.335813361458349, 76.876961575010554], [-117.106050584768766, 76.530031846819114], [-118.040412157038119, 76.481171780087081], [-119.899317586885687, 76.053213406061971], [-121.499995077126471, 75.900018622532784], [-122.85492448615895, 76.116542873835684], [-122.854925293603188, 76.116542873835684], [-121.157535360328239, 76.864507554828336], [-119.103938971821023, 77.512219957174608], [-117.570130784965954, 77.498318996888102], [-116.198586595507322, 77.645286770326194]]], [[[-93.840003017943971, 77.51999726023449], [-94.295608283245244, 77.491342678528682], [-96.169654100310055, 77.55511139597688], [-96.436304490936109, 77.83462921824362], [-94.422577277386353, 77.820004787904978], [-93.720656297565867, 77.634331366680314], [-93.840003017943971, 77.51999726023449]]], [[[-110.186938035912945, 77.697014879050286], [-112.051191169058455, 77.409228827616843], [-113.534278937619035, 77.732206529441143], [-112.724586758253835, 78.051050116681935], [-111.264443325630822, 78.152956041161545], [-109.854451870547067, 77.996324774884812], [-110.186938035912945, 77.697014879050286]]], [[[-109.663145718202557, 78.601972561345676], [-110.88131425661885, 78.406919867659994], [-112.542091437615142, 78.407901719873493], [-112.525890876091566, 78.550554511215225], [-111.500010342233367, 78.849993598130538], [-110.96366065147599, 78.804440823065207], [-109.663145718202557, 78.601972561345676]]], [[[-95.830294969449312, 78.056941229963243], [-97.309842902397975, 77.85059723582178], [-98.124289313533964, 78.082856960757567], [-98.55286780474664, 78.458105373845086], [-98.631984422585504, 78.871930243638374], [-97.337231411512604, 78.831984361476756], [-96.754398769908761, 78.765812689926989], [-95.559277920294562, 78.41831452098026], [-95.830294969449312, 78.056941229963243]]], [[[-100.060191820052111, 78.324754340315891], [-99.670939093813601, 77.907544664207393], [-101.303940192452984, 78.018984890444798], [-102.949808722733025, 78.343228664860206], [-105.176132778731514, 78.38033234324574], [-104.210429450277147, 78.677420152491777], [-105.419580451258511, 78.918335679836431], [-105.492289191493128, 79.301593939929177], [-103.529282396237917, 79.16534902619162], [-100.8251580472688, 78.80046173777869], [-100.060191820052111, 78.324754340315891]]], [[[-87.02, 79.66], [-85.81435, 79.3369], [-87.18756, 79.0393], [-89.03535, 78.28723], [-90.80436, 78.21533], [-92.87669, 78.34333], [-93.95116, 78.75099], [-93.93574, 79.11373], [-93.14524, 79.3801], [-94.974, 79.37248], [-96.07614, 79.70502], [-96.70972, 80.15777], [-96.01644, 80.60233], [-95.32345, 80.90729], [-94.29843, 80.97727], [-94.73542, 81.20646], [-92.40984, 81.25739], [-91.13289, 80.72345], [-89.45, 80.509322033898258], [-87.81, 80.32], [-87.02, 79.66]]], [[[-68.5, 83.106321516765732], [-65.82735, 83.02801], [-63.68, 82.9], [-61.85, 82.6286], [-61.89388, 82.36165], [-64.334, 81.92775], [-66.75342, 81.72527], [-67.65755, 81.50141], [-65.48031, 81.50657], [-67.84, 80.9], [-69.4697, 80.61683], [-71.18, 79.8], [-73.2428, 79.63415], [-73.88, 79.430162204802073], [-76.90773, 79.32309], [-75.52924, 79.19766], [-76.22046, 79.01907], [-75.39345, 78.52581], [-76.34354, 78.18296], [-77.88851, 77.89991], [-78.36269, 77.50859], [-79.75951, 77.20968], [-79.61965, 76.98336], [-77.91089, 77.022045], [-77.88911, 76.777955], [-80.56125, 76.17812], [-83.17439, 76.45403], [-86.11184, 76.29901], [-87.6, 76.42], [-89.49068, 76.47239], [-89.6161, 76.95213], [-87.76739, 77.17833], [-88.26, 77.9], [-87.65, 77.970222222222205], [-84.97634, 77.53873], [-86.34, 78.18], [-87.96192, 78.37181], [-87.15198, 78.75867], [-85.37868, 78.9969], [-85.09495, 79.34543], [-86.50734, 79.73624], [-86.93179, 80.25145], [-84.19844, 80.20836], [-83.408695652173819, 80.1], [-81.84823, 80.46442], [-84.1, 80.58], [-87.59895, 80.51627], [-89.36663, 80.85569], [-90.2, 81.26], [-91.36786, 81.5531], [-91.58702, 81.89429], [-90.1, 82.085], [-88.93227, 82.11751], [-86.97024, 82.27961], [-85.5, 82.652273458057024], [-84.260005, 82.6], [-83.18, 82.32], [-82.42, 82.86], [-81.1, 83.02], [-79.30664, 83.13056], [-76.25, 83.172058823529369], [-75.71878, 83.06404], [-72.83153, 83.23324], [-70.665765, 83.169780758382828], [-68.5, 83.106321516765732]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Switzerland\", \"name\": \"Switzerland\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9.594226108446346, 47.525058091820256], [9.632931756232974, 47.347601223329974], [9.479969516649019, 47.102809963563367], [9.932448357796657, 46.920728054382948], [10.442701450246627, 46.893546250997424], [10.36337812667861, 46.483571275409851], [9.922836541390378, 46.314899400409182], [9.182881707403054, 46.440214748716976], [8.966305779667804, 46.036931871111186], [8.489952426801322, 46.005150865251672], [8.316629672894377, 46.163642483090847], [7.755992058959832, 45.824490057959302], [7.273850945676655, 45.776947740250769], [6.843592970414504, 45.991146552100595], [6.500099724970424, 46.429672756529428], [6.022609490593537, 46.272989813820466], [6.037388950229, 46.725778713561859], [6.768713820023605, 47.287708238303686], [6.736571079138058, 47.541801255882838], [7.192202182655505, 47.449765529971003], [7.466759067422228, 47.620581976911794], [8.31730146651415, 47.613579820336255], [8.522611932009765, 47.830827541691285], [9.594226108446346, 47.525058091820256]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Chile\", \"name\": \"Chile\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-68.634010227583147, -52.636370458874353], [-68.633349999999879, -54.8695], [-67.56244, -54.87001], [-66.95992, -54.89681], [-67.291029999999878, -55.30124], [-68.148629999999841, -55.61183], [-68.639990810811796, -55.580017999086877], [-69.2321, -55.49906], [-69.95809, -55.19843], [-71.00568, -55.05383], [-72.2639, -54.49514], [-73.2852, -53.957519999999874], [-74.66253, -52.83749], [-73.8381, -53.04743], [-72.43418, -53.7154], [-71.10773, -54.07433], [-70.591779999999787, -53.61583], [-70.26748, -52.93123], [-69.345649999999878, -52.5183], [-68.634010227583147, -52.636370458874353]]], [[[-68.219913092711224, -21.49434661223183], [-67.828179897722634, -22.872918796482178], [-67.106673550063604, -22.735924574476392], [-66.985233934177629, -22.986348565362825], [-67.328442959244128, -24.025303236590908], [-68.417652960876111, -24.518554782816874], [-68.386001146097342, -26.185016371365229], [-68.594799770772667, -26.50690886811126], [-68.295541551370391, -26.899339694935787], [-69.001234910748266, -27.521213881136127], [-69.656130337183143, -28.459141127233686], [-70.013550381129861, -29.367922865518544], [-69.919008348251921, -30.336339206668306], [-70.535068935819439, -31.365010267870279], [-70.074399380153622, -33.09120981214803], [-69.814776984319209, -33.273886000299839], [-69.817309129501453, -34.193571465798279], [-70.388049485949082, -35.169687595359441], [-70.364769253201658, -36.005088799789931], [-71.121880662709771, -36.65812387466233], [-71.118625047475419, -37.576827487947192], [-70.814664272734703, -38.552995293940732], [-71.413516608349042, -38.916022230791107], [-71.680761277946445, -39.808164157878061], [-71.915734015577542, -40.832339369470716], [-71.746803758415453, -42.051386407235988], [-72.148898078078517, -42.254888197601375], [-71.915423956983901, -43.408564548517404], [-71.464056159130493, -43.787611179378324], [-71.793622606071935, -44.207172133156099], [-71.329800788036195, -44.407521661151677], [-71.222778896759721, -44.784242852559409], [-71.659315558545316, -44.973688653341434], [-71.552009446891233, -45.560732924177117], [-71.917258470330196, -46.884838148791786], [-72.44735531278026, -47.738532810253517], [-72.331160854771937, -48.244238376661819], [-72.648247443314929, -48.878618259476774], [-73.415435757120022, -49.318436374712952], [-73.328050910114456, -50.378785088909865], [-72.975746832964617, -50.741450290734299], [-72.309973517532342, -50.677009779666342], [-72.329403856074023, -51.425956312872394], [-71.914803839796321, -52.009022305865912], [-69.498362189396076, -52.142760912637236], [-68.571545376241332, -52.299443855346247], [-69.461284349226617, -52.291950772663924], [-69.94277950710611, -52.537930590373243], [-70.8451016913545, -52.899200528525711], [-71.006332160105217, -53.833252042201345], [-71.429794684520928, -53.856454760300373], [-72.557942877884855, -53.531410001184447], [-73.702756720662862, -52.835069268607249], [-73.702756720662862, -52.835070076051487], [-74.946763475225154, -52.262753588419017], [-75.260026007778507, -51.62935475037321], [-74.976632453089806, -51.043395684615675], [-75.47975419788348, -50.378371677451547], [-75.608015102831942, -48.673772881871784], [-75.182769741502128, -47.711919447623153], [-74.126580980104677, -46.939253431995084], [-75.644395311165439, -46.647643324572016], [-74.69215369332305, -45.76397633238097], [-74.351709357384252, -44.10304412208788], [-73.240356004515192, -44.454960625995611], [-72.717803921179765, -42.383355808278985], [-73.388899909138232, -42.117532240569567], [-73.701335618774834, -43.365776462579738], [-74.33194312203257, -43.224958184584395], [-74.017957119427152, -41.794812920906828], [-73.677099372029943, -39.942212823243111], [-73.217592536090663, -39.258688653318508], [-73.505559455037044, -38.282882582351064], [-73.588060879191076, -37.156284681956016], [-73.166717088499283, -37.123780206044351], [-72.553136969681717, -35.508840020491022], [-71.861732143832555, -33.909092706031522], [-71.438450486929895, -32.418899428030819], [-71.668720669222424, -30.920644626592516], [-71.370082567007714, -30.095682061484997], [-71.48989437527645, -28.861442152625909], [-70.905123867461569, -27.640379734001193], [-70.724953986275963, -25.705924167587209], [-70.403965827095035, -23.628996677344542], [-70.091245897080668, -21.393319187101223], [-70.164419725205974, -19.756468194256183], [-70.372572394477714, -18.347975355708879], [-69.858443569605797, -18.092693780187027], [-69.590423753523979, -17.580011895419286], [-69.100246955019401, -18.260125420812653], [-68.966818406841824, -18.981683444904089], [-68.442225104430918, -19.405068454671419], [-68.757167121033703, -20.37265797290447], [-68.219913092711224, -21.49434661223183]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"China\", \"name\": \"China\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[110.339187860151526, 18.678395087147603], [109.475209588663702, 18.19770091396861], [108.655207961056135, 18.507681993071397], [108.626217482540426, 19.367887885001974], [109.119055617308007, 19.821038519769385], [110.211598748822837, 20.101253973872073], [110.786550734502228, 20.077534491450077], [111.01005130416462, 19.695929877190732], [110.570646600386794, 19.255879218009305], [110.339187860151526, 18.678395087147603]]], [[[127.657407261262378, 49.760270494172929], [129.397817824420429, 49.440600084015429], [130.58229332898236, 48.729687404976112], [130.987281528853828, 47.790132351261391], [132.506671991099495, 47.788969631534876], [133.373595819228001, 48.183441677434914], [135.026311476786702, 48.478229885443902], [134.500813836810607, 47.578439846377833], [134.112362095272601, 47.212467352886719], [133.76964399631288, 46.116926988299056], [133.097126906466428, 45.14406647397216], [131.883454217659562, 45.32116160743643], [131.025212030156069, 44.967953192721573], [131.288555129115537, 44.111519680348252], [131.144687941614848, 42.929989732426932], [130.633866408409801, 42.903014634770543], [130.640015903852429, 42.39500946712527], [129.994267205933227, 42.985386867843793], [129.596668735879462, 42.424981797854592], [128.05221520397231, 41.994284572917984], [128.208433058790717, 41.466771552082534], [127.343782993683021, 41.503151760415953], [126.869083286649854, 41.816569322266155], [126.18204511932943, 41.107336127276362], [125.079941847840587, 40.569823716792449], [124.265624627785314, 39.928493353834135], [122.86757042856101, 39.637787583976255], [122.131387974130917, 39.170451768544623], [121.054554478032856, 38.89747101496291], [121.585994907722466, 39.360853583324136], [121.376757033372641, 39.750261338859524], [122.168595005381007, 40.422442531896046], [121.640358514493528, 40.946389878903304], [120.768628778161954, 40.593388169917596], [119.639602085449056, 39.898055935214209], [119.023463983233015, 39.252333075511096], [118.042748651197897, 39.204273993479674], [117.532702264477052, 38.73763580988409], [118.05969852098967, 38.061475531561051], [118.878149855628351, 37.897325344385898], [118.911636183753501, 37.448463853498723], [119.702802362142037, 37.156388658185072], [120.823457472823648, 37.870427761377968], [121.711258579597938, 37.481123358707165], [122.357937453298462, 37.454484157860684], [122.519994744965814, 36.930614325501828], [121.104163853033029, 36.651329047180432], [120.63700890511457, 36.111439520811125], [119.66456180224607, 35.609790554337728], [119.151208123858567, 34.909859117160458], [120.227524855633717, 34.360331936168613], [120.620369093916565, 33.37672272392512], [121.229014113450219, 32.460318711877186], [121.908145786630044, 31.692174384074683], [121.891919386890336, 30.949351508095098], [121.264257440273298, 30.676267401648712], [121.503519321784722, 30.14291494396425], [122.092113885589086, 29.832520453403156], [121.93842817595305, 29.018022365834803], [121.684438511238469, 28.225512600206677], [121.125661248866436, 28.135673122667178], [120.395473260582307, 27.053206895449385], [119.585496860839555, 25.740780544532605], [118.656871372554519, 24.547390855400234], [117.281606479970833, 23.624501451099714], [115.890735304835118, 22.782873236578094], [114.763827345846209, 22.668074042241663], [114.152546828265656, 22.223760077396204], [113.806779819800752, 22.548339748621423], [113.241077915501592, 22.051367499270462], [111.843592157032447, 21.550493679281512], [110.78546552942413, 21.39714386645533], [110.444039341271662, 20.34103261970639], [109.88986128137357, 20.282457383703441], [109.627655063924635, 21.008227037026725], [109.864488153118316, 21.395050970947516], [108.522812941524421, 21.715212307211821], [108.050180291782979, 21.552379869060101], [107.043420037872636, 21.8118989120299], [106.567273390735352, 22.21820486092474], [106.725403273548466, 22.794267889898375], [105.811247186305209, 22.976892401617899], [105.329209425886631, 23.352063300056976], [104.476858351664475, 22.819150092046918], [103.504514601660503, 22.703756618739217], [102.706992222100155, 22.708795070887696], [102.170435825613552, 22.464753119389336], [101.652017856861576, 22.318198757409554], [101.803119744882906, 21.174366766845051], [101.27002566936001, 21.201651923095167], [101.180005324307558, 21.436572984294052], [101.150032993578236, 21.849984442629015], [100.416537713627349, 21.558839423096654], [99.983489211021549, 21.742936713136451], [99.240898878987196, 22.118314317304559], [99.53199222208741, 22.949038804612591], [98.898749220782804, 23.142722072842581], [98.66026248575578, 24.063286037690002], [97.604719679762027, 23.897404690033049], [97.724609002679131, 25.083637193293036], [98.671838006589212, 25.91870250091349], [98.712093947344556, 26.743535874940243], [98.682690057370507, 27.508812160750658], [98.246230910233351, 27.747221381129172], [97.91198774616943, 28.335945136014367], [97.327113885490007, 28.261582749946339], [96.248833449287829, 28.411030992134467], [96.586590610747521, 28.830979519154361], [96.117678664131006, 29.452802028922513], [95.404802280664626, 29.031716620392157], [94.565990431702929, 29.27743805593996], [93.413347609432662, 28.640629380807233], [92.503118931043616, 27.896876329046442], [91.696656528696693, 27.771741848251615], [91.258853794319876, 28.040614325466343], [90.730513950567797, 28.064953925075738], [90.015828891971182, 28.296438503527177], [89.475810174521158, 28.042758897406365], [88.814248488320573, 27.299315904239389], [88.730325962278528, 28.086864732367552], [88.120440708369941, 27.876541652939572], [86.954517043000635, 27.974261786403524], [85.823319940131526, 28.203575954698742], [85.011638218123053, 28.642773952747369], [84.23457970575015, 28.839893703724691], [83.89899295444674, 29.320226141877633], [83.337115106137176, 29.463731594352193], [82.327512648450877, 30.115268052688204], [81.525804477874786, 30.422716986608659], [81.111256138029276, 30.183480943313402], [79.721366815107118, 30.882714748654728], [78.738894484374001, 31.515906073527045], [78.458446486326025, 32.61816437431272], [79.176128777995544, 32.483779812137747], [79.208891636068543, 32.994394639613738], [78.811086460285722, 33.506198025032397], [78.912268914713209, 34.321936346975768], [77.83745079947461, 35.494009507787794], [76.192848341785705, 35.89840342868785], [75.896897414050173, 36.666806138651872], [75.158027785140987, 37.133030910789152], [74.980002475895404, 37.419990139305888], [74.829985792952144, 37.990007025701445], [74.864815708316783, 38.378846340481587], [74.25751427602269, 38.606506862943476], [73.928852166646394, 38.505815334622717], [73.675379266254836, 39.431236884105566], [73.960013055318427, 39.660008449861714], [73.822243686828315, 39.893973497063136], [74.776862420556043, 40.366425279291619], [75.467827996730719, 40.56207225194867], [76.526368035797432, 40.427946071935132], [76.90448449087711, 41.066485907549648], [78.187196893226044, 41.185315863604799], [78.543660923175253, 41.582242540038713], [80.119430373051401, 42.12394074153822], [80.259990268885318, 42.34999929459908], [80.180150180994374, 42.920067857426844], [80.866206496101213, 43.180362046881008], [79.966106398441426, 44.917516994804622], [81.947070753918084, 45.317027492853143], [82.458925815769035, 45.539649563166499], [83.180483839860543, 47.330031236350735], [85.164290399113213, 47.000955715516099], [85.720483839870667, 47.452969468773077], [85.76823286330837, 48.455750637396896], [86.59877648310335, 48.549181626980605], [87.359970330762692, 49.214980780629148], [87.751264276076668, 49.297197984405464], [88.013832228551678, 48.599462795600594], [88.854297723346747, 48.069081732773007], [90.280825636763893, 47.693549099307901], [90.970809360724957, 46.88814606382293], [90.585768263718307, 45.719716091487491], [90.945539585334316, 45.286073309910243], [92.133890822318222, 45.115075995456429], [93.480733677141316, 44.97547211362], [94.688928664125356, 44.352331854828456], [95.306875441471504, 44.241330878265458], [95.762454868556688, 43.319449164394619], [96.349395786527808, 42.725635280928643], [97.451757440177971, 42.74888967546007], [99.515817498779995, 42.524691473961688], [100.845865513108279, 42.663804429691417], [101.833040399179936, 42.51487295182627], [103.312278273534787, 41.907468166667613], [104.522281935649005, 41.90834666601662], [104.964993931093431, 41.597409572916334], [106.129315627061658, 42.134327704428891], [107.744772576937976, 42.481515814781908], [109.243595819131428, 42.519446316084149], [110.412103306115299, 42.871233628911014], [111.129682244920218, 43.406834011400171], [111.82958784388137, 43.743118394539486], [111.667737257943202, 44.073175767587706], [111.348376906379428, 44.457441718110047], [111.87330610560025, 45.102079372735112], [112.436062453258842, 45.01164561622425], [113.463906691544196, 44.808893134127111], [114.46033165899604, 45.339816799493875], [115.985096470200133, 45.727235012386004], [116.717868280098855, 46.38820241961524], [117.421701287914246, 46.67273285581421], [118.874325799638711, 46.805412095723646], [119.663269891438745, 46.692679958678944], [119.772823927897562, 47.048058783550132], [118.866574334794947, 47.747060044946195], [118.064142694166719, 48.06673045510373], [117.295507440257438, 47.697709052107385], [116.308952671373234, 47.853410142602812], [115.742837355615734, 47.726544501326273], [115.485282017073018, 48.135382595403442], [116.191802199367601, 49.134598090199056], [116.67880089728618, 49.888531399121398], [117.879244419426371, 49.510983384796944], [119.288460728025839, 50.142882798862033], [119.279365675942358, 50.582907619827282], [120.182049595216924, 51.64356639261802], [120.738191359541972, 51.964115302124547], [120.725789015791975, 52.516226304730814], [120.177088657716865, 52.753886216841195], [121.003084751470226, 53.251401068731226], [122.245747918792858, 53.431725979213681], [123.571506789240843, 53.458804429734627], [125.068211297710434, 53.161044826868832], [125.946348911646169, 52.792798570356936], [126.564399041856959, 51.784255479532689], [126.939156528837657, 51.353894151405896], [127.287455682484904, 50.739797268265434], [127.657407261262378, 49.760270494172929]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ivory Coast\", \"name\": \"C�te d'Ivoire\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-2.856125047202397, 4.994475816259508], [-3.311084357100071, 4.984295559098014], [-4.008819545904941, 5.179813340674314], [-4.64991736491791, 5.168263658057084], [-5.834496222344525, 4.993700669775135], [-6.528769090185845, 4.705087795425015], [-7.518941209330434, 4.338288479017307], [-7.712159389669749, 4.364565944837721], [-7.63536821128403, 5.188159084489455], [-7.53971513511176, 5.313345241716517], [-7.570152553731686, 5.707352199725903], [-7.993692592795879, 6.126189683451541], [-8.311347622094017, 6.193033148621081], [-8.602880214868618, 6.467564195171659], [-8.385451626000572, 6.911800645368742], [-8.485445522485348, 7.395207831243068], [-8.439298468448696, 7.686042792181736], [-8.280703497744936, 7.687179673692156], [-8.221792364932197, 8.123328762235571], [-8.299048631208562, 8.316443589710302], [-8.203498907900878, 8.455453192575446], [-7.832100389019186, 8.575704250518625], [-8.079113735374348, 9.376223863152033], [-8.309616461612249, 9.789531968622439], [-8.22933712404682, 10.129020290563897], [-8.029943610048617, 10.206534939001711], [-7.89958980959237, 10.297382106970824], [-7.622759161804808, 10.147236232946792], [-6.850506557635057, 10.138993841996237], [-6.666460944027547, 10.430810655148447], [-6.493965013037267, 10.411302801958268], [-6.205222947606429, 10.524060777219132], [-6.050452032892266, 10.096360785355442], [-5.816926235365286, 10.222554633012191], [-5.404341599946973, 10.370736802609144], [-4.954653286143098, 10.152713934769732], [-4.779883592131966, 9.821984768101741], [-4.330246954760383, 9.610834865757139], [-3.980449184576684, 9.862344061721698], [-3.511898972986272, 9.900326239456216], [-2.827496303712706, 9.642460842319775], [-2.56218950032624, 8.219627793811481], [-2.983584967450326, 7.379704901555511], [-3.244370083011261, 6.2504715031135], [-2.810701463217839, 5.389051215024109], [-2.856125047202397, 4.994475816259508]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Cameroon\", \"name\": \"Cameroon\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[13.07582238124675, 2.267097072759014], [12.951333855855605, 2.321615708826939], [12.359380323952218, 2.19281220133945], [11.751665480199787, 2.326757513839993], [11.276449008843711, 2.261050930180871], [9.649158155972627, 2.283866075037735], [9.795195753629455, 3.073404445809117], [9.404366896205998, 3.734526882335202], [8.948115675501068, 3.904128933117135], [8.744923943729416, 4.352215277519959], [8.488815545290889, 4.495617377129917], [8.500287713259693, 4.771982937026847], [8.757532993208626, 5.47966583904791], [9.233162876023043, 6.444490668153334], [9.522705926154398, 6.453482367372116], [10.118276808318255, 7.038769639509879], [10.497375115611417, 7.055357774275562], [11.058787876030349, 6.644426784690593], [11.745774366918509, 6.981382961449753], [11.839308709366801, 7.397042344589434], [12.063946160539556, 7.799808457872301], [12.218872104550597, 8.305824082874322], [12.753671502339214, 8.717762762888993], [12.955467970438971, 9.417771714714702], [13.1675997249971, 9.64062632897341], [13.308676385153914, 10.160362046748926], [13.572949659894558, 10.798565985553564], [14.415378859116682, 11.572368882692071], [14.468192172918974, 11.90475169519341], [14.57717776862253, 12.085360826053501], [14.181336297266792, 12.483656927943112], [14.213530714584634, 12.802035427293344], [14.495787387762842, 12.859396267137326], [14.893385857816522, 12.219047756392582], [14.960151808337598, 11.555574042197222], [14.923564894274955, 10.891325181517471], [15.467872755605269, 9.982336737503429], [14.909353875394713, 9.99212942142273], [14.627200555081057, 9.920919297724536], [14.171466098699025, 10.021378282099928], [13.954218377344002, 9.549494940626685], [14.544466586981766, 8.965861314322266], [14.979995558337688, 8.796104234243471], [15.120865512765331, 8.382150173369423], [15.436091749745765, 7.692812404811971], [15.279460483469107, 7.421924546737968], [14.776545444404572, 6.408498033062044], [14.536560092841111, 6.22695872642069], [14.459407179429345, 5.451760565610299], [14.558935988023501, 5.03059764243153], [14.478372430080466, 4.732605495620446], [14.950953403389658, 4.21038930909492], [15.036219516671249, 3.851367295747123], [15.405395948964379, 3.335300604664339], [15.862732374747479, 3.013537298998982], [15.907380812247649, 2.557389431158612], [16.01285241055535, 2.267639675298084], [15.940918816805061, 1.727672634280295], [15.14634199388524, 1.964014797367184], [14.337812534246577, 2.22787466064949], [13.07582238124675, 2.267097072759014]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Democratic Republic of the Congo\", \"name\": \"Dem. Rep. Congo\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[30.833859897593801, 3.50916596111034], [30.773346795380036, 2.339883327642127], [31.174149204235807, 2.204465236821263], [30.852670118948048, 1.849396470543809], [30.468507521290292, 1.58380544677972], [30.086153598762703, 1.062312730306288], [29.875778842902488, 0.597379868976304], [29.819503208136634, -0.205310153813372], [29.587837762172164, -0.58740569417948], [29.579466180140876, -1.341313164885626], [29.29188683443661, -1.620055840667987], [29.254834832483336, -2.215109958508911], [29.117478875451546, -2.292211195488384], [29.02492638521678, -2.839257907730157], [29.276383904749046, -3.293907159034063], [29.339997592900342, -4.499983412294092], [29.519986606572925, -5.419978936386313], [29.41999271008816, -5.939998874539432], [29.620032179490003, -6.520015150583424], [30.199996779101692, -7.079980970898161], [30.740015496551781, -8.340007419470913], [30.34608605319081, -8.238256524288216], [29.002912225060467, -8.40703175215347], [28.734866570762495, -8.526559340044576], [28.449871046672818, -9.164918308146083], [28.673681674928922, -9.605924981324931], [28.496069777141763, -10.789883721564044], [28.372253045370421, -11.793646742401389], [28.642417433392346, -11.971568698782312], [29.341547885869087, -12.36074391037241], [29.616001417771223, -12.178894545137307], [29.699613885219485, -13.257226657771827], [28.934285922976834, -13.248958428605132], [28.52356163912102, -12.698604424696679], [28.15510867687998, -12.272480564017894], [27.38879886242378, -12.132747491100663], [27.164419793412456, -11.608748467661071], [26.55308759939961, -11.924439792532125], [25.752309604604726, -11.784965101776356], [25.418118116973197, -11.330935967659958], [24.783169793402948, -11.238693536018962], [24.314516228947948, -11.262826429899269], [24.257155389103982, -10.951992689663655], [23.912215203555714, -10.926826267137512], [23.456790805767433, -10.867863457892481], [22.837345411884733, -11.017621758674329], [22.402798292742371, -10.99307545333569], [22.155268182064304, -11.084801120653768], [22.208753289486388, -9.894796237836507], [21.87518191904234, -9.523707777548564], [21.801801385187897, -8.908706556842978], [21.949130893652036, -8.305900974158275], [21.746455926203303, -7.920084730667147], [21.728110792739695, -7.2908724910813], [20.514748162526498, -7.299605808138629], [20.601822950938292, -6.93931772219968], [20.091621534920645, -6.943090101756993], [20.037723016040214, -7.116361179231644], [19.417502475673157, -7.155428562044297], [19.166613396896107, -7.738183688999753], [19.016751743249664, -7.988245944860132], [18.464175652752683, -7.847014255406442], [18.134221632569048, -7.98767750410492], [17.472970004962232, -8.068551120641699], [17.089995965247166, -7.545688978712525], [16.860190870845198, -7.222297865429984], [16.573179965896141, -6.622644545115087], [16.326528354567042, -5.877470391466267], [13.375597364971892, -5.864241224799548], [13.02486941900696, -5.984388929878157], [12.735171339578695, -5.965682061388497], [12.322431674863507, -6.100092461779658], [12.182336866920249, -5.789930515163837], [12.436688266660866, -5.684303887559245], [12.468004184629734, -5.248361504745003], [12.631611769265788, -4.991271254092935], [12.995517205465173, -4.781103203961883], [13.258240187237044, -4.882957452009165], [13.600234816144676, -4.500138441590969], [14.144956088933295, -4.510008640158715], [14.209034864975219, -4.793092136253597], [14.582603794013179, -4.970238946150139], [15.170991652088441, -4.3435071753143], [15.753540073314749, -3.855164890156096], [16.006289503654298, -3.535132744972528], [15.972803175529149, -2.712392266453612], [16.407091912510051, -1.740927015798682], [16.86530683764212, -1.225816338713287], [17.523716261472853, -0.743830254726987], [17.638644646889983, -0.424831638189246], [17.663552687254676, -0.058083998213817], [17.826540154703245, 0.288923244626105], [17.774191928791563, 0.855658677571085], [17.89883548347958, 1.741831976728278], [18.09427575040743, 2.365721543788055], [18.39379235197114, 2.90044342692822], [18.453065219809925, 3.504385891123348], [18.542982211997778, 4.201785183118317], [18.932312452884755, 4.709506130385973], [19.467783644293146, 5.031527818212779], [20.290679152108932, 4.691677761245287], [20.927591180106273, 4.322785549329736], [21.659122755630019, 4.224341945813719], [22.405123732195531, 4.02916006104732], [22.704123569436284, 4.633050848810156], [22.841479526468103, 4.710126247573483], [23.297213982850135, 4.609693101414221], [24.41053104014625, 5.108784084489129], [24.805028924262409, 4.897246608902349], [25.128833449003274, 4.927244777847789], [25.278798455514302, 5.170408229997191], [25.650455356557465, 5.256087754737123], [26.402760857862535, 5.150874538590869], [27.044065382604703, 5.127852688004835], [27.374226108517483, 5.233944403500059], [27.979977247842807, 4.408413397637373], [28.428993768026906, 4.287154649264493], [28.696677687298795, 4.455077215996936], [29.159078403446497, 4.38926727947323], [29.715995314256013, 4.600804755060024], [29.953500197069467, 4.173699042167683], [30.833859897593801, 3.50916596111034]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Republic of Congo\", \"name\": \"Congo\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[12.995517205465173, -4.781103203961883], [12.620759718484491, -4.438023369976135], [12.318607618873923, -4.606230157086187], [11.914963006242086, -5.037986748884789], [11.093772820691923, -3.978826592630546], [11.855121697648114, -3.42687061932105], [11.478038771214299, -2.765618991714241], [11.820963575903189, -2.514161472181982], [12.495702752338159, -2.391688327650242], [12.575284458067639, -1.948511244315134], [13.109618767965626, -2.428740329603513], [13.992407260807706, -2.470804945489099], [14.299210239324564, -1.998275648612213], [14.425455763413593, -1.333406670744971], [14.316418491277741, -0.552627455247048], [13.843320753645653, 0.038757635901149], [14.276265903386953, 1.196929836426619], [14.026668735417214, 1.395677395021153], [13.282631463278816, 1.31418366129688], [13.003113641012074, 1.830896307783319], [13.07582238124675, 2.267097072759014], [14.337812534246577, 2.22787466064949], [15.14634199388524, 1.964014797367184], [15.940918816805061, 1.727672634280295], [16.01285241055535, 2.267639675298084], [16.537058139724135, 3.198254706226278], [17.133042433346297, 3.728196519379451], [17.809900343505259, 3.560196437998569], [18.453065219809925, 3.504385891123348], [18.39379235197114, 2.90044342692822], [18.09427575040743, 2.365721543788055], [17.89883548347958, 1.741831976728278], [17.774191928791563, 0.855658677571085], [17.826540154703245, 0.288923244626105], [17.663552687254676, -0.058083998213817], [17.638644646889983, -0.424831638189246], [17.523716261472853, -0.743830254726987], [16.86530683764212, -1.225816338713287], [16.407091912510051, -1.740927015798682], [15.972803175529149, -2.712392266453612], [16.006289503654298, -3.535132744972528], [15.753540073314749, -3.855164890156096], [15.170991652088441, -4.3435071753143], [14.582603794013179, -4.970238946150139], [14.209034864975219, -4.793092136253597], [14.144956088933295, -4.510008640158715], [13.600234816144676, -4.500138441590969], [13.258240187237044, -4.882957452009165], [12.995517205465173, -4.781103203961883]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Colombia\", \"name\": \"Colombia\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-75.373223232713841, -0.15203175212045], [-75.801465827116587, 0.084801337073202], [-76.292314419240938, 0.416047268064119], [-76.576379767549383, 0.256935533037435], [-77.424984300430367, 0.395686753741117], [-77.668612840470416, 0.825893052570961], [-77.855061408179509, 0.809925034992773], [-78.855258755188686, 1.380923773601822], [-78.990935228171026, 1.691369940595251], [-78.617831387023699, 1.766404120283056], [-78.662118089497838, 2.267355454920476], [-78.427610439757302, 2.629555568854215], [-77.931542527971473, 2.696605739752925], [-77.510431281224996, 3.325016994638246], [-77.127689785455246, 3.849636135265356], [-77.496271938776999, 4.087606105969427], [-77.307601284479375, 4.667984117039452], [-77.533220587865713, 5.582811997902496], [-77.318815070286718, 5.845354112161359], [-77.476660732722266, 6.691116441266301], [-77.881571417945239, 7.223771267114783], [-77.75341386586139, 7.709839789252141], [-77.431107957656977, 7.638061224798733], [-77.242566494440069, 7.935278225125442], [-77.474722866511314, 8.524286200388216], [-77.353360765273848, 8.670504665558068], [-76.836673957003541, 8.638749497914715], [-76.086383836557843, 9.336820583529486], [-75.674600185840035, 9.443248195834597], [-75.664704149056149, 9.774003200718736], [-75.480425991503338, 10.618990383339305], [-74.906895107711975, 11.08304474532032], [-74.276752692344871, 11.102035834187586], [-74.197222663047683, 11.310472723836865], [-73.414763963500278, 11.227015285685479], [-72.62783525255962, 11.731971543825519], [-72.238194953078903, 11.955549628136325], [-71.754090135368628, 12.437303168177305], [-71.399822353791691, 12.376040757695289], [-71.137461107045866, 12.112981879113503], [-71.331583624950284, 11.776284084515805], [-71.973921678338272, 11.608671576377116], [-72.227575446242923, 11.108702093953237], [-72.614657762325194, 10.821975409381777], [-72.905286017534692, 10.45034434655477], [-73.027604132769554, 9.736770331252441], [-73.304951544880026, 9.151999823437604], [-72.788729824500379, 9.085027167187331], [-72.660494757768092, 8.62528778730268], [-72.439862230097944, 8.405275376820027], [-72.360900641555958, 8.002638454617893], [-72.479678921178831, 7.632506008327352], [-72.444487270788059, 7.42378489830048], [-72.19835242378187, 7.340430813013682], [-71.960175747348629, 6.991614895043538], [-70.674233567981503, 7.087784735538717], [-70.093312954372408, 6.960376491723109], [-69.389479946557103, 6.099860541198835], [-68.985318569602327, 6.206804917826856], [-68.265052456318216, 6.153268133972473], [-67.695087246355001, 6.267318020040645], [-67.34143958196556, 6.095468044454021], [-67.521531948502741, 5.556870428891968], [-67.744696621355203, 5.221128648291667], [-67.823012254493534, 4.503937282728898], [-67.621835903581271, 3.839481716319994], [-67.33756384954367, 3.542342230641721], [-67.303173183853417, 3.31845408773718], [-67.809938117123693, 2.820655015469569], [-67.447092047786299, 2.600280869960869], [-67.181294318293041, 2.250638129074062], [-66.876325853122566, 1.253360500489336], [-67.065048183852483, 1.130112209473225], [-67.25999752467358, 1.719998684084956], [-67.537810024674684, 2.037162787276329], [-67.868565029558823, 1.692455145673392], [-69.816973232691609, 1.714805202639624], [-69.804596727157701, 1.089081122233466], [-69.218637661400166, 0.985676581217433], [-69.252434048119042, 0.602650865070075], [-69.452396002872447, 0.706158758950693], [-70.015565761989293, 0.541414292804205], [-70.02065589057004, -0.185156345219539], [-69.577065395776586, -0.549991957200163], [-69.420485805932216, -1.122618503426409], [-69.444101935489599, -1.556287123219817], [-69.893635219996611, -4.298186944194326], [-70.394043952094975, -3.766591485207825], [-70.692682054309699, -3.742872002785858], [-70.047708502874841, -2.725156345229699], [-70.813475714791949, -2.256864515800742], [-71.413645799429773, -2.342802422702128], [-71.774760708285385, -2.169789727388937], [-72.325786505813639, -2.434218031426453], [-73.070392218707212, -2.308954359550952], [-73.659503546834586, -1.260491224781134], [-74.122395189089048, -1.002832533373848], [-74.441600511355958, -0.530820000819887], [-75.106624518520064, -0.05720549886486], [-75.373223232713841, -0.15203175212045]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Costa Rica\", \"name\": \"Costa Rica\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-82.965783047197348, 8.225027980985983], [-83.508437262694287, 8.446926581247281], [-83.711473965169063, 8.656836249216864], [-83.596313035806631, 8.830443223501417], [-83.632641567707822, 9.051385809765319], [-83.909885626953724, 9.290802720573579], [-84.303401658856345, 9.487354030795712], [-84.64764421256865, 9.615537421095707], [-84.713350796227743, 9.908051866083849], [-84.975660366541319, 10.086723130733004], [-84.911374884770211, 9.795991522658921], [-85.110923428065291, 9.557039699741308], [-85.339488288092255, 9.834542141148658], [-85.660786505866966, 9.93334747969072], [-85.797444831062819, 10.134885565629032], [-85.791708747078417, 10.439337266476612], [-85.65931372754666, 10.754330959511718], [-85.941725430021748, 10.895278428587799], [-85.712540452807289, 11.088444932494822], [-85.561851976244171, 11.217119248901593], [-84.903003302738924, 10.952303371621895], [-84.673069017256239, 11.082657172078139], [-84.355930752281026, 10.999225572142901], [-84.190178595704822, 10.793450018756671], [-83.895054490885926, 10.726839097532444], [-83.655611741861563, 10.938764146361418], [-83.402319708982944, 10.39543813724465], [-83.015676642575158, 9.992982082555553], [-82.546196255203469, 9.566134751824674], [-82.932890998043561, 9.476812038608172], [-82.927154914059145, 9.074330145702914], [-82.719183112300513, 8.925708726431493], [-82.868657192704759, 8.807266343618521], [-82.829770677405151, 8.626295477732368], [-82.9131764391242, 8.423517157419068], [-82.965783047197348, 8.225027980985983]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Cuba\", \"name\": \"Cuba\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-82.268151211257035, 23.188610744717703], [-81.404457160146819, 23.117271429938775], [-80.61876868358118, 23.105980129482994], [-79.679523688460222, 22.765303249598823], [-79.281485968732071, 22.399201565027049], [-78.347434455056472, 22.512166246017085], [-77.993295864560253, 22.277193508385928], [-77.146422492161037, 21.657851467367831], [-76.523824835908528, 21.20681956632437], [-76.194620123993175, 21.220565497314006], [-75.598222418912655, 21.01662445727413], [-75.671060350228032, 20.735091254147999], [-74.933896043584483, 20.693905137611381], [-74.178024868451246, 20.284627793859737], [-74.296648118777242, 20.050378526280678], [-74.961594611292924, 19.923435370355687], [-75.634680141894577, 19.873774318923193], [-76.323656175425981, 19.952890936762056], [-77.755480923153044, 19.855480861891873], [-77.085108405246729, 20.413353786698789], [-77.492654588516601, 20.673105373613886], [-78.137292243141573, 20.739948838783427], [-78.482826707661161, 21.028613389565848], [-78.719866502583997, 21.598113511638431], [-79.284999966127913, 21.559175319906497], [-80.217475348618635, 21.827324327069032], [-80.517534552721401, 22.037078965741756], [-81.820943366203167, 22.192056586185068], [-82.169991828118611, 22.387109279870746], [-81.79500179719264, 22.636964830001951], [-82.775897996740838, 22.688150336187057], [-83.494458787759328, 22.168517971276124], [-83.908800421875611, 22.154565334557329], [-84.052150845053248, 21.910575059491251], [-84.547030198896351, 21.801227728761639], [-84.974911058273079, 21.896028143801082], [-84.44706214062775, 22.204949856041903], [-84.23035702181177, 22.56575470630376], [-83.778239915690165, 22.78811839445569], [-83.267547573565736, 22.983041897060641], [-82.510436164057495, 23.078746649665181], [-82.268151211257035, 23.188610744717703]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Northern Cyprus\", \"name\": \"N. Cyprus\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[32.731780226377445, 35.14002594658843], [32.802473585752743, 35.145503648411363], [32.946960890440799, 35.38670339613369], [33.667227003724939, 35.373215847305509], [34.576473829900458, 35.671595567358786], [33.900804477684197, 35.245755927057608], [33.973616570783456, 35.058506374647997], [33.866439650210104, 35.093594672174177], [33.675391880027057, 35.017862860650446], [33.525685255677494, 35.038688462864066], [33.475817498515845, 35.000344550103499], [33.45592207208346, 35.101423651666401], [33.383833449036295, 35.162711900364563], [33.190977003723042, 35.173124701471373], [32.919572381326127, 35.087832749973636], [32.731780226377445, 35.14002594658843]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Cyprus\", \"name\": \"Cyprus\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[33.973616570783456, 35.058506374647997], [34.004880812320032, 34.978097846001852], [32.97982710137844, 34.571869411755436], [32.490296258277532, 34.701654771456468], [32.256667107885953, 35.103232326796622], [32.731780226377445, 35.14002594658843], [32.919572381326127, 35.087832749973636], [33.190977003723042, 35.173124701471373], [33.383833449036295, 35.162711900364563], [33.45592207208346, 35.101423651666401], [33.475817498515845, 35.000344550103499], [33.525685255677494, 35.038688462864066], [33.675391880027057, 35.017862860650446], [33.866439650210104, 35.093594672174177], [33.973616570783456, 35.058506374647997]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Czech Republic\", \"name\": \"Czech Rep.\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[16.960288120194573, 48.596982326850593], [16.49928266771877, 48.785808010445095], [16.029647251050218, 48.733899034207916], [15.253415561593979, 49.039074205107575], [14.901447381254055, 48.964401760445817], [14.33889773932472, 48.555305284207193], [13.595945672264433, 48.877171942737135], [13.031328973043427, 49.307068182973232], [12.52102420416119, 49.54741526956272], [12.415190870827441, 49.96912079528056], [12.240111118222556, 50.266337795607271], [12.96683678554319, 50.484076443069071], [13.338131951560282, 50.733234361364346], [14.05622765468817, 50.926917629594286], [14.307013380600633, 51.117267767941399], [14.570718214586062, 51.002339382524262], [15.016995883858666, 51.106674099321566], [15.490972120839725, 50.7847299261432], [16.238626743238566, 50.697732652379827], [16.176253289462263, 50.4226073268579], [16.719475945714429, 50.215746568393527], [16.868769158605655, 50.473973700556016], [17.554567091551117, 50.36214590107641], [17.649445021238986, 50.049038397819942], [18.392913852622168, 49.988628648470737], [18.85314415861361, 49.496229763377634], [18.554971144289478, 49.495015367218777], [18.399993523846174, 49.315000515330034], [18.170498488037961, 49.271514797556421], [18.104972771891848, 49.043983466175298], [17.913511590250462, 48.996492824899072], [17.886484816161808, 48.903475246773695], [17.545006951577101, 48.800019029325362], [17.101984897538895, 48.8169688991171], [16.960288120194573, 48.596982326850593]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Germany\", \"name\": \"Germany\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9.92190636560923, 54.983104153048025], [9.939579705452898, 54.596641954153242], [10.950112338920517, 54.363607082733147], [10.939466993868447, 54.008693345752583], [11.95625247564328, 54.196485500701144], [12.518440382546711, 54.470370591847988], [13.647467075259495, 54.075510972705885], [14.119686313542555, 53.757029120491026], [14.353315463934164, 53.248171291713092], [14.074521111719431, 52.981262518925334], [14.437599725002197, 52.62485016540829], [14.685026482815713, 52.089947414755208], [14.607098422919645, 51.745188096719964], [15.016995883858781, 51.106674099321701], [14.570718214586119, 51.002339382524369], [14.307013380600662, 51.117267767941364], [14.05622765468831, 50.92691762959435], [13.338131951560397, 50.733234361364268], [12.966836785543249, 50.484076443069164], [12.240111118222668, 50.266337795607214], [12.41519087082747, 49.969120795280602], [12.521024204161332, 49.547415269562741], [13.031328973043513, 49.307068182973232], [13.595945672264575, 48.877171942737156], [13.243357374737112, 48.416114813829026], [12.884102817443873, 48.289145819687846], [13.025851271220514, 47.637583523135945], [12.93262698736606, 47.467645575543983], [12.620759718484519, 47.672387600284409], [12.141357456112869, 47.703083401065768], [11.426414015354847, 47.523766181013045], [10.544504021861597, 47.566399237653783], [10.402083774465321, 47.302487697939164], [9.896068149463188, 47.58019684507569], [9.594226108446376, 47.525058091820185], [8.522611932009793, 47.830827541691342], [8.317301466514092, 47.613579820336263], [7.466759067422286, 47.620581976911907], [7.59367638513106, 48.333019110703724], [8.099278598674855, 49.017783515003423], [6.658229607783709, 49.201958319691627], [6.186320428094176, 49.4638028021145], [6.242751092156992, 49.90222565367872], [6.043073357781109, 50.128051662794221], [6.156658155958779, 50.803721015010574], [5.988658074577812, 51.85161570902504], [6.589396599970825, 51.85202912048338], [6.842869500362381, 52.228440253297542], [7.092053256873895, 53.14404328064488], [6.905139601274128, 53.482162177130633], [7.100424838905268, 53.693932196662658], [7.936239454793961, 53.748295803433777], [8.121706170289483, 53.527792466844275], [8.800734490604667, 54.02078563090889], [8.572117954145368, 54.395646470754045], [8.526229282270206, 54.962743638725144], [9.282048780971136, 54.830865383516297], [9.92190636560923, 54.983104153048025]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Djibouti\", \"name\": \"Djibouti\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[43.081226027200152, 12.699638576707112], [43.317852410664663, 12.390148423711022], [43.286381463398911, 11.974928290245883], [42.715873650896519, 11.735640570518338], [43.145304803242126, 11.462039699748853], [42.776851841000948, 10.926878566934416], [42.55493000000012, 11.105110000000193], [42.314140000000116, 11.0342], [41.755570000000191, 11.05091], [41.739590000000177, 11.355110000000137], [41.661760000000122, 11.6312], [42.000000000000107, 12.100000000000133], [42.351560000000106, 12.54223000000013], [42.779642368344739, 12.455415757695672], [43.081226027200152, 12.699638576707112]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Denmark\", \"name\": \"Denmark\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[12.690006137755629, 55.60999095318077], [12.089991082414738, 54.800014553437919], [11.043543328504226, 55.36486379660424], [10.90391360845163, 55.779954738988735], [12.370904168353288, 56.111407375708822], [12.690006137755629, 55.60999095318077]]], [[[10.912181837618359, 56.4586213242779], [10.667803989309986, 56.081383368547208], [10.369992710011983, 56.190007229224719], [9.649984978889306, 55.469999498102041], [9.921906365609173, 54.983104153048046], [9.282048780971136, 54.830865383516155], [8.526229282270235, 54.962743638724973], [8.120310906617588, 55.517722683323612], [8.089976840862247, 56.540011705137587], [8.256581658571262, 56.809969387430286], [8.543437534223385, 57.110002753316891], [9.424469028367609, 57.172066148499468], [9.775558709358561, 57.447940782289649], [10.580005730846151, 57.730016587954843], [10.54610599126269, 57.21573273378614], [10.250000034230222, 56.890016181050456], [10.369992710011983, 56.60998159446082], [10.912181837618359, 56.4586213242779]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Dominican Republic\", \"name\": \"Dominican Rep.\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-71.71236141629295, 19.714455878167353], [-71.587304450146604, 19.884910590082093], [-70.806706102161726, 19.880285549391981], [-70.214364997016119, 19.622885240146157], [-69.950815192327568, 19.647999986240002], [-69.769250047470067, 19.293267116772437], [-69.222125820579862, 19.313214219637096], [-69.254346076113819, 19.015196234609871], [-68.809411994080818, 18.979074408437846], [-68.317943284768958, 18.612197577381689], [-68.689315965434503, 18.205142320218609], [-69.164945848248905, 18.422648423735108], [-69.623987596297624, 18.380712998930246], [-69.952933926051529, 18.428306993071057], [-70.133232998317879, 18.245915025296892], [-70.517137213814195, 18.184290879788829], [-70.669298468697619, 18.42688589118303], [-70.999950120717173, 18.283328762276206], [-71.400209927033885, 17.598564357976596], [-71.657661912712001, 17.757572740138695], [-71.708304816358037, 18.044997056546091], [-71.687737596305865, 18.316660061104468], [-71.945112067335543, 18.616900132720257], [-71.701302659782485, 18.785416978424049], [-71.624873216422813, 19.169837958243303], [-71.71236141629295, 19.714455878167353]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Algeria\", \"name\": \"Algeria\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[11.99950564947161, 23.471668402596443], [8.572893100629782, 21.565660712159136], [5.677565952180684, 19.601206976799713], [4.267419467800038, 19.155265204336995], [3.158133172222704, 19.057364203360034], [3.146661004253899, 19.693578599521441], [2.683588494486428, 19.856230170160114], [2.060990838233919, 20.142233384679482], [1.823227573259032, 20.61080943448604], [-1.550054897457613, 22.792665920497377], [-4.92333736817423, 24.974574082940993], [-8.684399786809051, 27.395744126895998], [-8.66512447756419, 27.58947907155822], [-8.665589565454805, 27.656425889592349], [-8.674116176782972, 28.841288967396572], [-7.059227667661928, 29.579228420524522], [-6.060632290053772, 29.731699734001687], [-5.242129278982786, 30.000443020135581], [-4.859646165374469, 30.501187649043839], [-3.690441046554695, 30.896951605751152], [-3.647497931320145, 31.637294012980668], [-3.068980271812647, 31.724497992473207], [-2.616604783529567, 32.094346218386143], [-1.30789913573787, 32.262888902306095], [-1.124551153966308, 32.651521511357124], [-1.388049282222567, 32.864015000941301], [-1.733454555661467, 33.91971283623198], [-1.792985805661686, 34.527918606091198], [-2.169913702798624, 35.168396307916673], [-1.208602871089056, 35.71484874118709], [-0.127454392894606, 35.888662421200799], [0.503876580415209, 36.301272894835272], [1.466918572606545, 36.605647081034398], [3.161698846050824, 36.783904934225205], [4.815758090849129, 36.865036932923452], [5.320120070017792, 36.716518866516616], [6.261819695672611, 37.110655015606731], [7.330384962603969, 37.118380642234364], [7.737078484741003, 36.885707505840209], [8.420964389691674, 36.946427313783154], [8.217824334352313, 36.433176988260271], [8.376367628623766, 35.479876003555937], [8.140981479534302, 34.655145982393783], [7.524481642292242, 34.097376410451453], [7.612641635782181, 33.344114895148955], [8.430472853233367, 32.748337307255944], [8.439102817426116, 32.506284898400814], [9.055602654668148, 32.102691962201284], [9.482139926805273, 30.307556057246181], [9.805634392952411, 29.424638373323383], [9.859997999723443, 28.959989732371007], [9.683884718472765, 28.144173895779193], [9.756128370816779, 27.688258571884141], [9.629056023811073, 27.140953477480913], [9.716285841519747, 26.512206325785691], [9.319410841518161, 26.094324856057447], [9.910692579801774, 25.365454616796733], [9.948261346077969, 24.93695364023251], [10.30384687667836, 24.37931325937091], [10.771363559622925, 24.562532050061744], [11.560669386449002, 24.097909247325511], [11.99950564947161, 23.471668402596443]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ecuador\", \"name\": \"Ecuador\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-80.302560594387188, -3.404856459164712], [-79.770293341780913, -2.65751189535964], [-79.986559210922394, -2.220794366061014], [-80.368783942369234, -2.685158786635788], [-80.967765469064332, -2.246942640800703], [-80.764806281238023, -1.965047702648532], [-80.933659023751702, -1.057454522306358], [-80.583370327461239, -0.906662692878683], [-80.39932471385373, -0.283703301600141], [-80.020898200180355, 0.360340074053468], [-80.090609707342097, 0.768428859862396], [-79.542762010399784, 0.982937730305963], [-78.855258755188686, 1.380923773601822], [-77.855061408179509, 0.809925034992773], [-77.668612840470416, 0.825893052570961], [-77.424984300430367, 0.395686753741117], [-76.576379767549383, 0.256935533037435], [-76.292314419240938, 0.416047268064119], [-75.801465827116587, 0.084801337073202], [-75.373223232713841, -0.15203175212045], [-75.233722703741932, -0.911416924649529], [-75.544995693652027, -1.56160979574588], [-76.635394253226707, -2.608677666843817], [-77.83790483265858, -3.003020521663103], [-78.450683966775628, -3.873096612161375], [-78.639897223612323, -4.547784112164072], [-79.205289069317715, -4.959128513207388], [-79.62497921417615, -4.454198093283494], [-80.028908047185581, -4.346090996928893], [-80.442241990872134, -4.425724379090673], [-80.46929460317692, -4.059286797708999], [-80.184014858709645, -3.821161797708043], [-80.302560594387188, -3.404856459164712]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Egypt\", \"name\": \"Egypt\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[34.9226, 29.50133], [34.64174, 29.09942], [34.42655, 28.34399], [34.15451, 27.8233], [33.92136, 27.6487], [33.58811, 27.97136], [33.13676, 28.41765], [32.42323, 29.85108], [32.32046, 29.76043], [32.73482, 28.70523], [33.34876, 27.69989], [34.10455, 26.14227], [34.47387, 25.59856], [34.79507, 25.03375], [35.69241, 23.92671], [35.49372, 23.75237], [35.52598, 23.10244], [36.69069, 22.20485], [36.86623, 22.0], [32.9, 22.0], [29.02, 22.0], [25.0, 22.0], [25.0, 25.682499996360992], [25.0, 29.238654529533452], [24.70007, 30.04419], [24.95762, 30.6616], [24.80287, 31.08929], [25.16482, 31.56915], [26.49533, 31.58568], [27.45762, 31.32126], [28.45048, 31.02577], [28.91353, 30.87005], [29.68342, 31.18686], [30.09503, 31.4734], [30.97693, 31.55586], [31.68796, 31.4296], [31.96041, 30.9336], [32.19247, 31.26034], [32.99392, 31.02407], [33.7734, 30.96746], [34.26544, 31.21936], [34.9226, 29.50133]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Eritrea\", \"name\": \"Eritrea\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[42.351560000000106, 12.54223000000013], [42.00975, 12.86582], [41.59856, 13.452090000000108], [41.15519371924983, 13.773319810435224], [40.8966, 14.118640000000138], [40.026218702969167, 14.519579169162281], [39.34061, 14.53155], [39.0994, 14.74064], [38.51295, 14.50547], [37.90607, 14.959430000000165], [37.59377, 14.2131], [36.42951, 14.42211], [36.323188917798113, 14.822480577041057], [36.753860304518575, 16.291874091044289], [36.852530000000108, 16.95655], [37.16747, 17.263140000000128], [37.904000000000103, 17.42754], [38.410089959473218, 17.998307399970312], [38.990622999839999, 16.84062612555169], [39.266110060388016, 15.922723496967246], [39.814293654140208, 15.435647284400314], [41.179274936697645, 14.491079616753209], [41.734951613132345, 13.921036892141554], [42.276830682144848, 13.34399201095442], [42.589576450375255, 13.000421250861901], [43.081226027200152, 12.699638576707112], [42.779642368344739, 12.455415757695672], [42.351560000000106, 12.54223000000013]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Spain\", \"name\": \"Spain\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-9.034817674180244, 41.880570583659669], [-8.98443315269567, 42.592775173506261], [-9.392883673530644, 43.026624660812686], [-7.978189663108308, 43.748337714200979], [-6.754491746436754, 43.567909450853918], [-5.411886359061596, 43.574239813809669], [-4.347842779955783, 43.403449205085025], [-3.51753170410609, 43.455900783861296], [-1.901351284177764, 43.422802028978332], [-1.502770961910528, 43.034014390630425], [0.338046909190581, 42.579546006839543], [0.701590610363894, 42.795734361332599], [1.826793247087153, 42.343384711265678], [2.985998976258457, 42.473015041669854], [3.039484083680548, 41.892120266276891], [2.091841668312184, 41.226088568683082], [0.810524529635188, 41.014731960609332], [0.721331007499401, 40.678318386389229], [0.106691521819869, 40.123933620762003], [-0.278711310212941, 39.309978135732713], [0.111290724293838, 38.738514309233032], [-0.467123582349103, 38.292365831041138], [-0.683389451490598, 37.642353827457811], [-1.438382127274849, 37.443063666324214], [-2.146452602538119, 36.674144192037282], [-3.415780808923386, 36.658899644511173], [-4.368900926114718, 36.677839056946141], [-4.995219285492211, 36.32470815687963], [-5.377159796561457, 35.946850083961458], [-5.866432257500902, 36.02981659600605], [-6.236693894872174, 36.367677110330327], [-6.520190802425402, 36.942913316387312], [-7.45372555177809, 37.097787583966053], [-7.537105475281022, 37.428904323876232], [-7.166507941099863, 37.803894354802217], [-7.029281175148794, 38.075764065089757], [-7.374092169616317, 38.373058580064914], [-7.098036668313126, 39.03007274022378], [-7.498632371439724, 39.629571031241802], [-7.066591559263527, 39.711891587882768], [-7.026413133156593, 40.184524237624238], [-6.864019944679383, 40.330871893874821], [-6.851126674822551, 41.111082668617513], [-6.389087693700914, 41.381815497394641], [-6.668605515967655, 41.883386949219577], [-7.251308966490822, 41.91834605566504], [-7.422512986673794, 41.792074693359822], [-8.01317460776991, 41.790886135417118], [-8.26385698081779, 42.280468654950326], [-8.671945766626719, 42.134689439454952], [-9.034817674180244, 41.880570583659669]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Estonia\", \"name\": \"Estonia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[24.312862583114615, 57.793423570376966], [24.428927850042154, 58.383413397853275], [24.061198357853179, 58.257374579493394], [23.426560092876681, 58.612753404364618], [23.339795363058641, 59.187240302153363], [24.604214308376182, 59.465853786855007], [25.864189080516631, 59.611090399811324], [26.949135776484518, 59.445803331125767], [27.981114129353237, 59.47538808861286], [28.131699253051742, 59.300825100330904], [27.420166456824941, 58.724581203844224], [27.716685825315714, 57.791899115624354], [27.288184848751509, 57.474528306703817], [26.46353234223778, 57.476388658266316], [25.602809685984365, 57.847528794986559], [25.164593540149262, 57.970156968815175], [24.312862583114615, 57.793423570376966]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ethiopia\", \"name\": \"Ethiopia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[37.90607, 14.959430000000165], [38.51295, 14.50547], [39.0994, 14.74064], [39.34061, 14.53155], [40.026250000000111, 14.51959], [40.8966, 14.118640000000138], [41.1552, 13.77333], [41.59856, 13.452090000000108], [42.00975, 12.86582], [42.351560000000106, 12.54223000000013], [42.000000000000107, 12.100000000000133], [41.661760000000122, 11.6312], [41.739590000000177, 11.355110000000137], [41.755570000000191, 11.05091], [42.314140000000116, 11.0342], [42.55493000000012, 11.105110000000193], [42.776851841000948, 10.926878566934416], [42.55876, 10.572580000000126], [42.92812, 10.021940000000139], [43.29699, 9.540480000000169], [43.67875, 9.183580000000116], [46.94834, 7.99688], [47.78942, 8.003], [44.9636, 5.001620000000115], [43.66087, 4.95755], [42.769670000000119, 4.252590000000223], [42.12861, 4.234130000000163], [41.855083092644108, 3.918911920483764], [41.171800000000125, 3.91909], [40.768480000000118, 4.257020000000124], [39.854940000000106, 3.83879000000013], [39.559384258765917, 3.422060000000215], [38.89251, 3.50074], [38.67114, 3.61607], [38.436970000000137, 3.58851], [38.120915000000132, 3.598605], [36.85509323800823, 4.447864127672857], [36.159078632855646, 4.447864127672857], [35.817447662353622, 4.776965663462021], [35.817447662353622, 5.338232082790852], [35.298007118233095, 5.506], [34.70702, 6.59422000000012], [34.25032, 6.82607], [34.075100000000184, 7.22595], [33.56829, 7.71334], [32.954180000000228, 7.7849700000001], [33.294800000000116, 8.35458], [33.82550000000014, 8.37916], [33.97498, 8.684560000000145], [33.96162, 9.58358], [34.25745, 10.63009], [34.73115000000012, 10.910170000000106], [34.831630000000125, 11.318960000000116], [35.26049, 12.08286], [35.863630000000164, 12.57828], [36.27022, 13.563330000000118], [36.42951, 14.42211], [37.59377, 14.2131], [37.90607, 14.959430000000165]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Finland\", \"name\": \"Finland\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[28.591929559043187, 69.064776923286644], [28.445943637818651, 68.36461294216403], [29.9774263852206, 67.698297024192641], [29.054588657352319, 66.944286200621917], [30.21765, 65.80598], [29.544429559046982, 64.948671576590471], [30.444684686003704, 64.204453436939076], [30.035872430142714, 63.552813625738544], [31.516092156711117, 62.867687486412869], [31.139991082490891, 62.357692776124395], [30.211107212044443, 61.780027777749673], [28.06999759289527, 60.503516547275829], [26.25517296723697, 60.423960679762487], [24.496623976344516, 60.057316392651636], [22.869694858499454, 59.846373196036211], [22.290763787533589, 60.391921291741525], [21.322244093519313, 60.720169989659503], [21.544866163832687, 61.705329494871783], [21.059211053153682, 62.607393296958726], [21.536029493910799, 63.189735012455863], [22.442744174903986, 63.817810370531276], [24.730511508897528, 64.902343655040823], [25.398067661243939, 65.111426500093728], [25.2940430030404, 65.53434642197044], [23.903378533633795, 66.006927395279604], [23.565879754335576, 66.396050930437411], [23.539473097434435, 67.936008612735236], [21.978534783626113, 68.616845608180682], [20.645592889089521, 69.106247260200846], [21.244936150810666, 69.370443020293067], [22.356237827247405, 68.841741441514898], [23.662049594830751, 68.891247463650529], [24.735679152126721, 68.649556789821446], [25.689212680776361, 69.092113755969024], [26.179622023226241, 69.825298977326113], [27.732292107867856, 70.164193020296239], [29.015572950971968, 69.766491197377974], [28.591929559043187, 69.064776923286644]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Fiji\", \"name\": \"Fiji\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[178.3736, -17.33992], [178.71806, -17.62846], [178.55271, -18.15059], [177.93266, -18.28799], [177.38146, -18.16432], [177.28504, -17.72465], [177.67087, -17.38114], [178.12557, -17.50481], [178.3736, -17.33992]]], [[[179.364142661964223, -16.801354076946847], [178.725059362997058, -17.012041674368017], [178.596838595117021, -16.63915], [179.096609362997128, -16.43398427754742], [179.413509362997075, -16.379054277547393], [180.000000000000114, -16.067132663642436], [180.000000000000114, -16.555216566639157], [179.364142661964223, -16.801354076946847]]], [[[-179.917369384765237, -16.501783135649358], [-180.0, -16.555216566639157], [-180.0, -16.067132663642436], [-179.793320109048551, -16.020882256741228], [-179.917369384765237, -16.501783135649358]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Falkland Islands\", \"name\": \"Falkland Is.\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-61.2, -51.85], [-60.0, -51.25], [-59.15, -51.5], [-58.55, -51.1], [-57.75, -51.55], [-58.05, -51.9], [-59.4, -52.2], [-59.85, -51.85], [-60.7, -52.3], [-61.2, -51.85]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"France\", \"name\": \"France\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-52.556424730018378, 2.504705308437053], [-52.939657151894963, 2.124857692875622], [-53.41846513529525, 2.053389187016037], [-53.554839240113481, 2.334896551925964], [-53.778520677288881, 2.376702785650053], [-54.088062506717264, 2.105556545414629], [-54.524754197799737, 2.311848863123785], [-54.271229620975781, 2.738747870286942], [-54.184284023644743, 3.194172268075234], [-54.011503872276812, 3.622569891774857], [-54.3995422023565, 4.212611395683481], [-54.478632981979203, 4.896755682795642], [-53.958044603070917, 5.756548163267808], [-53.618452928264837, 5.646529038918401], [-52.882141282754063, 5.409850979021598], [-51.823342861525916, 4.565768133966144], [-51.657797410678874, 4.156232408053028], [-52.249337531123977, 3.241094468596287], [-52.556424730018378, 2.504705308437053]]], [[[9.560016310269132, 42.152491970379558], [9.229752231491771, 41.380006822264441], [8.77572309737536, 41.583611965494427], [8.544212680707828, 42.256516628583078], [8.746009148807586, 42.628121853193946], [9.390000848028901, 43.009984849614725], [9.560016310269132, 42.152491970379558]]], [[[3.588184441755714, 50.378992418003563], [4.28602298342514, 49.90749664977254], [4.799221632515752, 49.985373033236314], [5.674051954784885, 49.529483547557433], [5.897759230176375, 49.442667141307155], [6.186320428094204, 49.463802802114444], [6.658229607783538, 49.201958319691549], [8.09927859867477, 49.017783515003366], [7.59367638513106, 48.333019110703724], [7.466759067422228, 47.620581976911851], [7.192202182655533, 47.449765529970982], [6.736571079138086, 47.541801255882874], [6.768713820023634, 47.287708238303672], [6.037388950228971, 46.725778713561894], [6.022609490593566, 46.272989813820502], [6.500099724970453, 46.429672756529428], [6.84359297041456, 45.991146552100659], [6.80235517744566, 45.708579820328673], [7.096652459347835, 45.333098863295859], [6.749955275101711, 45.028517971367584], [7.007562290076661, 44.254766750661382], [7.549596388386161, 44.127901109384808], [7.435184767291841, 43.693844916349164], [6.529245232783068, 43.12889232031835], [4.556962517931395, 43.399650987311581], [3.100410597352719, 43.075200507167118], [2.985998976258486, 42.473015041669882], [1.826793247087181, 42.343384711265649], [0.701590610363922, 42.795734361332642], [0.338046909190581, 42.57954600683955], [-1.502770961910471, 43.034014390630482], [-1.901351284177735, 43.422802028978332], [-1.384225226232956, 44.022610378590166], [-1.193797573237361, 46.014917710954862], [-2.225724249673788, 47.064362697938201], [-2.963276129559573, 47.570326646507958], [-4.491554938159481, 47.95495433205641], [-4.592349819344746, 48.68416046812694], [-3.295813971357745, 48.901692409859628], [-1.616510789384932, 48.644421291694577], [-1.933494025063254, 49.776341864615759], [-0.98946895995536, 49.347375800160869], [1.338761020522753, 50.127173163445256], [1.6390010921385, 50.9466063502975], [2.51357303224617, 51.14850617126185], [2.65842207196033, 50.796848049515646], [3.123251580425716, 50.780363267614504], [3.588184441755714, 50.378992418003563]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Gabon\", \"name\": \"Gabon\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[11.093772820691923, -3.978826592630546], [10.066135288135738, -2.969482517105681], [9.405245395554969, -2.144313246269042], [8.797995639693168, -1.111301364754496], [8.830086704146423, -0.779073581550037], [9.048419630579586, -0.459351494960217], [9.291350538783687, 0.268666083167687], [9.492888624721981, 1.010119533691494], [9.83028405115564, 1.067893784993799], [11.285078973036461, 1.057661851400013], [11.276449008843711, 2.261050930180871], [11.751665480199787, 2.326757513839993], [12.359380323952218, 2.19281220133945], [12.951333855855605, 2.321615708826939], [13.07582238124675, 2.267097072759014], [13.003113641012074, 1.830896307783319], [13.282631463278816, 1.31418366129688], [14.026668735417214, 1.395677395021153], [14.276265903386953, 1.196929836426619], [13.843320753645653, 0.038757635901149], [14.316418491277741, -0.552627455247048], [14.425455763413593, -1.333406670744971], [14.299210239324564, -1.998275648612213], [13.992407260807706, -2.470804945489099], [13.109618767965626, -2.428740329603513], [12.575284458067639, -1.948511244315134], [12.495702752338159, -2.391688327650242], [11.820963575903189, -2.514161472181982], [11.478038771214299, -2.765618991714241], [11.855121697648114, -3.42687061932105], [11.093772820691923, -3.978826592630546]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"United Kingdom\", \"name\": \"United Kingdom\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-5.661948614921896, 54.554603176483838], [-6.197884894220976, 53.867565009163329], [-6.953730231137994, 54.073702297575622], [-7.572167934591078, 54.059956366585979], [-7.366030646178785, 54.595840969452688], [-7.572167934591078, 55.131622219454883], [-6.733847011736144, 55.172860012423783], [-5.661948614921896, 54.554603176483838]]], [[[-3.00500484863528, 58.635000108466322], [-4.073828497728015, 57.55302480735525], [-3.055001796877661, 57.690019029360933], [-1.959280564776918, 57.684799709699512], [-2.219988165689301, 56.870017401753515], [-3.119003058271118, 55.97379303651546], [-2.085009324543023, 55.909998480851264], [-2.005675679673856, 55.804902850350217], [-1.11499101399221, 54.624986477265388], [-0.4304849918542, 54.464376125702145], [0.184981316742039, 53.325014146531018], [0.469976840831777, 52.929999498091959], [1.681530795914739, 52.739520168663987], [1.559987827164377, 52.099998480836], [1.050561557630914, 51.806760565795678], [1.4498653499503, 51.289427802121949], [0.550333693045502, 50.765738837275862], [-0.787517462558639, 50.774988918656206], [-2.489997524414377, 50.500018622431227], [-2.956273972984035, 50.696879991247002], [-3.617448085942327, 50.228355617872708], [-4.542507900399243, 50.341837063185658], [-5.245023159191134, 49.959999904981082], [-5.776566941745299, 50.159677639356815], [-4.309989793301837, 51.210001125689146], [-3.414850633142122, 51.426008612669236], [-3.422719467108322, 51.426848167406078], [-4.984367234710873, 51.593466091510962], [-5.267295701508885, 51.991400458374571], [-4.222346564134852, 52.30135569926135], [-4.770013393564112, 52.840004991255611], [-4.579999152026914, 53.495003770555165], [-3.093830673788658, 53.404547400669671], [-3.092079637047106, 53.404440822963544], [-2.945008510744343, 53.98499970154667], [-3.614700825433033, 54.60093677329256], [-3.63000545898933, 54.615012925833], [-4.844169073903003, 54.790971177786837], [-5.082526617849224, 55.061600653699358], [-4.719112107756643, 55.508472601943467], [-5.047980922862108, 55.783985500707516], [-5.586397670911139, 55.311146145236805], [-5.64499874513018, 56.275014960344791], [-6.149980841486352, 56.785009670633528], [-5.78682471355529, 57.818848375064633], [-5.009998745127574, 58.630013332750039], [-4.211494513353555, 58.550845038479153], [-3.00500484863528, 58.635000108466322]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Georgia\", \"name\": \"Georgia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[41.55408410011065, 41.535656236327561], [41.703170607272703, 41.962942816732912], [41.453470086438379, 42.645123399417926], [40.875469191253785, 43.013628038091277], [40.321394484220313, 43.128633938156831], [39.955008579270917, 43.434997666999216], [40.07696495947976, 43.553104153002309], [40.922184686045618, 43.38215851498078], [42.394394565608806, 43.220307929042619], [43.756016880067378, 42.74082815202248], [43.931199985536828, 42.554973863284758], [44.537622918481979, 42.71199270280362], [45.470279168485703, 42.502780666669963], [45.776410353382758, 42.09244395605635], [46.404950799348818, 41.860675157227298], [46.145431756379004, 41.722802435872573], [46.637908156120574, 41.181672675128219], [46.501637404166921, 41.064444688474104], [45.962600538930381, 41.123872585609767], [45.217426385281577, 41.411451931314041], [44.972480096218071, 41.248128567055588], [43.582745802592726, 41.09214325618256], [42.619548781104484, 41.583172715819934], [41.55408410011065, 41.535656236327561]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ghana\", \"name\": \"Ghana\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1.060121697604927, 5.928837388528875], [-0.507637905265938, 5.343472601742675], [-1.063624640294193, 5.000547797053811], [-1.964706590167594, 4.71046214438337], [-2.856125047202397, 4.994475816259508], [-2.810701463217839, 5.389051215024109], [-3.244370083011261, 6.2504715031135], [-2.983584967450326, 7.379704901555511], [-2.56218950032624, 8.219627793811481], [-2.827496303712706, 9.642460842319775], [-2.963896246747111, 10.395334784380081], [-2.94040930827046, 10.962690334512557], [-1.203357713211431, 11.009819240762736], [-0.761575893548183, 10.936929633015053], [-0.438701544588582, 11.09834096927872], [0.023802524423701, 11.018681748900802], [-0.049784715159944, 10.706917832883928], [0.367579990245389, 10.191212876827176], [0.365900506195885, 9.46500397382948], [0.461191847342121, 8.677222601756013], [0.712029249686878, 8.312464504423827], [0.490957472342245, 7.411744289576474], [0.570384148774849, 6.914358628767188], [0.836931186536333, 6.279978745952147], [1.060121697604927, 5.928837388528875]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Guinea\", \"name\": \"Guinea\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-8.439298468448696, 7.686042792181736], [-8.722123582382123, 7.711674302598509], [-8.926064622422002, 7.309037380396375], [-9.208786383490844, 7.313920803247952], [-9.403348151069748, 7.526905218938906], [-9.33727983238458, 7.928534450711351], [-9.755342169625832, 8.541055202666923], [-10.016566534861253, 8.42850393313523], [-10.230093553091276, 8.406205552601291], [-10.505477260774667, 8.348896389189603], [-10.494315151399629, 8.715540676300433], [-10.65477047366589, 8.977178452994194], [-10.622395188835037, 9.267910061068276], [-10.839151984083299, 9.688246161330367], [-11.117481248407328, 10.045872911006283], [-11.917277390988655, 10.046983954300556], [-12.150338100625003, 9.858571682164378], [-12.425928514037562, 9.835834051955953], [-12.596719122762206, 9.620188300001969], [-12.711957566773076, 9.342711696810765], [-13.246550258832512, 8.903048610871506], [-13.685153977909788, 9.494743760613458], [-14.074044969122278, 9.886166897008248], [-14.330075852912367, 10.015719712763966], [-14.579698859098254, 10.214467271358513], [-14.693231980843501, 10.65630076745404], [-14.83955379887794, 10.876571560098139], [-15.130311245168167, 11.040411688679525], [-14.685687221728896, 11.527823798056485], [-14.382191534878727, 11.509271958863691], [-14.121406419317776, 11.677117010947693], [-13.900799729863772, 11.678718980348744], [-13.743160773157411, 11.811269029177408], [-13.828271857142122, 12.142644151249041], [-13.718743658899511, 12.247185573775507], [-13.700476040084322, 12.586182969610192], [-13.217818162478235, 12.575873521367964], [-12.499050665730561, 12.332089952031053], [-12.278599005573438, 12.354440008997285], [-12.20356482588563, 12.465647691289401], [-11.658300950557928, 12.386582749882834], [-11.513942836950587, 12.442987575729415], [-11.456168585648269, 12.076834214725336], [-11.297573614944508, 12.077971096235768], [-11.036555955438256, 12.211244615116513], [-10.870829637078211, 12.177887478072106], [-10.593223842806278, 11.923975328005977], [-10.165213792348835, 11.844083563682743], [-9.890992804392011, 12.060478623904968], [-9.567911749703212, 12.194243068892472], [-9.327616339546008, 12.334286200403451], [-9.127473517279581, 12.308060411015331], [-8.905264858424529, 12.088358059126433], [-8.786099005559462, 11.812560939984705], [-8.376304897484911, 11.393645941610627], [-8.581305304386772, 11.136245632364801], [-8.620321010767126, 10.810890814655181], [-8.407310756860026, 10.90925690352276], [-8.282357143578279, 10.792597357623842], [-8.335377163109738, 10.494811916541932], [-8.029943610048617, 10.206534939001711], [-8.22933712404682, 10.129020290563897], [-8.309616461612249, 9.789531968622439], [-8.079113735374348, 9.376223863152033], [-7.832100389019186, 8.575704250518625], [-8.203498907900878, 8.455453192575446], [-8.299048631208562, 8.316443589710302], [-8.221792364932197, 8.123328762235571], [-8.280703497744936, 7.687179673692156], [-8.439298468448696, 7.686042792181736]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Gambia\", \"name\": \"Gambia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-16.84152462408127, 13.151393947802557], [-16.713728807023468, 13.594958604379853], [-15.624596320039936, 13.623587347869556], [-15.398770310924457, 13.860368760630916], [-15.081735398813816, 13.876491807505982], [-14.687030808968483, 13.63035696049978], [-14.376713833055785, 13.625680243377371], [-14.046992356817478, 13.794067898000446], [-13.844963344772404, 13.505041612191999], [-14.277701788784553, 13.28058502853224], [-14.712197231494626, 13.298206691943774], [-15.141163295949463, 13.509511623585235], [-15.511812506562931, 13.278569647672864], [-15.691000535534991, 13.270353094938455], [-15.931295945692208, 13.130284125211331], [-16.84152462408127, 13.151393947802557]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Guinea Bissau\", \"name\": \"Guinea-Bissau\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-15.130311245168167, 11.040411688679525], [-15.664180467175523, 11.458474025920792], [-16.085214199273562, 11.524594021038236], [-16.314786749730199, 11.806514797406548], [-16.308947312881227, 11.958701890506116], [-16.613838263403277, 12.170911159712698], [-16.67745195155457, 12.38485158940105], [-16.147716844130581, 12.547761542201185], [-15.816574266004251, 12.515567124883345], [-15.548476935274005, 12.628170070847343], [-13.700476040084322, 12.586182969610192], [-13.718743658899511, 12.247185573775507], [-13.828271857142122, 12.142644151249041], [-13.743160773157411, 11.811269029177408], [-13.900799729863772, 11.678718980348744], [-14.121406419317776, 11.677117010947693], [-14.382191534878727, 11.509271958863691], [-14.685687221728896, 11.527823798056485], [-15.130311245168167, 11.040411688679525]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Equatorial Guinea\", \"name\": \"Eq. Guinea\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9.492888624721981, 1.010119533691494], [9.305613234096255, 1.160911363119183], [9.649158155972627, 2.283866075037735], [11.276449008843711, 2.261050930180871], [11.285078973036461, 1.057661851400013], [9.83028405115564, 1.067893784993799], [9.492888624721981, 1.010119533691494]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Greece\", \"name\": \"Greece\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[23.699980096133, 35.705004380835526], [24.246665073348673, 35.368022365860149], [25.025015496528873, 35.424995632461979], [25.769207797964182, 35.354018052709073], [25.745023227651579, 35.179997666966209], [26.290002882601719, 35.299990342747911], [26.164997592887651, 35.004995429009789], [24.724982130642299, 34.919987697889603], [24.735007358506941, 35.084990546197581], [23.514978468528106, 35.27999156345097], [23.699980096133, 35.705004380835526]]], [[[26.604195590936282, 41.562114569661098], [26.294602085075777, 40.936261298174244], [26.056942172965499, 40.824123440100827], [25.44767703624418, 40.852545477861455], [24.925848422960932, 40.947061672523226], [23.714811232200809, 40.687129218095116], [24.407998894964063, 40.124992987624083], [23.89996788910258, 39.962005520175573], [23.342999301860797, 39.960997829745786], [22.813987664488959, 40.476005153966547], [22.626298862404777, 40.256561184239175], [22.849747755634805, 39.659310818025759], [23.350027296652595, 39.190011298167256], [22.97309939951554, 38.97090322524965], [23.53001631032495, 38.51000112563846], [24.025024855248937, 38.219992987616443], [24.040011020613601, 37.655014553369419], [23.115002882589145, 37.920011298162215], [23.409971958111065, 37.409990749657389], [22.77497195810863, 37.305010077456551], [23.154225294698612, 36.422505804992042], [22.4900281104511, 36.410000108377446], [21.670026482843692, 36.84498647719419], [21.295010613701574, 37.644989325504689], [21.120034213961329, 38.31032339126272], [20.730032179454579, 38.769985256498778], [20.217712029712853, 39.340234686839629], [20.150015903410516, 39.624997666984022], [20.615000441172779, 40.110006822259422], [20.67499677906363, 40.434999904943048], [20.999989861747274, 40.580003973953964], [21.020040317476422, 40.842726955725873], [21.674160597426969, 40.931274522457976], [22.055377638444266, 41.149865831052686], [22.597308383889008, 41.130487168943198], [22.76177, 41.3048], [22.952377150166562, 41.337993882811212], [23.692073601992455, 41.309080918943849], [24.492644891058031, 41.583896185872035], [25.19720136892553, 41.234485988930651], [26.106138136507177, 41.328898830727823], [26.11704186372091, 41.826904608724725], [26.604195590936282, 41.562114569661098]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Greenland\", \"name\": \"Greenland\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-46.76379, 82.62796], [-43.40644, 83.22516], [-39.89753, 83.18018], [-38.62214, 83.54905], [-35.08787, 83.64513], [-27.10046, 83.51966], [-20.84539, 82.72669], [-22.69182, 82.34165], [-26.51753, 82.29765], [-31.9, 82.2], [-31.39646, 82.02154], [-27.85666, 82.13178], [-24.84448, 81.78697], [-22.90328, 82.09317], [-22.07175, 81.73449], [-23.16961, 81.15271], [-20.62363, 81.52462], [-15.76818, 81.91245], [-12.77018, 81.71885], [-12.20855, 81.29154], [-16.28533, 80.58004], [-16.85, 80.35], [-20.04624, 80.17708], [-17.73035, 80.12912], [-18.9, 79.4], [-19.70499, 78.75128], [-19.67353, 77.63859], [-18.47285, 76.98565], [-20.03503, 76.94434], [-21.67944, 76.62795], [-19.83407, 76.09808], [-19.59896, 75.24838], [-20.66818, 75.15585], [-19.37281, 74.29561], [-21.59422, 74.22382], [-20.43454, 73.81713], [-20.76234, 73.46436], [-22.17221, 73.30955], [-23.56593, 73.30663], [-22.31311, 72.62928], [-22.29954, 72.18409], [-24.27834, 72.59788], [-24.79296, 72.3302], [-23.44296, 72.08016], [-22.13281, 71.46898], [-21.75356, 70.66369], [-23.53603, 70.471], [-24.30702, 70.85649], [-25.54341, 71.43094], [-25.20135, 70.75226], [-26.36276, 70.22646], [-23.72742, 70.18401], [-22.34902, 70.12946], [-25.02927, 69.2588], [-27.74737, 68.47046], [-30.67371, 68.12503], [-31.77665, 68.12078], [-32.81105, 67.73547], [-34.20196, 66.67974], [-36.35284, 65.9789], [-37.04378, 65.93768], [-38.37505, 65.69213], [-39.81222, 65.45848], [-40.66899, 64.83997], [-40.68281, 64.13902], [-41.1887, 63.48246], [-42.81938, 62.68233], [-42.41666, 61.90093], [-42.86619, 61.07404], [-43.3784, 60.09772], [-44.7875, 60.03676], [-46.26364, 60.85328], [-48.26294, 60.85843], [-49.23308, 61.40681], [-49.90039, 62.38336], [-51.63325, 63.62691], [-52.14014, 64.27842], [-52.27659, 65.1767], [-53.66166, 66.09957], [-53.30161, 66.8365], [-53.96911, 67.18899], [-52.9804, 68.35759], [-51.47536, 68.72958], [-51.08041, 69.14781], [-50.87122, 69.9291], [-52.013585, 69.574925], [-52.55792, 69.42616], [-53.45629, 69.283625], [-54.68336, 69.61003], [-54.75001, 70.28932], [-54.35884, 70.821315], [-53.431315, 70.835755], [-51.39014, 70.56978], [-53.10937, 71.20485], [-54.00422, 71.54719], [-55.0, 71.406536967272558], [-55.83468, 71.65444], [-54.71819, 72.58625], [-55.32634, 72.95861], [-56.12003, 73.64977], [-57.32363, 74.71026], [-58.59679, 75.09861], [-58.58516, 75.51727], [-61.26861, 76.10238], [-63.39165, 76.1752], [-66.06427, 76.13486], [-68.50438, 76.06141], [-69.66485, 76.37975], [-71.40257, 77.00857], [-68.77671, 77.32312], [-66.76397, 77.37595], [-71.04293, 77.63595], [-73.297, 78.04419], [-73.15938, 78.43271], [-69.37345, 78.91388], [-65.7107, 79.39436], [-65.3239, 79.75814], [-68.02298, 80.11721], [-67.15129, 80.51582], [-63.68925, 81.21396], [-62.23444, 81.3211], [-62.65116, 81.77042], [-60.28249, 82.03363], [-57.20744, 82.19074], [-54.13442, 82.19962], [-53.04328, 81.88833], [-50.39061, 82.43883], [-48.00386, 82.06481], [-46.59984, 81.985945], [-44.523, 81.6607], [-46.9007, 82.19979], [-46.76379, 82.62796]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Guatemala\", \"name\": \"Guatemala\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-90.095554572290951, 13.73533763270073], [-90.608624030300817, 13.909771429901948], [-91.232410244496037, 13.927832342987953], [-91.689746670279106, 14.126218166556452], [-92.227750006869812, 14.538828640190925], [-92.203229539747298, 14.830102850804066], [-92.087215949252041, 15.064584662328436], [-92.229248623406249, 15.251446641495857], [-91.747960171255912, 16.066564846251719], [-90.464472622422647, 16.069562079324651], [-90.438866950222021, 16.410109768128091], [-90.600846727240906, 16.470777899638758], [-90.711821865587694, 16.687483018454724], [-91.081670091500641, 16.918476670799404], [-91.453921271515128, 17.252177232324168], [-91.002269253284197, 17.254657701074176], [-91.001519945015943, 17.817594916245707], [-90.067933519230948, 17.819326076727474], [-89.143080410503302, 17.808318996649316], [-89.15080603713092, 17.015576687075832], [-89.229121670269265, 15.886937567605166], [-88.930612759135244, 15.887273464415072], [-88.604586147805833, 15.706380113177358], [-88.518364020526846, 15.855389105690971], [-88.22502275262201, 15.727722479713901], [-88.680679694355618, 15.346247056535301], [-89.15481096063354, 15.066419175674806], [-89.225220099631244, 14.874286200413618], [-89.145535041037149, 14.67801911056908], [-89.353325975282772, 14.424132798719112], [-89.587342698916544, 14.362586167859485], [-89.5342193265205, 14.244815578666302], [-89.7219339668207, 14.134228013561694], [-90.064677903996568, 13.881969509328924], [-90.095554572290951, 13.73533763270073]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Guyana\", \"name\": \"Guyana\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-59.758284878159181, 8.367034816924045], [-59.10168412945864, 7.99920197187049], [-58.482962205628041, 7.347691351750696], [-58.454876064677414, 6.832787380394463], [-58.078103196837361, 6.809093736188641], [-57.542218593970631, 6.321268215353355], [-57.147436489476874, 5.973149929219161], [-57.307245856339492, 5.073566595882225], [-57.914288906472123, 4.812626451024413], [-57.860209520078691, 4.576801052260449], [-58.044694383360664, 4.060863552258382], [-57.601568976457848, 3.334654649260684], [-57.281433478409703, 3.333491929534119], [-57.150097825739898, 2.768926906745406], [-56.53938574891454, 1.89952260986692], [-56.782704230360814, 1.863710842288653], [-57.33582292339689, 1.948537705895759], [-57.660971035377358, 1.682584947105638], [-58.113449876525003, 1.507195135907025], [-58.429477098205957, 1.46394196207872], [-58.540012986878288, 1.26808828369252], [-59.030861579002639, 1.317697658692722], [-59.646043667221242, 1.786893825686789], [-59.718545701726732, 2.249630438644359], [-59.974524909084543, 2.755232652188055], [-59.815413174057852, 3.606498521332085], [-59.538039923731219, 3.958802598481937], [-59.767405768458701, 4.423502915866606], [-60.111002366767373, 4.574966538914082], [-59.980958624904865, 5.014061184098138], [-60.213683437731319, 5.2444863956876], [-60.733574184803707, 5.2002772078619], [-61.410302903881941, 5.959068101419616], [-61.139415045807937, 6.234296779806142], [-61.159336310456467, 6.696077378766317], [-60.543999192940966, 6.856584377464881], [-60.295668097562377, 7.043911444522918], [-60.637972785063752, 7.414999904810853], [-60.550587938058186, 7.779602972846178], [-59.758284878159181, 8.367034816924045]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Honduras\", \"name\": \"Honduras\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-87.316654425795463, 12.984685777229], [-87.48940873894712, 13.29753489832393], [-87.793111131526501, 13.384480495655165], [-87.723502977229288, 13.785050360565602], [-87.859515347021599, 13.893312486217097], [-88.065342576840109, 13.964625962779788], [-88.503997972349609, 13.845485948130939], [-88.541230841815931, 13.98015473068352], [-88.843072882832743, 14.140506700085208], [-89.058511929057644, 14.340029405164213], [-89.353325975282786, 14.424132798719084], [-89.145535041037164, 14.678019110569149], [-89.22522009963123, 14.874286200413675], [-89.154810960633526, 15.066419175674863], [-88.680679694355575, 15.346247056535386], [-88.225022752621925, 15.727722479714027], [-88.121153123715359, 15.688655096901355], [-87.901812506852394, 15.864458319558194], [-87.615680101252309, 15.878798529519198], [-87.522920905288444, 15.797278957578779], [-87.367762417332116, 15.846940009011286], [-86.903191291028165, 15.756712958229565], [-86.440945604177372, 15.782835394753189], [-86.119233974944322, 15.893448798073958], [-86.00195431185783, 16.005405788634388], [-85.68331743034625, 15.953651841693949], [-85.444003872402547, 15.885749009662444], [-85.182443610357183, 15.909158433490628], [-84.98372188997881, 15.995923163308698], [-84.526979743167118, 15.857223619037423], [-84.36825558138257, 15.835157782448729], [-84.063054572266807, 15.648244126849132], [-83.773976610026111, 15.42407176356687], [-83.410381232420363, 15.27090281825377], [-83.147219000974104, 14.995829169164207], [-83.489988776366005, 15.01626719813566], [-83.628584967772866, 14.880073960830368], [-83.975721401693576, 14.749435939996483], [-84.228341640952394, 14.748764146376626], [-84.449335903648588, 14.62161428472251], [-84.64958207877963, 14.666805324761865], [-84.820036790694289, 14.819586696832628], [-84.924500698572302, 14.790492865452332], [-85.052787441736868, 14.551541042534719], [-85.148750576502877, 14.560196844943615], [-85.165364549484806, 14.354369615125048], [-85.514413011400265, 14.079011745657905], [-85.698665330736944, 13.960078436737998], [-85.801294725268505, 13.8360549992376], [-86.096263800790595, 14.03818736414723], [-86.312142096689826, 13.771356106008223], [-86.520708177419891, 13.778487453664464], [-86.755086636079596, 13.754845485890936], [-86.733821784191463, 13.263092556201398], [-86.880557013684353, 13.254204209847213], [-87.005769009127434, 13.025794379117254], [-87.316654425795463, 12.984685777229]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Croatia\", \"name\": \"Croatia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[18.829838087650039, 45.908877671891837], [19.072768995854172, 45.521511135432078], [19.390475701584588, 45.236515611342369], [19.005486281010118, 44.860233669609144], [18.553214145591646, 45.08158966733145], [17.861783481526398, 45.067740383477137], [17.00214603035101, 45.233776760430935], [16.534939406000202, 45.211607570977705], [16.318156772535868, 45.004126695325901], [15.959367303133373, 45.233776760430935], [15.750026075918978, 44.81871165626255], [16.239660271884528, 44.351143296885695], [16.456442905348862, 44.041239732431265], [16.916156447017325, 43.667722479825663], [17.297373488034449, 43.446340643887353], [17.674921502358981, 43.028562527023603], [18.56, 42.65], [18.450016310304814, 42.47999136002931], [17.509970330483323, 42.84999461523914], [16.930005730871638, 43.209998480800373], [16.015384555737679, 43.507215481127204], [15.174453973052094, 44.243191229827907], [15.376250441151793, 44.317915350922064], [14.920309279040504, 44.73848399512945], [14.901602410550874, 45.076060289076104], [14.258747592839992, 45.233776760430935], [13.952254672917032, 44.802123521496853], [13.65697553880119, 45.136935126315947], [13.679403110415816, 45.484149074884996], [13.715059848697248, 45.500323798192419], [14.411968214585496, 45.466165676447403], [14.595109490627916, 45.63494090431282], [14.935243767972961, 45.471695054702757], [15.327674594797424, 45.452316392593325], [15.323953891672428, 45.731782538427687], [15.671529575267638, 45.8341535507979], [15.768732944408608, 46.23810822202352], [16.564808383864939, 46.503750922219794], [16.882515089595412, 46.380631822284428], [17.630066359129554, 45.951769110694087], [18.456062452882858, 45.759481106136143], [18.829838087650039, 45.908877671891837]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Haiti\", \"name\": \"Haiti\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-73.189790615517595, 19.915683905511909], [-72.579672817663607, 19.871500555902351], [-71.71236141629295, 19.714455878167353], [-71.624873216422813, 19.169837958243303], [-71.701302659782485, 18.785416978424049], [-71.945112067335543, 18.616900132720257], [-71.687737596305865, 18.316660061104468], [-71.708304816358037, 18.044997056546091], [-72.372476162389333, 18.214960842354053], [-72.844411180294856, 18.145611070218362], [-73.454554816365018, 18.217906398994696], [-73.922433234335642, 18.030992743395], [-74.458033616824764, 18.342549953682703], [-74.369925299767118, 18.664907538319408], [-73.449542202432696, 18.526052964751141], [-72.694937099890623, 18.445799465401858], [-72.334881557896992, 18.66842153571525], [-72.791649542924873, 19.101625067618027], [-72.784104783810264, 19.483591416903405], [-73.41502234566174, 19.639550889560276], [-73.189790615517595, 19.915683905511909]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Hungary\", \"name\": \"Hungary\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[16.202298211337361, 46.852385972676949], [16.534267612380372, 47.496170966169103], [16.340584344150411, 47.712901923201215], [16.903754103267257, 47.714865627628321], [16.979666782304033, 48.123497015976298], [17.488472934649813, 47.867466132186209], [17.857132602620023, 47.758428860050365], [18.696512892336923, 47.88095368101439], [18.777024773847668, 48.081768296900627], [19.174364861739885, 48.111378892603859], [19.66136355965849, 48.266614895208647], [19.769470656013109, 48.2026911484636], [20.239054396249344, 48.327567247096916], [20.473562045989862, 48.562850043321809], [20.801293979584919, 48.62385407164237], [21.872236362401729, 48.319970811550007], [22.085608351334848, 48.422264309271782], [22.640819939878746, 48.150239569687351], [22.710531447040488, 47.882193915389394], [22.09976769378283, 47.672439276716695], [21.626514926853869, 46.994237779318148], [21.021952345471245, 46.316087958351886], [20.220192498462833, 46.127468980486547], [19.596044549241579, 46.171729844744533], [18.829838087649957, 45.908877671891915], [18.456062452882858, 45.759481106136121], [17.630066359129554, 45.95176911069418], [16.882515089595298, 46.380631822284428], [16.564808383864854, 46.503750922219822], [16.370504998447412, 46.841327216166498], [16.202298211337361, 46.852385972676949]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Indonesia\", \"name\": \"Indonesia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[120.715608758630438, -10.239581394087862], [120.295014276206871, -10.258649997603525], [118.967808465654684, -9.55796925215803], [119.900309686361609, -9.361340427287514], [120.425755649905398, -9.665921319215796], [120.775501743656719, -9.969675388227456], [120.715608758630438, -10.239581394087862]]], [[[124.435950148619384, -10.14000090906144], [123.579981724136701, -10.359987481327961], [123.459989048354998, -10.239994805546171], [123.55000939340745, -9.900015557497978], [123.980008986508096, -9.290026950724693], [124.96868248911619, -8.892790215697046], [125.070019972840612, -9.089987481322835], [125.088520135601073, -9.393173109579321], [124.435950148619384, -10.14000090906144]]], [[[117.900018345207741, -8.095681247594923], [118.260616489740471, -8.362383314653327], [118.87845991422212, -8.280682875199828], [119.126506789223086, -8.705824883665072], [117.97040164598927, -8.906639499551257], [117.277730747549015, -9.040894870645557], [116.74014082241662, -9.032936700072637], [117.083737420725313, -8.457157891476539], [117.632024367342126, -8.44930307376819], [117.900018345207741, -8.095681247594923]]], [[[122.903537225436082, -8.094234307490735], [122.756982863456287, -8.649807631060638], [121.2544905945701, -8.933666273639941], [119.924390903809567, -8.810417982623873], [119.920928582846102, -8.44485890059107], [120.715091994307542, -8.236964613480863], [121.341668735846554, -8.53673959720602], [122.007364536630405, -8.46062021244016], [122.903537225436082, -8.094234307490735]]], [[[108.623478631628927, -6.777673841990675], [110.539227329553285, -6.877357679881682], [110.759575636845909, -6.465186455921751], [112.614811232556349, -6.946035658397589], [112.978768345188087, -7.594213148634578], [114.478935174621142, -7.776527601760277], [115.705526971501058, -8.370806573116864], [114.564511346496488, -8.75181690840483], [113.464733514460875, -8.348947442257424], [112.559672479301028, -8.376180922075163], [111.522061395312448, -8.302128594600957], [110.586149530074294, -8.122604668819021], [109.427667270955183, -7.740664157749761], [108.693655226681301, -7.641600437046219], [108.277763299596302, -7.766657403192579], [106.454102004016136, -7.354899590690947], [106.280624220812285, -6.924899997590201], [105.365486281355516, -6.851416110871169], [106.051645949327053, -5.895918877794499], [107.265008579540165, -5.954985039904058], [108.072091099074683, -6.345762220895237], [108.486846144649235, -6.421984958525768], [108.623478631628927, -6.777673841990675]]], [[[134.724624465066654, -6.214400730009286], [134.210133905168902, -6.895237725454704], [134.112775506730998, -6.142467136259014], [134.290335728085779, -5.783057549669038], [134.499625278867882, -5.445042006047898], [134.727001580952106, -5.737582289252158], [134.724624465066654, -6.214400730009286]]], [[[127.249215122588893, -3.459065036638889], [126.874922723498855, -3.790982761249579], [126.183802118027302, -3.607376397316556], [125.989033644719257, -3.177273451351325], [127.00065148326496, -3.12931772218441], [127.249215122588893, -3.459065036638889]]], [[[130.471344028851775, -3.09376433676762], [130.834836053592767, -3.858472181822761], [129.990546502808115, -3.446300957862817], [129.155248651242403, -3.362636813982248], [128.590683628453633, -3.428679294451256], [127.898891229362334, -3.393435967628192], [128.135879347852779, -2.843650404474914], [129.370997756060888, -2.802154229344551], [130.471344028851775, -3.09376433676762]]], [[[134.143367954647772, -1.151867364103594], [134.422627394753022, -2.769184665542383], [135.457602980694674, -3.367752780779113], [136.293314243718754, -2.30704233155609], [137.4407377463275, -1.703513278819372], [138.329727411044757, -1.70268645590265], [139.18492068904294, -2.051295668143637], [139.926684198160387, -2.409051608900284], [141.000210402591847, -2.600151055515624], [141.017056919519007, -5.85902190513802], [141.033851760013874, -9.117892754760417], [140.143415155192542, -8.297167657100955], [139.127766554928087, -8.096042982620942], [138.881476678624949, -8.380935153846094], [137.614473911692812, -8.41168263105976], [138.039099155835174, -7.597882175327354], [138.668621454014783, -7.320224704623072], [138.407913853102343, -6.232849216337483], [137.927839797110835, -5.393365573755998], [135.989250116113453, -4.546543877789047], [135.164597609599667, -4.462931410340771], [133.662880487197867, -3.538853448097526], [133.367704705946778, -4.024818617370314], [132.983955519747326, -4.112978610860281], [132.75694095268895, -3.746282647317129], [132.753788690319197, -3.311787204607071], [131.989804315316178, -2.820551039240455], [133.066844517143466, -2.460417982598443], [133.780030959203486, -2.479848321140209], [133.69621178602614, -2.214541517753687], [132.232373488494204, -2.212526136894325], [131.836221958544684, -1.617161960459597], [130.942839797082797, -1.432522067880796], [130.519558140180038, -0.937720228686075], [131.867537876513609, -0.695461114101818], [132.380116408416768, -0.369537855636977], [133.985548130428384, -0.780210463060442], [134.143367954647772, -1.151867364103594]]], [[[125.240500522971573, 1.419836127117605], [124.43703535369734, 0.427881171058971], [123.685504998876695, 0.235593166500877], [122.723083123872854, 0.431136786293337], [121.056724888189081, 0.381217352699451], [120.18308312386273, 0.23724681233422], [120.040869582195455, -0.519657891444851], [120.935905389490699, -1.408905938323372], [121.475820754076167, -0.955962009285116], [123.34056481332847, -0.615672702643081], [123.258399285984481, -1.076213067228337], [122.822715285331597, -0.930950616055881], [122.388529901215364, -1.516858005381124], [121.508273553555455, -1.904482924002422], [122.454572381684272, -3.186058444840881], [122.271896193532541, -3.529500013852696], [123.170962762546537, -4.683693129091707], [123.162332798353759, -5.34060393638596], [122.628515252778683, -5.634591159694494], [122.236394484548057, -5.282933037948281], [122.71956912647704, -4.46417164471579], [121.738233677254357, -4.851331475446499], [121.48946333220124, -4.574552504091215], [121.619171177253861, -4.188477878438674], [120.898181593917684, -3.602105401222828], [120.972388950688767, -2.627642917494909], [120.305452915529884, -2.931603692235725], [120.39004723519173, -4.097579034037223], [120.430716587405371, -5.528241062037778], [119.796543410319487, -5.67340016034565], [119.36690555224493, -5.379878024927804], [119.653606398600104, -4.459417412944958], [119.498835483885969, -3.49441171632651], [119.078344354326987, -3.487021986508764], [118.767768996252869, -2.801999200047688], [119.180973748858662, -2.147103773612798], [119.323393996255049, -1.35314706788047], [119.825998976725828, 0.154254462073496], [120.035701938966341, 0.566477362465804], [120.885779250167687, 1.309222723796835], [121.666816847826965, 1.013943589681076], [122.927566766451818, 0.875192368977465], [124.077522414242836, 0.917101955566139], [125.065989211121803, 1.643259182131558], [125.240500522971573, 1.419836127117605]]], [[[128.688248732620707, 1.132385972494106], [128.635952183141342, 0.258485826006179], [128.120169712436166, 0.356412665199286], [127.968034295768845, -0.252077325037533], [128.379998813999691, -0.780003757331286], [128.100015903842291, -0.899996433112974], [127.69647464407501, -0.266598402511505], [127.399490187693743, 1.011721503092573], [127.600511509309044, 1.81069082275718], [127.932377557487484, 2.174596258956555], [128.004156121940809, 1.628531398928331], [128.594559360875451, 1.540810655112864], [128.688248732620707, 1.132385972494106]]], [[[117.875627069166001, 1.827640692548911], [118.996747267738158, 0.902219143066048], [117.811858351717788, 0.784241848143722], [117.478338657706047, 0.102474676917026], [117.521643507966587, -0.803723239753211], [116.560048455879496, -1.487660821136231], [116.533796828275158, -2.483517347832901], [116.148083937648607, -4.012726332214014], [116.000857782049067, -3.657037448749008], [114.864803094544513, -4.106984144714416], [114.468651564595064, -3.49570362713382], [113.755671828264099, -3.439169610206519], [113.256994256647545, -3.118775729996854], [112.068126255340644, -3.478392022316071], [111.703290643359992, -2.994442233902631], [111.04824018762821, -3.049425957861188], [110.223846063275971, -2.934032484553483], [110.070935500124335, -1.592874037282414], [109.571947869914041, -1.314906507984489], [109.091873813922518, -0.459506524257051], [108.952657505328162, 0.415375474444346], [109.069136183714036, 1.341933905437642], [109.663260125773718, 2.006466986494984], [109.830226678508836, 1.338135687664191], [110.514060907027101, 0.773131415200993], [111.159137811326559, 0.976478176269509], [111.797548455860408, 0.904441229654651], [112.380251906383648, 1.410120957846757], [112.859809198052176, 1.497790025229946], [113.805849644019531, 1.217548732911041], [114.621355422017473, 1.430688177898886], [115.134037306785231, 2.821481838386219], [115.51907840379198, 3.169238389494395], [115.86551720587677, 4.306559149590156], [117.01521447150634, 4.306094061699468], [117.882034946770162, 4.137551377779487], [117.313232456533513, 3.234428208830578], [118.048329705885351, 2.287690131027361], [117.875627069166001, 1.827640692548911]]], [[[105.817655063909356, -5.852355645372411], [104.710384149191498, -5.873284600450644], [103.868213332130736, -5.037314955264974], [102.584260695406897, -4.220258884298203], [102.156173130300999, -3.614146009946765], [101.399113397225051, -2.799777113459171], [100.902502882900137, -2.05026213949786], [100.141980828860596, -0.650347588710957], [99.26373986206022, 0.183141587724663], [98.970011020913319, 1.042882391764536], [98.601351352943084, 1.823506577965616], [97.699597609449881, 2.453183905442116], [97.17694217324987, 3.30879059489861], [96.424016554757316, 3.86885976807791], [95.380876092513475, 4.970782172053673], [95.293026157617305, 5.479820868344816], [95.936862827541745, 5.439513251157108], [97.484882033277088, 5.24632090903401], [98.369169142655679, 4.268370266126366], [99.142558628335792, 3.590349636240915], [99.693997837322399, 3.174328518075156], [100.641433546961665, 2.099381211755798], [101.658012323007313, 2.083697414555189], [102.498271112073212, 1.398700466310217], [103.076840448013002, 0.561361395668854], [103.838396030698348, 0.104541734208666], [103.437645298274973, -0.711945896002845], [104.010788608824001, -1.059211521004229], [104.369991489684878, -1.084843031421016], [104.539490187602155, -1.782371514496716], [104.887892694113987, -2.340425306816655], [105.622111444116982, -2.42884368246807], [106.10859337771268, -3.06177662517895], [105.857445916774111, -4.305524997579723], [105.817655063909356, -5.852355645372411]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"India\", \"name\": \"India\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[77.837450799474553, 35.494009507787759], [78.912268914713209, 34.321936346975782], [78.811086460285722, 33.506198025032404], [79.208891636068572, 32.994394639613709], [79.176128777995501, 32.483779812137705], [78.458446486325997, 32.61816437431272], [78.738894484374001, 31.515906073527056], [79.721366815107089, 30.882714748654724], [81.11125613802929, 30.183480943313398], [80.476721225917373, 29.729865220655334], [80.088424513676259, 28.794470119740136], [81.057202589851997, 28.416095282499036], [81.999987420584958, 27.925479234319987], [83.304248895199535, 27.364505723575554], [84.675017938173767, 27.234901231387528], [85.25177859898335, 26.726198431906337], [86.024392938179147, 26.630984605408567], [87.22747195836628, 26.39789805755607], [88.060237664749806, 26.414615383402484], [88.174804315140904, 26.810405178325944], [88.043132765661198, 27.445818589786818], [88.120440708369841, 27.876541652939586], [88.730325962278528, 28.086864732367509], [88.814248488320544, 27.299315904239361], [88.835642531289366, 27.098966376243755], [89.744527622438838, 26.71940298105995], [90.37327477413406, 26.875724188742872], [91.217512648486405, 26.808648179628019], [92.033483514375078, 26.838310451763554], [92.10371178585973, 27.4526140406332], [91.69665652869665, 27.771741848251661], [92.503118931043616, 27.896876329046442], [93.413347609432662, 28.640629380807219], [94.565990431702929, 29.277438055939978], [95.404802280664612, 29.031716620392125], [96.117678664131006, 29.452802028922459], [96.586590610747479, 28.830979519154337], [96.248833449287758, 28.411030992134435], [97.327113885490007, 28.261582749946331], [97.402561476636123, 27.88253611908544], [97.051988559968066, 27.699058946233144], [97.133999058015277, 27.08377350514996], [96.419365675850941, 27.264589341739221], [95.124767694074933, 26.573572089132295], [95.155153436262566, 26.001307277932078], [94.603249139385355, 25.162495428970399], [94.552657912171611, 24.675238348890328], [94.106741977925054, 23.850740871673477], [93.325187615942767, 24.078556423432197], [93.286326938859247, 23.043658352138998], [93.060294224014598, 22.703110663335565], [93.166127557348361, 22.278459580977099], [92.672720981825549, 22.041238918541247], [92.146034783906799, 23.62749868417259], [91.869927606171302, 23.62434642180278], [91.706475050832083, 22.985263983649183], [91.158963250699713, 23.503526923104381], [91.467729933643668, 24.072639471934789], [91.915092807994398, 24.130413723237108], [92.376201613334786, 24.976692816664961], [91.799595981822065, 25.14743174895731], [90.872210727912105, 25.13260061288954], [89.920692580121838, 25.269749864192171], [89.832480910199592, 25.965082098895476], [89.355094028687276, 26.014407253518065], [88.56304935094974, 26.446525580342716], [88.209789259802477, 25.768065700782707], [88.931553989623069, 25.238692328384769], [88.30637251175601, 24.866079413344199], [88.084422235062405, 24.501657212821918], [88.699940220090895, 24.233714911388557], [88.529769728553759, 23.631141872649163], [88.876311883503064, 22.879146429937826], [89.031961297566198, 22.055708319582973], [88.888765903685396, 21.690588487224741], [88.208497348995209, 21.703171698487804], [86.975704380240259, 21.495561631755201], [87.033168572948853, 20.743307806882406], [86.499351027373777, 20.151638495356604], [85.060265740909671, 19.478578802971096], [83.941005893899998, 18.302009792549722], [83.189217156917834, 17.671221421778977], [82.192792189465905, 17.016636053937813], [82.191241896497175, 16.556664130107844], [81.692719354177456, 16.3102192245079], [80.791999139330116, 15.951972357644488], [80.324895867843864, 15.899184882058346], [80.025069207686428, 15.136414903214144], [80.23327355339039, 13.835770778859978], [80.286293572921849, 13.006260687710832], [79.862546828128487, 12.056215318240886], [79.85799930208681, 10.357275091997108], [79.340511509115984, 10.308854274939618], [78.885345493489169, 9.54613597252772], [79.189719679688281, 9.216543687370146], [78.27794070833049, 8.933046779816932], [77.94116539908434, 8.25295909263974], [77.539897902337927, 7.965534776232331], [76.592978957021657, 8.899276231314188], [76.130061476551063, 10.299630031775518], [75.746467319648488, 11.308250637248303], [75.396101108709573, 11.781245022015822], [74.864815708316812, 12.741935736537895], [74.616717156883524, 13.992582912649677], [74.443859490867197, 14.617221787977693], [73.534199253233368, 15.990652167214957], [73.119909295549419, 17.928570054592495], [72.820909458308634, 19.208233547436162], [72.824475132136783, 20.41950328214153], [72.630533481745388, 21.356009426351001], [71.175273471973938, 20.757441311114228], [70.470458611945091, 20.877330634031381], [69.164130080038817, 22.089298000572697], [69.644927606082391, 22.450774644454334], [69.349596795534325, 22.843179633062686], [68.176645135373377, 23.691965033456704], [68.842599318318761, 24.359133612560932], [71.0432401874682, 24.356523952730193], [70.844699334602822, 25.215102037043511], [70.282873162725579, 25.722228705339823], [70.168926629522005, 26.491871649678835], [69.514392938113119, 26.940965684511365], [70.61649620960192, 27.989196275335861], [71.777665643200308, 27.913180243434521], [72.823751662084689, 28.961591701772047], [73.450638462217412, 29.976413479119863], [74.421380242820263, 30.97981476493117], [74.405928989564998, 31.692639471965272], [75.258641798813187, 32.271105455040491], [74.451559279278698, 32.764899603805489], [74.104293654277328, 33.441473293586846], [73.749948358051952, 34.317698879527846], [74.240202671204955, 34.748887030571247], [75.757060988268321, 34.504922593721311], [76.871721632804011, 34.653544012992732], [77.837450799474553, 35.494009507787759]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ireland\", \"name\": \"Ireland\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-6.197884894220989, 53.86756500916335], [-6.032985398777609, 53.153164170944336], [-6.788856573910847, 52.260117906292322], [-8.561616583683557, 51.669301255899349], [-9.977085740590267, 51.820454820353071], [-9.16628251793078, 52.864628811242667], [-9.688524542672452, 53.881362616585285], [-8.327987433292007, 54.664518947968624], [-7.572167934591064, 55.131622219454854], [-7.366030646178785, 54.595840969452709], [-7.572167934591064, 54.059956366585986], [-6.953730231138065, 54.073702297575622], [-6.197884894220989, 53.86756500916335]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Iran\", \"name\": \"Iran\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[53.921597934795543, 37.198918361961255], [54.800303989486558, 37.392420762678178], [55.511578403551894, 37.964117133123153], [56.180374790273319, 37.935126654607423], [56.619366082592805, 38.121394354803478], [57.330433790928964, 38.029229437810933], [58.436154412678192, 37.522309475243794], [59.234761997316795, 37.412987982730336], [60.377637973883864, 36.52738312432836], [61.123070509694131, 36.491597194966239], [61.21081709172573, 35.650072333309218], [60.80319339380744, 34.404101874319856], [60.528429803311575, 33.676446031217999], [60.963700392505991, 33.528832302376252], [60.536077915290761, 32.981268825811561], [60.863654819588952, 32.182919623334421], [60.941944614511115, 31.548074652628745], [61.699314406180811, 31.379506130492661], [61.78122155136343, 30.735850328081231], [60.874248488208778, 29.829238999952604], [61.369308709564926, 29.303276272085917], [61.771868117118615, 28.699333807890792], [62.727830438085974, 28.259644883735383], [62.755425652929851, 27.378923448184985], [63.23389773952028, 27.217047024030702], [63.316631707619578, 26.756532497661659], [61.874187453056535, 26.239974880472097], [61.497362908784183, 25.078237006118492], [59.616134067630831, 25.380156561783775], [58.525761346272297, 25.609961656185725], [57.39725141788238, 25.739902045183634], [56.97076582217754, 26.966106268821356], [56.492138706290199, 27.14330475515019], [55.723710158110059, 26.964633490501036], [54.715089552637252, 26.480657863871507], [53.493096958231334, 26.812368882753042], [52.483597853409599, 27.580849107365488], [51.520762566947404, 27.865689602158291], [50.852948032439528, 28.814520575469377], [50.115008579311571, 30.14777252859971], [49.576850213423988, 29.9857152369324], [48.941333449098536, 30.31709035900403], [48.567971225789748, 29.926778265903515], [48.014568312376085, 30.452456773392594], [48.00469811380831, 30.985137437457237], [47.685286085812258, 30.984853217079621], [47.849203729042095, 31.709175930298663], [47.334661492711895, 32.469155381799105], [46.109361606639304, 33.017287299118998], [45.416690708199035, 33.967797756479577], [45.648459507028079, 34.748137722303007], [46.15178795755093, 35.093258775364284], [46.076340366404786, 35.67738332777548], [45.420618117053202, 35.977545884742817], [44.77267, 37.17045], [44.225755649600522, 37.971584377589345], [44.421402622257538, 38.281281236314534], [44.109225294782334, 39.428136298168091], [44.793989699081934, 39.713002631177041], [44.9526880226503, 39.335764675446363], [45.457721795438765, 38.874139105783051], [46.143623081248812, 38.74120148371221], [46.505719842317966, 38.770605373686287], [47.685079380083081, 39.508363959301207], [48.060095249225235, 39.582235419262453], [48.355529412637871, 39.2887649602769], [48.010744256386474, 38.794014797514514], [48.634375441284803, 38.27037750910096], [48.883249139202483, 38.32024526626261], [49.199612257693332, 37.582874253889877], [50.147771437384606, 37.37456655532133], [50.842354363819695, 36.872814235983384], [52.26402469260141, 36.700421657857696], [53.825789829326411, 36.965030829408228], [53.921597934795543, 37.198918361961255]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Iraq\", \"name\": \"Iraq\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[45.420618117053202, 35.977545884742817], [46.076340366404786, 35.67738332777548], [46.15178795755093, 35.093258775364284], [45.648459507028079, 34.748137722303007], [45.416690708199035, 33.967797756479577], [46.109361606639304, 33.017287299118998], [47.334661492711895, 32.469155381799105], [47.849203729042095, 31.709175930298663], [47.685286085812258, 30.984853217079621], [48.00469811380831, 30.985137437457237], [48.014568312376085, 30.452456773392594], [48.567971225789748, 29.926778265903515], [47.974519077349889, 29.975819200148493], [47.302622104690947, 30.059069932570711], [46.568713413281742, 29.099025173452283], [44.709498732284736, 29.178891099559376], [41.889980910007829, 31.190008653278362], [40.399994337736238, 31.889991766887931], [39.195468377444961, 32.16100881604266], [38.792340529136077, 33.378686428352218], [41.00615888851992, 34.419372260062111], [41.383965285005807, 35.628316555314349], [41.289707472505448, 36.358814602192261], [41.837064243340954, 36.605853786763568], [42.349591098811764, 37.22987254490409], [42.779125604021822, 37.385263576805741], [43.942258742047287, 37.256227525372942], [44.293451775902852, 37.001514390606289], [44.772699008977689, 37.170444647768427], [45.420618117053202, 35.977545884742817]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Iceland\", \"name\": \"Iceland\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-14.508695441129232, 66.455892239031414], [-14.739637417041605, 65.808748277440287], [-13.609732224979807, 65.126671047619851], [-14.9098337467949, 64.36408193628867], [-17.794438035543418, 63.67874909123384], [-18.656245896874989, 63.496382961675806], [-19.972754685942757, 63.643634955491514], [-22.762971971110154, 63.960178941495371], [-21.778484259517676, 64.402115790455497], [-23.955043911219104, 64.891129869233481], [-22.184402635170354, 65.084968166760291], [-22.227423265053329, 65.378593655042721], [-24.326184047939332, 65.611189276788451], [-23.650514695723082, 66.262519029395207], [-22.134922451250883, 66.410468655046856], [-20.576283738679543, 65.732112128351417], [-19.056841600001587, 66.276600857194751], [-17.798623826559048, 65.993853257909763], [-16.167818976292121, 66.526792304135853], [-14.508695441129232, 66.455892239031414]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Israel\", \"name\": \"Israel\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[35.719918247222743, 32.709192409794859], [35.545665317534535, 32.393992011030569], [35.183930291491428, 32.532510687788935], [34.974640740709319, 31.866582343059715], [35.225891554512422, 31.754341132121759], [34.970506626125989, 31.616778469360803], [34.927408481594554, 31.35343537040141], [35.397560662586038, 31.489086005167572], [35.420918409981958, 31.100065822874349], [34.922602573391423, 29.501326198844517], [34.26543338393568, 31.219360866820146], [34.556371697738903, 31.548823960896989], [34.48810713068135, 31.605538845337314], [34.752587111151165, 32.07292633720116], [34.955417107896771, 32.827376410446369], [35.098457472480668, 33.080539252244257], [35.126052687324538, 33.090900376918775], [35.460709262846699, 33.089040025356276], [35.552796665190805, 33.264274807258012], [35.821100701650231, 33.277426459276292], [35.836396925608618, 32.868123277308506], [35.700797967274745, 32.716013698857374], [35.719918247222743, 32.709192409794859]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Italy\", \"name\": \"Italy\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[15.52037601081383, 38.231155096991465], [15.160242954171732, 37.444045518537813], [15.309897902089002, 37.134219468731793], [15.099988234119445, 36.61998729099539], [14.335228712632013, 36.996630967754747], [13.826732618879927, 37.104531358380186], [12.431003859108809, 37.612949937483812], [12.570943637755132, 38.126381130519682], [13.741156447004581, 38.03496552179535], [14.761249220446157, 38.143873602850498], [15.52037601081383, 38.231155096991465]]], [[[9.210011834356264, 41.209991360024212], [9.809975213264973, 40.500008856766094], [9.669518670295671, 39.177376410471787], [9.214817742559486, 39.240473334300127], [8.806935662479729, 38.906617743478471], [8.428302443077113, 39.171847032216611], [8.388253208050939, 40.378310858718798], [8.159998406617659, 40.950007229163774], [8.709990675500107, 40.899984442705225], [9.210011834356264, 41.209991360024212]]], [[[12.376485223040842, 46.767559109069872], [13.806475457421552, 46.50930613869118], [13.698109978905475, 46.016778062517368], [13.937630242578335, 45.59101593686465], [13.141606479554294, 45.736691799495411], [12.328581170306304, 45.38177806251484], [12.383874952858601, 44.885374253919075], [12.261453484759157, 44.600482082694008], [12.589237094786482, 44.091365871754462], [13.526905958722491, 43.587727362637899], [14.029820997787024, 42.761007798832473], [15.142569614327952, 41.955139675456891], [15.926191033601892, 41.961315009115729], [16.169897088290409, 41.740294908203417], [15.889345737377793, 41.541082261718195], [16.785001661860573, 41.179605617836579], [17.519168735431204, 40.877143459632229], [18.376687452882575, 40.355624904942651], [18.4802470231954, 40.168866278639818], [18.293385044028096, 39.810774441073235], [17.738380161213279, 40.277671006830289], [16.869595981522334, 40.442234605463838], [16.448743116937319, 39.795400702466473], [17.171489698971495, 39.424699815420716], [17.052840610429339, 38.902871202137291], [16.635088331781841, 38.843572496082395], [16.100960727613053, 37.985898749334176], [15.684086948314498, 37.908849188787023], [15.687962680736318, 38.214592800441849], [15.891981235424705, 38.750942491199218], [16.109332309644312, 38.964547024077682], [15.718813510814638, 39.544072374014938], [15.413612501698818, 40.048356838535163], [14.998495721098234, 40.172948716790913], [14.703268263414767, 40.604550279292617], [14.06067182786526, 40.786347968095434], [13.627985060285393, 41.188287258461649], [12.888081902730418, 41.253089504555604], [12.106682570044907, 41.7045348170574], [11.191906365614184, 42.355425319989671], [10.511947869517794, 42.93146251074721], [10.200028924204046, 43.920006822274608], [9.702488234097812, 44.036278794931313], [8.888946160526869, 44.366336167979533], [8.428560825238575, 44.23122813575241], [7.8507666357832, 43.767147935555236], [7.435184767291841, 43.693844916349164], [7.549596388386161, 44.127901109384808], [7.007562290076661, 44.254766750661382], [6.749955275101711, 45.028517971367584], [7.096652459347835, 45.333098863295859], [6.80235517744566, 45.708579820328673], [6.84359297041456, 45.991146552100659], [7.273850945676683, 45.776947740250748], [7.755992058959832, 45.824490057959267], [8.316629672894377, 46.16364248309084], [8.489952426801294, 46.005150865251736], [8.966305779667833, 46.03693187111115], [9.18288170740311, 46.440214748716976], [9.92283654139035, 46.314899400409182], [10.363378126678665, 46.48357127540983], [10.4427014502466, 46.893546250997431], [11.048555942436504, 46.751358547546396], [11.164827915093325, 46.941579494812729], [12.153088006243079, 47.115393174826423], [12.376485223040842, 46.767559109069872]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Jamaica\", \"name\": \"Jamaica\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-77.569600796199197, 18.490525417550483], [-76.896618618462114, 18.400866807524078], [-76.365359056285527, 18.16070058844759], [-76.19965857614163, 17.886867173732963], [-76.902561408175671, 17.868237819891743], [-77.206341315403449, 17.701116237859818], [-77.766022915340599, 17.861597398342237], [-78.337719285785596, 18.225967922432226], [-78.217726610003865, 18.454532782459193], [-77.797364671525614, 18.524218451404774], [-77.569600796199197, 18.490525417550483]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Jordan\", \"name\": \"Jordan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[35.545665317534535, 32.393992011030569], [35.719918247222743, 32.709192409794859], [36.834062127435537, 32.312937526980768], [38.792340529136077, 33.378686428352218], [39.195468377444961, 32.16100881604266], [39.004885695152545, 32.010216986614971], [37.002165561681004, 31.508412990844736], [37.998848911294367, 30.508499864213128], [37.668119744626374, 30.338665269485894], [37.503581984209028, 30.003776150018396], [36.740527784987243, 29.865283311476183], [36.501214227043583, 29.505253607698702], [36.068940870922049, 29.19749461518445], [34.956037225084252, 29.356554673778835], [34.922602573391423, 29.501326198844517], [35.420918409981958, 31.100065822874349], [35.397560662586038, 31.489086005167572], [35.545251906076196, 31.782504787720832], [35.545665317534535, 32.393992011030569]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Japan\", \"name\": \"Japan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[134.638428176003856, 34.149233710256418], [134.766379022358478, 33.806334743783673], [134.20341596897083, 33.201177883429622], [133.792950067276479, 33.521985175097583], [133.280268182508848, 33.289570420864941], [133.014858026257855, 32.704567369104772], [132.363114862192674, 32.989382025681373], [132.371176385630179, 33.463642483040068], [132.924372593314786, 34.060298570282036], [133.492968377822194, 33.944620876596694], [133.904106073136347, 34.364931138642611], [134.638428176003856, 34.149233710256418]]], [[[140.976387567305267, 37.142074286440156], [140.599769728762084, 36.343983466124534], [140.774074334882641, 35.842877102190229], [140.253279250245072, 35.138113918593653], [138.975527785396196, 34.667600002576101], [137.217598911691198, 34.606285915661843], [135.792983026268871, 33.46480520276662], [135.120982700745401, 33.849071153289053], [135.07943484918269, 34.596544908174813], [133.340316196831964, 34.375938218720755], [132.156770868051296, 33.904933376596503], [130.986144647343451, 33.885761420216276], [132.000036248910021, 33.149992377244608], [131.33279015515734, 31.450354519164836], [130.68631798718593, 31.029579169228235], [130.202419875204953, 31.418237616495411], [130.447676222862128, 32.319474595665717], [129.81469160371887, 32.610309556604385], [129.408463169472554, 33.296055813117583], [130.353935174684636, 33.604150702441693], [130.878450962447118, 34.232742824840031], [131.884229364143891, 34.749713853487911], [132.617672967662486, 35.433393052709413], [134.608300815977771, 35.731617743465812], [135.677537876528902, 35.527134100886819], [136.723830601142424, 37.304984239240376], [137.390611607004473, 36.827390651998819], [138.857602166906247, 37.827484646143454], [139.426404657142882, 38.215962225897634], [140.054790073812057, 39.438807481436378], [139.883379347899847, 40.563312486323682], [140.305782505453664, 41.195005194659551], [141.368973423426667, 41.378559882160282], [141.914263136970476, 39.991616115878678], [141.884600864834965, 39.18086456965149], [140.959489373945729, 38.174000962876583], [140.976387567305267, 37.142074286440156]]], [[[143.910161981379474, 44.174099839853724], [144.613426548439634, 43.960882880217511], [145.320825230083074, 44.384732977875437], [145.543137241802754, 43.262088324550596], [144.059661899999867, 42.988358262700551], [143.183849725517291, 41.995214748699183], [141.611490920172457, 42.678790595056071], [141.067286411706618, 41.58459381770799], [139.95510623592105, 41.56955597591103], [139.817543573159924, 42.563758856774392], [140.312087030193169, 43.333272610032644], [141.380548944259999, 43.388824774746489], [141.671952345953912, 44.772125352551477], [141.967644891527982, 45.551483466161343], [143.142870314709796, 44.510358384776957], [143.910161981379474, 44.174099839853724]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Kazakhstan\", \"name\": \"Kazakhstan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[70.962314894499272, 42.26615428320553], [70.388964878220776, 42.081307684897517], [69.070027296835221, 41.384244289712335], [68.632482944620037, 40.668680731766855], [68.259895867795635, 40.662324530594894], [67.985855747351806, 41.135990708982199], [66.714047072216587, 41.168443508461557], [66.510648634715707, 41.987644151368549], [66.023391554635609, 41.994646307944031], [66.098012322865188, 42.997660020513074], [64.90082441595932, 43.728080552742647], [63.18578698105658, 43.650074978197999], [62.013300408786264, 43.504476630215649], [61.05831994003249, 44.405816962250576], [60.239971958258472, 44.784036770194739], [58.689989048095796, 45.500013739598721], [58.503127068928428, 45.58680430763296], [55.928917270741167, 44.995858466159163], [55.968191359283011, 41.30864166926937], [55.455251092353805, 41.259859117185826], [54.755345493392653, 42.04397146256661], [54.079417759014959, 42.324109402020831], [52.944293247291725, 42.116034247397572], [52.502459751196277, 41.783315538086462], [52.446339145727208, 42.027150783855561], [52.692112257707251, 42.443895372073364], [52.501426222550315, 42.792297878585188], [51.342427199108201, 43.132974758469338], [50.891291945200223, 44.031033637053774], [50.339129266161358, 44.284015611338468], [50.305642938036257, 44.609835516938908], [51.278503452363211, 44.514854234386448], [51.316899041556034, 45.245998236667894], [52.167389764215713, 45.408391425145098], [53.040876499245194, 45.259046535821753], [53.220865512917712, 46.23464590105992], [53.042736850807771, 46.853006089864486], [52.042022739475598, 46.804636949239232], [51.191945428274252, 47.048704738953909], [50.034083286342465, 46.608989976582208], [49.10116, 46.39933000000012], [48.593241001180495, 46.561034247415471], [48.694733514201729, 47.075628160177921], [48.057253045449258, 47.743752753279516], [47.315231154170242, 47.715847479841948], [46.466445753776256, 48.394152330104923], [47.043671502476506, 49.1520388860976], [46.751596307162728, 49.35600576435376], [47.549480421749301, 50.454698391311119], [48.577841424357523, 49.874759629915658], [48.702381626181008, 50.605128485712825], [50.766648390512145, 51.692762356159889], [52.328723585830957, 51.71865224873811], [54.53287845237621, 51.026239732459302], [55.716940545479801, 50.62171662047853], [56.777961053296551, 51.043551337277037], [58.363290643146733, 51.063653469438563], [59.642282342370599, 50.545442206415707], [59.932807244715484, 50.842194118851857], [61.337424350840919, 50.799070136104248], [61.588003371024158, 51.2726587998432], [59.967533807215531, 51.960420437215696], [60.927268507740258, 52.447548326215028], [60.739993117114572, 52.719986477257734], [61.699986199800584, 52.979996446334255], [60.978066440683151, 53.664993394579128], [61.436591424409052, 54.006264553434775], [65.178533563095911, 54.354227810272093], [65.66687584825398, 54.601266994843449], [68.169100376258811, 54.970391750704309], [69.068166945272864, 55.385250149143516], [70.865266554655122, 55.169733588270091], [71.180131056609397, 54.133285224008247], [72.224150018202167, 54.376655381886728], [73.508516066384388, 54.035616766976588], [73.425678745420427, 53.489810289109741], [74.384845005190044, 53.546861070360066], [76.891100294913414, 54.490524400441913], [76.525179477854735, 54.177003485727127], [77.800915561844221, 53.404414984747561], [80.035559523441663, 50.864750881547238], [80.568446893235475, 51.388336493528456], [81.945985548839914, 50.812195949906354], [83.383003778012366, 51.069182847693909], [83.935114780618832, 50.889245510453563], [84.416377394553052, 50.311399644565817], [85.115559523462011, 50.117302964877631], [85.541269972682457, 49.69285858824815], [86.829356723989619, 49.826674709668154], [87.359970330762664, 49.214980780629148], [86.598776483103379, 48.549181626980605], [85.768232863308285, 48.455750637396974], [85.72048383987071, 47.452969468773112], [85.164290399113355, 47.000955715516099], [83.180483839860443, 47.330031236350848], [82.458925815769106, 45.539649563166499], [81.947070753918112, 45.317027492853235], [79.966106398441397, 44.917516994804643], [80.866206496101356, 43.180362046881037], [80.180150180994289, 42.920067857426936], [80.259990268885332, 42.349999294599101], [79.643645460940135, 42.496682847659649], [79.142177361979776, 42.856092434249589], [77.658391961583206, 42.960685533208327], [76.000353631498555, 42.988022365890622], [75.636964959622091, 42.877899888676765], [74.212865838522575, 43.298339341803505], [73.645303582660901, 43.091271877609863], [73.489757521462337, 42.500894476891276], [71.844638299450637, 42.845395412765178], [71.186280552052253, 42.704292914392219], [70.962314894499272, 42.26615428320553]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Kenya\", \"name\": \"Kenya\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[40.993, -0.85829], [41.58513, -1.68325], [40.88477, -2.08255], [40.63785, -2.49979], [40.26304, -2.57309], [40.12119, -3.27768], [39.80006, -3.68116], [39.60489, -4.34653], [39.20222, -4.67677], [37.7669, -3.67712], [37.69869, -3.09699], [34.07262, -1.05982], [33.903711197104521, -0.95], [33.893568969666937, 0.109813537861896], [34.18, 0.515], [34.6721, 1.17694], [35.03599, 1.90584], [34.59607, 3.05374], [34.47913, 3.5556], [34.005, 4.249884947362047], [34.620196267853871, 4.847122742081987], [35.298007118232974, 5.506], [35.817447662353501, 5.338232082790795], [35.817447662353501, 4.776965663461889], [36.159078632855639, 4.447864127672768], [36.855093238008116, 4.447864127672768], [38.120915, 3.598605], [38.43697, 3.58851], [38.67114, 3.61607], [38.89251, 3.50074], [39.559384258765846, 3.42206], [39.85494, 3.83879], [40.76848, 4.25702], [41.1718, 3.91909], [41.855083092643966, 3.918911920483726], [40.98105, 2.78452], [40.993, -0.85829]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Kyrgyzstan\", \"name\": \"Kyrgyzstan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[70.96231489449913, 42.266154283205481], [71.186280552052111, 42.704292914392127], [71.84463829945058, 42.845395412765093], [73.489757521462337, 42.500894476891311], [73.645303582660901, 43.09127187760982], [74.212865838522546, 43.298339341803363], [75.636964959622006, 42.877899888676673], [76.000353631498442, 42.988022365890664], [77.658391961583206, 42.960685533208256], [79.142177361979762, 42.856092434249511], [79.643645460940107, 42.496682847659514], [80.259990268885289, 42.349999294599044], [80.119430373051358, 42.123940741538235], [78.543660923175295, 41.582242540038685], [78.187196893225959, 41.185315863604792], [76.904484490877067, 41.066485907549634], [76.526368035797432, 40.427946071935111], [75.467827996730691, 40.562072251948663], [74.776862420556043, 40.366425279291619], [73.822243686828287, 39.893973497063179], [73.960013055318413, 39.660008449861721], [73.67537926625478, 39.431236884105594], [71.784693637991992, 39.279463202464363], [70.549161818325601, 39.604197902986492], [69.464886915977516, 39.526683254548693], [69.559609816368507, 40.103211371412968], [70.648018833299957, 39.935753892571157], [71.014198032520156, 40.244365546218226], [71.774875115856545, 40.145844428053763], [73.055417108049156, 40.86603302668945], [71.870114780570447, 41.392900092121259], [71.157858514291576, 41.143587144529107], [70.420022414028196, 41.519998277343134], [71.259247674448218, 42.167710679689456], [70.96231489449913, 42.266154283205481]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Cambodia\", \"name\": \"Cambodia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[103.497279901139677, 10.632555446815926], [103.090689731867229, 11.153660590047162], [102.58493248902667, 12.186594956913279], [102.348099399833004, 13.39424734135822], [102.988422072361601, 14.225721136934464], [104.281418084736586, 14.416743068901363], [105.218776890078871, 14.27321177821069], [106.04394616091551, 13.881091009979952], [106.496373325630856, 14.57058380783428], [107.382727492301058, 14.202440904186968], [107.614547967562402, 13.535530707244202], [107.491403029410861, 12.337205918827944], [105.810523716253101, 11.567614650921225], [106.249670037869436, 10.961811835163585], [105.199914992292321, 10.889309800658094], [104.334334751403446, 10.486543687375228], [103.497279901139677, 10.632555446815926]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"South Korea\", \"name\": \"Korea\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[128.349716424676586, 38.612242946927843], [129.212919549680038, 37.432392483055942], [129.460449660358137, 36.784189154602821], [129.468304478066472, 35.632140611303939], [129.091376580929563, 35.08248423923142], [128.18585045787907, 34.890377102186385], [127.386519403188373, 34.475673733044111], [126.485747511908713, 34.390045884736473], [126.3739197124291, 34.934560451795939], [126.559231398627773, 35.684540513647896], [126.117397902532261, 36.725484727519252], [126.860143263863364, 36.893924058574612], [126.174758742376213, 37.749685777328033], [126.237338901881742, 37.840377916000271], [126.683719924018888, 37.804772854151174], [127.073308547067342, 38.256114813788393], [127.780035435090966, 38.304535630845884], [128.205745884311426, 38.370397243801882], [128.349716424676586, 38.612242946927843]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Kosovo\", \"name\": \"Kosovo\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[20.76216, 42.05186], [20.717310000000108, 41.84711], [20.59023, 41.85541], [20.52295, 42.21787], [20.28374, 42.32025], [20.0707, 42.58863], [20.25758, 42.81275], [20.49679, 42.88469], [20.63508, 43.21671], [20.81448, 43.27205], [20.95651, 43.13094], [21.143395, 43.068685000000123], [21.27421, 42.90959], [21.43866, 42.86255], [21.63302, 42.67717], [21.77505, 42.6827], [21.66292, 42.43922], [21.54332, 42.32025], [21.576635989402117, 42.245224397061847], [21.352700000000134, 42.2068], [20.76216, 42.05186]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Kuwait\", \"name\": \"Kuwait\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[47.974519077349889, 29.975819200148493], [48.183188510944483, 29.534476630159759], [48.09394331237641, 29.306299343374999], [48.416094191283939, 28.552004299426663], [47.708850538937376, 28.526062730416136], [47.459821811722819, 29.002519436147217], [46.568713413281742, 29.099025173452283], [47.302622104690947, 30.059069932570711], [47.974519077349889, 29.975819200148493]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Laos\", \"name\": \"Lao PDR\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[105.218776890078871, 14.27321177821069], [105.544338413517664, 14.723933620660414], [105.589038527450128, 15.570316066952856], [104.779320509868768, 16.441864935771445], [104.716947056092465, 17.428858954330078], [103.956476678485288, 18.240954087796872], [103.200192091893726, 18.309632066312769], [102.998705682387694, 17.961694647691598], [102.413004998791592, 17.932781683824281], [102.113591750092453, 18.109101670804161], [101.059547560635139, 17.512497259994486], [101.035931431077742, 18.408928330961611], [101.282014601651667, 19.462584947176762], [100.606293573003128, 19.508344427971217], [100.548881056726856, 20.109237982661124], [100.115987583417819, 20.41784963630818], [100.329101190189519, 20.786121731036229], [101.180005324307515, 21.436572984294024], [101.270025669359939, 21.201651923095177], [101.803119744882906, 21.174366766845065], [101.652017856861491, 22.318198757409544], [102.170435825613552, 22.464753119389297], [102.754896274834636, 21.675137233969462], [103.203861118586431, 20.766562201413745], [104.435000441508024, 20.758733221921528], [104.822573683697073, 19.886641750563879], [104.183387892678908, 19.624668077060214], [103.896532017026701, 19.265180975821799], [105.094598423281496, 18.666974595611073], [105.925762160264, 17.485315456608955], [106.55600792849566, 16.604283962464802], [107.312705926545576, 15.908538316303177], [107.564525181103875, 15.202173163305554], [107.382727492301058, 14.202440904186968], [106.496373325630856, 14.57058380783428], [106.04394616091551, 13.881091009979952], [105.218776890078871, 14.27321177821069]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Lebanon\", \"name\": \"Lebanon\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[35.821100701650231, 33.277426459276292], [35.552796665190805, 33.264274807258012], [35.460709262846699, 33.089040025356276], [35.126052687324538, 33.090900376918775], [35.48220665868012, 33.905450140919434], [35.979592319489392, 34.610058295219126], [35.998402540843628, 34.644914048799997], [36.448194207512095, 34.59393524834406], [36.611750115715886, 34.201788641897174], [36.066460402172048, 33.824912421192543], [35.821100701650231, 33.277426459276292]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Liberia\", \"name\": \"Liberia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-7.712159389669749, 4.364565944837721], [-7.974107224957249, 4.355755113131961], [-9.004793667018673, 4.832418524592199], [-9.913420376006682, 5.593560695819205], [-10.765383876986643, 6.140710760925556], [-11.438779466182053, 6.785916856305746], [-11.199801805048278, 7.105845648624735], [-11.14670427086838, 7.396706447779534], [-10.695594855176477, 7.939464016141085], [-10.230093553091276, 8.406205552601291], [-10.016566534861253, 8.42850393313523], [-9.755342169625832, 8.541055202666923], [-9.33727983238458, 7.928534450711351], [-9.403348151069748, 7.526905218938906], [-9.208786383490844, 7.313920803247952], [-8.926064622422002, 7.309037380396375], [-8.722123582382123, 7.711674302598509], [-8.439298468448696, 7.686042792181736], [-8.485445522485348, 7.395207831243068], [-8.385451626000572, 6.911800645368742], [-8.602880214868618, 6.467564195171659], [-8.311347622094017, 6.193033148621081], [-7.993692592795879, 6.126189683451541], [-7.570152553731686, 5.707352199725903], [-7.53971513511176, 5.313345241716517], [-7.63536821128403, 5.188159084489455], [-7.712159389669749, 4.364565944837721]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Libya\", \"name\": \"Libya\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[14.8513, 22.862950000000119], [14.143870883855239, 22.491288967371126], [13.581424594790459, 23.040506089769274], [11.999505649471697, 23.471668402596432], [11.560669386449032, 24.09790924732561], [10.771363559622952, 24.562532050061741], [10.303846876678445, 24.379313259370967], [9.948261346078024, 24.936953640232613], [9.910692579801774, 25.365454616796789], [9.319410841518218, 26.094324856057476], [9.716285841519662, 26.512206325785652], [9.629056023811073, 27.140953477481041], [9.756128370816779, 27.688258571884198], [9.68388471847288, 28.144173895779311], [9.859997999723472, 28.959989732371064], [9.805634392952353, 29.424638373323369], [9.482139926805415, 30.307556057246181], [9.970017124072966, 30.539324856075375], [10.056575148161697, 30.961831366493517], [9.950225050505194, 31.376069647745275], [10.636901482799484, 31.761420803345679], [10.944789666394511, 32.081814683555358], [11.43225345220378, 32.368903103152824], [11.488787469131008, 33.136995754523234], [12.66331, 32.79278], [13.08326, 32.87882], [13.91868, 32.71196], [15.24563, 32.26508], [15.71394, 31.37626], [16.61162, 31.18218], [18.02109, 30.76357], [19.08641, 30.26639], [19.57404, 30.52582], [20.05335, 30.98576], [19.82033, 31.751790000000135], [20.13397, 32.2382], [20.85452, 32.7068], [21.54298, 32.8432], [22.89576, 32.63858], [23.2368, 32.19149], [23.6091300000001, 32.18726], [23.9275, 32.01667], [24.92114, 31.89936], [25.16482, 31.56915], [24.80287, 31.08929], [24.95762, 30.6616], [24.70007, 30.04419], [25.00000000000011, 29.238654529533552], [25.00000000000011, 25.682499996360995], [25.00000000000011, 22.0], [25.00000000000011, 20.00304], [23.850000000000129, 20.0], [23.837660000000135, 19.580470000000101], [19.84926, 21.49509], [15.86085, 23.40972], [14.8513, 22.862950000000119]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Sri Lanka\", \"name\": \"Sri Lanka\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[81.787959018891371, 7.523055324733162], [81.637322218760573, 6.481775214051921], [81.218019647144317, 6.197141424988287], [80.348356968104397, 5.968369859232154], [79.872468703128519, 6.763463446474928], [79.6951668639351, 8.200843410673384], [80.147800734379629, 9.824077663609554], [80.838817986986541, 9.268426825391186], [81.304319289071756, 8.564206244333688], [81.787959018891371, 7.523055324733162]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Lesotho\", \"name\": \"Lesotho\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[28.978262566857236, -28.955596612261708], [29.325166456832587, -29.257386976846245], [29.018415154748016, -29.743765557577362], [28.848399692507734, -30.070050551068245], [28.291069370239903, -30.226216729454293], [28.107204624145421, -30.545732110314944], [27.749397006956478, -30.645105889612214], [26.999261915807629, -29.875953871379977], [27.532511020627471, -29.242710870075353], [28.07433841320778, -28.851468601193581], [28.541700066855491, -28.647501722937562], [28.978262566857236, -28.955596612261708]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Lithuania\", \"name\": \"Lithuania\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[22.731098667092649, 54.327536932993311], [22.651051873472536, 54.582740993866729], [22.757763706155256, 54.856574408581366], [22.31572350433057, 55.01529857036585], [21.26844892750346, 55.190481675835301], [21.05580040862241, 56.031076361711051], [22.201156853939491, 56.337801825579483], [23.878263787539957, 56.273671373105259], [24.860684441840753, 56.372528388079616], [25.000934279080887, 56.164530748104831], [25.533046502390327, 56.100296942766029], [26.494331495883749, 55.61510691997762], [26.588279249790386, 55.167175604871659], [25.768432651479792, 54.846962592175082], [25.536353794056989, 54.282423407602515], [24.45068362803703, 53.905702216194747], [23.484127638449841, 53.912497667041123], [23.243987257589506, 54.220566718149129], [22.731098667092649, 54.327536932993311]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Luxembourg\", \"name\": \"Luxembourg\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6.043073357781109, 50.128051662794221], [6.242751092156992, 49.90222565367872], [6.186320428094176, 49.4638028021145], [5.897759230176403, 49.442667141307012], [5.674051954784828, 49.52948354755749], [5.782417433300905, 50.090327867221205], [6.043073357781109, 50.128051662794221]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Latvia\", \"name\": \"Latvia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[21.05580040862241, 56.031076361711051], [21.090423618257965, 56.783872789122924], [21.581866489353668, 57.411870632549913], [22.524341261492872, 57.753374335350756], [23.31845299652209, 57.006236477274854], [24.120729607853423, 57.025692654032753], [24.312862583114615, 57.793423570376966], [25.164593540149262, 57.970156968815175], [25.602809685984365, 57.847528794986559], [26.46353234223778, 57.476388658266316], [27.288184848751509, 57.474528306703817], [27.770015903440925, 57.244258124411218], [27.855282016722519, 56.759326483784278], [28.17670942557799, 56.169129950578807], [27.102459751094525, 55.783313707087672], [26.494331495883749, 55.61510691997762], [25.533046502390327, 56.100296942766029], [25.000934279080887, 56.164530748104831], [24.860684441840753, 56.372528388079616], [23.878263787539957, 56.273671373105259], [22.201156853939491, 56.337801825579483], [21.05580040862241, 56.031076361711051]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Morocco\", \"name\": \"Morocco\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-5.193863491222031, 35.755182196590845], [-4.591006232105143, 35.330711981745644], [-3.640056525070007, 35.39985504815197], [-2.604305792644111, 35.17909332940112], [-2.169913702798624, 35.168396307916694], [-1.792985805661658, 34.527918606091298], [-1.73345455566141, 33.919712836232115], [-1.388049282222596, 32.864015000941372], [-1.124551153966195, 32.651521511357195], [-1.30789913573787, 32.262888902306024], [-2.616604783529567, 32.094346218386157], [-3.068980271812648, 31.724497992473285], [-3.647497931320145, 31.637294012980814], [-3.690441046554666, 30.896951605751152], [-4.859646165374442, 30.501187649043874], [-5.242129278982786, 30.00044302013557], [-6.060632290053745, 29.731699734001801], [-7.059227667661899, 29.57922842052465], [-8.67411617678283, 28.841288967396643], [-8.665589565454836, 27.656425889592462], [-8.817809007940523, 27.656425889592462], [-8.817828334986642, 27.656425889592462], [-8.794883999049032, 27.120696316022553], [-9.413037482124507, 27.088476060488539], [-9.735343390328749, 26.860944729107409], [-10.189424200877452, 26.860944729107409], [-10.551262579785258, 26.990807603456879], [-11.392554897496948, 26.883423977154386], [-11.718219773800339, 26.104091701760801], [-12.030758836301654, 26.030866197203121], [-12.500962693725368, 24.770116278578136], [-13.891110398809044, 23.691009019459383], [-14.22116777185715, 22.310163072188338], [-14.630832688850942, 21.860939846274867], [-14.750954555713404, 21.500600083903802], [-17.002961798561071, 21.42073415779668], [-17.020428432675768, 21.422310288981631], [-16.973247849993182, 21.88574453377495], [-16.589136928767626, 22.158234361250091], [-16.26192175949566, 22.679339504481273], [-16.326413946995896, 23.017768459560894], [-15.982610642958059, 23.723358466074096], [-15.426003790742183, 24.359133612561035], [-15.089331834360729, 24.520260728446964], [-14.824645148161689, 25.103532619725307], [-14.800925665739666, 25.636264960222285], [-14.439939947964827, 26.254418443297645], [-13.773804897506462, 26.618892320252279], [-13.13994177901429, 27.640147813420491], [-13.121613369914709, 27.654147671719805], [-12.61883663578311, 28.038185533148656], [-11.688919236690761, 28.148643907172577], [-10.9009569971044, 28.832142238880913], [-10.39959225100864, 29.09858592377778], [-9.564811163765624, 29.933573716749855], [-9.814718390329174, 31.177735500609053], [-9.434793260119362, 32.038096421836478], [-9.300692918321827, 32.564679266890629], [-8.657476365585039, 33.24024526624239], [-7.654178432638217, 33.697064927702506], [-6.912544114601358, 34.11047638603744], [-6.24434200685141, 35.145865383437517], [-5.929994269219832, 35.759988104793983], [-5.193863491222031, 35.755182196590845]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Moldova\", \"name\": \"Moldova\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[26.619336785597788, 48.220726223333457], [26.857823520624798, 48.368210761094488], [27.52253746919515, 48.467119452501102], [28.259546746541837, 48.155562242213406], [28.670891147585163, 48.118148505234089], [29.122698195113024, 47.849095160506458], [29.050867954227321, 47.510226955752493], [29.415135125452732, 47.346645209332571], [29.559674106573105, 46.928582872091312], [29.908851759569295, 46.67436066343145], [29.838210076626289, 46.525325832701675], [30.024658644335364, 46.423936672545032], [29.759971958136383, 46.349987697935354], [29.170653924279879, 46.379262396828693], [29.072106967899288, 46.517677720722482], [28.862972446414055, 46.437889309263824], [28.933717482221621, 46.258830471372491], [28.659987420371575, 45.939986884131628], [28.48526940279276, 45.596907050145887], [28.233553501099035, 45.488283189468369], [28.054442986775392, 45.944586086605618], [28.160017937947707, 46.371562608417207], [28.128030226359037, 46.81047638608824], [27.551166212684841, 47.405117092470817], [27.233872918412736, 47.826770941756365], [26.924176059687561, 48.123264472030982], [26.619336785597788, 48.220726223333457]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Madagascar\", \"name\": \"Madagascar\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[49.543518914595737, -12.469832858940553], [49.80898074727908, -12.895284925999551], [50.05651085795715, -13.555761407121981], [50.217431268114055, -14.758788750876795], [50.476536899625515, -15.226512139550541], [50.377111443895942, -15.706069431219122], [50.200274692593169, -16.000263360256763], [49.860605503138665, -15.414252618066913], [49.672606642460849, -15.710203545802477], [49.863344354050142, -16.451036879138773], [49.774564243372694, -16.875042006093597], [49.49861209493411, -17.10603565843827], [49.435618523970298, -17.953064060134363], [49.04179243347393, -19.118781019774442], [48.548540887247995, -20.496888116134119], [47.930749139198653, -22.391501153251077], [47.547723423051295, -23.781958916928513], [47.095761346226588, -24.941629733990446], [46.282477654817079, -25.178462823184102], [45.409507684110444, -25.601434421493082], [44.833573846217547, -25.346101169538933], [44.039720493349755, -24.9883452287823], [43.763768344911156, -24.460677178649988], [43.697777540874441, -23.574116306250595], [43.345654331237611, -22.77690398528387], [43.254187046080986, -22.057413018484116], [43.433297560404633, -21.336475111580185], [43.893682895692919, -21.163307386970121], [43.89637007017209, -20.830459486578167], [44.374325392439644, -20.072366224856385], [44.464397413924374, -19.435454196859045], [44.23242190936616, -18.961994724200899], [44.042976108584149, -18.331387220943167], [43.963084344260899, -17.409944756746778], [44.312468702986273, -16.850495700754951], [44.446517368351387, -16.216219170804504], [44.944936557806521, -16.179373874580396], [45.502731967964976, -15.974373467678538], [45.872993605336255, -15.793454278224681], [46.312243279817203, -15.780018405828795], [46.882182651564271, -15.210182386946309], [47.70512983581235, -14.594302666891762], [48.005214878131241, -14.091232598530372], [47.869047479042152, -13.663868503476582], [48.29382775248137, -13.784067884987483], [48.845060255738773, -13.08917489995866], [48.863508742066976, -12.487867933810417], [49.194651320193302, -12.040556735891967], [49.543518914595737, -12.469832858940553]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Mexico\", \"name\": \"Mexico\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-97.140008307670684, 25.869997463478395], [-97.528072475966539, 24.992144069920297], [-97.702945522842214, 24.272343044526728], [-97.776041836319024, 22.932579860927653], [-97.872366706111094, 22.444211737553356], [-97.699043952204164, 21.898689480064256], [-97.388959520236739, 21.411018988525818], [-97.189333462293277, 20.635433254473124], [-96.525575527720306, 19.890930894444061], [-96.292127244841737, 19.32037140550954], [-95.90088497595994, 18.828024196848727], [-94.8390634834427, 18.562717393462204], [-94.425729539756205, 18.144370835843343], [-93.548651292682365, 18.423836981677933], [-92.786113857783477, 18.524838568592255], [-92.037348192090391, 18.704569200103432], [-91.407903408559235, 18.876083278880227], [-90.771869879910852, 19.284120388256778], [-90.533589850613026, 19.867418117751292], [-90.451475999701231, 20.707521877520428], [-90.278618333684889, 20.999855454995547], [-89.601321173851474, 21.261725775634485], [-88.543866339862845, 21.493675441976613], [-87.658416510757704, 21.458845526611977], [-87.051890224948053, 21.543543199138295], [-86.811982388032931, 21.331514797444747], [-86.845907965832595, 20.849864610268348], [-87.383291185235848, 20.255404771398727], [-87.621054450210721, 19.646553046135917], [-87.436750454441764, 19.472403469312265], [-87.586560431655911, 19.040130113190738], [-87.837191128271485, 18.259815985583426], [-88.090664028663156, 18.516647854074048], [-88.300031094093626, 18.499982204659997], [-88.490122850279278, 18.486830552641717], [-88.84834387892657, 17.883198147040329], [-89.029857347351737, 18.001511338772556], [-89.150909389995462, 17.955467637600403], [-89.143080410503316, 17.808318996649401], [-90.067933519230891, 17.819326076727517], [-91.001519945015943, 17.817594916245692], [-91.002269253284155, 17.254657701074272], [-91.453921271515114, 17.252177232324183], [-91.08167009150057, 16.918476670799517], [-90.711821865587623, 16.687483018454767], [-90.600846727240921, 16.470777899638787], [-90.438866950221993, 16.410109768128105], [-90.464472622422633, 16.069562079324722], [-91.747960171255926, 16.066564846251762], [-92.229248623406278, 15.251446641495871], [-92.087215949252013, 15.06458466232851], [-92.203229539747255, 14.830102850804108], [-92.227750006869812, 14.538828640190953], [-93.359463874061746, 15.61542959234367], [-93.875168830118511, 15.94016429286591], [-94.691656460330108, 16.20097524664288], [-95.250227016973014, 16.128318182840641], [-96.053382127653293, 15.752087917539592], [-96.557434048228274, 15.653515122942787], [-97.263592495496624, 15.917064927631312], [-98.013029954809596, 16.107311713113912], [-98.947675747456486, 16.566043402568763], [-99.697397427147024, 16.706164048728166], [-100.829498867581293, 17.171071071842047], [-101.666088629954444, 17.649026394109622], [-101.918528001700196, 17.916090196193974], [-102.478132086988907, 17.975750637275095], [-103.500989549558057, 18.292294623278845], [-103.917527432046811, 18.748571682200005], [-104.992009650475467, 19.316133938061679], [-105.493038499761411, 19.946767279535429], [-105.731396043707633, 20.434101874264108], [-105.397772996831321, 20.531718654863422], [-105.500660773524402, 20.816895046466122], [-105.27075232625792, 21.076284898355137], [-105.265817226974022, 21.422103583252348], [-105.603160976975374, 21.871145941652568], [-105.693413865973113, 22.269080308516148], [-106.028716396898943, 22.77375234627862], [-106.909980434988341, 23.767774359628895], [-107.91544877809136, 24.548915310152946], [-108.401904873470954, 25.172313951105931], [-109.260198737406625, 25.580609442644054], [-109.444089321717314, 25.824883938087673], [-109.291643846456267, 26.44293406829842], [-109.801457689231796, 26.676175645447923], [-110.391731737085692, 27.162114976504533], [-110.641018846461606, 27.859876003525521], [-111.178918830187826, 27.941240546169062], [-111.759606899851619, 28.467952582303944], [-112.228234626090369, 28.954408677683482], [-112.27182369672866, 29.266844387320074], [-112.80959448937395, 30.021113593052341], [-113.163810594518651, 30.786880804969424], [-113.148669399857141, 31.170965887978912], [-113.871881069781836, 31.56760834403519], [-114.205736660603506, 31.524045111613123], [-114.776451178835003, 31.79953217216114], [-114.936699795372121, 31.393484605427595], [-114.771231859173483, 30.91361725516526], [-114.673899298951739, 30.162681179315985], [-114.330974494262918, 29.750432440707407], [-113.588875088335413, 29.061611436473008], [-113.424053107540516, 28.826173610951223], [-113.271969367305502, 28.754782619739892], [-113.140039435664363, 28.411289374295954], [-112.962298346796473, 28.425190334582503], [-112.761587083774856, 27.78021678314752], [-112.457910529411635, 27.525813706974752], [-112.24495195193677, 27.171726792910754], [-111.616489020619184, 26.662817287700474], [-111.284674648872993, 25.732589830014426], [-110.987819383572386, 25.294606228124557], [-110.71000688357131, 24.826004340101854], [-110.655048997828871, 24.298594672131113], [-110.17285620811343, 24.265547593680417], [-109.771847093528521, 23.811182562754194], [-109.409104377055698, 23.364672349536242], [-109.433392300232896, 23.185587673428696], [-109.85421932660168, 22.818271592698061], [-110.031391974714424, 22.823077500901199], [-110.295070970483636, 23.430973212166684], [-110.949501309028022, 24.000964260345988], [-111.670568407012681, 24.484423122652508], [-112.182035895621468, 24.73841278736716], [-112.148988817170817, 25.470125230404044], [-112.300710822379671, 26.012004299416613], [-112.777296719191526, 26.321959540303162], [-113.464670783321907, 26.768185533143416], [-113.596729906043805, 26.639459540304465], [-113.848936733844241, 26.900063788352437], [-114.465746629680027, 27.142090358991361], [-115.055142178184965, 27.722726752222904], [-114.982252570437382, 27.798200181585109], [-114.570365566854917, 27.741485297144884], [-114.199328782999231, 28.115002549750553], [-114.162018398884612, 28.566111965442296], [-114.931842210736605, 29.279479275015483], [-115.518653937626965, 29.556361599235395], [-115.887365282029563, 30.180793768834171], [-116.2583503894529, 30.836464341753572], [-116.721526252084956, 31.635743720012037], [-117.127759999999839, 32.53534], [-115.99135, 32.612390000000111], [-114.72139, 32.72083], [-114.815, 32.52528], [-113.30498, 32.03914], [-111.02361, 31.33472], [-109.035, 31.341940000000129], [-108.24194, 31.34222], [-108.24, 31.754853718166366], [-106.507589999999851, 31.75452], [-106.1429, 31.39995], [-105.63159, 31.08383], [-105.03737, 30.64402], [-104.70575, 30.12173], [-104.456969999999885, 29.57196], [-103.94, 29.27], [-103.11, 28.97], [-102.48, 29.76], [-101.6624, 29.7793], [-100.9576, 29.380710000000125], [-100.45584, 28.696120000000118], [-100.11, 28.11000000000012], [-99.52, 27.54], [-99.3, 26.84], [-99.019999999999897, 26.37], [-98.24, 26.06], [-97.529999999999887, 25.84], [-97.140008307670684, 25.869997463478395]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Macedonia\", \"name\": \"Macedonia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[20.59023, 41.85541], [20.717310000000108, 41.84711], [20.76216, 42.05186], [21.352700000000134, 42.2068], [21.576635989402117, 42.245224397061847], [21.917080000000105, 42.30364], [22.380525750424674, 42.320259507815074], [22.881373732197339, 41.999297186850349], [22.952377150166505, 41.337993882811176], [22.76177, 41.3048], [22.597308383889008, 41.130487168943198], [22.055377638444266, 41.149865831052686], [21.674160597426969, 40.93127452245794], [21.020040317476397, 40.842726955725873], [20.60518, 41.08622], [20.46315, 41.51509], [20.59023, 41.85541]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Mali\", \"name\": \"Mali\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-12.170750291380299, 14.616834214735503], [-11.834207526079465, 14.799096991428936], [-11.666078253617853, 15.388208319556295], [-11.349095017939502, 15.411256008358475], [-10.650791388379414, 15.132745876521422], [-10.086846482778212, 15.330485744686269], [-9.700255092802703, 15.264107367407359], [-9.550238409859388, 15.486496893775435], [-5.537744309908446, 15.501689764869253], [-5.315277268891931, 16.201853745991837], [-5.488522508150438, 16.325102037007962], [-5.971128709324247, 20.640833441647626], [-6.453786586930334, 24.956590684503418], [-4.92333736817423, 24.974574082940993], [-1.550054897457613, 22.792665920497377], [1.823227573259032, 20.61080943448604], [2.060990838233919, 20.142233384679482], [2.683588494486428, 19.856230170160114], [3.146661004253899, 19.693578599521441], [3.158133172222704, 19.057364203360034], [4.267419467800038, 19.155265204336995], [4.270209995143801, 16.852227484601212], [3.723421665063482, 16.184283759012612], [3.638258904646476, 15.568119818580453], [2.749992709981483, 15.409524847876693], [1.385528191746857, 15.323561102759168], [1.01578331869851, 14.968182277887944], [0.374892205414682, 14.928908189346128], [-0.26625729003058, 14.924308986872147], [-0.515854458000348, 15.116157741755725], [-1.066363491205663, 14.973815009007764], [-2.001035122068771, 14.559008287000887], [-2.191824510090384, 14.246417548067352], [-2.967694464520576, 13.798150336151506], [-3.103706834312759, 13.54126679122859], [-3.52280270019986, 13.337661647998612], [-4.006390753587225, 13.472485459848112], [-4.280405035814879, 13.228443508349738], [-4.427166103523802, 12.542645575404292], [-5.220941941743119, 11.713858954307224], [-5.197842576508648, 11.375145778850136], [-5.470564947929004, 10.951269842976044], [-5.404341599946973, 10.370736802609144], [-5.816926235365286, 10.222554633012191], [-6.050452032892266, 10.096360785355442], [-6.205222947606429, 10.524060777219132], [-6.493965013037267, 10.411302801958268], [-6.666460944027547, 10.430810655148447], [-6.850506557635057, 10.138993841996237], [-7.622759161804808, 10.147236232946792], [-7.89958980959237, 10.297382106970824], [-8.029943610048617, 10.206534939001711], [-8.335377163109738, 10.494811916541932], [-8.282357143578279, 10.792597357623842], [-8.407310756860026, 10.90925690352276], [-8.620321010767126, 10.810890814655181], [-8.581305304386772, 11.136245632364801], [-8.376304897484911, 11.393645941610627], [-8.786099005559462, 11.812560939984705], [-8.905264858424529, 12.088358059126433], [-9.127473517279581, 12.308060411015331], [-9.327616339546008, 12.334286200403451], [-9.567911749703212, 12.194243068892472], [-9.890992804392011, 12.060478623904968], [-10.165213792348835, 11.844083563682743], [-10.593223842806278, 11.923975328005977], [-10.870829637078211, 12.177887478072106], [-11.036555955438256, 12.211244615116513], [-11.297573614944508, 12.077971096235768], [-11.456168585648269, 12.076834214725336], [-11.513942836950587, 12.442987575729415], [-11.467899135778522, 12.754518947800973], [-11.553397793005427, 13.141213690641063], [-11.927716030311613, 13.422075100147392], [-12.124887457721256, 13.994727484589784], [-12.170750291380299, 14.616834214735503]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Myanmar\", \"name\": \"Myanmar\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[99.543309360759281, 20.186597601802056], [98.959675734454848, 19.752980658440944], [98.253723992915582, 19.708203029860041], [97.797782830804394, 18.627080389881751], [97.375896437573516, 18.445437730375811], [97.859122755934848, 17.567946071843657], [98.493761020911322, 16.837835598207928], [98.90334842325673, 16.177824204976115], [98.537375929765687, 15.308497422746081], [98.192074009191373, 15.123702500870349], [98.430819126379859, 14.622027696180831], [99.097755161538728, 13.827502549693275], [99.212011753336071, 13.269293728076462], [99.196353794351637, 12.804748439988666], [99.587286004639694, 11.892762762901695], [99.038120558673953, 10.960545762572435], [98.553550653073017, 9.932959906448543], [98.457174106848697, 10.675266018105146], [98.764545526120756, 11.441291612183745], [98.428338657629823, 12.032986761925681], [98.509574009192661, 13.122377631070675], [98.103603957107666, 13.64045970301285], [97.777732375075161, 14.837285874892638], [97.597071567782749, 16.100567938699765], [97.164539829499773, 16.928734442609336], [96.505768670642965, 16.427240505432845], [95.369352248112378, 15.714389960182599], [94.808404575584092, 15.803454291237637], [94.188804152404515, 16.037936102762014], [94.533485955791321, 17.277240301985724], [94.324816522196741, 18.213513902249893], [93.540988397193615, 19.366492621330021], [93.663254835996199, 19.726961574781992], [93.078277622452163, 19.855144965081973], [92.368553501355606, 20.670883287025344], [92.30323449093865, 21.475485337809815], [92.652257114637976, 21.324047552978481], [92.672720981825549, 22.041238918541247], [93.166127557348361, 22.278459580977099], [93.060294224014598, 22.703110663335565], [93.286326938859247, 23.043658352138998], [93.325187615942767, 24.078556423432197], [94.106741977925054, 23.850740871673477], [94.552657912171611, 24.675238348890328], [94.603249139385355, 25.162495428970399], [95.155153436262566, 26.001307277932078], [95.124767694074933, 26.573572089132295], [96.419365675850941, 27.264589341739221], [97.133999058015277, 27.08377350514996], [97.051988559968066, 27.699058946233144], [97.402561476636123, 27.88253611908544], [97.327113885490007, 28.261582749946331], [97.91198774616943, 28.335945136014338], [98.24623091023328, 27.747221381129172], [98.682690057370451, 27.508812160750612], [98.712093947344499, 26.74353587494026], [98.671838006589127, 25.918702500913518], [97.724609002679117, 25.083637193292994], [97.604719679761956, 23.897404690033039], [98.660262485755737, 24.063286037689959], [98.898749220782747, 23.142722072842524], [99.531992222087382, 22.949038804612574], [99.240898878987224, 22.118314317304577], [99.983489211021464, 21.742936713136398], [100.416537713627349, 21.558839423096607], [101.150032993578222, 21.849984442629015], [101.180005324307515, 21.436572984294024], [100.329101190189519, 20.786121731036229], [100.115987583417819, 20.41784963630818], [99.543309360759281, 20.186597601802056]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Montenegro\", \"name\": \"Montenegro\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[19.801613396898681, 42.500093492190835], [19.738051385179627, 42.688247382165564], [19.30449, 42.19574], [19.371770000000136, 41.87755], [19.16246, 41.95502], [18.88214, 42.28151], [18.45, 42.48], [18.56, 42.65], [18.70648, 43.20011], [19.03165, 43.43253], [19.21852, 43.52384], [19.48389, 43.35229], [19.63, 43.213779970270522], [19.95857, 43.10604], [20.3398, 42.89852], [20.25758, 42.81275], [20.0707, 42.58863], [19.801613396898681, 42.500093492190835]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Mongolia\", \"name\": \"Mongolia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[87.751264276076697, 49.297197984405479], [88.805566847695488, 49.470520738312409], [90.713667433640666, 50.331811835321076], [92.234711541719662, 50.802170722041716], [93.104219191462661, 50.495290228876414], [94.147566359435615, 50.480536607457083], [94.815949334698701, 50.013433335970838], [95.814027947983973, 49.977466539095708], [97.259727817781396, 49.726060695995727], [98.231761509191543, 50.422400621128737], [97.825739780674283, 51.010995184933165], [98.861490513100307, 52.047366034546684], [99.981732212323507, 51.634006252643978], [100.889480421962588, 51.516855780638316], [102.065222609467298, 51.25992055928311], [102.255908644624299, 50.510560614618669], [103.676545444760194, 50.089966132195109], [104.621552362081687, 50.275329494826067], [105.886591424586726, 50.406019192092209], [106.888804152455336, 50.274295966180219], [107.868175897250936, 49.793705145865808], [108.475167270951275, 49.282547715850725], [109.402449171996636, 49.292960516957535], [110.662010532678764, 49.130128078805861], [111.581230910286607, 49.377968248077678], [112.897739699354361, 49.543565375356984], [114.362456496235239, 50.248302720737399], [114.962109816550154, 50.140247300815112], [115.485695428531386, 49.805177313834591], [116.678800897286152, 49.888531399121376], [116.191802199367544, 49.134598090199091], [115.485282017073018, 48.135382595403428], [115.742837355615748, 47.726544501326273], [116.308952671373206, 47.853410142602826], [117.295507440257396, 47.69770905210742], [118.064142694166691, 48.066730455103674], [118.866574334794933, 47.747060044946153], [119.772823927897477, 47.048058783550125], [119.66326989143873, 46.692679958678909], [118.874325799638711, 46.805412095723646], [117.421701287914175, 46.672732855814253], [116.717868280098841, 46.388202419615205], [115.985096470200062, 45.727235012385989], [114.46033165899604, 45.339816799493811], [113.463906691544139, 44.808893134127111], [112.436062453258785, 45.011645616224278], [111.873306105600278, 45.102079372735055], [111.348376906379428, 44.457441718110083], [111.667737257943202, 44.073175767587706], [111.829587843881342, 43.743118394539515], [111.129682244920218, 43.406834011400136], [110.412103306115256, 42.871233628911014], [109.243595819131428, 42.519446316084093], [107.744772576937933, 42.481515814781865], [106.129315627061658, 42.134327704428898], [104.964993931093446, 41.597409572916334], [104.522281935648977, 41.908346666016541], [103.312278273534787, 41.907468166667591], [101.833040399179922, 42.51487295182627], [100.845865513108237, 42.663804429691439], [99.515817498780009, 42.524691473961717], [97.451757440177985, 42.748889675460013], [96.349395786527793, 42.725635280928678], [95.762454868556674, 43.319449164394598], [95.306875441471504, 44.241330878265458], [94.688928664125299, 44.352331854828414], [93.480733677141274, 44.975472113619951], [92.133890822318193, 45.115075995456444], [90.945539585334288, 45.286073309910265], [90.585768263718265, 45.719716091487513], [90.970809360724985, 46.888146063822923], [90.280825636763893, 47.693549099307923], [88.854297723346733, 48.06908173277295], [88.013832228551721, 48.599462795600601], [87.751264276076697, 49.297197984405479]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Mozambique\", \"name\": \"Mozambique\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[34.559989047999345, -11.520020033415923], [35.312397902169032, -11.439146416879145], [36.514081658684248, -11.720938002166733], [36.775150994622791, -11.594537448780804], [37.471284214026596, -11.568750909067157], [37.827644891111383, -11.268769219612834], [38.427556593587745, -11.285202325081654], [39.521029900883768, -10.896853936408224], [40.316588576017182, -10.317096042525696], [40.478387485523022, -10.765440769089992], [40.437253045418672, -11.761710707245014], [40.560811395028558, -12.639176527561023], [40.599620395679743, -14.201975192931858], [40.775475294768988, -14.691764418194239], [40.477250604012596, -15.406294447493968], [40.089263950365208, -16.100774021064456], [39.452558628097044, -16.720891208566936], [38.53835086442151, -17.101023044505954], [37.411132846838875, -17.586368096591233], [36.281279331209348, -18.659687595293445], [35.896496616364054, -18.842260430580634], [35.198399692533137, -19.552811374593887], [34.786383497870041, -19.784011732667732], [34.701892531072836, -20.497043145431007], [35.176127150215358, -21.254361260668407], [35.373427768705731, -21.840837090748874], [35.385848253705397, -22.14], [35.562545536369079, -22.09], [35.533934767404297, -23.070787855727751], [35.371774122872374, -23.535358982031692], [35.607470330555621, -23.706563002214676], [35.458745558419615, -24.122609958596545], [35.040734897610655, -24.478350518493798], [34.215824008935463, -24.816314385682652], [33.013210076639005, -25.357573337507731], [32.574632195777859, -25.727318210556088], [32.660363396950082, -26.148584486599443], [32.915955031065685, -26.215867201443459], [32.830120477028878, -26.74219166433619], [32.071665480281062, -26.733820082304902], [31.985779249811962, -26.29177988048022], [31.837777947728057, -25.843331801051342], [31.752408481581874, -25.484283949487406], [31.930588820124242, -24.369416599222532], [31.670397983534645, -23.658969008073861], [31.191409132621278, -22.251509698172395], [32.244988234188007, -21.116488539313689], [32.508693068173436, -20.395292250248303], [32.659743279762573, -20.30429005298231], [32.772707960752619, -19.715592136313294], [32.611994256324884, -19.419382826416268], [32.654885695127142, -18.672089939043492], [32.849860874164385, -17.979057305577175], [32.847638787575839, -16.713398125884613], [32.328238966610222, -16.392074069893749], [31.852040643040592, -16.319417006091374], [31.636498243951188, -16.071990248277881], [31.173063999157673, -15.860943698797868], [30.338954705534537, -15.880839125230242], [30.274255812305103, -15.507786960515208], [30.179481235481827, -14.796099134991525], [33.214024692525207, -13.97186003993615], [33.789700148256678, -14.451830743063068], [34.064825473778619, -14.359950046448118], [34.459633416488536, -14.613009535381421], [34.517666049952304, -15.013708591372609], [34.307291294092089, -15.478641452702592], [34.381291945134045, -16.183559665596039], [35.033810255683527, -16.801299737213089], [35.339062941231639, -16.107440280830108], [35.771904738108347, -15.896858819240721], [35.686845330555926, -14.611045830954328], [35.267956170398001, -13.887834161029563], [34.907151320136158, -13.565424899960565], [34.559989047999345, -13.579997653866872], [34.280006137841973, -12.280025323132504], [34.559989047999345, -11.520020033415923]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Mauritania\", \"name\": \"Mauritania\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-12.170750291380299, 14.616834214735503], [-12.830658331747513, 15.303691514542942], [-13.43573767745306, 16.039383042866188], [-14.099521450242175, 16.304302273010489], [-14.577347581428977, 16.598263658102805], [-15.135737270558813, 16.587282416240779], [-15.623666144258689, 16.369337063049809], [-16.120690070041928, 16.45566254319338], [-16.463098110407881, 16.135036119038457], [-16.549707810929061, 16.673892116761959], [-16.270551723688353, 17.166962795474866], [-16.146347418674846, 18.108481553616652], [-16.256883307347163, 19.096715806550304], [-16.377651129613266, 19.593817246981981], [-16.277838100641514, 20.092520656814695], [-16.536323614965465, 20.567866319251486], [-17.063423224342568, 20.99975210213082], [-16.845193650773989, 21.333323472574875], [-12.929101935263528, 21.327070624267559], [-13.118754441774708, 22.771220201096249], [-12.874221564169574, 23.284832261645171], [-11.93722449385332, 23.374594224536164], [-11.969418911171159, 25.933352769468261], [-8.687293667017398, 25.881056219988899], [-8.684399786809051, 27.395744126895998], [-4.92333736817423, 24.974574082940993], [-6.453786586930334, 24.956590684503418], [-5.971128709324247, 20.640833441647626], [-5.488522508150438, 16.325102037007962], [-5.315277268891931, 16.201853745991837], [-5.537744309908446, 15.501689764869253], [-9.550238409859388, 15.486496893775435], [-9.700255092802703, 15.264107367407359], [-10.086846482778212, 15.330485744686269], [-10.650791388379414, 15.132745876521422], [-11.349095017939502, 15.411256008358475], [-11.666078253617853, 15.388208319556295], [-11.834207526079465, 14.799096991428936], [-12.170750291380299, 14.616834214735503]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Malawi\", \"name\": \"Malawi\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[34.559989047999345, -11.520020033415923], [34.280006137841973, -12.280025323132504], [34.559989047999345, -13.579997653866872], [34.907151320136158, -13.565424899960565], [35.267956170398001, -13.887834161029563], [35.686845330555926, -14.611045830954328], [35.771904738108347, -15.896858819240721], [35.339062941231639, -16.107440280830108], [35.033810255683527, -16.801299737213089], [34.381291945134045, -16.183559665596039], [34.307291294092089, -15.478641452702592], [34.517666049952304, -15.013708591372609], [34.459633416488536, -14.613009535381421], [34.064825473778619, -14.359950046448118], [33.789700148256678, -14.451830743063068], [33.214024692525207, -13.97186003993615], [32.688165317523122, -13.712857761289273], [32.991764357237876, -12.783870537978272], [33.306422153463068, -12.435778090060214], [33.114289178201908, -11.607198174692311], [33.315310499817279, -10.796549981329695], [33.485687697083584, -10.525558770391111], [33.231387973775291, -9.676721693564799], [32.759375441221316, -9.230599053589058], [33.739729038230443, -9.417150974162722], [33.940837724096532, -9.693673841980292], [34.280006137841973, -10.159999688358402], [34.559989047999345, -11.520020033415923]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Malaysia\", \"name\": \"Malaysia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[101.075515578213299, 6.204867051615891], [101.154218784593809, 5.691384182147713], [101.814281854258013, 5.810808417174228], [102.141186964936423, 6.221636053894655], [102.371147088635212, 6.12820506431096], [102.961705356866673, 5.524495144061077], [103.381214634212142, 4.855001125503746], [103.438575474056165, 4.181605536308381], [103.332122023534851, 3.72669790284297], [103.42942874554052, 3.382868760589019], [103.502447544368877, 2.791018581550204], [103.854674106870334, 2.515454006353763], [104.247931756611479, 1.631141058759055], [104.228811476663523, 1.293048000489534], [103.519707472754433, 1.226333726400682], [102.573615350354771, 1.967115383304744], [101.39063846232915, 2.760813706875623], [101.273539666755838, 3.27029165284118], [100.69543541870668, 3.939139715994869], [100.557407668055092, 4.767280381688279], [100.19670617065772, 5.312492580583678], [100.306260207116509, 6.040561835143875], [100.085756870527078, 6.46448944745029], [100.259596388756918, 6.64282481528957], [101.075515578213299, 6.204867051615891]]], [[[118.618320754064825, 4.47820241944754], [117.882034946770162, 4.137551377779487], [117.01521447150634, 4.306094061699468], [115.86551720587677, 4.306559149590156], [115.51907840379198, 3.169238389494395], [115.134037306785231, 2.821481838386219], [114.621355422017473, 1.430688177898886], [113.805849644019531, 1.217548732911041], [112.859809198052176, 1.497790025229946], [112.380251906383648, 1.410120957846757], [111.797548455860408, 0.904441229654651], [111.159137811326559, 0.976478176269509], [110.514060907027101, 0.773131415200993], [109.830226678508836, 1.338135687664191], [109.663260125773718, 2.006466986494984], [110.396135288537039, 1.663774725751395], [111.168852980597478, 1.850636704918784], [111.370081007942076, 2.697303371588872], [111.796928338672842, 2.885896511238073], [112.995614862115247, 3.102394924324869], [113.712935418758718, 3.893509426281127], [114.204016554828399, 4.525873928236819], [114.659595981913526, 4.00763682699781], [114.869557326315373, 4.348313706881952], [115.347460972150671, 4.316636053887009], [115.405700311343594, 4.955227565933824], [115.450710483869798, 5.447729803891561], [116.220741001450961, 6.143191229675621], [116.725102980619752, 6.924771429873998], [117.129626092600461, 6.928052883324566], [117.643393182446303, 6.422166449403305], [117.689075148592337, 5.98749013918018], [118.347691278152197, 5.708695786965462], [119.181903924639926, 5.407835598162249], [119.110693800941718, 5.016128241389864], [118.439727004064082, 4.966518866389619], [118.618320754064825, 4.47820241944754]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Namibia\", \"name\": \"Namibia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[16.344976840895239, -28.576705010697697], [15.601818068105812, -27.821247247022797], [15.210472446359457, -27.09095590587404], [14.989710727608548, -26.117371921495153], [14.74321414557633, -25.392920017195376], [14.40814415859583, -23.85301401132984], [14.385716586981145, -22.656652927340687], [14.257714064194172, -22.111208184499951], [13.868642205468657, -21.699036960539974], [13.352497999737437, -20.872834161057497], [12.82684533046449, -19.673165785401661], [12.608564080463617, -19.045348809487695], [11.794918654028063, -18.069129327061912], [11.734198846085118, -17.30188933682447], [12.215461460019352, -17.11166838955808], [12.814081251688405, -16.941342868724067], [13.462362094789963, -16.971211846588769], [14.058501417709007, -17.42338062914266], [14.209706658595021, -17.353100681225715], [18.26330936043416, -17.309950860262003], [18.956186964603599, -17.789094740472255], [21.377176141045563, -17.930636488519688], [23.215048455506057, -17.52311614346598], [24.033861525170771, -17.29584319424632], [24.6823490740015, -17.35341073981947], [25.076950310982255, -17.578823337476617], [25.084443393664564, -17.661815687737366], [24.520705193792534, -17.887124932529932], [24.217364536239209, -17.889347019118485], [23.579005568137713, -18.281261081620055], [23.196858351339298, -17.869038181227783], [21.655040317478971, -18.219146010005222], [20.910641310314531, -18.252218926672018], [20.881134067475866, -21.814327080983144], [19.895457797940672, -21.849156996347865], [19.895767856534427, -24.767790215760588], [19.89473432788861, -28.461104831660769], [19.002127312911082, -28.972443129188857], [18.464899122804745, -29.045461928017271], [17.836151971109526, -28.856377862261311], [17.387497185951499, -28.783514092729774], [17.218928663815401, -28.355943291946804], [16.824017368240899, -28.082161553664466], [16.344976840895239, -28.576705010697697]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"New Caledonia\", \"name\": \"New Caledonia\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[165.779989862326346, -21.080004978115621], [166.599991489933814, -21.700018812753523], [167.120011428086883, -22.159990736583488], [166.74003462144475, -22.399976088146943], [166.189732293968632, -22.129708347260447], [165.474375441752159, -21.679606621998229], [164.829815301775653, -21.149819838141948], [164.16799523341362, -20.444746595951624], [164.029605747735957, -20.105645847252347], [164.459967075862664, -20.120011895429492], [165.020036249041993, -20.459991143477726], [165.460009393575064, -20.800022067958253], [165.779989862326346, -21.080004978115621]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Niger\", \"name\": \"Niger\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2.154473504249949, 11.940150051313422], [2.177107781593917, 12.625017808477534], [1.024103224297619, 12.851825669806598], [0.993045688490156, 13.335749620003865], [0.429927605805517, 13.988733018443893], [0.295646396495215, 14.444234930880663], [0.374892205414767, 14.928908189346144], [1.015783318698481, 14.968182277887989], [1.385528191746971, 15.323561102759237], [2.74999270998154, 15.409524847876751], [3.63825890464659, 15.56811981858044], [3.723421665063596, 16.184283759012654], [4.270209995143886, 16.852227484601311], [4.267419467800095, 19.155265204337123], [5.677565952180712, 19.601206976799794], [8.572893100629868, 21.565660712159225], [11.999505649471697, 23.471668402596432], [13.581424594790459, 23.040506089769274], [14.143870883855239, 22.491288967371126], [14.8513, 22.862950000000119], [15.096887648181847, 21.308518785074902], [15.471076694407314, 21.048457139565979], [15.487148064850143, 20.730414537025634], [15.90324669766431, 20.387618923417499], [15.68574059414777, 19.957180080642384], [15.300441114979716, 17.927949937405], [15.247731154041842, 16.627305813050778], [13.972201775781681, 15.684365953021139], [13.540393507550785, 14.36713369390122], [13.956698846094124, 13.996691189016925], [13.954476759505607, 13.353448798063765], [14.595781284247604, 13.330426947477859], [14.495787387762899, 12.859396267137353], [14.213530714584746, 12.80203542729333], [14.181336297266906, 12.483656927943169], [13.995352817448289, 12.4615652531383], [13.318701613018558, 13.55635630945795], [13.083987257548809, 13.596147162322492], [12.302071160540546, 13.037189032437535], [11.527803175511504, 13.328980007373556], [10.989593133191532, 13.387322699431191], [10.701031935273816, 13.246917832894038], [10.114814487354748, 13.277251898649464], [9.524928012743088, 12.85110219975456], [9.014933302454436, 12.826659247280414], [7.804671258178869, 13.343526923063731], [7.330746697630046, 13.098038031461213], [6.82044192874781, 13.115091254117598], [6.445426059605721, 13.492768459522718], [5.443058302440135, 13.865923977102225], [4.368343540066006, 13.747481594289408], [4.107945997747378, 13.531215725147941], [3.967282749048933, 12.956108710171574], [3.680633579125924, 12.552903347214167], [3.611180454125587, 11.660167141155965], [2.848643019226585, 12.235635891158207], [2.490163608418015, 12.233052069543588], [2.154473504249949, 11.940150051313422]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Nigeria\", \"name\": \"Nigeria\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8.500287713259693, 4.771982937026847], [7.462108188515939, 4.41210826254624], [7.082596469764438, 4.464689032403228], [6.698072137080598, 4.240594183769516], [5.898172641634686, 4.262453314628984], [5.362804803090881, 4.887970689305957], [5.033574252959368, 5.611802476418233], [4.325607130560683, 6.270651149923466], [3.574180128604552, 6.258300482605717], [2.691701694356254, 6.258817246928628], [2.74906253420022, 7.870734361192886], [2.723792758809509, 8.506845404489708], [2.912308383810255, 9.13760793704432], [3.220351596702101, 9.4441525333997], [3.705438266625918, 10.063210354040207], [3.600070021182801, 10.332186184119406], [3.797112257511713, 10.734745591673104], [3.572216424177469, 11.327939357951516], [3.611180454125558, 11.660167141155966], [3.68063357912581, 12.552903347214222], [3.967282749048848, 12.956108710171572], [4.107945997747321, 13.531215725147829], [4.368343540066063, 13.747481594289324], [5.443058302440163, 13.865923977102295], [6.445426059605636, 13.492768459522676], [6.820441928747753, 13.115091254117514], [7.330746697630017, 13.098038031461199], [7.804671258178784, 13.343526923063745], [9.014933302454462, 12.826659247280427], [9.524928012742945, 12.851102199754477], [10.114814487354689, 13.277251898649409], [10.701031935273702, 13.246917832894081], [10.989593133191532, 13.387322699431108], [11.527803175511393, 13.328980007373584], [12.302071160540521, 13.037189032437521], [13.083987257548866, 13.596147162322563], [13.318701613018558, 13.556356309457824], [13.995352817448346, 12.461565253138343], [14.181336297266792, 12.483656927943112], [14.57717776862253, 12.085360826053501], [14.468192172918974, 11.90475169519341], [14.415378859116682, 11.572368882692071], [13.572949659894558, 10.798565985553564], [13.308676385153914, 10.160362046748926], [13.1675997249971, 9.64062632897341], [12.955467970438971, 9.417771714714702], [12.753671502339214, 8.717762762888993], [12.218872104550597, 8.305824082874322], [12.063946160539556, 7.799808457872301], [11.839308709366801, 7.397042344589434], [11.745774366918509, 6.981382961449753], [11.058787876030349, 6.644426784690593], [10.497375115611417, 7.055357774275562], [10.118276808318255, 7.038769639509879], [9.522705926154398, 6.453482367372116], [9.233162876023043, 6.444490668153334], [8.757532993208626, 5.47966583904791], [8.500287713259693, 4.771982937026847]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Nicaragua\", \"name\": \"Nicaragua\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-85.712540452807289, 11.088444932494822], [-86.058488328785245, 11.40343862552994], [-86.525849982432931, 11.806876532432593], [-86.7459915839963, 12.143961900272483], [-87.167516242201131, 12.458257961471656], [-87.668493415054698, 12.909909979702629], [-87.557466600275603, 13.064551703336061], [-87.392386237319201, 12.914018256069836], [-87.316654425795463, 12.984685777228972], [-87.005769009127562, 13.025794379117157], [-86.880557013684339, 13.254204209847241], [-86.733821784191576, 13.263092556201441], [-86.755086636079696, 13.754845485890909], [-86.520708177419877, 13.778487453664436], [-86.312142096689911, 13.771356106008167], [-86.096263800790581, 14.038187364147245], [-85.801294725268576, 13.836054999237586], [-85.698665330736901, 13.960078436738083], [-85.514413011400222, 14.079011745657834], [-85.165364549484792, 14.354369615125076], [-85.148750576502948, 14.560196844943615], [-85.052787441736925, 14.551541042534719], [-84.924500698572388, 14.790492865452348], [-84.820036790694346, 14.819586696832669], [-84.649582078779602, 14.66680532476175], [-84.449335903648588, 14.621614284722494], [-84.228341640952394, 14.748764146376654], [-83.975721401693576, 14.749435939996458], [-83.628584967772895, 14.880073960830298], [-83.489988776366104, 15.016267198135534], [-83.147219000974104, 14.995829169164109], [-83.233234422523907, 14.8998660343981], [-83.28416154654758, 14.676623846897197], [-83.182126430987267, 14.310703029838447], [-83.412499966144424, 13.970077826386554], [-83.519831916014667, 13.56769928634588], [-83.55220720084553, 13.127054348193084], [-83.498515387694255, 12.869292303921226], [-83.473323126951968, 12.419087225794424], [-83.626104499022887, 12.320850328007563], [-83.719613003255034, 11.893124497927724], [-83.650857510090702, 11.629032090700116], [-83.855470343750369, 11.373311265503785], [-83.808935716471538, 11.103043524617274], [-83.655611741861563, 10.938764146361418], [-83.895054490885926, 10.726839097532444], [-84.190178595704822, 10.793450018756671], [-84.355930752281026, 10.999225572142901], [-84.673069017256239, 11.082657172078139], [-84.903003302738924, 10.952303371621895], [-85.561851976244171, 11.217119248901593], [-85.712540452807289, 11.088444932494822]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Netherlands\", \"name\": \"Netherlands\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6.074182570020922, 53.51040334737813], [6.905139601274128, 53.482162177130633], [7.092053256873895, 53.14404328064488], [6.842869500362381, 52.228440253297542], [6.589396599970825, 51.85202912048338], [5.988658074577812, 51.85161570902504], [6.156658155958779, 50.803721015010574], [5.60697594567, 51.037298488969768], [4.973991326526913, 51.475023708698124], [4.047071160507527, 51.267258612668556], [3.314971144228536, 51.345755113319903], [3.830288527043137, 51.620544542031936], [4.705997348661184, 53.091798407597757], [6.074182570020922, 53.51040334737813]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Norway\", \"name\": \"Norway\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[28.165547316202911, 71.185474351680497], [31.293418409965472, 70.453787746859902], [30.005435011522785, 70.186258856884876], [31.101078728975118, 69.558080145944857], [29.399580519332879, 69.156916002063056], [28.591929559043187, 69.064776923286686], [29.015572950971968, 69.76649119737796], [27.732292107867885, 70.164193020296281], [26.179622023226298, 69.825298977326142], [25.689212680776389, 69.092113755968995], [24.735679152126714, 68.649556789821432], [23.662049594830759, 68.891247463650515], [22.356237827247405, 68.841741441514941], [21.244936150810723, 69.370443020293109], [20.645592889089581, 69.106247260200846], [20.02526899585791, 69.065138658312705], [19.878559604581248, 68.407194322372604], [17.993868442464386, 68.567391262477329], [17.729181756265344, 68.01055186631622], [16.768878614985535, 68.013936672631374], [16.108712192456832, 67.302455552836889], [15.108411492583055, 66.193866889095418], [13.555689731509087, 64.787027696381458], [13.919905226302202, 64.445420640716108], [13.571916131248766, 64.049114081469654], [12.57993533697393, 64.066218980558332], [11.930569288794228, 63.128317572676977], [11.992064243221531, 61.800362453856557], [12.63114668137524, 61.293571682370079], [12.300365838274896, 60.117932847730046], [11.468271925511173, 59.432393296945989], [11.027368605196925, 58.856149400459394], [10.356556837616095, 59.469807033925363], [8.382000359743641, 58.313288479233265], [7.048748406613297, 58.078884182357271], [5.665835402050418, 58.588155422593658], [5.308234490590733, 59.663231919993805], [4.992078077829005, 61.97099803328426], [5.912900424837885, 62.614472968182682], [8.553411085655766, 63.454008287196459], [10.527709181366784, 64.486038316497471], [12.358346795306371, 65.879725857193151], [14.7611458675816, 67.810641587995121], [16.435927361728968, 68.563205471461671], [19.184028354578512, 69.817444159617807], [21.378416375420606, 70.255169379346043], [23.02374230316158, 70.202071845166259], [24.546543409938515, 71.030496731237221], [26.370049676221807, 70.986261705195361], [28.165547316202911, 71.185474351680497]]], [[[24.72412, 77.85385], [22.49032, 77.44493], [20.72601, 77.67704], [21.41611, 77.93504], [20.8119, 78.25463], [22.88426, 78.45494], [23.28134, 78.07954], [24.72412, 77.85385]]], [[[18.25183, 79.70175], [21.54383, 78.95611], [19.02737, 78.5626], [18.47172, 77.82669], [17.59441, 77.63796], [17.1182, 76.80941], [15.91315, 76.77045], [13.76259, 77.38035], [14.66956, 77.73565], [13.1706, 78.02493], [11.22231, 78.8693], [10.44453, 79.65239], [13.17077, 80.01046], [13.71852, 79.66039], [15.14282, 79.67431], [15.52255, 80.01608], [16.99085, 80.05086], [18.25183, 79.70175]]], [[[25.447625359811887, 80.407340399894494], [27.407505730913492, 80.056405748200447], [25.924650506298171, 79.517833970854539], [23.024465773213613, 79.40001170522909], [20.075188429451877, 79.566823228667232], [19.897266473070907, 79.842361965647498], [18.46226362475792, 79.859880276194403], [17.368015170977454, 80.318896186027004], [20.455992059010693, 80.598155626132225], [21.907944777115397, 80.357679348462071], [22.919252557067431, 80.657144273593488], [25.447625359811887, 80.407340399894494]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Nepal\", \"name\": \"Nepal\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[88.120440708369841, 27.876541652939586], [88.043132765661198, 27.445818589786818], [88.174804315140904, 26.810405178325944], [88.060237664749806, 26.414615383402484], [87.22747195836628, 26.39789805755607], [86.024392938179147, 26.630984605408567], [85.25177859898335, 26.726198431906337], [84.675017938173767, 27.234901231387528], [83.304248895199535, 27.364505723575554], [81.999987420584958, 27.925479234319987], [81.057202589851997, 28.416095282499036], [80.088424513676259, 28.794470119740136], [80.476721225917373, 29.729865220655334], [81.11125613802929, 30.183480943313398], [81.525804477874729, 30.422716986608627], [82.327512648450863, 30.115268052688126], [83.337115106137176, 29.463731594352193], [83.898992954446712, 29.320226141877654], [84.234579705750136, 28.839893703724691], [85.011638218123025, 28.642773952747337], [85.823319940131498, 28.203575954698699], [86.954517043000592, 27.97426178640351], [88.120440708369841, 27.876541652939586]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"New Zealand\", \"name\": \"New Zealand\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[173.020374790740703, -40.919052422856417], [173.247234328502003, -41.331998793300777], [173.958405389702875, -40.926700534835604], [174.2475867048081, -41.349155368821663], [174.248516880589449, -41.770008233406749], [173.876446568087886, -42.233184096038819], [173.222739699595621, -42.970038344088557], [172.711246372770717, -43.372287693048492], [173.080112746470206, -43.853343601253577], [172.308583612352464, -43.865694268571332], [171.452925246463622, -44.24251881284372], [171.185137974327233, -44.897104180684885], [170.616697219116588, -45.908928724959701], [169.83142215400926, -46.355774834987585], [169.332331170934253, -46.641235446967848], [168.411353794628525, -46.619944756863582], [167.763744745146823, -46.290197442409195], [166.676886021184202, -46.219917494492236], [166.509144321964669, -45.852704766626204], [167.046424188503238, -45.110941257508664], [168.303763462596862, -44.12397307716612], [168.949408807651508, -43.93581918719142], [169.667814569373149, -43.555325616226334], [170.524919875366152, -43.031688327812823], [171.125089960004004, -42.512753594737781], [171.569713983443194, -41.767424411792128], [171.948708937871885, -41.514416599291145], [172.097227004278722, -40.956104424809674], [172.798579543343948, -40.493962090823466], [173.020374790740703, -40.919052422856417]]], [[[174.612008905330526, -36.156397393540537], [175.336615838927173, -37.209097995758263], [175.3575964704375, -36.52619394302112], [175.808886753642469, -36.798942152657681], [175.958490025127475, -37.555381768546063], [176.763195428776555, -37.881253350578696], [177.438813104560495, -37.961248467766488], [178.010354445708657, -37.579824721020124], [178.517093540762801, -37.695373223624792], [178.274731073313802, -38.582812595373092], [177.970460239979332, -39.166342868812968], [177.206992629299123, -39.145775648760839], [176.939980503647007, -39.449736423501562], [177.032946405340113, -39.879942722331471], [176.8858236026052, -40.06597787858216], [176.508017206119348, -40.60480803808958], [176.012440220440283, -41.289624118821493], [175.239567499082966, -41.688307793953236], [175.067898391009408, -41.425894870775075], [174.650972935278418, -41.281820977545443], [175.227630243223615, -40.459235528323397], [174.900156691789959, -39.908933200847216], [173.824046665743992, -39.508854262043506], [173.852261997775315, -39.146602471677461], [174.57480187408035, -38.797683200842748], [174.743473749081033, -38.027807712558378], [174.69701663645057, -37.381128838857954], [174.292028436579187, -36.71109221776144], [174.319003534235549, -36.534823907213884], [173.840996535535766, -36.121980889634109], [173.05417117745958, -35.237125339500331], [172.636005487353714, -34.529106540669382], [173.007042271209457, -34.450661716450334], [173.551298456107475, -35.006183363587958], [174.329390497126241, -35.265495700828616], [174.612008905330526, -36.156397393540537]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Oman\", \"name\": \"Oman\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[58.861141391846573, 21.114034532144299], [58.487985874266961, 20.428985907467101], [58.03431847517659, 20.481437486243347], [57.826372511634098, 20.24300242764863], [57.66576216007094, 19.736004950433109], [57.788700392493368, 19.067570298737646], [57.694390903560667, 18.944709580963799], [57.2342639504338, 18.947991034414255], [56.609650913321971, 18.574267076079476], [56.512189162019482, 18.087113348863934], [56.283520949128011, 17.876066799383945], [55.661491733630683, 17.884128322821535], [55.269939406155189, 17.632309068263194], [55.274900343655091, 17.228354397037659], [54.791002231674113, 16.950696926333357], [54.239252964093751, 17.04498057704998], [53.57050825380459, 16.707662665264674], [53.108572625547502, 16.651051133688977], [52.782184279192066, 17.349742336491229], [52.000009800022227, 19.000003363516068], [54.999981723862405, 19.999994004796118], [55.666659376859869, 22.000001125572307], [55.208341098863187, 22.708329982997007], [55.234489373602869, 23.110992743415348], [55.52584109886449, 23.524869289640911], [55.528631626208288, 23.933604030853498], [55.981213820220503, 24.130542914317854], [55.80411868675624, 24.269604193615287], [55.88623253766805, 24.920830593357486], [56.396847365143984, 24.924732163995508], [56.845140415276049, 24.241673081961487], [57.403452589757428, 23.878594468678834], [58.136947869708322, 23.747930609628835], [58.729211460205427, 23.565667832935414], [59.180501743410346, 22.992395331305456], [59.450097690677033, 22.660270900965592], [59.80806033716285, 22.533611965418199], [59.806148309168087, 22.31052480721419], [59.442191196536399, 21.71454051359208], [59.282407667889871, 21.433885809814875], [58.861141391846573, 21.114034532144299]]], [[[56.391421339753393, 25.895990708921254], [56.261041701080913, 25.714606431576748], [56.070820753814544, 26.055464178973946], [56.362017449779344, 26.395934353128947], [56.485679152253809, 26.309117946878665], [56.391421339753393, 25.895990708921254]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Pakistan\", \"name\": \"Pakistan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[75.158027785140902, 37.13303091078911], [75.896897414050116, 36.666806138651829], [76.192848341785677, 35.898403428687821], [77.837450799474553, 35.494009507787759], [76.871721632804011, 34.653544012992732], [75.757060988268321, 34.504922593721311], [74.240202671204955, 34.748887030571247], [73.749948358051952, 34.317698879527846], [74.104293654277328, 33.441473293586846], [74.451559279278698, 32.764899603805489], [75.258641798813187, 32.271105455040491], [74.405928989564998, 31.692639471965272], [74.421380242820263, 30.97981476493117], [73.450638462217412, 29.976413479119863], [72.823751662084689, 28.961591701772047], [71.777665643200308, 27.913180243434521], [70.61649620960192, 27.989196275335861], [69.514392938113119, 26.940965684511365], [70.168926629522005, 26.491871649678835], [70.282873162725579, 25.722228705339823], [70.844699334602822, 25.215102037043511], [71.0432401874682, 24.356523952730193], [68.842599318318761, 24.359133612560932], [68.176645135373377, 23.691965033456704], [67.443666619745457, 23.944843654876983], [67.145441928989058, 24.663611151624639], [66.37282758979326, 25.425140896093847], [64.530407749291115, 25.237038682551425], [62.905700718034595, 25.218409328710202], [61.497362908784183, 25.078237006118492], [61.874187453056535, 26.239974880472097], [63.316631707619578, 26.756532497661659], [63.23389773952028, 27.217047024030702], [62.755425652929851, 27.378923448184985], [62.727830438085974, 28.259644883735383], [61.771868117118615, 28.699333807890792], [61.369308709564926, 29.303276272085917], [60.874248488208778, 29.829238999952604], [62.549856805272775, 29.318572496044304], [63.550260858011164, 29.468330796826162], [64.148002150331237, 29.340819200145965], [64.350418735618504, 29.560030625928089], [65.046862013616092, 29.472180691031902], [66.346472609324408, 29.88794342703617], [66.38145755398601, 30.738899237586448], [66.938891229118454, 31.304911200479346], [67.683393589147457, 31.303154201781414], [67.792689243444769, 31.582930406209623], [68.556932000609308, 31.713310044882011], [68.926676873657655, 31.620189113892064], [69.317764113242546, 31.901412258424436], [69.262522007122541, 32.501944078088293], [69.687147251264847, 33.105498969041228], [70.323594191371583, 33.358532619758385], [69.93054324735958, 34.020120144175102], [70.881803012988385, 33.988855902638512], [71.156773309213449, 34.348911444632144], [71.115018751921625, 34.733125718722228], [71.613076206350698, 35.153203436822857], [71.498767938121077, 35.650563259415996], [71.262348260385735, 36.074387518857797], [71.846291945283909, 36.509942328429851], [72.920024855444453, 36.720007025696312], [74.067551710917812, 36.836175645488446], [74.575892775372964, 37.02084137628345], [75.158027785140902, 37.13303091078911]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Panama\", \"name\": \"Panama\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-77.881571417945239, 7.223771267114783], [-78.214936082660103, 7.512254950384159], [-78.429160732726061, 8.052041123888925], [-78.182095709938608, 8.319182440621772], [-78.43546525746568, 8.387705389840788], [-78.622120530903928, 8.718124497915026], [-79.120307176413732, 8.996092027213022], [-79.557877366845176, 8.932374986197145], [-79.760578172510037, 8.584515082224398], [-80.164481167303322, 8.333315944853593], [-80.382659064439608, 8.29840851484043], [-80.480689256497286, 8.090307522001067], [-80.003689948227148, 7.54752411542337], [-80.276670701808982, 7.419754136581713], [-80.421158006497066, 7.271571966984763], [-80.886400926420791, 7.220541490096535], [-81.059542812814698, 7.817921047390596], [-81.189715745757937, 7.647905585150339], [-81.519514736644666, 7.706610012233908], [-81.721311204744453, 8.108962714058434], [-82.131441209628889, 8.175392767769635], [-82.390934414382542, 8.292362372262287], [-82.820081346350406, 8.290863755725821], [-82.850958014644803, 8.073822740099954], [-82.965783047197348, 8.225027980985983], [-82.9131764391242, 8.423517157419068], [-82.829770677405151, 8.626295477732368], [-82.868657192704759, 8.807266343618521], [-82.719183112300513, 8.925708726431493], [-82.927154914059145, 9.074330145702914], [-82.932890998043561, 9.476812038608172], [-82.546196255203469, 9.566134751824674], [-82.187122565423394, 9.207448635286779], [-82.207586432610952, 8.995575262890098], [-81.808566860669259, 8.95061676679617], [-81.714154018872023, 9.031955471223581], [-81.43928707551153, 8.786234035675715], [-80.947301601876745, 8.858503526235905], [-80.521901211250054, 9.11107208906243], [-79.914599778955974, 9.312765204297618], [-79.573302781884294, 9.611610012241526], [-79.021191779277913, 9.552931423374103], [-79.058450486960353, 9.454565334506523], [-78.500887620747164, 9.420458889193879], [-78.055927700497989, 9.247730414258296], [-77.729513515926399, 8.946844387238867], [-77.353360765273848, 8.670504665558068], [-77.474722866511314, 8.524286200388216], [-77.242566494440069, 7.935278225125442], [-77.431107957656977, 7.638061224798733], [-77.75341386586139, 7.709839789252141], [-77.881571417945239, 7.223771267114783]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Peru\", \"name\": \"Peru\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-69.590423753524036, -17.580011895419329], [-69.858443569605839, -18.092693780187009], [-70.3725723944777, -18.347975355708861], [-71.375250210236914, -17.77379851651385], [-71.462040778271117, -17.363487644116379], [-73.444529588500401, -16.359362888252992], [-75.23788265654143, -15.26568287522778], [-76.009205084929931, -14.649286390850317], [-76.423469204397733, -13.823186944232431], [-76.259241502574156, -13.535039157772939], [-77.10619238962181, -12.222716159720816], [-78.092152879534623, -10.377712497604062], [-79.036953091126918, -8.38656788496589], [-79.445920376284832, -7.930833428583859], [-79.760578172510037, -7.194340915560081], [-80.537481655586049, -6.541667575713715], [-81.249996304026411, -6.136834405139182], [-80.926346808582423, -5.690556735866563], [-81.410942552399433, -4.736764825055459], [-81.099669562489353, -4.036394138203696], [-80.302560594387188, -3.404856459164712], [-80.184014858709645, -3.821161797708043], [-80.46929460317692, -4.059286797708999], [-80.442241990872134, -4.425724379090673], [-80.028908047185581, -4.346090996928893], [-79.62497921417615, -4.454198093283494], [-79.205289069317715, -4.959128513207388], [-78.639897223612323, -4.547784112164072], [-78.450683966775628, -3.873096612161375], [-77.83790483265858, -3.003020521663103], [-76.635394253226707, -2.608677666843817], [-75.544995693652027, -1.56160979574588], [-75.233722703741932, -0.911416924649529], [-75.373223232713841, -0.15203175212045], [-75.106624518520064, -0.05720549886486], [-74.441600511355958, -0.530820000819887], [-74.122395189089048, -1.002832533373848], [-73.659503546834586, -1.260491224781134], [-73.070392218707212, -2.308954359550952], [-72.325786505813639, -2.434218031426453], [-71.774760708285385, -2.169789727388937], [-71.413645799429773, -2.342802422702128], [-70.813475714791949, -2.256864515800742], [-70.047708502874841, -2.725156345229699], [-70.692682054309699, -3.742872002785858], [-70.394043952094975, -3.766591485207825], [-69.893635219996611, -4.298186944194326], [-70.79476884630229, -4.251264743673302], [-70.928843349883564, -4.401591485210367], [-71.748405727816532, -4.59398284263301], [-72.891927659787243, -5.274561455916979], [-72.964507208941185, -5.741251315944892], [-73.219711269814596, -6.089188734566076], [-73.120027431923575, -6.629930922068238], [-73.724486660441627, -6.918595472850638], [-73.723401455363486, -7.340998630404412], [-73.987235480429646, -7.523829847853063], [-73.571059332967053, -8.424446709835832], [-73.015382656532537, -9.03283334720806], [-73.226713426390148, -9.462212823121233], [-72.563033006465631, -9.520193780152715], [-72.184890713169821, -10.05359791426943], [-71.302412278921523, -10.079436130415372], [-70.481893886991159, -9.490118096558842], [-70.548685675728393, -11.009146823778462], [-70.093752204046879, -11.123971856331011], [-69.52967810736493, -10.951734307502193], [-68.665079718689611, -12.561300144097171], [-68.880079515239956, -12.89972909917665], [-68.929223802349526, -13.602683607643007], [-68.94888668483658, -14.45363941819328], [-69.339534674747, -14.953195489158828], [-69.160346645774936, -15.323973890853015], [-69.389764166934697, -15.66012908291165], [-68.959635382753291, -16.500697930571267], [-69.590423753524036, -17.580011895419329]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Philippines\", \"name\": \"Philippines\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[126.376813592637447, 8.414706325713352], [126.478512811387873, 7.750354112168976], [126.537423944200611, 7.189380601424572], [126.19677290253253, 6.274294338400038], [125.831420526229081, 7.293715318221855], [125.363852166852283, 6.78648529706099], [125.683160841983707, 6.049656887227257], [125.396511672060626, 5.581003322772288], [124.219787632342332, 6.16135549562618], [123.938719517106918, 6.88513560630612], [124.243662144061318, 7.360610459823659], [123.610212437027542, 7.833527329942753], [123.29607140512519, 7.418875637232786], [122.825505812675388, 7.457374579290216], [122.085499302255769, 6.899424139834847], [121.919928013192603, 7.192119452336072], [122.312358840017112, 8.034962063016506], [122.94239790251963, 8.316236883981174], [123.487687616063511, 8.693009751821192], [123.841154412939815, 8.240324204944384], [124.6014697612502, 8.514157619659015], [124.764612257995623, 8.960409450715458], [125.471390822451539, 8.986996975129641], [125.412117954612754, 9.760334784377545], [126.222714471543156, 9.28607432701885], [126.306636997585073, 8.782487494334573], [126.376813592637447, 8.414706325713352]]], [[[123.982437778825798, 10.278778591345811], [123.62318322153277, 9.950090643753297], [123.309920688979332, 9.318268744336676], [122.995883009941636, 9.022188625520398], [122.380054966319463, 9.713360907424201], [122.586088901867072, 9.981044826696104], [122.837081333508706, 10.261156927934234], [122.947410516451896, 10.881868394408029], [123.498849725438447, 10.940624497923945], [123.337774285984722, 10.267383938025445], [124.077935825701218, 11.232725531453706], [123.982437778825798, 10.278778591345811]]], [[[118.504580926590336, 9.316382554558087], [117.174274530100675, 8.367499904814663], [117.664477166821371, 9.066888739452933], [118.386913690261736, 9.684499619989223], [118.98734215706105, 10.376292019080507], [119.511496209797528, 11.36966807702721], [119.689676548339889, 10.554291490109872], [119.029458449378978, 10.003653265823869], [118.504580926590336, 9.316382554558087]]], [[[121.883547804859106, 11.891755072471977], [122.483821242361458, 11.582187404827506], [123.120216506035959, 11.583660183147867], [123.100837843926442, 11.165933742716486], [122.637713657726692, 10.741308498574226], [122.002610304859559, 10.441016750526087], [121.967366978036523, 10.905691229694622], [122.038370396005519, 11.415840969280039], [121.883547804859106, 11.891755072471977]]], [[[125.502551711123488, 12.162694606978347], [125.783464797062152, 11.046121934447767], [125.01188398651226, 11.311454576050377], [125.032761265158115, 10.975816148314703], [125.277449172060244, 10.358722032101308], [124.801819289245714, 10.134678859899889], [124.760168084818474, 10.8379951033923], [124.459101190286049, 10.889929917845633], [124.302521600441722, 11.495370998577227], [124.891012811381572, 11.415582587118589], [124.877990350443952, 11.794189968304988], [124.266761509295705, 12.557760931849682], [125.22711632700782, 12.53572093347719], [125.502551711123488, 12.162694606978347]]], [[[121.527393833503481, 13.069590155484516], [121.262190382981544, 12.2055602075644], [120.833896112146533, 12.704496161342416], [120.323436313967477, 13.466413479053866], [121.18012820850214, 13.429697373910439], [121.527393833503481, 13.069590155484516]]], [[[121.321308221523566, 18.504064642811013], [121.937601353036371, 18.21855235439838], [122.246006300954264, 18.478949896717094], [122.336956821787965, 18.224882717354173], [122.174279412933174, 17.810282701076371], [122.51565392465335, 17.09350474697197], [122.252310825693883, 16.262444362854122], [121.662786086108255, 15.931017564350125], [121.505069614753367, 15.124813544164621], [121.728828566577249, 14.328376369682244], [122.258925409027313, 14.218202216035973], [122.701275669445636, 14.336541245984417], [123.950295037940236, 13.782130642141066], [123.855107049658599, 13.237771104378464], [124.181288690284873, 12.997527370653469], [124.077419061378222, 12.536676947474573], [123.298035109552245, 13.027525539598981], [122.928651971529902, 13.552919826710404], [122.671355015148663, 13.185836289925131], [122.034649692880521, 13.784481919810343], [121.126384718918587, 13.636687323455559], [120.628637323083296, 13.857655747935649], [120.679383579593832, 14.271015529838319], [120.99181928923052, 14.525392767795079], [120.693336216312687, 14.756670640517282], [120.564145135582976, 14.396279201713821], [120.070428501466367, 14.970869452367094], [119.920928582846102, 15.406346747290735], [119.883773228028247, 16.363704331929963], [120.286487664878791, 16.034628811095327], [120.39004723519173, 17.599081122299506], [120.7158671407919, 18.505227362537536], [121.321308221523566, 18.504064642811013]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Papua New Guinea\", \"name\": \"Papua New Guinea\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[155.880025669578401, -6.819996840037758], [155.599991082988765, -6.919990736522491], [155.166994256815087, -6.535931491729299], [154.729191522438327, -5.900828138862208], [154.514114211239644, -5.139117526880012], [154.652503696917336, -5.042430922061839], [154.759990676084357, -5.339983819198493], [155.062917922179338, -5.566791680527486], [155.547746209941693, -6.200654799019658], [156.019965448224752, -6.540013929880386], [155.880025669578401, -6.819996840037758]]], [[[151.982795851854462, -5.478063246282344], [151.459106887008659, -5.560280450058739], [151.301390415653884, -5.840728448106701], [150.754447056276661, -6.083762709175387], [150.241196730753813, -6.317753594592984], [149.709963006793316, -6.316513360218051], [148.890064732050462, -6.026040134305432], [148.318936802360696, -5.74714242922613], [148.401825799756864, -5.437755629094722], [149.298411900020824, -5.583741550319216], [149.845561965127217, -5.505503431829339], [149.996250441690279, -5.026101169457674], [150.139755894164921, -5.001348158389788], [150.236907586873485, -5.53222014732428], [150.807467075808063, -5.455842380396886], [151.089672072553981, -5.113692722192368], [151.647880894170811, -4.757073662946168], [151.537861769821518, -4.167807305521889], [152.136791620084352, -4.148790378438519], [152.338743117480988, -4.31296640382976], [152.318692661751754, -4.867661228050748], [151.982795851854462, -5.478063246282344]]], [[[147.191873814074938, -7.388024183789978], [148.084635858349372, -8.044108168167609], [148.734105259393573, -9.104663588093755], [149.306835158484432, -9.071435642130067], [149.266630894161324, -9.514406019736027], [150.038728469034311, -9.684318129111698], [149.738798456012262, -9.872937106977002], [150.801627638959133, -10.29368661869742], [150.690574985963849, -10.582712904505865], [150.028393182575826, -10.652476088099929], [149.782310012001972, -10.393267103723941], [148.923137648717216, -10.28092253992136], [147.913018426707993, -10.130440769087469], [147.135443150012236, -9.492443536012017], [146.567880894150619, -8.942554619994153], [146.048481073184917, -8.067414239131308], [144.74416792213799, -7.630128269077473], [143.897087844009661, -7.915330498896279], [143.286375767184268, -8.245491224809056], [143.413913202080664, -8.983068942910945], [142.628431431244223, -9.326820570516501], [142.068258905200196, -9.159595635620034], [141.033851760013874, -9.117892754760417], [141.017056919519007, -5.85902190513802], [141.000210402591847, -2.600151055515624], [142.735246616791443, -3.289152927263216], [144.583970982033236, -3.861417738463401], [145.27317955950997, -4.373737888205027], [145.829786411725649, -4.876497897972683], [145.981921828392956, -5.465609226100012], [147.648073358347574, -6.083659356310803], [147.891107619416175, -6.614014580922315], [146.970905389594861, -6.721656589386255], [147.191873814074938, -7.388024183789978]]], [[[153.14003787659874, -4.499983412294113], [152.827292108368255, -4.766427097190998], [152.63867313050298, -4.176127211120927], [152.406025832324929, -3.789742526874561], [151.953236932583536, -3.462062269711821], [151.384279413050024, -3.035421644710111], [150.6620495953388, -2.741486097833956], [150.939965448204532, -2.500002129734028], [151.479984165654514, -2.779985039891386], [151.820015090135087, -2.999971612157907], [152.239989455371074, -3.24000864015366], [152.640016717742526, -3.659983005389647], [153.019993524384631, -3.980015150573293], [153.14003787659874, -4.499983412294113]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Poland\", \"name\": \"Poland\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[15.016995883858666, 51.106674099321566], [14.607098422919531, 51.745188096719964], [14.685026482815685, 52.089947414755187], [14.437599725002197, 52.624850165408382], [14.074521111719488, 52.981262518925426], [14.353315463934136, 53.248171291712957], [14.119686313542584, 53.757029120491026], [14.802900424873455, 54.050706285205735], [16.363477003655728, 54.513158677785711], [17.622831658608671, 54.851535956432897], [18.620858595461637, 54.682605699270766], [18.696254510175461, 54.438718777069276], [19.6606400896064, 54.426083889373913], [20.89224450041862, 54.312524929412518], [22.731098667092649, 54.327536932993311], [23.243987257589506, 54.220566718149129], [23.484127638449841, 53.912497667041123], [23.527535841574995, 53.47012156840654], [23.804934930117774, 53.08973135030606], [23.799198846133375, 52.691099351606553], [23.19949384938618, 52.486977444053664], [23.508002150168689, 52.023646552124717], [23.52707075368437, 51.578454087930233], [24.029985792748899, 50.705406602575174], [23.922757195743259, 50.424881089878738], [23.426508416444388, 50.308505764357449], [22.518450148211596, 49.476773586619736], [22.776418898212619, 49.027395331409608], [22.558137648211751, 49.08573802346713], [21.607808058364206, 49.470107326854077], [20.887955356538406, 49.328772284535823], [20.415839471119849, 49.431453355499755], [19.825022820726865, 49.217125352569219], [19.320712517990469, 49.571574001659179], [18.909574822676316, 49.435845852244562], [18.85314415861361, 49.496229763377634], [18.392913852622168, 49.988628648470737], [17.649445021238986, 50.049038397819942], [17.554567091551117, 50.36214590107641], [16.868769158605655, 50.473973700556016], [16.719475945714429, 50.215746568393527], [16.176253289462263, 50.4226073268579], [16.238626743238566, 50.697732652379827], [15.490972120839725, 50.7847299261432], [15.016995883858666, 51.106674099321566]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Puerto Rico\", \"name\": \"Puerto Rico\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-66.2824344550082, 18.51476166429536], [-65.771302863209286, 18.426679185453875], [-65.591003790942935, 18.228034979723912], [-65.847163865813755, 17.975905666571855], [-66.599934455009475, 17.98182261806927], [-67.184162360285256, 17.946553453030074], [-67.24242753769434, 18.374460150622934], [-67.100679083917726, 18.520601101144347], [-66.2824344550082, 18.51476166429536]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"North Korea\", \"name\": \"Dem. Rep. Korea\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[130.640015903852401, 42.39500946712527], [130.780007358931101, 42.220007229168843], [130.400030552288996, 42.280003567059701], [129.965948521037234, 41.941367906251052], [129.667362095254788, 41.601104437825221], [129.705189243692445, 40.882827867184318], [129.188114862179958, 40.661807766271984], [129.010399611528186, 40.485436102859801], [128.633368361526692, 40.189846910150301], [127.967414178581322, 40.025412502597547], [127.533435500194145, 39.756850083976694], [127.502119582225276, 39.323930772451526], [127.385434198110261, 39.213472398427648], [127.783342726757709, 39.050898342437414], [128.349716424676586, 38.612242946927843], [128.205745884311426, 38.370397243801882], [127.780035435090966, 38.304535630845884], [127.073308547067342, 38.256114813788393], [126.683719924018888, 37.804772854151174], [126.237338901881742, 37.840377916000271], [126.174758742376213, 37.749685777328033], [125.689103631697165, 37.940010077459014], [125.568439162295675, 37.752088731429616], [125.275330438336184, 37.66907054295271], [125.24008711151312, 37.857224432927424], [124.981033156433952, 37.948820909164773], [124.712160679219352, 38.108346055649783], [124.985994093933954, 38.548474229479673], [125.221948683778677, 38.665857245430665], [125.13285851450749, 38.848559271798578], [125.386589797060566, 39.387957872061158], [125.321115757346774, 39.551384589184202], [124.737482131042384, 39.660344346671614], [124.265624627785286, 39.928493353834149], [125.079941847840615, 40.569823716792442], [126.182045119329402, 41.107336127276362], [126.86908328664984, 41.816569322266176], [127.343782993682993, 41.50315176041596], [128.208433058790632, 41.466771552082477], [128.052215203972281, 41.994284572917934], [129.59666873587949, 42.424981797854542], [129.994267205933198, 42.985386867843779], [130.640015903852401, 42.39500946712527]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Portugal\", \"name\": \"Portugal\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-9.034817674180244, 41.880570583659669], [-8.671945766626719, 42.134689439454952], [-8.26385698081779, 42.280468654950326], [-8.01317460776991, 41.790886135417118], [-7.422512986673794, 41.792074693359822], [-7.251308966490822, 41.91834605566504], [-6.668605515967655, 41.883386949219577], [-6.389087693700914, 41.381815497394641], [-6.851126674822551, 41.111082668617513], [-6.864019944679383, 40.330871893874821], [-7.026413133156593, 40.184524237624238], [-7.066591559263527, 39.711891587882768], [-7.498632371439724, 39.629571031241802], [-7.098036668313126, 39.03007274022378], [-7.374092169616317, 38.373058580064914], [-7.029281175148794, 38.075764065089757], [-7.166507941099863, 37.803894354802217], [-7.537105475281022, 37.428904323876232], [-7.45372555177809, 37.097787583966053], [-7.855613165711985, 36.838268540996253], [-8.382816127953687, 36.978880113262449], [-8.898856980820325, 36.868809312480771], [-8.746101446965552, 37.6513455266766], [-8.839997524439879, 38.266243394517609], [-9.287463751655221, 38.358485826158592], [-9.526570603869713, 38.737429104154906], [-9.44698889814023, 39.392066148428363], [-9.048305223008425, 39.755093085278766], [-8.977353481471679, 40.159306138665798], [-8.7686840478771, 40.76063894303018], [-8.790853237330309, 41.18433401139125], [-8.990789353867568, 41.543459377603625], [-9.034817674180244, 41.880570583659669]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Paraguay\", \"name\": \"Paraguay\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-62.685057135657871, -22.24902922942238], [-62.291179368729203, -21.051634616787389], [-62.265961269770784, -20.513734633061272], [-61.786326463453761, -19.633736667562957], [-60.043564622626477, -19.342746677327419], [-59.11504248720609, -19.356906019775398], [-58.183471442280492, -19.868399346600359], [-58.166392381408038, -20.176700941653674], [-57.870673997617786, -20.732687676681948], [-57.937155727761287, -22.090175876557169], [-56.881509568902885, -22.282153822521476], [-56.473317430229379, -22.086300144135279], [-55.797958136606894, -22.356929620047815], [-55.61068274598113, -22.655619398694839], [-55.517639329639621, -23.57199757252663], [-55.400747239795407, -23.956935316668797], [-55.027901780809543, -24.001273695575225], [-54.652834235235119, -23.839578138933955], [-54.292959560754511, -24.021014092710722], [-54.293476325077435, -24.570799655863958], [-54.428946092330577, -25.162184747012162], [-54.625290696823562, -25.739255466415507], [-54.788794928595038, -26.621785577096126], [-55.695845506398143, -27.387837009390857], [-56.486701626192989, -27.548499037386286], [-57.609759690976134, -27.395898532828383], [-58.618173590719735, -27.123718763947089], [-57.633660040911117, -25.603656508081638], [-57.777217169817924, -25.162339776309032], [-58.807128465394968, -24.771459242453307], [-60.028966030504016, -24.032796319273267], [-60.846564704009907, -23.880712579038288], [-62.685057135657871, -22.24902922942238]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Palestine\", \"name\": \"Palestine\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[35.545665317534535, 32.393992011030569], [35.545251906076196, 31.782504787720832], [35.397560662586038, 31.489086005167572], [34.927408481594554, 31.35343537040141], [34.970506626125989, 31.616778469360803], [35.225891554512422, 31.754341132121759], [34.974640740709319, 31.866582343059715], [35.183930291491428, 32.532510687788935], [35.545665317534535, 32.393992011030569]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Qatar\", \"name\": \"Qatar\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[50.810108270069563, 24.754742539971371], [50.743910760303677, 25.482424221289389], [51.01335167827348, 26.006991685484191], [51.286461622936045, 26.114582017515865], [51.589078810437243, 25.801112779233375], [51.606700473848804, 25.215670477798735], [51.389607781790623, 24.627385972588051], [51.112415398977006, 24.556330878186721], [50.810108270069563, 24.754742539971371]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Romania\", \"name\": \"Romania\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[22.710531447040488, 47.882193915389394], [23.142236362406798, 48.096341050806942], [23.760958286237404, 47.985598456405448], [24.402056105250374, 47.981877753280422], [24.866317172960571, 47.737525743188307], [25.207743361112986, 47.891056423527459], [25.945941196402394, 47.987148749374207], [26.197450392366925, 48.220881252630342], [26.619336785597788, 48.220726223333457], [26.924176059687561, 48.123264472030982], [27.233872918412736, 47.826770941756365], [27.551166212684841, 47.405117092470817], [28.128030226359037, 46.81047638608824], [28.160017937947707, 46.371562608417207], [28.054442986775392, 45.944586086605618], [28.233553501099035, 45.488283189468369], [28.679779493939371, 45.30403087013169], [29.149724969201646, 45.464925442072442], [29.603289015427425, 45.293308010431119], [29.62654340995876, 45.035390936862392], [29.141611769331831, 44.820210272799038], [28.837857700320196, 44.913873806328041], [28.55808149589199, 43.707461656258118], [27.970107049275068, 43.812468166675202], [27.242399529740904, 44.175986029632398], [26.065158725699739, 43.943493760751259], [25.569271681426923, 43.688444729174712], [24.100679152124169, 43.741051337247846], [23.332302280376322, 43.897010809904707], [22.94483239105184, 43.823785305347123], [22.657149692482985, 44.234923000661276], [22.474008416440594, 44.409227606781762], [22.705725538837349, 44.578002834647016], [22.459022251075933, 44.702517198254291], [22.145087924902807, 44.478422349620573], [21.562022739353605, 44.768947251965486], [21.483526238702233, 45.181170152357772], [20.874312778413351, 45.416375433934228], [20.76217492033998, 45.734573065771428], [20.220192498462833, 46.127468980486547], [21.021952345471245, 46.316087958351886], [21.626514926853869, 46.994237779318148], [22.09976769378283, 47.672439276716695], [22.710531447040488, 47.882193915389394]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Russia\", \"name\": \"Russia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[143.648007440362846, 50.747600409541512], [144.65414757708561, 48.976390692737581], [143.173927850517174, 49.306551418650365], [142.558668247650076, 47.861575018904908], [143.533492466404027, 46.836728013692479], [143.505277134372591, 46.137907619809475], [142.747700636973889, 46.740764878926562], [142.092030064054484, 45.966755276058777], [141.906925083585008, 46.805928860046535], [142.018442824470867, 47.780132961612921], [141.904444614835029, 48.859188544299563], [142.135800002205656, 49.615163072297449], [142.179983351815281, 50.952342434281903], [141.594075962490024, 51.935434882202529], [141.682546014573632, 53.301966457728767], [142.606934035410745, 53.762145087287891], [142.209748976815376, 54.225475979216853], [142.654786411712934, 54.365880845753864], [142.914615513276544, 53.704577541714734], [143.260847609632037, 52.740760403039033], [143.235267775647628, 51.756660264688733], [143.648007440362846, 50.747600409541512]]], [[[22.731098667092649, 54.327536932993311], [20.892244500418652, 54.312524929412568], [19.6606400896064, 54.42608388937397], [19.88848147958134, 54.866160386771483], [21.268448927503492, 55.190481675835279], [22.315723504330599, 55.015298570365886], [22.757763706155281, 54.856574408581416], [22.651051873472564, 54.582740993866693], [22.731098667092649, 54.327536932993311]]], [[[180.000000000000114, 70.832199208546669], [178.903425, 70.78114], [178.7253, 71.0988], [180.000000000000114, 71.515714336428246], [180.000000000000114, 70.832199208546669]]], [[[143.60385, 73.21244], [142.08763, 73.20544], [140.038155, 73.31692], [139.86312, 73.36983], [140.81171, 73.76506], [142.06207, 73.85758], [143.48283, 73.47525], [143.60385, 73.21244]]], [[[150.73167, 75.08406], [149.575925, 74.68892], [147.977465, 74.778355], [146.11919, 75.17298], [146.358485, 75.49682], [148.22223, 75.345845], [150.73167, 75.08406]]], [[[145.086285, 75.562625], [144.3, 74.82], [140.61381, 74.84768], [138.95544, 74.61148], [136.97439, 75.26167], [137.51176, 75.94917], [138.831075, 76.13676], [141.471615, 76.09289], [145.086285, 75.562625]]], [[[57.535692579992386, 70.720463975702145], [56.944979282463933, 70.63274323188665], [53.677375115784187, 70.762657782668455], [53.412016635965372, 71.206661688920192], [51.601894565645708, 71.474759019650477], [51.455753615124209, 72.014881089965129], [52.478275180883564, 72.229441636840946], [52.444168735570841, 72.77473135038484], [54.427613559797649, 73.627547512497571], [53.508289829325136, 73.749813951300141], [55.902458937407644, 74.627486477345329], [55.631932814359701, 75.081412258597155], [57.868643833248839, 75.609390367323186], [61.170044386647497, 76.251883450008123], [64.498368361270209, 76.439055487769267], [66.210977003855092, 76.809782213031227], [68.157059767534818, 76.939696763812904], [68.852211134725124, 76.544811306454605], [68.180572544227644, 76.233641669409096], [64.637326287703004, 75.737754625136219], [61.583507521414752, 75.260884507946784], [58.477082147053366, 74.309056301562819], [56.986785516187993, 73.333043524866227], [55.41933597191094, 72.371267605265956], [55.622837762276291, 71.540594794390316], [57.535692579992386, 70.720463975702145]]], [[[106.970130000000111, 76.97419], [107.240000000000123, 76.48], [108.1538, 76.723350000000138], [111.077260000000138, 76.71], [113.33151, 76.22224], [114.13417, 75.84764], [113.88539, 75.327790000000121], [112.77918, 75.03186], [110.151250000000175, 74.47673], [109.4, 74.18], [110.64, 74.04], [112.11919, 73.787740000000113], [113.019540000000234, 73.976930000000138], [113.529580000000294, 73.33505], [113.96881, 73.59488], [115.56782, 73.75285], [118.776330000000215, 73.58772], [119.02, 73.12], [123.20066, 72.97122], [123.257770000000178, 73.73503], [125.380000000000166, 73.56], [126.97644, 73.56549], [128.59126, 73.03871], [129.05157, 72.39872], [128.46, 71.98], [129.715990000000204, 71.19304], [131.288580000000252, 70.786990000000102], [132.253500000000145, 71.8363], [133.857660000000294, 71.386420000000143], [135.56193, 71.655250000000123], [137.49755, 71.34763], [138.234090000000123, 71.62803], [139.86983, 71.487830000000116], [139.14791, 72.4161900000001], [140.46817, 72.849410000000134], [149.5, 72.2], [150.35118000000017, 71.60643], [152.96890000000019, 70.84222], [157.00688, 71.03141], [158.99779, 70.86672], [159.830310000000225, 70.45324], [159.70866, 69.72198], [160.94053000000028, 69.43728], [162.279070000000104, 69.64204], [164.05248, 69.66823], [165.940370000000172, 69.47199], [167.83567, 69.58269], [169.57763000000017, 68.6938], [170.816880000000253, 69.01363], [170.008200000000159, 69.65276], [170.453450000000259, 70.09703], [173.643910000000204, 69.81743], [175.72403000000017, 69.877250000000217], [178.6, 69.4], [180.000000000000114, 68.963636363636553], [180.000000000000114, 64.979708702198465], [179.99281, 64.97433], [178.707200000000199, 64.53493], [177.411280000000147, 64.60821], [178.313000000000187, 64.07593], [178.90825000000018, 63.251970000000128], [179.37034, 62.98262], [179.48636, 62.56894], [179.228250000000116, 62.304100000000133], [177.3643, 62.5219], [174.569290000000194, 61.76915], [173.68013, 61.65261], [172.15, 60.95], [170.6985, 60.33618], [170.330850000000282, 59.88177], [168.90046, 60.57355], [166.294980000000265, 59.7885500000002], [165.840000000000202, 60.16], [164.87674, 59.7316], [163.539290000000108, 59.86871], [163.217110000000218, 59.21101], [162.01733, 58.24328], [162.05297, 57.83912], [163.19191, 57.61503], [163.057940000000144, 56.159240000000111], [162.129580000000203, 56.12219], [161.70146, 55.285680000000148], [162.117490000000117, 54.85514], [160.368770000000325, 54.34433], [160.021730000000218, 53.20257], [158.530940000000157, 52.958680000000236], [158.23118, 51.94269], [156.789790000000266, 51.01105], [156.42000000000013, 51.7], [155.99182, 53.15895], [155.43366, 55.381030000000109], [155.914420000000291, 56.767920000000132], [156.75815, 57.3647], [156.81035, 57.83204], [158.364330000000166, 58.05575], [160.150640000000124, 59.314770000000109], [161.87204, 60.343000000000117], [163.66969, 61.1409], [164.473550000000103, 62.55061], [163.258420000000172, 62.46627], [162.65791, 61.6425], [160.12148, 60.54423], [159.30232, 61.77396], [156.72068, 61.43442], [154.218060000000293, 59.758180000000117], [155.04375, 59.14495], [152.81185, 58.88385], [151.265730000000246, 58.78089], [151.33815, 59.50396], [149.78371, 59.655730000000126], [148.54481, 59.16448], [145.48722, 59.33637], [142.197820000000121, 59.03998], [138.958480000000293, 57.08805], [135.12619, 54.72959], [136.70171, 54.603550000000112], [137.19342, 53.97732], [138.1647, 53.755010000000247], [138.80463, 54.25455], [139.90151, 54.189680000000166], [141.34531, 53.089570000000109], [141.37923, 52.23877], [140.59742000000017, 51.23967], [140.51308, 50.045530000000113], [140.061930000000189, 48.446710000000152], [138.554720000000202, 46.99965], [138.21971, 46.30795], [136.86232, 45.143500000000174], [135.515350000000183, 43.989], [134.869390000000237, 43.39821], [133.536870000000249, 42.81147], [132.90627, 42.79849], [132.278070000000241, 43.284560000000106], [130.935870000000136, 42.55274], [130.78, 42.220000000000191], [130.640000000000157, 42.395], [130.633866408409801, 42.903014634770543], [131.144687941614961, 42.929989732426932], [131.288555129115593, 44.111519680348252], [131.025190000000237, 44.96796], [131.883454217659562, 45.321161607436508], [133.097120000000189, 45.14409], [133.769643996313164, 46.116926988299149], [134.112350000000163, 47.212480000000127], [134.50081, 47.578450000000139], [135.026311476786759, 48.478229885443902], [133.373595819228001, 48.183441677434836], [132.506690000000106, 47.78896], [130.987260000000106, 47.79013], [130.582293328982644, 48.72968740497619], [129.397817824420486, 49.4406000840156], [127.657400000000351, 49.76027], [127.287455682484904, 50.739797268265434], [126.939156528837827, 51.353894151405896], [126.564399041856959, 51.784255479532689], [125.946348911646439, 52.792798570356936], [125.068211297710434, 53.161044826868924], [123.57147, 53.4588], [122.245747918793043, 53.431725979213681], [121.003084751470354, 53.251401068731226], [120.177088657716865, 52.753886216841195], [120.725789015791975, 52.516226304730893], [120.7382, 51.96411], [120.182080000000155, 51.64355], [119.27939, 50.58292], [119.288460728025839, 50.142882798861947], [117.87924441942647, 49.510983384797036], [116.67880089728618, 49.888531399121398], [115.485695428531415, 49.805177313834733], [114.962109816550353, 50.140247300815119], [114.362456496235325, 50.24830272073747], [112.897739699354361, 49.543565375356984], [111.581230910286649, 49.377968248077671], [110.662010532678835, 49.130128078805846], [109.402449171996707, 49.292960516957685], [108.475167270951275, 49.282547715850704], [107.868175897251092, 49.793705145865871], [106.888804152455293, 50.274295966180276], [105.886591424586868, 50.40601919209216], [104.62158, 50.275320000000157], [103.676545444760336, 50.08996613219513], [102.25589, 50.510560000000105], [102.06521, 51.25991], [100.889480421962631, 51.516855780638409], [99.981732212323564, 51.63400625264395], [98.861490513100492, 52.047366034546698], [97.82573978067451, 51.010995184933236], [98.231761509191699, 50.422400621128716], [97.259760000000199, 49.72605], [95.814020000000156, 49.977460000000114], [94.815949334698757, 50.01343333597088], [94.147566359435601, 50.480536607457161], [93.10421, 50.49529], [92.234711541719676, 50.802170722041737], [90.713667433640765, 50.331811835321098], [88.805566847695573, 49.470520738312459], [87.751264276076824, 49.297197984405543], [87.359970330762692, 49.214980780629148], [86.829356723989648, 49.826674709668133], [85.541269972682485, 49.69285858824815], [85.115559523462082, 50.117302964877631], [84.416377394553038, 50.311399644565817], [83.935114780618903, 50.889245510453563], [83.383003778012451, 51.069182847693881], [81.945985548839943, 50.812195949906325], [80.568446893235446, 51.388336493528435], [80.035559523441705, 50.864750881547209], [77.80091556184432, 53.404414984747532], [76.525179477854749, 54.177003485727127], [76.891100294913443, 54.490524400441913], [74.384820000000119, 53.546850000000113], [73.425678745420512, 53.489810289109741], [73.50851606638436, 54.035616766976588], [72.224150018202195, 54.376655381886778], [71.180131056609468, 54.133285224008247], [70.86526655465515, 55.169733588270091], [69.068166945272893, 55.385250149143488], [68.169100376258896, 54.970391750704366], [65.66687, 54.601250000000149], [65.178533563095939, 54.354227810272064], [61.436600000000126, 54.00625], [60.978066440683236, 53.664993394579128], [61.69998619980062, 52.979996446334255], [60.73999311711453, 52.719986477257734], [60.927268507740237, 52.447548326214999], [59.967533807215567, 51.96042043721566], [61.588003371024136, 51.272658799843171], [61.337424350840998, 50.799070136104248], [59.932807244715555, 50.842194118851822], [59.642282342370564, 50.545442206415707], [58.363320000000122, 51.06364], [56.77798, 51.04355], [55.71694, 50.621710000000142], [54.532878452376181, 51.026239732459359], [52.328723585831042, 51.718652248738088], [50.766648390512174, 51.692762356159861], [48.702381626181044, 50.605128485712825], [48.577841424357601, 49.87475962991563], [47.549480421749379, 50.454698391311119], [46.751596307162764, 49.356005764353725], [47.043671502476585, 49.152038886097571], [46.466445753776291, 48.394152330104923], [47.315240000000152, 47.71585], [48.05725, 47.74377], [48.694733514201872, 47.075628160177885], [48.59325000000014, 46.56104], [49.101160000000121, 46.39933], [48.645410000000105, 45.80629], [47.67591, 45.641490000000111], [46.68201, 44.6092], [47.59094, 43.660160000000118], [47.49252, 42.98658], [48.58437000000017, 41.80888], [47.987283156126033, 41.405819200194387], [47.815665724484653, 41.151416124021338], [47.373315464066387, 41.219732367511135], [46.686070591016708, 41.827137152669899], [46.404950799348924, 41.860675157227426], [45.7764, 42.092440000000224], [45.470279168485909, 42.502780666670041], [44.537622918482057, 42.711992702803677], [43.93121, 42.554960000000101], [43.755990000000182, 42.74083], [42.394400000000154, 43.2203], [40.922190000000128, 43.382150000000131], [40.076964959479838, 43.553104153002486], [39.95500857927108, 43.434997666999287], [38.68, 44.28], [37.539120000000104, 44.65721], [36.675460000000122, 45.24469], [37.40317, 45.40451], [38.23295, 46.24087], [37.67372, 46.63657], [39.14767, 47.044750000000128], [39.121200000000123, 47.26336], [38.22353803889947, 47.102189846375971], [38.2551123390298, 47.546400458356956], [38.77057, 47.825620000000228], [39.738277622238982, 47.898937079452068], [39.895620000000136, 48.23241], [39.67465, 48.783820000000127], [40.080789015469477, 49.307429917999364], [40.069040000000108, 49.60105], [38.594988234213552, 49.926461900423718], [38.010631137857068, 49.915661526074715], [37.393459506995228, 50.383953355503664], [36.626167840325387, 50.225590928745127], [35.35611616388811, 50.577197374059139], [35.37791, 50.77394], [35.02218305841793, 51.207572333371495], [34.224815708154402, 51.255993150428921], [34.141978387190612, 51.56641347920619], [34.391730584457228, 51.768881740925892], [33.75269982273587, 52.335074571331646], [32.715760532367163, 52.238465481162159], [32.412058139787767, 52.288694973349763], [32.15944000000021, 52.061250000000101], [31.78597, 52.10168], [31.540018344862254, 52.742052313846429], [31.305200636527978, 53.073995876673301], [31.49764, 53.167430000000124], [32.304519484188368, 53.132726141972839], [32.693643019346119, 53.351420803432141], [32.405598585751157, 53.618045355842], [31.731272820774585, 53.794029446012011], [31.791424187962399, 53.974638576872181], [31.384472283663818, 54.157056382862365], [30.757533807098774, 54.811770941784388], [30.971835971813245, 55.08154775656412], [30.873909132620064, 55.55097646750351], [29.896294386522435, 55.789463202530484], [29.371571893030783, 55.670090643936263], [29.229513380660389, 55.918344224666399], [28.176709425577933, 56.169129950578778], [27.855282016722519, 56.759326483784363], [27.770015903440985, 57.244258124411189], [27.288184848751648, 57.474528306703903], [27.716685825315771, 57.791899115624439], [27.420150000000202, 58.724570000000128], [28.131699253051856, 59.300825100330982], [27.98112, 59.47537], [29.1177, 60.028050000000107], [28.07, 60.503520000000137], [30.211107212044645, 61.780027777749673], [31.139991082491029, 62.357692776124431], [31.516092156711263, 62.867687486412898], [30.035872430142796, 63.552813625738551], [30.444684686003736, 64.204453436939062], [29.544429559047014, 64.948671576590542], [30.21765, 65.80598], [29.054588657352376, 66.944286200622017], [29.977426385220689, 67.69829702419274], [28.445943637818765, 68.364612942163987], [28.591929559043358, 69.064776923286686], [29.39955, 69.15692000000017], [31.101080000000103, 69.55811], [32.132720000000255, 69.905950000000232], [33.77547, 69.301420000000107], [36.51396, 69.06342], [40.292340000000159, 67.9324], [41.059870000000124, 67.457130000000106], [41.125950000000174, 66.79158000000011], [40.01583, 66.266180000000119], [38.38295, 65.99953], [33.918710000000168, 66.75961], [33.18444, 66.63253], [34.81477, 65.900150000000124], [34.87857425307876, 65.436212877048192], [34.943910000000152, 64.414370000000147], [36.23129, 64.10945], [37.012730000000111, 63.84983], [37.141970000000143, 64.33471], [36.539579035089801, 64.76446], [37.176040000000135, 65.143220000000113], [39.59345, 64.520790000000162], [40.4356, 64.76446], [39.762600000000148, 65.49682], [42.09309, 66.47623], [43.01604000000011, 66.41858], [43.94975000000013, 66.06908], [44.53226, 66.756340000000122], [43.69839, 67.35245], [44.187950000000136, 67.95051], [43.45282, 68.57079], [46.250000000000135, 68.25], [46.821340000000156, 67.68997], [45.55517, 67.56652], [45.56202, 67.010050000000192], [46.349150000000137, 66.66767], [47.894160000000248, 66.884550000000146], [48.13876, 67.52238], [50.227660000000142, 67.998670000000132], [53.717430000000164, 68.85738], [54.47171, 68.80815], [53.485820000000118, 68.20131], [54.72628, 68.09702], [55.442680000000124, 68.43866], [57.317020000000149, 68.46628], [58.802000000000206, 68.88082], [59.941420000000178, 68.27844], [61.077840000000165, 68.94069], [60.03, 69.52], [60.55, 69.85], [63.504000000000147, 69.54739], [64.888115, 69.234835000000132], [68.512160000000108, 68.09233000000016], [69.18068, 68.61563000000011], [68.16444, 69.14436], [68.13522, 69.35649], [66.930080000000103, 69.454610000000102], [67.25976, 69.92873], [66.724920000000125, 70.708890000000125], [66.69466, 71.028970000000228], [68.540060000000111, 71.934500000000227], [69.19636, 72.843360000000146], [69.94, 73.04000000000012], [72.58754, 72.77629], [72.79603, 72.22006], [71.84811, 71.40898], [72.47011, 71.09019], [72.79188, 70.39114], [72.564700000000201, 69.02085], [73.66787, 68.4079], [73.2387, 67.7404], [71.280000000000101, 66.320000000000149], [72.423010000000147, 66.172670000000167], [72.82077, 66.53267], [73.920990000000131, 66.789460000000119], [74.186510000000183, 67.28429], [75.052, 67.760470000000154], [74.469260000000148, 68.32899], [74.93584, 68.98918], [73.84236, 69.07146], [73.601870000000204, 69.62763], [74.3998, 70.63175], [73.1011, 71.447170000000241], [74.890820000000204, 72.12119], [74.65926, 72.83227], [75.158010000000175, 72.854970000000108], [75.68351, 72.300560000000118], [75.288980000000109, 71.33556], [76.35911, 71.152870000000135], [75.903130000000161, 71.87401], [77.5766500000001, 72.26717], [79.652020000000107, 72.32011], [81.5, 71.75], [80.61071, 72.582850000000107], [80.51109, 73.6482], [82.25, 73.85], [84.65526, 73.805910000000154], [86.822300000000226, 73.93688], [86.00956, 74.459670000000145], [87.166820000000143, 75.11643], [88.31571, 75.14393], [90.26, 75.64], [92.90058, 75.77333], [93.234210000000132, 76.0472], [95.860000000000127, 76.14], [96.67821, 75.91548], [98.922540000000197, 76.44689], [100.759670000000199, 76.43028], [101.03532, 76.86189], [101.990840000000105, 77.287540000000192], [104.3516, 77.69792], [106.066640000000135, 77.37389], [104.705000000000211, 77.1274], [106.970130000000111, 76.97419]]], [[[105.07547, 78.30689], [99.43814, 77.921], [101.2649, 79.23399], [102.08635, 79.34641], [102.837815, 79.28129], [105.37243, 78.71334], [105.07547, 78.30689]]], [[[51.136186557831266, 80.54728017854093], [49.793684523320692, 80.415427761548202], [48.894411248577526, 80.33956675894369], [48.75493655782175, 80.175468248200829], [47.586119012244147, 80.010181179515328], [46.502825962109647, 80.247246812654339], [47.072455275262897, 80.559424140129451], [44.846958042181107, 80.589809882317169], [46.799138624871226, 80.771917629713627], [48.31847741068465, 80.784009914869927], [48.52280602396668, 80.514568996900138], [49.097189568890897, 80.753985907708412], [50.039767693894603, 80.918885403151791], [51.522932977103679, 80.699725653801906], [51.136186557831266, 80.54728017854093]]], [[[99.93976, 78.88094], [97.75794, 78.7562], [94.97259, 79.044745], [93.31288, 79.4265], [92.5454, 80.14379], [91.18107, 80.34146], [93.77766, 81.0246], [95.940895, 81.2504], [97.88385, 80.746975], [100.186655, 79.780135], [99.93976, 78.88094]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Rwanda\", \"name\": \"Rwanda\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[30.419104852019235, -1.134659112150416], [30.816134881317705, -1.698914076345388], [30.758308953583104, -2.287250257988368], [30.469696079232978, -2.413857517103458], [29.938359002407935, -2.348486830254238], [29.632176141078585, -2.917857761246096], [29.02492638521678, -2.839257907730157], [29.117478875451546, -2.292211195488384], [29.254834832483336, -2.215109958508911], [29.29188683443661, -1.620055840667987], [29.579466180140876, -1.341313164885626], [29.821518588996003, -1.443322442229785], [30.419104852019235, -1.134659112150416]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Western Sahara\", \"name\": \"W. Sahara\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-8.794883999049075, 27.120696316022503], [-8.81782833498667, 27.656425889592349], [-8.665589565454805, 27.656425889592349], [-8.66512447756419, 27.58947907155822], [-8.684399786809051, 27.395744126895998], [-8.687293667017398, 25.881056219988899], [-11.969418911171159, 25.933352769468261], [-11.93722449385332, 23.374594224536164], [-12.874221564169574, 23.284832261645171], [-13.118754441774708, 22.771220201096249], [-12.929101935263528, 21.327070624267559], [-16.845193650773989, 21.333323472574875], [-17.063423224342568, 20.99975210213082], [-17.020428432675736, 21.422310288981475], [-17.002961798561085, 21.420734157796574], [-14.750954555713532, 21.50060008390366], [-14.630832688851068, 21.860939846274899], [-14.221167771857251, 22.310163072188153], [-13.891110398809044, 23.691009019459297], [-12.500962693725368, 24.770116278578193], [-12.030758836301613, 26.030866197203036], [-11.718219773800353, 26.104091701760616], [-11.392554897496977, 26.883423977154358], [-10.551262579785272, 26.990807603456879], [-10.18942420087758, 26.860944729107398], [-9.735343390328877, 26.860944729107398], [-9.413037482124464, 27.088476060488514], [-8.794883999049075, 27.120696316022503]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Saudi Arabia\", \"name\": \"Saudi Arabia\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[42.779332309750963, 16.34789134364868], [42.64957278826607, 16.77463532151496], [42.347989129410706, 17.075805568911996], [42.270887892431219, 17.474721787989122], [41.754381951673949, 17.833046169500971], [41.221391229015573, 18.671599636301206], [40.939341261566533, 19.486485297111752], [40.247652215339819, 20.174634507726488], [39.801684604660934, 20.338862209550054], [39.139399448408277, 21.29190481209293], [39.023695916506782, 21.986875311770191], [39.066328973147577, 22.579655666590263], [38.492772251140075, 23.688451036060851], [38.023860304523616, 24.078685614512928], [37.483634881344379, 24.285494696545008], [37.154817742671177, 24.858482977797301], [37.209491408035994, 25.084541530858104], [36.931627231602583, 25.602959499610172], [36.639603712721218, 25.826227525327219], [36.249136590323808, 26.570135606384873], [35.640181512196385, 27.376520494083415], [35.130186801907875, 28.063351955674712], [34.632336053207972, 28.058546047471559], [34.787778761541936, 28.607427273059692], [34.832220493312938, 28.957483425404838], [34.956037225084252, 29.356554673778835], [36.068940870922049, 29.19749461518445], [36.501214227043583, 29.505253607698702], [36.740527784987243, 29.865283311476183], [37.503581984209028, 30.003776150018396], [37.668119744626374, 30.338665269485894], [37.998848911294367, 30.508499864213128], [37.002165561681004, 31.508412990844736], [39.004885695152545, 32.010216986614971], [39.195468377444961, 32.16100881604266], [40.399994337736238, 31.889991766887931], [41.889980910007829, 31.190008653278362], [44.709498732284736, 29.178891099559376], [46.568713413281742, 29.099025173452283], [47.459821811722819, 29.002519436147217], [47.708850538937376, 28.526062730416136], [48.416094191283939, 28.552004299426663], [48.807594842327163, 27.689627997339876], [49.299554477745815, 27.461218166609804], [49.470913527225647, 27.109999294538078], [50.152422316290874, 26.689663194275994], [50.212935418504671, 26.277026882425371], [50.113303257045928, 25.943972276304248], [50.23985883972874, 25.608049628190923], [50.527386509000728, 25.327808335872099], [50.660556675016885, 24.999895534764018], [50.810108270069563, 24.754742539971371], [51.112415398977006, 24.556330878186721], [51.389607781790623, 24.627385972588051], [51.579518670463258, 24.245497137951102], [51.617707553926969, 24.014219265228824], [52.000733270074321, 23.001154486578937], [55.006803012924898, 22.496947536707129], [55.208341098863187, 22.708329982997039], [55.666659376859812, 22.000001125572336], [54.999981723862355, 19.999994004796104], [52.000009800022227, 19.000003363516054], [49.116671583864857, 18.616667588774941], [48.183343540241324, 18.166669216377311], [47.466694777217626, 17.116681626854877], [47.000004917189749, 16.949999294497438], [46.749994337761642, 17.283338120996174], [46.366658563020529, 17.233315334537632], [45.399999220568752, 17.333335069238554], [45.216651238797184, 17.43332896572333], [44.062613152855072, 17.410358791569589], [43.791518589051904, 17.319976711491105], [43.380794305196098, 17.579986680567668], [43.115797560403351, 17.088440456607369], [43.218375278502734, 16.666889960186406], [42.779332309750963, 16.34789134364868]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Sudan\", \"name\": \"Sudan\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[33.963392794971178, 9.464285229420623], [33.824963480907506, 9.48406084571536], [33.842130853028145, 9.981914637215992], [33.721959248183097, 10.325262079630191], [33.206938084561777, 10.720111638406591], [33.086766479716729, 11.441141267476493], [33.206938084561777, 12.179338268667093], [32.743419037302537, 12.24800775714999], [32.674749548819641, 12.024831919580716], [32.073891524594778, 11.973329803218517], [32.314234734284746, 11.681484477166519], [32.400071594888338, 11.080626452941486], [31.850715687025509, 10.531270545078822], [31.352861895524875, 9.810240916008693], [30.837840731903377, 9.707236683284519], [29.996639497988546, 10.290927335388684], [29.618957311332842, 10.084918869940223], [29.515953078608607, 9.793073543888053], [29.000931914987166, 9.604232450560287], [28.966597170745779, 9.398223985111654], [27.970889587744345, 9.398223985111654], [27.833550610778783, 9.604232450560287], [27.112520981708876, 9.638567194801622], [26.752006167173811, 9.466893473594492], [26.477328213242508, 9.552730334198086], [25.96230704962101, 10.136420986302422], [25.790633328413943, 10.411098940233726], [25.069603699343979, 10.27375996326799], [24.79492574541268, 9.810240916008693], [24.537415163602017, 8.917537565731719], [24.194067721187643, 8.728696472403895], [23.886979580860665, 8.619729712933063], [23.805813429466745, 8.666318874542522], [23.459012892355979, 8.954285793489019], [23.394779087017291, 9.26506785729225], [23.557249790142915, 9.681218166538766], [23.554304233502187, 10.089255275915319], [22.977543572692749, 10.714462591998538], [22.864165480244246, 11.142395127807616], [22.87622, 11.384610000000119], [22.50869, 11.67936], [22.49762, 12.26024], [22.28801, 12.64605], [21.93681, 12.588180000000133], [22.03759, 12.95546], [22.29658, 13.37232], [22.18329, 13.78648], [22.51202, 14.09318], [22.30351, 14.32682], [22.567950000000106, 14.944290000000134], [23.02459, 15.68072], [23.886890000000101, 15.61084], [23.837660000000135, 19.580470000000101], [23.850000000000129, 20.0], [25.00000000000011, 20.00304], [25.00000000000011, 22.0], [29.02, 22.0], [32.9, 22.0], [36.86623, 22.0], [37.18872, 21.01885], [36.96941, 20.837440000000125], [37.114700000000134, 19.80796], [37.48179, 18.61409], [37.86276, 18.36786], [38.410089959473218, 17.998307399970312], [37.904000000000103, 17.42754], [37.16747, 17.263140000000128], [36.852530000000108, 16.95655], [36.75389, 16.29186], [36.32322, 14.82249], [36.42951, 14.42211], [36.27022, 13.563330000000118], [35.86363, 12.57828], [35.26049, 12.08286], [34.831630000000125, 11.318960000000116], [34.73115000000012, 10.910170000000106], [34.25745, 10.63009], [33.96162, 9.58358], [33.963392794971178, 9.464285229420623]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"South Sudan\", \"name\": \"S. Sudan\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[33.963392794971178, 9.464285229420623], [33.97498, 8.68456], [33.82550000000014, 8.37916], [33.294800000000116, 8.35458], [32.95418, 7.7849700000001], [33.56829, 7.71334], [34.0751, 7.22595], [34.25032, 6.82607], [34.70702, 6.59422000000012], [35.298007118233095, 5.506], [34.620196267853935, 4.847122742082034], [34.005, 4.249884947362147], [33.39, 3.79], [32.68642, 3.79232], [31.881450000000136, 3.55827], [31.24556, 3.7819], [30.83385, 3.50917], [29.95349, 4.1737], [29.715995314256013, 4.600804755060152], [29.159078403446635, 4.389267279473244], [28.696677687298795, 4.455077215996993], [28.428993768026992, 4.287154649264607], [27.979977247842946, 4.408413397637388], [27.374226108517625, 5.233944403500173], [27.213409051225248, 5.550953477394613], [26.465909458123289, 5.946717434101855], [26.213418409945113, 6.546603298362127], [25.796647983511257, 6.979315904158169], [25.124130893664805, 7.500085150579422], [25.114932488716867, 7.825104071479244], [24.567369012152191, 8.229187933785452], [23.886979580860665, 8.619729712933063], [24.194067721187643, 8.728696472403895], [24.537415163602017, 8.917537565731719], [24.79492574541268, 9.810240916008693], [25.069603699343979, 10.27375996326799], [25.790633328413943, 10.411098940233726], [25.96230704962101, 10.136420986302422], [26.477328213242508, 9.552730334198086], [26.752006167173811, 9.466893473594492], [27.112520981708876, 9.638567194801622], [27.833550610778783, 9.604232450560287], [27.970889587744345, 9.398223985111654], [28.966597170745779, 9.398223985111654], [29.000931914987166, 9.604232450560287], [29.515953078608607, 9.793073543888053], [29.618957311332842, 10.084918869940223], [29.996639497988546, 10.290927335388684], [30.837840731903377, 9.707236683284519], [31.352861895524875, 9.810240916008693], [31.850715687025509, 10.531270545078822], [32.400071594888338, 11.080626452941486], [32.314234734284746, 11.681484477166519], [32.073891524594778, 11.973329803218517], [32.674749548819641, 12.024831919580716], [32.743419037302537, 12.24800775714999], [33.206938084561777, 12.179338268667093], [33.086766479716729, 11.441141267476493], [33.206938084561777, 10.720111638406591], [33.721959248183097, 10.325262079630191], [33.842130853028145, 9.981914637215992], [33.824963480907506, 9.48406084571536], [33.963392794971178, 9.464285229420623]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Senegal\", \"name\": \"Senegal\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-16.713728807023468, 13.594958604379853], [-17.126106736712611, 14.373515733289221], [-17.625042690490655, 14.72954051356407], [-17.185172898822227, 14.91947724045286], [-16.700706346085919, 15.621527411354107], [-16.463098110407881, 16.135036119038457], [-16.120690070041928, 16.45566254319338], [-15.623666144258689, 16.369337063049809], [-15.135737270558813, 16.587282416240779], [-14.577347581428977, 16.598263658102805], [-14.099521450242175, 16.304302273010489], [-13.43573767745306, 16.039383042866188], [-12.830658331747513, 15.303691514542942], [-12.170750291380299, 14.616834214735503], [-12.124887457721256, 13.994727484589784], [-11.927716030311613, 13.422075100147392], [-11.553397793005427, 13.141213690641063], [-11.467899135778522, 12.754518947800973], [-11.513942836950587, 12.442987575729415], [-11.658300950557928, 12.386582749882834], [-12.20356482588563, 12.465647691289401], [-12.278599005573438, 12.354440008997285], [-12.499050665730561, 12.332089952031053], [-13.217818162478235, 12.575873521367964], [-13.700476040084322, 12.586182969610192], [-15.548476935274005, 12.628170070847343], [-15.816574266004251, 12.515567124883345], [-16.147716844130581, 12.547761542201185], [-16.67745195155457, 12.38485158940105], [-16.84152462408127, 13.151393947802557], [-15.931295945692208, 13.130284125211331], [-15.691000535534991, 13.270353094938455], [-15.511812506562931, 13.278569647672864], [-15.141163295949463, 13.509511623585235], [-14.712197231494626, 13.298206691943774], [-14.277701788784553, 13.28058502853224], [-13.844963344772404, 13.505041612191999], [-14.046992356817478, 13.794067898000446], [-14.376713833055785, 13.625680243377371], [-14.687030808968483, 13.63035696049978], [-15.081735398813816, 13.876491807505982], [-15.398770310924457, 13.860368760630916], [-15.624596320039936, 13.623587347869556], [-16.713728807023468, 13.594958604379853]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Solomon Islands\", \"name\": \"Solomon Is.\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[162.119024693040842, -10.482719008021133], [162.398645868172196, -10.826367282762119], [161.700032180018354, -10.820011081590222], [161.319796991214702, -10.204751478723123], [161.917383254237933, -10.446700534713653], [162.119024693040842, -10.482719008021133]]], [[[160.852228631837903, -9.872937106977002], [160.462588332357228, -9.89520964929484], [159.849447463214176, -9.794027194867367], [159.640002883135139, -9.639979750205269], [159.70294477766663, -9.242949720906777], [160.362956170898428, -9.400304457235533], [160.688517694337179, -9.610162448772808], [160.852228631837903, -9.872937106977002]]], [[[161.679981724289121, -9.599982191611373], [161.52939660059053, -9.784312025596433], [160.788253208660507, -8.917543226764918], [160.579997186524338, -8.320008640173965], [160.92002811100491, -8.320008640173965], [161.280006138349961, -9.120011488484449], [161.679981724289121, -9.599982191611373]]], [[[159.875027297198585, -8.337320244991714], [159.917401971677975, -8.538289890174864], [159.133677199539335, -8.114181410355398], [158.586113722974687, -7.754823500197713], [158.211149530264834, -7.421872246941147], [158.359977655265425, -7.320017998893915], [158.820001255527671, -7.56000335045739], [159.640002883135139, -8.020026950719567], [159.875027297198585, -8.337320244991714]]], [[[157.53842573468927, -7.347819919466928], [157.339419793933217, -7.404767347852554], [156.902030471014768, -7.176874281445391], [156.491357863591304, -6.765943291860394], [156.542827590153934, -6.599338474151478], [157.140000441718882, -7.021638278840653], [157.53842573468927, -7.347819919466928]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Sierra Leone\", \"name\": \"Sierra Leone\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-11.438779466182053, 6.785916856305746], [-11.708194545935736, 6.860098374860724], [-12.428098924193815, 7.262942002792029], [-12.949049038128193, 7.798645738145736], [-13.124025437868479, 8.163946438016977], [-13.246550258832512, 8.903048610871506], [-12.711957566773076, 9.342711696810765], [-12.596719122762206, 9.620188300001969], [-12.425928514037562, 9.835834051955953], [-12.150338100625003, 9.858571682164378], [-11.917277390988655, 10.046983954300556], [-11.117481248407328, 10.045872911006283], [-10.839151984083299, 9.688246161330367], [-10.622395188835037, 9.267910061068276], [-10.65477047366589, 8.977178452994194], [-10.494315151399629, 8.715540676300433], [-10.505477260774667, 8.348896389189603], [-10.230093553091276, 8.406205552601291], [-10.695594855176477, 7.939464016141085], [-11.14670427086838, 7.396706447779534], [-11.199801805048278, 7.105845648624735], [-11.438779466182053, 6.785916856305746]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"El Salvador\", \"name\": \"El Salvador\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-87.793111131526558, 13.384480495655051], [-87.904112108089507, 13.149016831917134], [-88.483301561216791, 13.163951320849488], [-88.843227912129692, 13.259733588102474], [-89.256742723329282, 13.4585328231293], [-89.812393561547637, 13.520622056527994], [-90.095554572290951, 13.73533763270073], [-90.064677903996568, 13.881969509328924], [-89.7219339668207, 14.134228013561694], [-89.5342193265205, 14.244815578666302], [-89.587342698916544, 14.362586167859485], [-89.353325975282772, 14.424132798719112], [-89.058511929057644, 14.340029405164085], [-88.843072882832814, 14.140506700085169], [-88.541230841815974, 13.980154730683475], [-88.50399797234968, 13.845485948130854], [-88.065342576840123, 13.964625962779774], [-87.859515347021585, 13.893312486216979], [-87.723502977229387, 13.785050360565503], [-87.793111131526558, 13.384480495655051]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Somaliland\", \"name\": \"Somaliland\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[48.938129510296491, 9.451748968946672], [48.486735874226994, 8.837626247589979], [47.78942, 8.003], [46.948328484897942, 7.996876532417386], [43.67875, 9.183580000000116], [43.296975132018744, 9.540477403191742], [42.92812, 10.021940000000139], [42.55876, 10.572580000000126], [42.776851841000948, 10.926878566934416], [43.145304803242126, 11.462039699748853], [43.470659620951658, 11.27770986576388], [43.666668328634834, 10.864169216348158], [44.117803582542805, 10.445538438351603], [44.614259067570849, 10.442205308468941], [45.556940545439133, 10.698029486529775], [46.645401238802997, 10.816549383991171], [47.525657586462778, 11.127228094929986], [48.021596307167769, 11.193063869669741], [48.378783807169263, 11.375481675660122], [48.948206414593457, 11.410621649618516], [48.942005242718423, 11.394266058798163], [48.938491245322595, 10.982327378783451], [48.938232863161076, 9.973500067581481], [48.938129510296491, 9.451748968946672]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Somalia\", \"name\": \"Somalia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[49.72862, 11.5789], [50.25878, 11.67957], [50.73202, 12.0219], [51.1112, 12.02464], [51.13387, 11.74815], [51.04153, 11.16651], [51.04531, 10.6409], [50.83418, 10.27972], [50.55239, 9.19874], [50.07092, 8.08173], [49.4527, 6.80466], [48.59455, 5.33911], [47.74079, 4.2194], [46.56476, 2.85529], [45.56399, 2.04576], [44.06815, 1.05283], [43.13597, 0.2922], [42.04157, -0.91916], [41.81095, -1.44647], [41.58513, -1.68325], [40.993, -0.85829], [40.98105, 2.78452], [41.855083092643966, 3.918911920483726], [42.12861, 4.23413], [42.76967, 4.25259], [43.66087, 4.95755], [44.9636, 5.00162], [47.78942, 8.003], [48.486735874226937, 8.837626247589993], [48.938129510296442, 9.451748968946616], [48.938232863161026, 9.973500067581508], [48.938491245322481, 10.982327378783465], [48.942005242718345, 11.394266058798136], [48.948204758509732, 11.410617281697961], [49.26776, 11.43033], [49.72862, 11.5789]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Republic of Serbia\", \"name\": \"Serbia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[20.874312778413408, 45.416375433934306], [21.483526238702204, 45.181170152357865], [21.562022739353718, 44.768947251965635], [22.145087924902892, 44.478422349620573], [22.459022251075961, 44.702517198254426], [22.705725538837434, 44.578002834647002], [22.47400841644065, 44.409227606781762], [22.657149692483067, 44.234923000661347], [22.410446404721593, 44.008063462900047], [22.500156691180219, 43.642814439460999], [22.986018507588479, 43.211161200527094], [22.604801466571352, 42.898518785161109], [22.43659467946139, 42.580321153323943], [22.545011834409642, 42.461362006188025], [22.380525750424674, 42.320259507815074], [21.917080000000105, 42.30364], [21.576635989402117, 42.245224397061847], [21.54332, 42.32025], [21.66292, 42.43922], [21.77505, 42.6827], [21.63302, 42.67717], [21.43866, 42.86255], [21.27421, 42.90959], [21.143395, 43.068685000000123], [20.95651, 43.13094], [20.81448, 43.27205], [20.63508, 43.21671], [20.49679, 42.88469], [20.25758, 42.81275], [20.3398, 42.89852], [19.95857, 43.10604], [19.63, 43.213779970270522], [19.48389, 43.35229], [19.21852, 43.52384], [19.454, 43.568100000000115], [19.59976, 44.03847], [19.11761, 44.42307], [19.36803, 44.863], [19.00548, 44.86023], [19.390475701584588, 45.236515611342369], [19.072768995854172, 45.521511135432078], [18.82982, 45.90888], [19.596044549241636, 46.171729844744547], [20.22019249846289, 46.127468980486569], [20.76217492033998, 45.734573065771478], [20.874312778413408, 45.416375433934306]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Suriname\", \"name\": \"Suriname\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-57.147436489476874, 5.973149929219161], [-55.949318406789786, 5.772877915872], [-55.841779751190408, 5.953125311706059], [-55.033250291551759, 6.025291449401662], [-53.958044603070888, 5.756548163267764], [-54.478632981979224, 4.896755682795585], [-54.3995422023565, 4.212611395683466], [-54.006930508018996, 3.620037746592558], [-54.181726040246261, 3.189779771330421], [-54.269705166223183, 2.732391669115046], [-54.524754197799709, 2.311848863123785], [-55.097587449755125, 2.523748073736612], [-55.569755011605984, 2.42150625244713], [-55.973322109589361, 2.510363877773016], [-56.073341844290283, 2.220794989425499], [-55.905600145070871, 2.021995754398659], [-55.995698004771739, 1.817667141116601], [-56.53938574891454, 1.89952260986692], [-57.150097825739898, 2.768926906745406], [-57.281433478409703, 3.333491929534119], [-57.601568976457848, 3.334654649260684], [-58.044694383360664, 4.060863552258382], [-57.860209520078691, 4.576801052260449], [-57.914288906472123, 4.812626451024413], [-57.307245856339492, 5.073566595882225], [-57.147436489476874, 5.973149929219161]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Slovakia\", \"name\": \"Slovakia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[18.85314415861361, 49.496229763377634], [18.909574822676316, 49.435845852244562], [19.320712517990469, 49.571574001659179], [19.825022820726865, 49.217125352569219], [20.415839471119849, 49.431453355499755], [20.887955356538406, 49.328772284535823], [21.607808058364206, 49.470107326854077], [22.558137648211751, 49.08573802346713], [22.280841912533553, 48.825392157580659], [22.085608351334848, 48.422264309271782], [21.872236362401729, 48.319970811550007], [20.801293979584919, 48.62385407164237], [20.473562045989862, 48.562850043321809], [20.239054396249344, 48.327567247096916], [19.769470656013109, 48.2026911484636], [19.66136355965849, 48.266614895208647], [19.174364861739885, 48.111378892603859], [18.777024773847668, 48.081768296900627], [18.696512892336923, 47.88095368101439], [17.857132602620023, 47.758428860050365], [17.488472934649813, 47.867466132186209], [16.979666782304033, 48.123497015976298], [16.879982944412998, 48.470013332709463], [16.960288120194573, 48.596982326850593], [17.101984897538895, 48.8169688991171], [17.545006951577101, 48.800019029325362], [17.886484816161808, 48.903475246773695], [17.913511590250462, 48.996492824899072], [18.104972771891848, 49.043983466175298], [18.170498488037961, 49.271514797556421], [18.399993523846174, 49.315000515330034], [18.554971144289478, 49.495015367218777], [18.85314415861361, 49.496229763377634]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Slovenia\", \"name\": \"Slovenia\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[13.806475457421524, 46.509306138691201], [14.632471551174827, 46.431817328469535], [15.137091912504982, 46.658702704447016], [16.011663852612653, 46.683610744811688], [16.202298211337361, 46.852385972676949], [16.370504998447412, 46.841327216166498], [16.564808383864854, 46.503750922219822], [15.768732944408548, 46.238108222023442], [15.671529575267552, 45.834153550797865], [15.323953891672403, 45.731782538427673], [15.327674594797424, 45.452316392593218], [14.935243767972931, 45.471695054702671], [14.595109490627804, 45.6349409043127], [14.411968214585411, 45.466165676447446], [13.715059848697221, 45.500323798192369], [13.937630242578305, 45.591015936864608], [13.698109978905475, 46.016778062517339], [13.806475457421524, 46.509306138691201]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Sweden\", \"name\": \"Sweden\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[22.183173455501922, 65.723740546320158], [21.213516879977213, 65.02600535751526], [21.369631381930954, 64.413587958424273], [19.778875766690216, 63.609554348395022], [17.847779168375208, 62.749400132896803], [17.11955488451812, 61.341165676510954], [17.831346062906388, 60.636583360427394], [18.787721795332086, 60.081914374422581], [17.869224887776337, 58.95376618105869], [16.829185011470084, 58.719826972073385], [16.44770958829147, 57.041118069071871], [15.87978559740378, 56.104301866268649], [14.666681349352071, 56.20088511822216], [14.100721062891461, 55.407781073622637], [12.942910597392054, 55.361737372450563], [12.625100538797025, 56.307080186581956], [11.787942335668671, 57.441817125063061], [11.027368605196866, 58.856149400459344], [11.468271925511145, 59.432393296946024], [12.300365838274896, 60.117932847730025], [12.631146681375181, 61.293571682370121], [11.992064243221559, 61.800362453856543], [11.930569288794228, 63.128317572676963], [12.57993533697393, 64.066218980558318], [13.571916131248711, 64.049114081469696], [13.9199052263022, 64.445420640716065], [13.555689731509087, 64.7870276963815], [15.108411492582999, 66.19386688909546], [16.108712192456775, 67.302455552836875], [16.768878614985478, 68.013936672631388], [17.729181756265344, 68.010551866316263], [17.993868442464329, 68.567391262477344], [19.878559604581248, 68.407194322372561], [20.025268995857882, 69.065138658312691], [20.645592889089521, 69.106247260200846], [21.978534783626113, 68.616845608180682], [23.539473097434435, 67.936008612735236], [23.565879754335576, 66.396050930437411], [23.903378533633795, 66.006927395279604], [22.183173455501922, 65.723740546320158]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Swaziland\", \"name\": \"Swaziland\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[32.071665480281062, -26.733820082304902], [31.868060337051073, -27.17792734142127], [31.282773064913325, -27.285879408478991], [30.685961948374477, -26.743845310169526], [30.676608514129633, -26.398078301704604], [30.949666782359905, -26.022649021104144], [31.044079624157146, -25.731452325139436], [31.333157586397899, -25.660190525008943], [31.837777947728057, -25.843331801051342], [31.985779249811962, -26.29177988048022], [32.071665480281062, -26.733820082304902]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Syria\", \"name\": \"Syria\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[38.792340529136077, 33.378686428352218], [36.834062127435537, 32.312937526980768], [35.719918247222743, 32.709192409794859], [35.700797967274745, 32.716013698857374], [35.836396925608618, 32.868123277308506], [35.821100701650231, 33.277426459276292], [36.066460402172048, 33.824912421192543], [36.611750115715886, 34.201788641897174], [36.448194207512095, 34.59393524834406], [35.998402540843628, 34.644914048799997], [35.905023227692219, 35.410009467097318], [36.149762811026527, 35.821534735653664], [36.417550083163029, 36.040616970355053], [36.685389031731795, 36.259699205056457], [36.739494256341395, 36.817520453431079], [37.066761102045824, 36.623036200500614], [38.167727492024191, 36.901210435527766], [38.699891391765895, 36.712927354472335], [39.522580193852541, 36.716053778625984], [40.673259311695681, 37.091276353497285], [41.212089471203043, 37.074352321921687], [42.349591098811764, 37.22987254490409], [41.837064243340954, 36.605853786763568], [41.289707472505448, 36.358814602192261], [41.383965285005807, 35.628316555314349], [41.00615888851992, 34.419372260062111], [38.792340529136077, 33.378686428352218]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Chad\", \"name\": \"Chad\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[14.495787387762899, 12.859396267137353], [14.595781284247604, 13.330426947477859], [13.954476759505607, 13.353448798063765], [13.956698846094124, 13.996691189016925], [13.540393507550785, 14.36713369390122], [13.97217, 15.68437], [15.247731154041842, 16.627305813050778], [15.300441114979716, 17.927949937405], [15.68574059414777, 19.957180080642384], [15.90324669766431, 20.387618923417499], [15.487148064850143, 20.730414537025634], [15.47106, 21.04845], [15.096887648181847, 21.308518785074902], [14.8513, 22.862950000000119], [15.86085, 23.40972], [19.84926, 21.49509], [23.837660000000135, 19.580470000000101], [23.886890000000101, 15.61084], [23.02459, 15.68072], [22.567950000000106, 14.944290000000134], [22.30351, 14.32682], [22.51202, 14.09318], [22.18329, 13.78648], [22.29658, 13.37232], [22.03759, 12.95546], [21.93681, 12.588180000000133], [22.28801, 12.64605], [22.49762, 12.26024], [22.50869, 11.67936], [22.87622, 11.384610000000119], [22.864165480244246, 11.142395127807616], [22.231129184668756, 10.971888739460608], [21.723821648859538, 10.567055568885959], [21.000868361096305, 9.475985215691479], [20.059685499764267, 9.012706000194838], [19.094008009526071, 9.074846910025768], [18.81200971850927, 8.982914536978623], [18.911021762780589, 8.630894680206435], [18.389554884523303, 8.281303615751879], [17.964929640380884, 7.890914008002992], [16.705988396886365, 7.508327541529978], [16.4561845231874, 7.734773667832938], [16.290561557691884, 7.754307359239417], [16.106231723706738, 7.497087917506461], [15.279460483469164, 7.42192454673801], [15.436091749745737, 7.692812404811887], [15.120865512765302, 8.382150173369437], [14.979995558337688, 8.796104234243442], [14.544466586981851, 8.965861314322238], [13.954218377344088, 9.549494940626685], [14.17146609869911, 10.021378282100043], [14.627200555081057, 9.920919297724591], [14.909353875394796, 9.992129421422758], [15.46787275560524, 9.982336737503543], [14.923564894275042, 10.891325181517514], [14.960151808337679, 11.555574042197234], [14.89336, 12.21905], [14.495787387762899, 12.859396267137353]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Togo\", \"name\": \"Togo\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1.865240512712318, 6.14215770102973], [1.060121697604927, 5.928837388528875], [0.836931186536333, 6.279978745952147], [0.570384148774849, 6.914358628767188], [0.490957472342245, 7.411744289576474], [0.712029249686878, 8.312464504423827], [0.461191847342121, 8.677222601756013], [0.365900506195885, 9.46500397382948], [0.367579990245389, 10.191212876827176], [-0.049784715159944, 10.706917832883928], [0.023802524423701, 11.018681748900802], [0.899563022474069, 10.997339382364258], [0.772335646171484, 10.470808213742357], [1.077795037448737, 10.175606594275022], [1.425060662450136, 9.825395412632998], [1.46304284018467, 9.334624335157086], [1.664477573258381, 9.128590399609378], [1.618950636409238, 6.832038072126236], [1.865240512712318, 6.14215770102973]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Thailand\", \"name\": \"Thailand\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[102.58493248902667, 12.186594956913279], [101.687157830819928, 12.645740057826568], [100.831809523524839, 12.627084865769204], [100.978467238369191, 13.412721665902563], [100.097797479251099, 13.406856390837429], [100.018732537844528, 12.307001044153353], [99.478920526123602, 10.846366685423545], [99.153772414143134, 9.963061428258554], [99.222398716226749, 9.239255479362425], [99.873831821698118, 9.207862046745118], [100.279646844486194, 8.29515289960605], [100.45927412313273, 7.429572658717175], [101.017327915452697, 6.856868597842476], [101.623079054778032, 6.740622463401918], [102.141186964936367, 6.221636053894626], [101.81428185425797, 5.810808417174242], [101.154218784593837, 5.691384182147713], [101.075515578213327, 6.20486705161592], [100.259596388756933, 6.642824815289542], [100.085756870527092, 6.46448944745029], [99.690690545655727, 6.848212795433595], [99.519641554769606, 7.343453884302759], [98.988252801512289, 7.907993068875325], [98.503786248775967, 8.382305202666286], [98.339661899816988, 7.794511623562384], [98.150009393305808, 8.350007432483876], [98.259150018306229, 8.973922837759799], [98.553550653073017, 9.932959906448543], [99.038120558673953, 10.960545762572435], [99.587286004639694, 11.892762762901695], [99.196353794351637, 12.804748439988666], [99.212011753336071, 13.269293728076462], [99.097755161538728, 13.827502549693275], [98.430819126379859, 14.622027696180831], [98.192074009191373, 15.123702500870349], [98.537375929765687, 15.308497422746081], [98.90334842325673, 16.177824204976115], [98.493761020911322, 16.837835598207928], [97.859122755934848, 17.567946071843657], [97.375896437573516, 18.445437730375811], [97.797782830804394, 18.627080389881751], [98.253723992915582, 19.708203029860041], [98.959675734454848, 19.752980658440944], [99.543309360759281, 20.186597601802056], [100.115987583417819, 20.41784963630818], [100.548881056726856, 20.109237982661124], [100.606293573003128, 19.508344427971217], [101.282014601651667, 19.462584947176762], [101.035931431077742, 18.408928330961611], [101.059547560635139, 17.512497259994486], [102.113591750092453, 18.109101670804161], [102.413004998791592, 17.932781683824281], [102.998705682387694, 17.961694647691598], [103.200192091893726, 18.309632066312769], [103.956476678485288, 18.240954087796872], [104.716947056092465, 17.428858954330078], [104.779320509868768, 16.441864935771445], [105.589038527450128, 15.570316066952856], [105.544338413517664, 14.723933620660414], [105.218776890078871, 14.27321177821069], [104.281418084736586, 14.416743068901363], [102.988422072361601, 14.225721136934464], [102.348099399833004, 13.39424734135822], [102.58493248902667, 12.186594956913279]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Tajikistan\", \"name\": \"Tajikistan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[71.014198032520156, 40.244365546218226], [70.648018833299957, 39.935753892571157], [69.559609816368507, 40.103211371412968], [69.464886915977516, 39.526683254548693], [70.549161818325601, 39.604197902986492], [71.784693637991992, 39.279463202464363], [73.67537926625478, 39.431236884105594], [73.928852166646408, 38.505815334622724], [74.257514276022718, 38.606506862943441], [74.864815708316812, 38.378846340481587], [74.829985792952087, 37.990007025701388], [74.980002475895404, 37.419990139305888], [73.948695916646486, 37.421566270490786], [73.260055779924983, 37.495256862938994], [72.636889682917271, 37.047558091778349], [72.193040805962383, 36.94828766534566], [71.84463829945058, 36.738171291646914], [71.448693475230229, 37.065644843080513], [71.541917759084768, 37.905774441065631], [71.239403924448155, 37.953265082341879], [71.348131137990251, 38.258905341132156], [70.806820509732873, 38.486281643216408], [70.376304152309274, 38.138395901027515], [70.270574171840124, 37.73516469985401], [70.116578403610319, 37.588222764632086], [69.518785434857946, 37.608996690413413], [69.196272820924364, 37.15114350030742], [68.859445835245921, 37.344335842430588], [68.135562371701369, 37.023115139304302], [67.829999627559502, 37.144994004864678], [68.392032505165943, 38.157025254868728], [68.176025018185911, 38.901553453113898], [67.442219679641298, 39.140143541005479], [67.701428664017342, 39.580478420564518], [68.536416456989414, 39.533452867178923], [69.011632928345477, 40.086158148756653], [69.329494663372813, 40.727824408524839], [70.666622348925031, 40.960213324541407], [70.458159621059608, 40.49649485937028], [70.601406691372674, 40.218527330072284], [71.014198032520156, 40.244365546218226]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Turkmenistan\", \"name\": \"Turkmenistan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[61.21081709172573, 35.650072333309218], [61.123070509694131, 36.491597194966239], [60.377637973883864, 36.52738312432836], [59.234761997316795, 37.412987982730336], [58.436154412678192, 37.522309475243794], [57.330433790928964, 38.029229437810933], [56.619366082592805, 38.121394354803478], [56.180374790273319, 37.935126654607423], [55.511578403551894, 37.964117133123153], [54.800303989486558, 37.392420762678178], [53.921597934795543, 37.198918361961255], [53.735511102112504, 37.906136176091685], [53.880928582581831, 38.952093003895349], [53.101027866432894, 39.290573635407121], [53.357808058491216, 39.975286363274442], [52.693972609269807, 40.033629055331964], [52.91525109234361, 40.87652334244472], [53.85813927594112, 40.631034450842165], [54.736845330632136, 40.951014919593455], [54.0083109881813, 41.551210842447404], [53.721713494690576, 42.123191433270016], [52.916749708880069, 41.868116563477322], [52.81468875510361, 41.135370591794704], [52.502459751196135, 41.783315538086356], [52.94429324729164, 42.116034247397586], [54.079417759014937, 42.324109402020817], [54.755345493392625, 42.04397146256656], [55.455251092353755, 41.259859117185826], [55.968191359282898, 41.308641669269356], [57.096391229079089, 41.32231008561056], [56.93221520368779, 41.82602610937559], [57.786529982337065, 42.170552883465511], [58.629010857991453, 42.751551011723045], [59.976422153569771, 42.223081976890199], [60.083340691981654, 41.425146185871391], [60.46595299667068, 41.22032664648254], [61.547178989513547, 41.2663703476546], [61.882714064384679, 41.084856879229392], [62.374260288344992, 40.053886216790382], [63.518014764261018, 39.363256537425627], [64.170223016216752, 38.892406724598231], [65.215998976507379, 38.402695013984292], [66.546150343700205, 37.974684963526855], [66.518606805288655, 37.362784328758785], [66.217384881459324, 37.393790188133913], [65.745630731066811, 37.661164048812061], [65.588947788357828, 37.305216783185628], [64.746105177677393, 37.111817735333297], [64.546479119733888, 36.31207326918426], [63.982895949158696, 36.007957465146596], [63.193538445900337, 35.857165635718907], [62.984662306576588, 35.404040839167614], [62.230651483005879, 35.270663967422287], [61.21081709172573, 35.650072333309218]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"East Timor\", \"name\": \"Timor-Leste\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[124.96868248911619, -8.892790215697081], [125.086246372580248, -8.656887302284678], [125.947072381698234, -8.432094821815033], [126.64470421763852, -8.39824675866385], [126.957243280139792, -8.273344821814396], [127.335928175974615, -8.397316582882601], [126.967991978056517, -8.668256117388891], [125.925885044458568, -9.106007175333351], [125.088520135601073, -9.393173109579292], [125.070019972840583, -9.08998748132287], [124.96868248911619, -8.892790215697081]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Trinidad and Tobago\", \"name\": \"Trinidad and Tobago\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-61.68, 10.76], [-61.105, 10.89], [-60.895, 10.855], [-60.935, 10.11], [-61.77, 10.0], [-61.95, 10.09], [-61.66, 10.365], [-61.68, 10.76]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Tunisia\", \"name\": \"Tunisia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9.482139926805273, 30.307556057246181], [9.055602654668148, 32.102691962201284], [8.439102817426116, 32.506284898400814], [8.430472853233367, 32.748337307255944], [7.612641635782181, 33.344114895148955], [7.524481642292242, 34.097376410451453], [8.140981479534302, 34.655145982393783], [8.376367628623766, 35.479876003555937], [8.217824334352313, 36.433176988260271], [8.420964389691674, 36.946427313783154], [9.509993523810605, 37.349994411766531], [10.210002475636315, 37.230001735984807], [10.180650262094529, 36.724037787415071], [11.028867221733348, 37.09210317641395], [11.100025668999249, 36.899996039368908], [10.600004510143092, 36.410000108377368], [10.593286573945134, 35.947444362932806], [10.939518670300686, 35.698984076473486], [10.807847120821007, 34.833507188449182], [10.149592726287123, 34.330773016897702], [10.339658644256613, 33.785741685515312], [10.856836378633684, 33.768740139291275], [11.108500603895118, 33.293342800422188], [11.488787469131008, 33.136995754523134], [11.432253452203692, 32.368903103152867], [10.944789666394453, 32.081814683555358], [10.636901482799484, 31.761420803345747], [9.950225050505081, 31.376069647745251], [10.056575148161752, 30.961831366493595], [9.97001712407285, 30.539324856075236], [9.482139926805273, 30.307556057246181]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Turkey\", \"name\": \"Turkey\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[36.913127068842151, 41.335358384764291], [38.347664829264502, 40.948586127275711], [39.512606642420238, 41.102762763018561], [40.373432651538245, 41.013672593747337], [41.554084100110707, 41.535656236327604], [42.619548781104548, 41.58317271581992], [43.582745802592704, 41.09214325618256], [43.752657911968491, 40.740200914058811], [43.656436395040963, 40.253563951166157], [44.400008579288759, 40.005000311842302], [44.79398969908199, 39.713002631177027], [44.109225294782355, 39.428136298168049], [44.421402622257595, 38.281281236314513], [44.225755649600522, 37.971584377589345], [44.772699008977739, 37.170444647768441], [44.293451775902852, 37.001514390606353], [43.942258742047343, 37.256227525372928], [42.77912560402185, 37.385263576805798], [42.349591098811764, 37.229872544904104], [41.212089471203015, 37.074352321921729], [40.673259311695702, 37.091276353497356], [39.522580193852512, 36.716053778626012], [38.699891391765917, 36.712927354472313], [38.167727492024156, 36.90121043552778], [37.066761102045824, 36.623036200500614], [36.739494256341366, 36.817520453431108], [36.685389031731816, 36.259699205056499], [36.417550083163086, 36.040616970355096], [36.149762811026584, 35.821534735653664], [35.782084995269848, 36.274995429014915], [36.160821567537049, 36.650605577128367], [35.550936313628334, 36.565442816711325], [34.714553256984367, 36.795532131490909], [34.026894972476455, 36.219960028623966], [32.509158156064096, 36.107563788389193], [31.69959516777956, 36.644275214172602], [30.621624790171062, 36.677864895162308], [30.391096225717114, 36.262980658506983], [29.69997562024556, 36.144357408181001], [28.732902866335387, 36.676831366516431], [27.641186557737363, 36.658822129862749], [27.048767937943289, 37.653360907536005], [26.318218214633042, 38.208133246405382], [26.804700148228726, 38.985760199533551], [26.170785353304375, 39.463612168936457], [27.280019972449388, 40.420013739578302], [28.819977654747209, 40.460011298172212], [29.240003696415574, 41.219990749672682], [31.145933872204434, 41.087621568357058], [32.347979363745786, 41.736264146484629], [33.513282911927512, 42.018960069337304], [35.167703891751863, 42.040224921225438], [36.913127068842151, 41.335358384764291]]], [[[27.192376743282406, 40.690565700842448], [26.358009067497782, 40.151993923496477], [26.043351271272535, 40.617753607743161], [26.056942172965332, 40.824123440100735], [26.294602085075692, 40.936261298174166], [26.604195590936282, 41.562114569661013], [26.117041863720825, 41.826904608724554], [27.135739373490505, 42.141484890301307], [27.996720411905407, 42.007358710287768], [28.115524529744441, 41.622886054036279], [28.988442824018779, 41.299934190428175], [28.806438429486743, 41.05496206314853], [27.619017368284112, 40.999823309893102], [27.192376743282406, 40.690565700842448]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Taiwan\", \"name\": \"Taiwan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[121.777817824389899, 24.394273586519393], [121.175632358892713, 22.790857245367164], [120.747079705896198, 21.970571397382106], [120.220083449383651, 22.814860948166732], [120.106188592612369, 23.556262722258229], [120.694679803552233, 24.53845083261373], [121.49504438688875, 25.295458889257379], [121.951243931161429, 24.997595933527034], [121.777817824389899, 24.394273586519393]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"United Republic of Tanzania\", \"name\": \"Tanzania\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[33.903711197104592, -0.95], [34.07262, -1.05982], [37.69869, -3.09699], [37.7669, -3.67712], [39.20222, -4.67677], [38.74054, -5.90895], [38.79977, -6.47566], [39.44, -6.84], [39.470000000000134, -7.1], [39.19469, -7.7039], [39.25203, -8.00781], [39.18652, -8.48551], [39.53574, -9.112369999999883], [39.9496, -10.0984], [40.31659, -10.317099999999867], [39.521, -10.89688], [38.427556593587767, -11.285202325081626], [37.82764, -11.26879], [37.47129, -11.56876], [36.775150994622884, -11.59453744878078], [36.514081658684397, -11.720938002166745], [35.312397902169145, -11.439146416879165], [34.559989047999451, -11.520020033415845], [34.28, -10.16], [33.940837724096518, -9.693673841980283], [33.73972, -9.41715], [32.759375441221373, -9.230599053589001], [32.191864861791935, -8.930358981973255], [31.556348097466628, -8.762048841998647], [31.157751336950064, -8.594578747317312], [30.74, -8.34], [30.2, -7.08], [29.62, -6.52], [29.419992710088305, -5.939998874539297], [29.519986606573063, -5.419978936386257], [29.339997592900367, -4.499983412294113], [29.753512404099858, -4.452389418153301], [30.11632, -4.09012], [30.50554, -3.56858], [30.75224, -3.35931], [30.74301, -3.03431], [30.52766, -2.80762], [30.46967, -2.41383], [30.758308953583132, -2.287250257988375], [30.816134881317844, -1.698914076345374], [30.419104852019291, -1.134659112150416], [30.769860000000101, -1.01455], [31.86617, -1.02736], [33.903711197104592, -0.95]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Uganda\", \"name\": \"Uganda\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[31.86617, -1.02736], [30.769860000000101, -1.01455], [30.419104852019291, -1.134659112150416], [29.821518588996121, -1.443322442229771], [29.579466180141019, -1.341313164885605], [29.587837762172164, -0.587405694179381], [29.8195, -0.2053], [29.875778842902431, 0.597379868976361], [30.086153598762785, 1.062312730306416], [30.468507521290285, 1.583805446779706], [30.852670118948133, 1.849396470543752], [31.174149204235952, 2.204465236821306], [30.77332, 2.339890000000139], [30.83385, 3.50917], [31.24556, 3.7819], [31.88145, 3.55827], [32.68642, 3.79232], [33.39, 3.79], [34.005, 4.249884947362147], [34.47913, 3.5556], [34.59607, 3.053740000000118], [35.03599, 1.90584], [34.6721, 1.17694], [34.18, 0.515], [33.893568969666994, 0.109813537861839], [33.903711197104592, -0.95], [31.86617, -1.02736]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Ukraine\", \"name\": \"Ukraine\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[31.78599816257158, 52.10167796488544], [32.159412062312661, 52.061266994833204], [32.412058139787625, 52.288694973349735], [32.715760532366964, 52.238465481162038], [33.7526998227357, 52.335074571331681], [34.391730584457001, 51.768881740925778], [34.141978387190385, 51.566413479206226], [34.22481570815426, 51.255993150428942], [35.022183058417873, 51.207572333371445], [35.377923618315116, 50.773955390010343], [35.35611616388794, 50.577197374059054], [36.62616784032533, 50.225590928745127], [37.393459506995065, 50.383953355503586], [38.01063113785689, 49.915661526074622], [38.59498823421341, 49.926461900423618], [40.069058465339097, 49.601055406281688], [40.080789015469342, 49.307429917999272], [39.674663934087526, 48.783818467801872], [39.895632358567575, 48.232405097031425], [39.738277622238819, 47.898937079451983], [38.770584751141186, 47.825608222029807], [38.255112339029743, 47.546400458356807], [38.223538038899413, 47.102189846375872], [37.42513715998998, 47.022220567404197], [36.759854770664383, 46.698700263040919], [35.823684523264816, 46.645964463887054], [34.962341749823871, 46.273196519549636], [35.020787794745978, 45.65121898048465], [35.51000857925316, 45.409993394546177], [36.529997999830151, 45.46998973243705], [36.334712762199146, 45.113215643893952], [35.239999220528112, 44.939996242851599], [33.882511020652878, 44.361478583344066], [33.326420932760037, 44.564877020844875], [33.546924269349446, 45.034770819674883], [32.454174432105496, 45.327466132176063], [32.630804477679128, 45.519185695978905], [33.588162062318382, 45.851568508480227], [33.298567335754704, 46.08059845639783], [31.744140252415171, 46.333347886737378], [31.675307244602401, 46.706245022155528], [30.748748813609094, 46.583100084003995], [30.37760867688888, 46.032410183285663], [29.603289015427425, 45.293308010431119], [29.149724969201646, 45.464925442072442], [28.679779493939371, 45.30403087013169], [28.233553501099035, 45.488283189468369], [28.48526940279276, 45.596907050145887], [28.659987420371575, 45.939986884131628], [28.933717482221621, 46.258830471372491], [28.862972446414055, 46.437889309263824], [29.072106967899288, 46.517677720722482], [29.170653924279879, 46.379262396828693], [29.759971958136383, 46.349987697935354], [30.024658644335364, 46.423936672545032], [29.838210076626289, 46.525325832701675], [29.908851759569295, 46.67436066343145], [29.559674106573105, 46.928582872091312], [29.415135125452732, 47.346645209332571], [29.050867954227321, 47.510226955752493], [29.122698195113024, 47.849095160506458], [28.670891147585163, 48.118148505234089], [28.259546746541837, 48.155562242213406], [27.52253746919515, 48.467119452501102], [26.857823520624798, 48.368210761094488], [26.619336785597788, 48.220726223333457], [26.197450392366925, 48.220881252630342], [25.945941196402394, 47.987148749374207], [25.207743361112986, 47.891056423527459], [24.866317172960571, 47.737525743188307], [24.402056105250374, 47.981877753280422], [23.760958286237404, 47.985598456405448], [23.142236362406798, 48.096341050806942], [22.710531447040488, 47.882193915389394], [22.640819939878746, 48.150239569687351], [22.085608351334848, 48.422264309271782], [22.280841912533553, 48.825392157580659], [22.558137648211751, 49.08573802346713], [22.776418898212619, 49.027395331409608], [22.518450148211596, 49.476773586619736], [23.426508416444388, 50.308505764357449], [23.922757195743259, 50.424881089878738], [24.029985792748899, 50.705406602575174], [23.52707075368437, 51.578454087930233], [24.005077752384206, 51.617443956094448], [24.553106316839511, 51.888461005249177], [25.327787713327005, 51.910656032918538], [26.337958611768549, 51.832288723347915], [27.454066196408426, 51.59230337178446], [28.241615024536564, 51.572227077839059], [28.617612745892242, 51.427713934934836], [28.992835320763522, 51.602044379271462], [29.254938185347921, 51.368234361366881], [30.157363722460889, 51.416138414101454], [30.55511722181145, 51.319503485715643], [30.619454380014837, 51.822806098022362], [30.927549269338975, 52.042353420614383], [31.78599816257158, 52.10167796488544]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Uruguay\", \"name\": \"Uruguay\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-57.625133429582945, -30.216294854454258], [-56.976025763564721, -30.109686374636119], [-55.97324459494093, -30.883075860316296], [-55.601510179249331, -30.853878676071385], [-54.572451544805105, -31.494511407193745], [-53.787951626182185, -32.047242526987617], [-53.209588995971529, -32.727666110974717], [-53.650543992718084, -33.202004082981823], [-53.373661668498229, -33.768377780900757], [-53.806425950726521, -34.396814874002224], [-54.935866054897716, -34.952646579733617], [-55.674089728403274, -34.752658786764066], [-56.215297003796053, -34.85983570733741], [-57.139685024633096, -34.430456231424238], [-57.817860683815489, -34.462547295877492], [-58.427074144104381, -33.909454441057569], [-58.349611172098854, -33.2631889788154], [-58.132647671121433, -33.040566908502008], [-58.142440355040748, -32.044503676076147], [-57.874937303281875, -31.016556084926201], [-57.625133429582945, -30.216294854454258]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"United States of America\", \"name\": \"United States\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[-155.54211, 19.08348], [-155.68817, 18.91619], [-155.93665, 19.05939], [-155.90806, 19.33888], [-156.07347, 19.70294], [-156.02368, 19.81422], [-155.85008, 19.97729], [-155.91907, 20.17395], [-155.86108, 20.26721], [-155.78505, 20.2487], [-155.40214, 20.07975], [-155.22452, 19.99302], [-155.06226, 19.8591], [-154.80741, 19.50871], [-154.83147, 19.45328], [-155.222169999999892, 19.23972], [-155.54211, 19.08348]]], [[[-156.07926, 20.64397], [-156.41445, 20.57241], [-156.58673, 20.783], [-156.70167, 20.8643], [-156.71055, 20.92676], [-156.61258, 21.01249], [-156.25711, 20.91745], [-155.99566, 20.76404], [-156.07926, 20.64397]]], [[[-156.75824, 21.17684], [-156.78933, 21.06873], [-157.32521, 21.09777], [-157.25027, 21.21958], [-156.75824, 21.17684]]], [[[-157.65283, 21.32217], [-157.70703, 21.26442], [-157.7786, 21.27729], [-158.12667, 21.31244], [-158.2538, 21.53919], [-158.29265, 21.57912], [-158.0252, 21.71696], [-157.94161, 21.65272], [-157.65283, 21.32217]]], [[[-159.34512, 21.982], [-159.46372, 21.88299], [-159.80051, 22.06533], [-159.74877, 22.1382], [-159.5962, 22.23618], [-159.36569, 22.21494], [-159.34512, 21.982]]], [[[-94.81758, 49.38905], [-94.639999999999858, 48.840000000000103], [-94.32914, 48.67074], [-93.63087, 48.60926], [-92.61, 48.45], [-91.64, 48.14], [-90.829999999999856, 48.27], [-89.6, 48.01], [-89.272917446636654, 48.019808254582834], [-88.378114183286513, 48.302917588893806], [-87.439792623300207, 47.94], [-86.461990831228135, 47.553338019392037], [-85.652363247403215, 47.220218817730498], [-84.876079881514855, 46.900083319682366], [-84.779238247399817, 46.637101955749117], [-84.54374874544564, 46.538684190449224], [-84.6049, 46.4396], [-84.3367, 46.408770000000104], [-84.142119513673279, 46.512225857115723], [-84.091851264161463, 46.275418606138253], [-83.890765347005654, 46.116926988299149], [-83.616130947590491, 46.116926988299149], [-83.469550747394621, 45.994686387712584], [-83.592850714843067, 45.816893622412543], [-82.550924648758169, 45.347516587905446], [-82.337763125431053, 44.44], [-82.137642381503952, 43.571087551439987], [-82.43, 42.98], [-82.899999999999878, 42.430000000000135], [-83.119999999999877, 42.08], [-83.141999681312555, 41.975681057292995], [-83.029810146806909, 41.832795722005997], [-82.690089280920162, 41.675105088867319], [-82.439277716791608, 41.675105088867319], [-81.277746548167059, 42.209025987306845], [-80.247447679347843, 42.36619985612267], [-78.939362148743683, 42.863611355148116], [-78.92, 42.965], [-79.009999999999863, 43.27], [-79.171673550111862, 43.466339423184301], [-78.720279914042365, 43.625089423184953], [-77.737885097957601, 43.629055589363382], [-76.820034145805565, 43.628784288093748], [-76.5, 44.018458893758599], [-76.375, 44.09631], [-75.31821, 44.81645000000016], [-74.867, 45.00048000000011], [-73.347829999999874, 45.00738], [-71.505059999999858, 45.0082], [-71.405, 45.255000000000123], [-71.08482, 45.305240000000154], [-70.659999999999783, 45.46], [-70.305, 45.915], [-69.99997, 46.69307], [-69.237216, 47.447781], [-68.905, 47.185], [-68.23444, 47.35486], [-67.79046, 47.06636], [-67.79134, 45.702810000000134], [-67.13741, 45.13753], [-66.96466, 44.809700000000149], [-68.03252, 44.3252], [-69.059999999999874, 43.98], [-70.116169999999897, 43.684050000000141], [-70.645475633410967, 43.090238348964043], [-70.81489, 42.8653], [-70.825, 42.335], [-70.494999999999891, 41.805], [-70.08, 41.78], [-70.185, 42.145], [-69.88497, 41.922830000000111], [-69.96503, 41.637170000000161], [-70.64, 41.475], [-71.12039, 41.494450000000164], [-71.859999999999829, 41.32], [-72.295, 41.27], [-72.87643, 41.22065], [-73.71, 40.931102351654481], [-72.24126, 41.119480000000138], [-71.944999999999808, 40.93], [-73.345, 40.63], [-73.982, 40.628], [-73.952325, 40.75075], [-74.25671, 40.47351], [-73.96244, 40.42763], [-74.17838, 39.70926], [-74.90604, 38.93954], [-74.98041, 39.1964], [-75.20002, 39.24845], [-75.52805, 39.4985], [-75.32, 38.96], [-75.071834764789784, 38.782032230179276], [-75.05673, 38.404120000000106], [-75.37747, 38.01551], [-75.94023, 37.21689], [-76.03127, 37.2566], [-75.722049999999783, 37.937050000000106], [-76.23287, 38.319215], [-76.35, 39.15], [-76.542725, 38.717615], [-76.32933, 38.08326], [-76.98999793161353, 38.239991766913384], [-76.301619999999886, 37.917945], [-76.25874, 36.9664000000001], [-75.9718, 36.89726], [-75.868039999999809, 36.55125], [-75.72749, 35.550740000000125], [-76.36318, 34.808540000000129], [-77.39763499999988, 34.51201], [-78.05496, 33.92547], [-78.554349999999815, 33.861330000000116], [-79.06067, 33.49395], [-79.20357, 33.15839], [-80.301325, 32.509355], [-80.86498, 32.0333], [-81.33629, 31.44049], [-81.49042, 30.729990000000122], [-81.31371, 30.03552], [-80.98, 29.18000000000011], [-80.53558499999987, 28.47213], [-80.529999999999774, 28.04], [-80.056539284977532, 26.88000000000013], [-80.088015, 26.205765], [-80.131559999999837, 25.816775], [-80.38103, 25.20616], [-80.679999999999879, 25.08], [-81.17213, 25.201260000000126], [-81.33, 25.64], [-81.709999999999795, 25.87], [-82.239999999999895, 26.730000000000125], [-82.70515, 27.49504], [-82.85526, 27.88624], [-82.65, 28.550000000000146], [-82.929999999999865, 29.100000000000129], [-83.70959, 29.93656], [-84.1, 30.090000000000114], [-85.10882, 29.63615], [-85.28784, 29.686120000000127], [-85.7731, 30.152610000000116], [-86.399999999999878, 30.400000000000112], [-87.530359999999831, 30.27433], [-88.41782, 30.3849], [-89.180489999999836, 30.31598], [-89.593831178419748, 30.159994004836843], [-89.413735, 29.89419], [-89.43, 29.48864], [-89.21767, 29.29108], [-89.40823, 29.15961], [-89.77928, 29.307140000000135], [-90.15463, 29.11743], [-90.880224999999896, 29.148535000000116], [-91.626784999999842, 29.677000000000127], [-92.49906, 29.5523], [-93.22637, 29.78375], [-93.84842, 29.71363], [-94.69, 29.480000000000125], [-95.60026, 28.73863], [-96.59404, 28.30748], [-97.139999999999802, 27.83], [-97.37, 27.38], [-97.379999999999853, 26.69], [-97.33, 26.210000000000115], [-97.139999999999802, 25.87], [-97.529999999999859, 25.84], [-98.239999999999895, 26.060000000000109], [-99.019999999999854, 26.37], [-99.3, 26.84], [-99.52, 27.54], [-100.11, 28.11000000000012], [-100.45584, 28.696120000000118], [-100.957599999999886, 29.380710000000125], [-101.6624, 29.779300000000113], [-102.48, 29.76], [-103.11, 28.97], [-103.94, 29.27], [-104.456969999999814, 29.57196], [-104.705749999999895, 30.12173], [-105.03737, 30.64402], [-105.63159, 31.083830000000113], [-106.1429, 31.39995], [-106.507589999999794, 31.75452], [-108.24, 31.754853718166398], [-108.24194, 31.34222], [-109.035, 31.341940000000161], [-111.02361, 31.33472], [-113.30498, 32.03914], [-114.815, 32.52528], [-114.721389999999829, 32.72083], [-115.991349999999869, 32.61239000000014], [-117.127759999999753, 32.53534], [-117.295937691273863, 33.04622461520389], [-117.944, 33.621236431201389], [-118.410602275897475, 33.740909223124497], [-118.519894822799685, 34.027781577575745], [-119.081, 34.078], [-119.438840642016658, 34.348477178284291], [-120.36778, 34.44711], [-120.62286, 34.60855], [-120.74433, 35.156860000000101], [-121.714569999999853, 36.16153], [-122.54747, 37.551760000000101], [-122.51201, 37.783390000000132], [-122.95319, 38.113710000000104], [-123.7272, 38.951660000000111], [-123.865169999999878, 39.766990000000128], [-124.39807, 40.3132], [-124.17886, 41.142020000000109], [-124.2137, 41.999640000000134], [-124.532839999999894, 42.76599], [-124.14214, 43.70838], [-124.020535, 44.615895], [-123.898929999999893, 45.52341], [-124.079635, 46.86475], [-124.395669999999896, 47.72017], [-124.687210083007812, 48.184432983398537], [-124.566101074218736, 48.379714965820384], [-123.12, 48.04], [-122.587359999999876, 47.096], [-122.34, 47.36], [-122.5, 48.18], [-122.84, 49.0], [-120.0, 49.0], [-117.03121, 49.0], [-116.04818, 49.0], [-112.999999999999872, 49.0], [-110.049999999999812, 49.0], [-107.049999999999898, 49.0], [-104.04826, 48.99986], [-100.65, 49.0], [-97.228720000004699, 49.0007], [-95.159069509171943, 49.0], [-95.15609, 49.38425], [-94.81758, 49.38905]]], [[[-153.006314053336837, 57.115842190165878], [-154.0050902984581, 56.734676825581047], [-154.516402757770067, 56.992748928446687], [-154.670992804971092, 57.461195787172493], [-153.762779507441451, 57.816574612043773], [-153.228729417921073, 57.968968410872421], [-152.564790615835108, 57.901427313866961], [-152.141147223906273, 57.591058661521977], [-153.006314053336837, 57.115842190165878]]], [[[-165.579164191733554, 59.909986884187539], [-166.192770148767238, 59.754440822988961], [-166.848337368821944, 59.941406155020942], [-167.455277066090048, 60.213069159579376], [-166.467792121424566, 60.384169826897775], [-165.674429694663644, 60.293606879306232], [-165.579164191733554, 59.909986884187539]]], [[[-171.731656867539357, 63.782515367275906], [-171.114433560245175, 63.592191067144981], [-170.491112433940657, 63.694975490973505], [-169.682505459653555, 63.431115627691142], [-168.689439460300662, 63.297506212000584], [-168.77194088445458, 63.188598130945437], [-169.529439867204985, 62.976931464277882], [-170.290556200215917, 63.194437567794452], [-170.671385667990847, 63.375821845138965], [-171.553063117538642, 63.317789211675077], [-171.791110602891166, 63.40584585230048], [-171.731656867539357, 63.782515367275906]]], [[[-155.067790290324211, 71.147776394323685], [-154.344165208941206, 70.696408596470192], [-153.900006273392563, 70.889988511835682], [-152.210006069935275, 70.829992173944831], [-152.270002407826127, 70.60000621202984], [-150.739992438744508, 70.430016588005699], [-149.720003018167489, 70.530010484490433], [-147.613361579357047, 70.214034939241785], [-145.689989800225248, 70.120009670686741], [-144.920010959076393, 69.989991767040479], [-143.58944618042517, 70.152514146598307], [-142.072510348713365, 69.851938178172631], [-140.985987521560702, 69.711998399526365], [-140.985988329004869, 69.711998399526365], [-140.992498752029377, 66.000028591568665], [-140.997769748123119, 60.306396796298593], [-140.012997816153074, 60.276837877027575], [-139.03900042031583, 60.000007229240012], [-138.340889999999888, 59.562110000000146], [-137.4525, 58.905000000000101], [-136.47972, 59.46389], [-135.47583, 59.78778], [-134.945, 59.270560000000117], [-134.27111, 58.86111], [-133.355548882207188, 58.410285142645151], [-132.73042, 57.692890000000105], [-131.707809999999853, 56.55212], [-130.00778, 55.91583], [-129.979994263358265, 55.284997870497207], [-130.536110189467223, 54.802753404349389], [-131.08581823797212, 55.178906155002025], [-131.967211467142278, 55.497775580459049], [-132.250010742859445, 56.369996242897443], [-133.539181084356386, 57.178887437562125], [-134.07806292029602, 58.123067531966889], [-135.038211032279037, 58.187714748763931], [-136.628062309954629, 58.212209377670447], [-137.800006279686016, 58.499995429103777], [-139.867787041412981, 59.537761542389134], [-140.825273817133024, 59.72751740176507], [-142.574443535564427, 60.084446519604981], [-143.958880994879848, 59.99918040632339], [-145.925556816827822, 60.458609727614274], [-147.114373949146625, 60.884656073644628], [-148.224306200127643, 60.672989406977152], [-148.018065558850736, 59.978328965893631], [-148.570822516860858, 59.914172675203297], [-149.727857835875824, 59.705658270905545], [-150.608243374616421, 59.368211168039487], [-151.716392788683294, 59.155821031319974], [-151.859433153267105, 59.74498403587959], [-151.40971900124714, 60.725802720779392], [-150.346941494732505, 61.033587551509854], [-150.621110806256951, 61.284424953854447], [-151.895839199816834, 60.727197984451273], [-152.578329841095581, 60.061657212964285], [-154.019172126257558, 59.350279446034264], [-153.287511359653166, 58.864727688219787], [-154.232492438758442, 58.146373602930531], [-155.307491421510207, 57.727794501366319], [-156.308334723923082, 57.422774359763636], [-156.556097378546298, 56.979984849670636], [-158.117216559867728, 56.463608099994175], [-158.433321296197136, 55.994153550838533], [-159.603327399717415, 55.566686102920116], [-160.289719611634183, 55.643580634170561], [-161.223047655257773, 55.364734605523481], [-162.23776607974105, 55.024186916720097], [-163.069446581046378, 54.689737046927171], [-164.785569221027174, 54.40417308208216], [-164.942226325520011, 54.572224839895327], [-163.84833960676562, 55.039431464246107], [-162.870001390615897, 55.348043117893198], [-161.804174974596009, 55.894986477270429], [-160.563604702781134, 56.008054511125025], [-160.070559862284483, 56.418055324928744], [-158.684442918919416, 57.016675116597852], [-158.461097378553944, 57.216921291728866], [-157.722770352183858, 57.570000515363056], [-157.550274421193564, 58.328326321030218], [-157.041674974576949, 58.918884589261708], [-158.194731208305427, 58.615802313869828], [-158.517217984023034, 58.787781480537305], [-159.058606126928709, 58.424186102931671], [-159.711667040017318, 58.931390285876333], [-159.981288825500144, 58.572549140041623], [-160.355271165996498, 59.071123358793628], [-161.355003425115001, 58.670837714260742], [-161.968893602526293, 58.671664537177371], [-162.054986538724648, 59.266925360747436], [-161.874170702135331, 59.633621324290587], [-162.518059048492034, 59.989723619213905], [-163.818341437820123, 59.798055731843377], [-164.662217577146407, 60.267484442782639], [-165.346387702474772, 60.507495632562396], [-165.350831875651835, 61.073895168697497], [-166.121379157555907, 61.500019029376212], [-165.734451870770471, 62.074996853271792], [-164.919178636717788, 62.633076483807919], [-164.562507901039339, 63.146378485763044], [-163.753332485996964, 63.219448961023758], [-163.067224494457832, 63.05945872664801], [-162.260555386381697, 63.541935736741159], [-161.534449836248569, 63.455816962326757], [-160.772506680321101, 63.76610810002326], [-160.958335130842528, 64.222798570402759], [-161.518068407212184, 64.402787584075313], [-160.777777676414729, 64.788603827566405], [-161.391926235987597, 64.777235012462327], [-162.453050096668818, 64.559444688568206], [-162.757786017894034, 64.338605455168803], [-163.54639421288428, 64.559160468190484], [-164.960829841145141, 64.446945095468848], [-166.425288255864473, 64.686672064870706], [-166.845004238939026, 65.088895575614529], [-168.110560065767146, 65.669997056736733], [-166.70527116602193, 66.088317776139391], [-164.474709642575448, 66.576660061297488], [-163.652511766595637, 66.576660061297488], [-163.788601651036117, 66.077207343196662], [-161.677774421210131, 66.116119696712403], [-162.489714525379981, 66.735565090595102], [-163.719716966791083, 67.116394558370089], [-164.430991380856511, 67.616338202577779], [-165.390286831706703, 68.042772121850234], [-166.764440680995989, 68.35887685817967], [-166.204707404626561, 68.883030910916162], [-164.430810513343431, 68.915535386827727], [-163.168613654614489, 69.371114813912882], [-162.930566169261965, 69.858061835399255], [-161.908897264635499, 70.333329983187625], [-160.93479651593367, 70.447689927849567], [-159.039175788387126, 70.891642157668926], [-158.119722866833939, 70.824721177851032], [-156.580824551398024, 71.357763576941736], [-155.067790290324211, 71.147776394323685]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Uzbekistan\", \"name\": \"Uzbekistan\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[66.518606805288655, 37.362784328758785], [66.546150343700205, 37.974684963526855], [65.215998976507379, 38.402695013984292], [64.170223016216752, 38.892406724598231], [63.518014764261018, 39.363256537425627], [62.374260288344992, 40.053886216790382], [61.882714064384679, 41.084856879229392], [61.547178989513547, 41.2663703476546], [60.46595299667068, 41.22032664648254], [60.083340691981654, 41.425146185871391], [59.976422153569771, 42.223081976890199], [58.629010857991453, 42.751551011723045], [57.786529982337065, 42.170552883465511], [56.93221520368779, 41.82602610937559], [57.096391229079089, 41.32231008561056], [55.968191359282898, 41.308641669269356], [55.928917270741081, 44.995858466159099], [58.503127068928457, 45.586804307632818], [58.689989048095882, 45.500013739598621], [60.239971958258316, 44.784036770194717], [61.05831994003244, 44.405816962250505], [62.013300408786236, 43.504476630215642], [63.185786981056559, 43.650074978197999], [64.900824415959264, 43.728080552742576], [66.098012322865074, 42.997660020513088], [66.023391554635609, 41.994646307943974], [66.510648634715707, 41.987644151368436], [66.714047072216502, 41.168443508461493], [67.985855747351806, 41.135990708982213], [68.259895867795606, 40.662324530594894], [68.632482944620008, 40.668680731766798], [69.070027296835306, 41.384244289712363], [70.388964878220776, 42.081307684897439], [70.96231489449913, 42.266154283205481], [71.259247674448218, 42.167710679689456], [70.420022414028196, 41.519998277343134], [71.157858514291576, 41.143587144529107], [71.870114780570447, 41.392900092121259], [73.055417108049156, 40.86603302668945], [71.774875115856545, 40.145844428053763], [71.014198032520156, 40.244365546218226], [70.601406691372674, 40.218527330072284], [70.458159621059608, 40.49649485937028], [70.666622348925031, 40.960213324541407], [69.329494663372813, 40.727824408524839], [69.011632928345477, 40.086158148756653], [68.536416456989414, 39.533452867178923], [67.701428664017342, 39.580478420564518], [67.442219679641298, 39.140143541005479], [68.176025018185911, 38.901553453113898], [68.392032505165943, 38.157025254868728], [67.829999627559502, 37.144994004864678], [67.075782098259609, 37.35614390720928], [66.518606805288655, 37.362784328758785]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Venezuela\", \"name\": \"Venezuela\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-71.331583624950284, 11.776284084515805], [-71.36000566271079, 11.53999359786121], [-71.947049933546495, 11.423282375530018], [-71.620868292920164, 10.969459947142791], [-71.633063930941063, 10.446494452349027], [-72.074173956984495, 9.865651353388369], [-71.695644090446521, 9.072263088411246], [-71.26455929226772, 9.137194525585981], [-71.039999355743376, 9.859992784052407], [-71.350083787710773, 10.211935126176213], [-71.400623338492224, 10.968969021036013], [-70.155298834906503, 11.375481675660039], [-70.293843349881016, 11.846822414594211], [-69.943244594996813, 12.162307033736095], [-69.584300096297454, 11.459610907431211], [-68.882999233664435, 11.44338450769156], [-68.233271450458716, 10.885744126829945], [-68.194126552997616, 10.554653225135921], [-67.296248541926317, 10.545868231646306], [-66.227864142507983, 10.648626817258684], [-65.655237596281737, 10.20079885501732], [-64.890452236578156, 10.077214667191296], [-64.329478725833724, 10.389598700395679], [-64.318006557864933, 10.641417954953978], [-63.079322475828725, 10.701724351438598], [-61.880946010980182, 10.7156253117251], [-62.730118984616396, 10.420268662960904], [-62.388511928950969, 9.948204453974636], [-61.588767462801918, 9.873066921422263], [-60.830596686431711, 9.38133982994894], [-60.671252407459718, 8.580174261911877], [-60.150095587796166, 8.602756862823425], [-59.758284878159181, 8.367034816924045], [-60.550587938058186, 7.779602972846178], [-60.637972785063752, 7.414999904810853], [-60.295668097562377, 7.043911444522918], [-60.543999192940966, 6.856584377464881], [-61.159336310456467, 6.696077378766317], [-61.139415045807937, 6.234296779806142], [-61.410302903881941, 5.959068101419616], [-60.733574184803707, 5.2002772078619], [-60.601179165271922, 4.918098049332129], [-60.966893276601517, 4.536467596856638], [-62.085429653559125, 4.162123521334308], [-62.804533047116692, 4.006965033377951], [-63.093197597899092, 3.770571193858784], [-63.888342861574145, 4.020530096854571], [-64.628659430587533, 4.14848094320925], [-64.816064012294007, 4.056445217297422], [-64.368494432214092, 3.797210394705246], [-64.408827887617903, 3.126786200366623], [-64.269999152265783, 2.497005520025566], [-63.422867397705105, 2.411067613124174], [-63.368788011311644, 2.200899562993129], [-64.083085496666072, 1.91636912679408], [-64.199305792890499, 1.49285492594602], [-64.611011928959854, 1.328730576987041], [-65.354713304288353, 1.0952822941085], [-65.548267381437554, 0.78925446207603], [-66.325765143484944, 0.724452215982012], [-66.876325853122566, 1.253360500489336], [-67.181294318293041, 2.250638129074062], [-67.447092047786299, 2.600280869960869], [-67.809938117123693, 2.820655015469569], [-67.303173183853417, 3.31845408773718], [-67.33756384954367, 3.542342230641721], [-67.621835903581271, 3.839481716319994], [-67.823012254493534, 4.503937282728898], [-67.744696621355203, 5.221128648291667], [-67.521531948502741, 5.556870428891968], [-67.34143958196556, 6.095468044454021], [-67.695087246355001, 6.267318020040645], [-68.265052456318216, 6.153268133972473], [-68.985318569602327, 6.206804917826856], [-69.389479946557103, 6.099860541198835], [-70.093312954372408, 6.960376491723109], [-70.674233567981503, 7.087784735538717], [-71.960175747348629, 6.991614895043538], [-72.19835242378187, 7.340430813013682], [-72.444487270788059, 7.42378489830048], [-72.479678921178831, 7.632506008327352], [-72.360900641555958, 8.002638454617893], [-72.439862230097944, 8.405275376820027], [-72.660494757768092, 8.62528778730268], [-72.788729824500379, 9.085027167187331], [-73.304951544880026, 9.151999823437604], [-73.027604132769554, 9.736770331252441], [-72.905286017534692, 10.45034434655477], [-72.614657762325194, 10.821975409381777], [-72.227575446242923, 11.108702093953237], [-71.973921678338272, 11.608671576377116], [-71.331583624950284, 11.776284084515805]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Vietnam\", \"name\": \"Vietnam\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[108.050180291782908, 21.552379869060111], [106.715067987090066, 20.696850694252014], [105.881682163519002, 19.752050482659694], [105.662005649846279, 19.058165188060567], [106.426816847765991, 18.004120998603224], [107.36195356651973, 16.697456569887049], [108.269495070429599, 16.079742336486145], [108.877106561317447, 15.276690578670436], [109.335269810017209, 13.42602834721772], [109.200135939573954, 11.666859239137761], [108.366129998815424, 11.00832062422627], [107.22092858279521, 10.36448395430183], [106.4051127462034, 9.530839748569317], [105.158263787865081, 8.599759629750492], [104.795185174582372, 9.2410383162765], [105.076201613385592, 9.918490505406806], [104.334334751403446, 10.486543687375228], [105.199914992292321, 10.889309800658094], [106.249670037869436, 10.961811835163585], [105.810523716253101, 11.567614650921225], [107.491403029410861, 12.337205918827944], [107.614547967562402, 13.535530707244202], [107.382727492301058, 14.202440904186968], [107.564525181103875, 15.202173163305554], [107.312705926545576, 15.908538316303177], [106.55600792849566, 16.604283962464802], [105.925762160264, 17.485315456608955], [105.094598423281496, 18.666974595611073], [103.896532017026701, 19.265180975821799], [104.183387892678908, 19.624668077060214], [104.822573683697073, 19.886641750563879], [104.435000441508024, 20.758733221921528], [103.203861118586431, 20.766562201413745], [102.754896274834636, 21.675137233969462], [102.170435825613552, 22.464753119389297], [102.706992222100084, 22.708795070887668], [103.504514601660546, 22.703756618739202], [104.476858351664447, 22.819150092046961], [105.329209425886603, 23.352063300056908], [105.811247186305209, 22.976892401617899], [106.725403273548451, 22.794267889898414], [106.567273390735295, 22.218204860924768], [107.043420037872608, 21.811898912029907], [108.050180291782908, 21.552379869060111]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Vanuatu\", \"name\": \"Vanuatu\", \"continent\": \"Australia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[167.844876743845077, -16.466333103097153], [167.515181105822847, -16.597849623279966], [167.180007765977791, -16.159995212470957], [167.2168013857696, -15.891846205308449], [167.844876743845077, -16.466333103097153]]], [[[167.107712437201485, -14.933920179913951], [167.2700281110302, -15.74002084723487], [167.001207310247935, -15.614602146062492], [166.79315799384085, -15.668810723536719], [166.649859247095549, -15.392703545801192], [166.629136997746429, -14.6264970842096], [167.107712437201485, -14.933920179913951]]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Yemen\", \"name\": \"Yemen\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[53.108572625547502, 16.651051133688949], [52.385205926325874, 16.38241120041965], [52.191729363825075, 15.938433132384018], [52.168164910699986, 15.597420355689945], [51.172515089732471, 15.175249742081489], [49.574576450403136, 14.708766587782746], [48.679230584514151, 14.003202419485657], [48.238947381387412, 13.948089504446369], [47.938914015500771, 14.007233181204423], [47.354453566279702, 13.592219753468379], [46.71707645039173, 13.399699204965016], [45.877592807810252, 13.347764390511681], [45.625050083199874, 13.290946153206759], [45.406458774605241, 13.02690542241143], [45.144355910020849, 12.953938300015306], [44.9895333188744, 12.699586900274708], [44.494576450382844, 12.721652736863344], [44.175112745954486, 12.585950425664873], [43.48295861183712, 12.63680003504008], [43.222871128112118, 13.220950425667422], [43.251448195169516, 13.767583726450848], [43.087943963398047, 14.062630316621306], [42.892245314308717, 14.802249253798745], [42.604872674333606, 15.213335272680592], [42.805015496600042, 15.261962795467252], [42.702437778500652, 15.718885809791995], [42.823670688657408, 15.911742255105263], [42.779332309750963, 16.34789134364868], [43.218375278502734, 16.666889960186406], [43.115797560403351, 17.088440456607369], [43.380794305196098, 17.579986680567668], [43.791518589051904, 17.319976711491105], [44.062613152855072, 17.410358791569589], [45.216651238797184, 17.43332896572333], [45.399999220568752, 17.333335069238554], [46.366658563020529, 17.233315334537632], [46.749994337761642, 17.283338120996174], [47.000004917189749, 16.949999294497438], [47.466694777217626, 17.116681626854877], [48.183343540241324, 18.166669216377311], [49.116671583864857, 18.616667588774941], [52.000009800022227, 19.000003363516054], [52.782184279192037, 17.349742336491229], [53.108572625547502, 16.651051133688949]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"South Africa\", \"name\": \"South Africa\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[31.521001417778869, -29.257386976846245], [31.325561150850994, -29.401977634398907], [30.901762729625336, -29.909956963828034], [30.622813348113816, -30.423775730106122], [30.055716180142774, -31.140269463832951], [28.925552605919535, -32.172041110972494], [28.219755893677092, -32.771952813448848], [27.464608188595967, -33.226963799778794], [26.419452345492818, -33.614950453426175], [25.909664340933482, -33.667040297176392], [25.78062828950069, -33.944646091448334], [25.172861769315965, -33.796851495093577], [24.67785322439212, -33.987175795224537], [23.594043409934635, -33.794474379208147], [22.988188917744729, -33.916430759416976], [22.574157342222232, -33.864082533505304], [21.542799106541022, -34.258838799782922], [20.689052768646999, -34.417175388325226], [20.071261020597628, -34.795136814107984], [19.616405063564567, -34.819166355123706], [19.193278435958714, -34.462598972309777], [18.855314568769867, -34.444305515278458], [18.424643182049376, -33.997872816708963], [18.377410922934612, -34.13652068454806], [18.244499139079917, -33.867751560198023], [18.250080193767442, -33.281430759414434], [17.925190463948436, -32.61129078545342], [18.247909783611185, -32.429131361624563], [18.221761508871477, -31.661632989225662], [17.566917758868861, -30.72572112398754], [17.0644161312627, -29.878641045859158], [17.06291751472622, -29.875953871379977], [16.344976840895239, -28.576705010697697], [16.824017368240899, -28.082161553664466], [17.218928663815401, -28.355943291946804], [17.387497185951499, -28.783514092729774], [17.836151971109526, -28.856377862261311], [18.464899122804745, -29.045461928017271], [19.002127312911082, -28.972443129188857], [19.89473432788861, -28.461104831660769], [19.895767856534427, -24.767790215760588], [20.165725538827186, -24.917961928000768], [20.758609246511831, -25.868136488551446], [20.666470167735437, -26.477453301704916], [20.889609002371731, -26.828542982695907], [21.60589603036939, -26.726533705351748], [22.105968865657864, -26.28025603607913], [22.579531691180584, -25.979447523708142], [22.824271274514896, -25.500458672794768], [23.312096795350179, -25.268689873965712], [23.733569777122703, -25.39012948985161], [24.211266717228792, -25.670215752873567], [25.025170525825782, -25.719670098576891], [25.664666375437712, -25.486816094669706], [25.765848829865206, -25.174845472923671], [25.941652052522151, -24.696373386333214], [26.485753208123292, -24.616326592713097], [26.78640669119741, -24.240690606383478], [27.119409620886238, -23.574323011979772], [28.017235955525244, -22.827753594659072], [29.432188348109033, -22.091312758067584], [29.839036899542965, -22.102216485281172], [30.322883335091767, -22.271611830333931], [30.659865350067083, -22.151567478119912], [31.191409132621278, -22.251509698172395], [31.670397983534645, -23.658969008073861], [31.930588820124242, -24.369416599222532], [31.752408481581874, -25.484283949487406], [31.837777947728057, -25.843331801051342], [31.333157586397899, -25.660190525008943], [31.044079624157146, -25.731452325139436], [30.949666782359905, -26.022649021104144], [30.676608514129633, -26.398078301704604], [30.685961948374477, -26.743845310169526], [31.282773064913325, -27.285879408478991], [31.868060337051073, -27.17792734142127], [32.071665480281062, -26.733820082304902], [32.830120477028878, -26.74219166433619], [32.580264926897677, -27.470157566031808], [32.462132602678444, -28.30101124442055], [32.203388706193032, -28.752404880490065], [31.521001417778869, -29.257386976846245]], [[28.978262566857236, -28.955596612261708], [28.541700066855491, -28.647501722937562], [28.07433841320778, -28.851468601193581], [27.532511020627471, -29.242710870075353], [26.999261915807629, -29.875953871379977], [27.749397006956478, -30.645105889612214], [28.107204624145421, -30.545732110314944], [28.291069370239903, -30.226216729454293], [28.848399692507734, -30.070050551068245], [29.018415154748016, -29.743765557577362], [29.325166456832587, -29.257386976846245], [28.978262566857236, -28.955596612261708]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Zambia\", \"name\": \"Zambia\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[32.759375441221316, -9.230599053589058], [33.231387973775291, -9.676721693564799], [33.485687697083584, -10.525558770391111], [33.315310499817279, -10.796549981329695], [33.114289178201908, -11.607198174692311], [33.306422153463068, -12.435778090060214], [32.991764357237876, -12.783870537978272], [32.688165317523122, -13.712857761289273], [33.214024692525207, -13.97186003993615], [30.179481235481827, -14.796099134991525], [30.274255812305103, -15.507786960515208], [29.51683434420314, -15.644677829656386], [28.947463413211256, -16.043051446194436], [28.825868768028492, -16.389748630440611], [28.467906121542676, -16.468400160388843], [27.598243442502753, -17.290830580314005], [27.044427117630729, -17.938026218337427], [26.706773309035633, -17.961228936436477], [26.381935255648919, -17.846042168857892], [25.264225701608005, -17.736539808831413], [25.084443393664564, -17.661815687737366], [25.076950310982255, -17.578823337476617], [24.6823490740015, -17.35341073981947], [24.033861525170771, -17.29584319424632], [23.215048455506057, -17.52311614346598], [22.562478468524255, -16.89845142992181], [21.887842644953867, -16.080310153876876], [21.933886346125913, -12.898437188369357], [24.016136508894672, -12.91104623784857], [23.930922072045373, -12.565847670138854], [24.079905226342838, -12.191296888887361], [23.904153680118181, -11.722281589406318], [24.017893507592586, -11.237298272347088], [23.912215203555714, -10.926826267137512], [24.257155389103982, -10.951992689663655], [24.314516228947948, -11.262826429899269], [24.783169793402948, -11.238693536018962], [25.418118116973197, -11.330935967659958], [25.752309604604726, -11.784965101776356], [26.55308759939961, -11.924439792532125], [27.164419793412456, -11.608748467661071], [27.38879886242378, -12.132747491100663], [28.15510867687998, -12.272480564017894], [28.52356163912102, -12.698604424696679], [28.934285922976834, -13.248958428605132], [29.699613885219485, -13.257226657771827], [29.616001417771223, -12.178894545137307], [29.341547885869087, -12.36074391037241], [28.642417433392346, -11.971568698782312], [28.372253045370421, -11.793646742401389], [28.496069777141763, -10.789883721564044], [28.673681674928922, -9.605924981324931], [28.449871046672818, -9.164918308146083], [28.734866570762495, -8.526559340044576], [29.002912225060467, -8.40703175215347], [30.34608605319081, -8.238256524288216], [30.740015496551781, -8.340007419470913], [31.157751336950042, -8.594578747317362], [31.55634809746649, -8.76204884199864], [32.191864861791963, -8.930358981973276], [32.759375441221316, -9.230599053589058]]] } },\r\n { \"type\": \"Feature\", \"properties\": { \"admin\": \"Zimbabwe\", \"name\": \"Zimbabwe\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[31.191409132621278, -22.251509698172395], [30.659865350067083, -22.151567478119912], [30.322883335091767, -22.271611830333931], [29.839036899542965, -22.102216485281172], [29.432188348109033, -22.091312758067584], [28.794656202924209, -21.639454034107445], [28.02137007010861, -21.485975030200578], [27.727227817503252, -20.851801853114711], [27.724747348753247, -20.499058526290387], [27.296504754350501, -20.391519870690995], [26.164790887158478, -19.293085625894935], [25.850391473094724, -18.714412937090533], [25.649163445750155, -18.536025892818987], [25.264225701608005, -17.736539808831413], [26.381935255648919, -17.846042168857892], [26.706773309035633, -17.961228936436477], [27.044427117630729, -17.938026218337427], [27.598243442502753, -17.290830580314005], [28.467906121542676, -16.468400160388843], [28.825868768028492, -16.389748630440611], [28.947463413211256, -16.043051446194436], [29.51683434420314, -15.644677829656386], [30.274255812305103, -15.507786960515208], [30.338954705534537, -15.880839125230242], [31.173063999157673, -15.860943698797868], [31.636498243951188, -16.071990248277881], [31.852040643040592, -16.319417006091374], [32.328238966610222, -16.392074069893749], [32.847638787575839, -16.713398125884613], [32.849860874164385, -17.979057305577175], [32.654885695127142, -18.672089939043492], [32.611994256324884, -19.419382826416268], [32.772707960752619, -19.715592136313294], [32.659743279762573, -20.30429005298231], [32.508693068173436, -20.395292250248303], [32.244988234188007, -21.116488539313689], [31.191409132621278, -22.251509698172395]]] } }\r\n ]\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./State.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./State.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./State.vue?vue&type=template&id=87db548e\"\nimport script from \"./State.vue?vue&type=script&lang=js\"\nexport * from \"./State.vue?vue&type=script&lang=js\"\nimport style0 from \"./State.vue?vue&type=style&index=0&id=87db548e&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"simplest-grid\"},[_c('CRow',[_c('CCol',[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.stData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"enablePersistence\":true,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"editSettings\":_vm.editSettings,\"pageSettings\":_vm.pageSettings,\"filterSettings\":_vm.filterOptions,\"toolbarClick\":_vm.toolbarClick,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Strategy Type\",\"validationRules\":_vm.nameRules,\"width\":\"120\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StrategyType.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StrategyType.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StrategyType.vue?vue&type=template&id=59affaa5\"\nimport script from \"./StrategyType.vue?vue&type=script&lang=js\"\nexport * from \"./StrategyType.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"simplest-grid\"},[_c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.dmData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Name\",\"validationRules\":_vm.requiredRules,\"width\":\"120\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultMechanism.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultMechanism.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DefaultMechanism.vue?vue&type=template&id=02022612\"\nimport script from \"./DefaultMechanism.vue?vue&type=script&lang=js\"\nexport * from \"./DefaultMechanism.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.supplierData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"supplierId\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"supplierName\",\"headerText\":\"Name\",\"validationRules\":_vm.nameRules,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"active\",\"headerText\":\"Active\",\"displayAsCheckBox\":\"true\",\"editType\":\"booleanedit\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"stateId\",\"headerText\":\"Country\",\"textAlign\":\"Right\",\"validationRules\":_vm.requiredRules,\"editType\":\"dropdownedit\",\"edit\":_vm.countryParams,\"foreignKeyField\":\"stateId\",\"foreignKeyValue\":\"stateName\",\"dataSource\":_vm.countries,\"width\":\"90\"}}),_c('e-column',{attrs:{\"field\":\"stateName\",\"headerText\":\"Country\",\"visible\":false,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"utilityNames\",\"headerText\":\"Utilities\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"utilities\",\"validationRules\":_vm.requiredRules,\"headerText\":\"Utilities\",\"visible\":false,\"textAlign\":\"Right\",\"editType\":\"dropdownedit\",\"edit\":_vm.utilityParams,\"foreignKeyField\":\"utilityTypeId\",\"foreignKeyValue\":\"utilityTypeName\",\"dataSource\":_vm.utilities,\"width\":\"90\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Supplier.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Supplier.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Supplier.vue?vue&type=template&id=43776838\"\nimport script from \"./Supplier.vue?vue&type=script&lang=js\"\nexport * from \"./Supplier.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('CRow',[_c('CCol',[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.priceAreaData,\"allowFiltering\":true,\"allowPaging\":true,\"allowResizing\":true,\"excelQueryCellInfo\":_vm.excelQueryCellPA,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"editSettings\":_vm.editSettings,\"pageSettings\":_vm.pageSettings,\"filterSettings\":_vm.filterOptions,\"toolbarClick\":_vm.toolbarClick,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{ref:\"dplPricingArea\",attrs:{\"field\":\"priceArea\",\"headerText\":\"Price Area\",\"validationRules\":_vm.requiredRules,\"width\":\"120\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"isMainArea\",\"headerText\":\"Main Area\",\"width\":\"120\",\"displayAsCheckBox\":\"true\",\"editType\":\"booleanedit\",\"type\":\"boolean\"}}),_c('e-column',{attrs:{\"field\":\"stateId\",\"headerText\":\"Country\",\"validationRules\":_vm.requiredRules,\"width\":\"120\",\"edit\":_vm.stateParams,\"foreignKeyField\":\"stateId\",\"foreignKeyValue\":\"stateName\",\"dataSource\":_vm.states,\"editType\":\"dropdownedit\"}}),_c('e-column',{attrs:{\"field\":\"description\",\"headerText\":\"Description\",\"width\":\"120\",\"type\":\"string\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PriceArea.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PriceArea.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PriceArea.vue?vue&type=template&id=12d69ebf\"\nimport script from \"./PriceArea.vue?vue&type=script&lang=js\"\nexport * from \"./PriceArea.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeneralMain.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeneralMain.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GeneralMain.vue?vue&type=template&id=3abc512e\"\nimport script from \"./GeneralMain.vue?vue&type=script&lang=js\"\nexport * from \"./GeneralMain.vue?vue&type=script&lang=js\"\nimport style0 from \"./GeneralMain.vue?vue&type=style&index=0&id=3abc512e&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","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})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '