{"version":3,"sources":["webpack:///./src/views/ui-elements/FAMSUI/QuickDispense.vue?380b","webpack:///./node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-data/src/query.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/detail-row.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:///./src/views/ui-elements/FAMSUI/QuickDispense.vue?b516","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","webpack:///./node_modules/@syncfusion/ej2-data/src/manager.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///./src/views/ui-elements/FAMSUI/QuickDispense.vue","webpack:///src/views/ui-elements/FAMSUI/QuickDispense.vue","webpack:///./src/views/ui-elements/FAMSUI/QuickDispense.vue?4140","webpack:///./src/views/ui-elements/FAMSUI/QuickDispense.vue?123f","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/position.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/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/actions/excel-export.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/util.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/observer.js","webpack:///./node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/ajax.js","webpack:///./node_modules/@syncfusion/ej2-base/src/browser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack:///./node_modules/@syncfusion/ej2-base/src/virtual-dom.js","webpack:///./node_modules/@syncfusion/ej2-base/src/dom.js","webpack:///./node_modules/@syncfusion/ej2-base/src/base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack:///./node_modules/@syncfusion/ej2-base/src/animation.js","webpack:///./node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack:///./node_modules/@syncfusion/ej2-base/src/component.js","webpack:///./node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///./node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-base/src/l10n.js","webpack:///./node_modules/@syncfusion/ej2-base/src/touch.js","webpack:///./node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack:///./node_modules/@syncfusion/ej2-base/index.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-buttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.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/renderer/responsive-dialog-renderer.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/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/actions/blazor-action.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-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-dropdowns/src/common/incremental-search.js","webpack:///./node_modules/@syncfusion/ej2-lists/src/common/list-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.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/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/component-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/component-decorator.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/template.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-popups/src/popup/popup.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:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-data/src/util.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.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-buttons/src/button/button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","consts","GroupGuid","Adaptor","ds","options","from","requestType","sortBy","select","skip","group","take","search","count","where","aggregates","expand","type","dataSource","pvt","processResponse","data","query","xhr","JsonAdaptor","_super","apply","arguments","processQuery","dataManager","ret","key","page","result","json","slice","length","countFlg","lazyLoad","keyCount","i","value","agg","queries","fn","call","e","field","undefined","push","args","lazyLoadData","lazyLoadGroup","isCountRequired","getAggregate","onDemandGroupInfo","fieldName","comparer","onPage","formGroupResult","req","onWhere","level","uid","childLevel","records","aggQuery","filterQueries","tmp","getValue","batchRequest","dm","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","remove","filter","obj","validate","onAggregates","onSearch","fieldNames","getFieldList","j","getObject","searchKey","ignoreCase","ignoreAccent","onSortBy","fnCompare","sort","endsWith","fnSort","replace","onGroup","size","pageSize","start","pageIndex","end","onRange","onTake","nos","onSkip","onSelect","tableName","position","splice","keyField","Date","UrlAdaptor","hierarchyFilters","temp","getQueryRequest","singles","filterQueryLists","params","url","request","sorts","groups","filters","searches","callAdaptorFunction","name","direction","getFiltersFrom","toJson","keys_3","keys","_i","keys_1","prop","isNull","fields","operator","getRequestQuery","reqParams","_a","keys_2","JSON","stringify","parse","jsonDateReplacer","pvtData","contentType","convertToQueryString","indexOf","request1","param","fromTable","distincts","selects","expands","getResponseHeader","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","action","isExpand","isArray","val","formRemoteGroupedData","getAggregateResult","items","childLvl","lvl","getGroupedRecords","hasRecords","childGroupedRecords","concat","original","batchUrl","crudUrl","removeUrl","dataType","changed","added","deleted","table","getAddParams","beforeSend","insertUrl","keyColumn","updateUrl","fKey","pKey","predicats","or","pData","aggregateData","res","aggregate","isServerGrouping","groupQuery","addParams","Error","ODataAdaptor","props","_this","accept","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","getModuleName","onPredicate","predicate","requiresCast","guid","returnValue","getField","replacer","encodeURIComponent","isGuid","toLowerCase","odBiOperator","odUniOperator","odv4UniOperator","onComplexPredicate","predicates","onEachWhere","join","condition","isComplex","onEachSearch","throwError","onEachSort","reverse","onCount","settings","setRequestHeader","overrideMimeType","metaCheck","rootUrl","dataUrls","split","resourceTableName","dataCopy","results","metaData","emptyAndBatch","processBatchResponse","versionCheck","version","parseInt","oDataCount","format","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","arr","stat","dateTime","toJSON","generateBodyContent","org","forEach","change","o","date","method","cIdx","jsonObj","substring","exVal","exec","changeGuid","test","isPlainObject","final","valueOf","RemoteSaveAdaptor","ODataV4Adaptor","isDate","onExpand","selected","expanded","exArr","item","splits","ex","onDistinct","distinctFields","map","metaName","dataUrl","dataCount","WebApiAdaptor","_loop_1","x","location","host","_loop_2","_loop_3","state","datTime","Count","Items","WebMethodAdaptor","getData","updateKey","urlParams","AjaxAdaptor","Function","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","adaptor","timeStamp","isCrudAction","isInsertAction","cacheAdaptor","guidId","window","localStorage","setItem","setInterval","getItem","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","clone","cachedItems","index","crossDomain","globalTimeOut","spinTemplate","spinCSSClass","DEFT_MAT_WIDTH","DEFT_FAB_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_FABRICSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","createSpinner","internalCreateElement","target","radius","makeElement","container","create_spinner_container","cssClass","wrap","classList","add","template","theme","getTheme","width","calculateRadius","setTheme","label","createLabel","inner_wrap","replaceContent","labelEle","textContent","appendChild","createMaterialSpinner","uniqueID","random_generator","timeOut","create_material_element","mat_calculate_attributes","createBootstrap4Spinner","startMatAnimate","globalObject","timeOutVar","globalVariables","spinnerInfo","globalInfo","animateMaterial","createFabricSpinner","create_fabric_element","fb_calculate_attributes","createHighContrastSpinner","getComputedStyle","getPropertyValue","innerContainer","querySelector","svg","removeChild","createBootstrapSpinner","create_bootstrap_element","boot_calculate_attributes","svgBoot","document","createElementNS","viewBoxValue","trans","defaultRadius","setAttribute","insertBefore","firstChild","bootCircle","style","height","y","rad","startArc","defineArcPoints","circleEle","generateSeries","begin","stop","series","increment","formSeries","parseFloat","toFixed","animateBootstrap","id","getAttribute","getElementsByClassName","rotation","circle","boot_animate","isAnimate","setTimeout","bind","inner","innerHTML","defaultSize","previousId","random","combine","charAt","Math","floor","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","spinnerContainer","spinnerInnerContainer","duration","max","createCircle","easeAnimation","easing","startTime","getTime","diameter","getSize","strokeSize","getStrokeSize","rotate","mat_animation","min","updatePath","path","getDashOffset","transformOrigin","drawArc","PI","parsed","offset","current","timestamp","timecount","innerConainer","trgClass","centerX","centerY","endArc","defineCircle","defineArc","angle","radians","cos","sin","showSpinner","showHideSpinner","isHide","spinnerWrap","contains","spinCheck","svgEle","clearTimeout","hideSpinner","Group","parent","groupSettings","sortedColumns","serviceLocator","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","visualElement","className","styles","attrs","helper","gObj","sender","element","allowReordering","column","getColumnByField","firstElementChild","offsetWidth","offsetHeight","dragStart","bindEvents","dragElement","drag","animateDropper","cloneElement","trigger","draggableType","dragStop","preventDrop","rearrangeGroup","getColumnByUid","columns","ungroupColumn","dragField","dropTarget","grouped","querySelectorAll","cols","dropField","dropIndex","dragIndex","flag","c","addColToGroupDrop","addLabel","removeColFromGroupDrop","drop","droppedElement","aria","setDropTarget","setGrabbed","getHeaderTable","allowGrouping","getColumnHeaderByUid","log","moduleName","columnName","headerText","groupColumn","contentRefresh","focus","getService","addEventListener","groupGenerator","dragLabel","l10n","getConstant","updateModel","columnDrag","columnDragStart","dropArea","columnDrop","isDestroyed","on","enableAfterRender","onActionComplete","onPropertyChanged","clickHandler","refreshSortIcons","keyPressHandler","initialEnd","render","onGroupAggregates","blazorActionBegin","updateExpand","removeEventListener","off","isCollapseStateEnabled","expandAll","isServerRendered","updateGroupDropArea","getColumns","col","preventDefault","allowSelection","getSelectedRowIndexes","rows","getContentTable","children","dataRow","getDataRows","grpRow","rowIndex","expandCollapseRows","collapseAll","isEdit","getFocusedElement","row","parentElement","elem","focusModule","currentInfo","applySortFromTarget","unGroupFromTarget","toogleGroupFromHeader","showToggleButton","gHeader","allowSorting","getColumnHeaderByField","sortColumn","trgt","cellIdx","cellIndex","rowIdx","rowNodes","expandElem","toExpand","indent","notify","updateVirtualRows","enableLazyLoading","contentModule","captionExpand","captionCollapse","setExpand","len","display","updateVisibleexpandCollapseRows","getRowsObject","isDataRow","getRowElementByUID","visible","rObj","getRowObjectFromUID","closest","getDataModule","generateQuery","aggregateQuery","getQuery","rowObject","requiresCount","then","renderModule","dataManagerSuccess","expandCollapse","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","createElement","showDropArea","clear","initializeGHeaderDrop","initializeGHeaderDrag","dragTarget","distance","instance","handler","arg1","showGroupedColumn","colName","enableColumnVirtualization","setVisible","sortSettings","dataBind","groupAddSortingQuery","isJsComponent","isFromGroup","animator","groupedColumn","childDiv","headerCell","title","tabindex","showUngroupButton","createSeparator","toString","isRemove","headers","showColumnMenu","getGHeaderCell","parent_1","module","properties","oldProperties","refreshHeader","updateGroupedColumn","updateButtonVisibility","freezeRefresh","isVisible","enable","destroy","gridElement","refreshing","clearGrouping","header","gCols","editedData","iterateGroupAggregates","rowData","generateRows","summaryRows","updateSummaryRows","isReact","destroyTemplate","cells","cell","isDataCell","dataUid","updatedData","initData","getCurrentViewRecords","deletedCols","changeds","edit","getPrimaryKeyFieldNames","mergeData","pKeyVal","hasVal","some","cItem","eData","aggrds","aggregateRows","k","aggr","groupedCols","l","childRow","closestParent","parentUid","state_1","isFrozen","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","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","defineProperty","get","enumerable","configurable","compressedString","String","fromCharCode","write","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","match","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","code","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","uint","Uint32Array","pendingBufferFlushBits","isClose","array","bitReverse","close","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pos","pPos","leafsCount","nodesCount","child","values","node","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","second","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","Query","subQuery","isChild","lookups","groupedColumns","setKey","using","execute","done","fail","always","executeQuery","executeLocal","cloned","subQuerySelector","distinct","tables","Predicate","fnOperators","sortByForeignKey","order","sortByDesc","range","hierarchy","selectorFn","foreignKey","q","filtered","processOperator","and","combinePredicates","fromJson","fromJSONData","pred","record","isAnd","preds","CheckBoxFilterBase","existingPredicate","foreignKeyQuery","filterState","renderEmpty","valueFormatter","locale","cBoxTrue","checked","cBoxFalse","enableRtl","closeDialog","wireEvents","dlg","keyupHandler","searchHandler","searchBoxKeyUp","dialogObj","unWireEvents","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","columnData","ejpredicate","fpred","matchCase","foreignFilter","isRemote","initalPredicate","foreignKeyValue","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","localeObj","updateDataSource","str","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","isFiltered","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","floatLabelType","placeholder","createInput","spinner","cBox","showDialog","columnType","cancel","filterModel","content","animationSettings","effect","buttons","click","btnClick","buttonModel","isExcel","isPrimary","created","dialogCreated","open","dialogOpen","isStringTemplate","renderResponsiveFilter","isResponsiveFilter","responsiveCnt","appendTo","maxHeight","show","getAllData","X","Y","left","isDevice","openDialog","filterTemplateCol","getFilterItemTemplate","registeredTemplate","filterItemTemplate","renderTemplates","clearFilter","tagName","isForeignColumn","keyCode","fltrBtnHandler","text","check","optr","ddlValue","ej2_instances","isMenuNotEqual","fObj","searchInput","caseSen","defaults","isNotEqual","itemsCnt","coll","generateNullValuePredicates","arg2","arg3","arg4","arg5","arg6","initiateFilter","firstVal","foreignQuery","predicte","fromView","parserFn","addDistinct","filterChoiceCount","filterargs","excelSearchOperator","filterObj","colData","filterEvent","processSearch","getPredicateFromCols","getPredicate","predicateList","isGrid","getForeignKeyColumns","foreignColumn","processDataOperation","filteredColumn","defObj","def","deffered","promise","dataSuccess","isInitial","allPromise","runArray","foreignKeyData","Promise","all","fullData","args1","searchSettings","sSettings","f","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","result_1","selectAll","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes","cBoxes_1","previousSibling","createCheckbox","cloneNode","dummyData","isReactCompiler","btn","cnt","disabled","btnObj","input","indeterminate","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","formatFn","toView","args_1","checkbox","getCheckedState","checkState","ejValue","lookup","isForeignKey","foreignDataObj","fnAscending","collection","generatePredicate","operate","updateDateFilter","getCaseValue","Data","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","toIndex","fromIndex","isAngular","isQueryInvokedFromData","setProperties","skipPage","columnQueryMode","isPrimaryKey","selectQueryFields","filterQuery","searchQuery","sortQuery","virtualGroupPageQuery","pageQuery","isForeign","types","fName","allowPaging","enableVirtualization","enableInfiniteScrolling","pageSettings","currentPage","pageCount","infiniteScrollModule","isGrpFmt","enableGroupByFormat","formatGroupColumn","sortGrp","setSortDirection","sortComparer","getSortDirection","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","allowFiltering","colType","foreignCols","defaultFltrCols","_b","columns_1","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","_c","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","_f","_g","getKey","eventPromise","crud","saveChanges","catch","ready","deferred_1","resolve","reject","getDay","getHours","getMinutes","getSeconds","getMilliseconds","getFormatter","formatVal","pr","previousData","getStateEventArgument","deff","endEdit","setState","offline","getState","getForeignKeyDataState","setForeignKeyDataState","adaptr","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","DetailRow","locator","refreshColSpan","toogleExpandcollapse","childGrid","lastrowIdx","isExpanded","tr","rowObj","nextRow","isDetailRow","detailElement","getDetailTemplate","rowId","detailRow","detailCell","colSpan","getVisibleColumns","allowRowDragAndDrop","cellType","Indent","unshift","parentNode","nextSibling","detailTemplate","detailTemplateID","getGridModel","printMode","parentID","parentPrimaryKeys","parentKeyField","queryString","parentKeyFieldValue","parentRowData","isLegacyTemplate","isPrinting","promiseResolve","modules","getInjectedModules","injectedModues","setInjectedModules","gridElem","getRows","getContent","clientHeight","scrollHeight","detailrowIdx","childNodes","lastrowcell","gridModel","expandedRows","hierarchyPrintMode","grid","getTDfromIndex","isNaN","collapse","moduleObj","td","detailrows","getTable","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Column","disableHtmlEncode","allowResizing","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","skeleton","setFormatter","getFormatFunction","setParser","getParserFunction","commands","textAlign","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","foreignKeyField","a_1","xObj","yObj","z","fnDescending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","getParser","getColumnTemplate","getHeaderTemplate","getDomSetter","CommandColumnModel","Scroll","lastScrollTop","previousValues","top","oneTimeReady","widthService","setWidth","uiupdate","setWidthToColumns","toolbarModule","toolbar","refreshOverflow","setHeight","mHdrHeight","isFrozenGrid","getScrollBarWidth","frozenRows","tbody","getHeaderContent","height_1","getRowHeight","ensureOverflow","refresh","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","padding","getFrozenMode","border","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","info","setScrollLeft","headerModule","getMovableHeader","scrollLeft","onFrozenContentScroll","isPreventScrollEvent","scrollTop","onContentScroll","scrollTarget","isHeader","isLeft","isDown","scrollDown","isFooter","onCustomScrollbarScroll","mCont","mHdr","onTouchScroll","pointerType","pageXY","getPointXY","clientWidth","scrollBar","setPageXY","touches","pageX","pageY","frzCols","mScrollBar","sLeft","sHeight","css","overflowY","cont","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","isRowDragable","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","DetailFooterIntent","attributes","class","getRowUid","sColumn","scolumn","opt","dummy","single","setTemplate","a","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","prev","cur","isEmpty","CaptionSummary","AriaService","setOptions","setStateAndProperties","config","setSort","setBusy","isBusy","busy","invalid","isGrabbed","grabbed","isTarget","dropeffect","attribute","removeAttribute","role","multiselectable","haspopup","colcount","rowcount","Input","CLASSNAMES","RTL","DISABLE","INPUT","TEXTAREA","INPUTGROUP","FLOATINPUT","FLOATLINE","FLOATTEXT","CLEARICON","CLEARICONHIDE","LABELTOP","LABELBOTTOM","NOFLOATLABEL","INPUTCUSTOMTAG","FLOATCUSTOMTAG","floatType","inputObject","clearButton","createInputContainer","createFloatingInput","bindInitialEvent","showClearButton","setClearButton","appendSpan","validateInputType","setPropertyValue","checkInputValue","getParentNode","inputElement","inputValue","_focusFn","_blurFn","getElementsByTagName","wireFloatingEvents","unwireFloatingEvents","floatLinelement","floatLabelElement","customTag","innerText","encodePlaceHolder","inputWrap","updateLabelState","event","checkFloatLabelType","setCssClass","setEnabled","enabled","setEnableRtl","setPlaceholder","setReadonly","readonly","updateIconState","button","createClearButton","initial","baseElement","insertAdjacentElement","wireClearBtnEvents","readOnly","activeElement","validateLabel","tagClass","tag","spanEle","hiddenInput","setValue","elements","oldClass","isReadonly","isRtl","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","isClear","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","wrapper","setRipple","isRipple","_internalRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","_onMouseRipple","ele","parentEle","createIconEle","iconClass","addIcon","icons","internalCreate","icon","result_2","prependSpan","innerWrapper","containerElement","Reorder","headerDrop","createReorderElement","chkDropPosition","srcElem","destElem","bool","lockColumn","isEqualNode","targetParentContainerIndex","chkDropAllCols","isFound","getHeaderCells","pop","findColParent","getColumnsModel","columnModel","subCols","getFrozenColumns","dropElement","uId","destElemDiv","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","newIndex","destElement","oldIdx","column_2","isActionPrevent","destIndex","reorderByColumn","preventRefresh","getColParent","srcIdx","lockcolPositionCount","trim","toColumnUid","flatColumns","frozenColumns","fTh","mTh","fHeaders","fRows","mRows","isAvail","parents","reorderSingleColumn","fromFName","toFName","fColumn","toColumn","reorderMultipleColumns","fromFNames","getColumnIndexByField","getColumnByIndex","cols_1","fromColumnUid","isMultipleReorder","moveTargetColumn","reorderSingleColumnByTarget","reorderMultipleColumnByTarget","reorderColumns","fromCol","reorderColumnByIndex","reorderColumnByTargetIndex","isXaxis","setDisplay","upArrow","downArrow","onClick","visibleCols","toCol","getMovableVirtualContent","stopTimer","updateScrollPostion","updateArrowPosition","cliRect","getBoundingClientRect","cliRectBaseRight","right","updateFrozenScrollPosition","cliRectBaseLeft","scrollElem_1","timer","scrollElem","mhdrCliRect","getFrozenLeftCount","getFrozenRightColumnsCount","clearInterval","cliRectBase","dropEle","dropCol","fhdrWidth","round","getFrozenVirtualHeader","mhdrRight","getMovableVirtualHeader","getNormalizedColumnIndex","DataManager","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","isDataAvailable","setDefaultQuery","buildHierarchy","makeRequest","Deferred","isAjaxAdaptor","getDeferedArgs","nextTick","setImmediate","extendRequest","fnSuccess","fnFail","cache","processData","onSuccess","onFailure","isSelector","error","process","actual","virtualSelectRecords","fnQueryChild","selector","subDeffer","childArgs","subUrl","childReq","subData","ajaxReqOption","httpRequest","virtualRecords","ajax_1","send","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","ajaxDeffered","failureFunc","ajaxFunc","ajax_3","parentDocument","targetContainer","fit","viewPortElement","axis","elemData","ownerDocument","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","elementRect","bottom","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","offsetX","offsetY","positionX","positionY","fixedParent","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","visibility","removeProperty","posX","posY","updateElementData","setPosition","leftFlip","topFlip","setPopup","offsetParent","edge","eStatus","getBodyScrollLeft","deepCheck","collideSide","getBodyScrollTop","innerHeight","getTargetContainerLeft","getTargetContainerTop","documentElement","body","windowWidth","innerWidth","_vm","_self","staticClass","closeCardAnimationDemo","_v","directives","rawName","expression","model","formData","fromDate","callback","$$v","$set","errors","has","_s","toDate","reportDropdown","populateData","report","ref","loadFamsInformation","staticRenderFns","Vue","use","GridPlugin","Grid","Inject","Sort","Page","Toolbar","Aggregate","ExcelExport","Search","aggregateColumn","SimpleDetailGrid","pid","columnsSelecteds","activePrompt","activePromptSubGrid","fileName","formats","cellAutoWidth","selectedFormat","headerTitle","headerVal","componentKey","famsDBDataChild","famsDBData","isMounted","selectionOptions","mode","localColforGrid","localColforGridChild","DetialUsageReceiveFAMS","DetailFuelTransfer","DetailPerUsagePerFuelAttedant","DetailPerUsagePerDriver","DetailPerCostCentre","DetailPerMasterEquipment","DetialElig_NonElgAllocations","DetialUsagePerAllocations","DetialElig_NonEligEquipment","DetialUsagePerEquipment","DetialUsagePerStore","DetialUsagePerProduct","UsageManualAdd","UsageReceiveFAMS","UsageReceiveManual","GeneralViewPrice","GeneralView","FuelTransfer","SARSLogbook","KPI","UsagePerDriver","UsagePerFuelAttedant","UsagePerCostCentre","UsagePerMasterEquipment","Elig_NonEligAllocations","Elig_NonEligEquipment","UsagePerEquipment","usagePerAllocation","UsagePerProduct","UsagePerStore","provide","Selection","components","flatPickr","vSelect","Datepicker","computed","$refs","gridTable","currentx","mounted","clearFields","getFullYear","getMonth","methods","self","getElementById","newElement","alert","isActive","formatDate","pad","dateFormat","month","year","day","getDate","forceRerender","famsURL","details","GetGridSimple","GetGrid","$vs","color","iconPack","formatJson","filterVal","jsonData","filename","card","removeRefreshAnimation","pdfExportComplete","excelExportComplete","toolbarClick","pdfExport","excelExport","csvExport","sumTemplate","component","showLoadingOnElement","response","allowExcelExport","scrollSettings","PageSettings","onFinally","loading","submit","$el","$ajaxGet","onDetailDataBound","_Id1","_Id2","sid","eid","mid","eneid","arbid","did","fid","fgrid","detailDataBound","successNotifyGridExpanded","successNotifyDataLoad","successNotify","FailedNotify","scale","popupRect","calculateRelativeBasedPosition","anchor","fixedElement","anchorPos","tempAnchor","offsetLeft","offsetTop","calculatePosition","currentElement","targetValues","updatePosition","setPosx","setPosy","getElementHCenter","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","inserted","mCell","isIntersecting","intersectingCell","Width","Height","base","compare","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","wrapText","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","u","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","lineStyle","Row","Rows","Image","Cell","Cells","CRC32TABLE","ZipArchive","initCrc32Table","files","isMicrosoftBrowser","navigator","msSaveBlob","addItem","file","ZipArchiveItem","addDirectory","directoryName","save","zipArchive","saveInternal","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","reader_1","FileReader","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","length_1","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","charCodeAt","bytes","modTime","modiDate","itemName","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","displayText","CsvHelper","separator","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","dataUrl_1","URL","createObjectURL","dwlLink","download","href","event_1","createEvent","initEvent","dispatchEvent","revokeObjectURL","BlobHelper","parts","append","part","getBlob","AutoFilters","Workbook","saveType","culture","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","status","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","toUpperCase","rgbColors","processCellValue","cellValue","processedVal","startindex","endIndex","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","getNumberPattern","useGrouping","getDatePattern","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","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","processString","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","alignment","horizontal","vertical","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","topRelation","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","days","isLeapYear","timeToTicks","hour","minute","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","gridPool","init","isExporting","footer","exportValueFormatter","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","workbk","isMultiEx","hierarchyExportMode","gridObject","processRecords","exportingSuccess","blobPromise","exportType","allPromise_1","getColumnData","processInnerRecords","query_1","groupedColLength","blankRows","colDepth","isExportPropertiesPresent","multipleExport","processExcelHeader","childGridLevel","processGridExport","globalResolve","checkAndExport","organisedRows","organiseRows","processExcelFooter","enableFilter","currencyCode","initialIndex","childRows","excelRows","gColumns","getGridExportColumns","headerRow","getHeaders","groupIndent","processHeaderContent","processRecordContent","currentViewData","returnType","currentViewRecords","excelRow","processRecordRows","processGroupedRows","processAggregates","startIndex","excelExportProperties","dataSource_1","formatCellValue","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","span","col_1","getGridRowModel","templateRowHeight","gCell","valueAccessor","fkData","getFData","idx","excelCellArgs","base64","excelImage","getColumnStyle","returnVal","createChildGrid","childGridObj","actionFailure","failureHandler","beforeDataBound","childGridCell","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","getAggreateValue","Sum","Average","Max","Min","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","row_1","dummyOutlineLevel","dummyGrouping","txt","isVue","JSON1","JSON2","attrname","columnIndex","gridRows","gridColumns","spannedCells","currentCellIndex","gridCell","HeaderIndent","DetailHeader","getIndex","spannedCell","getHeaderThemeStyle","headerTextAlign","excelHeaderCellArgs","parseStyles","getRecordThemeStyle","updateThemeStyle","themestyle","caption","noRows","headerRows","updatedCellIndex","footerRows","spannedCells_1","getConvertedWidth","getCloneProperties","Print","scrollModule","isAsyncPrint","defered","isContentReady","actionBegin","onEmpty","hierarchyPrint","isPrintGrid","contentReady","removeColGroup","printGridObj","printModule","print","renderPrintGrid","printWind","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","printGrid","viewContainerRef","load","printgrid","selectedRows","contentDiv","headerDiv","overflowX","waitingPop","printGridElement","depth","groupCaption","colGroups","contentColGroups","hideColGroup","printGridProp","getDateParser","getNumberParser","setCulture","isBlazorPlatform","createInstance","classFunction","arrayParam","unbind","num","intCrypto","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","source","postMessage","nameSpace","isUndefined","fromObj","isNullOrUndefined","deleteObject","isObject","objCon","getEnumValue","enumObject","enumValue","merge","destination","temrObj","tempProp","deepmerge","extend","copied","deep","arguments_1","obj1","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","delay","out","later","compareElementParent","message","stack","printWindow","div","links","reference","outerHTML","interval","formatUnit","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys","propKeys_1","getSymbolRegex","regexStr","RegExp","getSymbolMatch","matchKeys","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","getBlazorCurrencySymbol","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","mcjdn","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","h","H","datePartMatcher","DateFormat","option","cldr","dependable","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","compareBlazorDateFormats","resPattern","getResultantPattern","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parserObject","patternMatch","patternMatch_1","char","weekday","monthIndex","designator","eText","era","timeZone","intDateFormatter","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","curval","curvalstr","processNumber","curstr","curlength","substr","desig","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","splt","curPattern","no","abs","ishour","errorText","percentSign","minusSign","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","defaultCurrency","nData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minFrac","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","lastIndexOf","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","tn","toPrecision","level1","sep","decimalSymbol","level2","prefix","lead","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tval","tzone","hpattern","parseTimeZoneRegx","iString","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","tKeys","century","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","Infinity","NaN","exponent","convertMaxFracDigits","decimalSplitValue","Observer","context","ranArray","boundedEvents","property","cntxt","notExist","isHandlerPresent","indexLocation","argument","successHandler","errorHandler","blazor","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","dPattern","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","getCulture","formatNumber","parseDate","parseNumber","isExcelFormat","getActualDateTimeFormat","getActualNumberFormat","getFirstDayOfWeek","getWeekData","blazorCultureFormats","IntlBase","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","defaultFirstDay","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","tPattern","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","symbol","getCurrency","formatSplit","customNumberFormat","integerPart","fractionPart","isCurrencyPercent","loc","dateObj","actualPattern","tLength","timeZonePattern","options_1","processSymbol","numrericObject","curCode","hasNegativePattern","defaultMinimum","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","minDigits","maxDigits","diff","integer","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nYear","nday","3","4","5","C","P","N","A","E","headerRegex","defaultType","Ajax","async","emitError","eventArgs","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","reason","responseText","readyState","statusText","responseHeaders","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","language","getEvent","events","isPointer","isTouch","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","uA","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","passive","clearEvents","copyData","eventProp","eventData_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","argName","evalExpResult","evalExp","fnCode","varCOunt","localKeys","isClass","singleSpace","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","splArrRegexp","SlashReplace","NameSpaceForspecialChar","addNS","ignoreList","emptyStrCheck","NameSpaceArrObj","arrObjReg","tempStr","double","nameSpaceNew","windowFunc","quotes","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","templateString","compiler","engineObj","propName","templateId","blazorTemplateId","randomId","blazorId","updateBlazorTemplate","templateName","comp","callBack","ejsIntrop","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","tempId","tempElement","setTemplateEngine","classObj","getTemplateEngine","Engine","simpleRegex","multipleSplitRegex","idClassSelector","selectMapper","classRegexString","assigner","emptyElements","blockElements","inlineElement","selfClosingElements","fillAttrs","cspElement","nameMapper","startRegex","endRegex","attributeRegex","VirtualDOM","extended","ConvertHTMLToJSon","valArr","vObj","cVal","styleSplit","assignParent","childrens","detach","fromElements","toElement","prepend","vDomSelector","immediateParent","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","processSelector","splitSelector","splitSelector_1","curMap","dSelector","dParent","descendent","dSelector_1","sel","descendentChild","dParent_1","iCurSelector","curParent","accessElement","curMapper","canPush","existValue","temp_1","matched","mapper_1","expected","actualValue","htmlString","isText","tagArray","nodeArray","getLastValue","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","names","length_3","tagObject","parent_3","parent_4","parent_5","setStyleAttribute","SVG_REG","addClass","classes","getClassList","classList_1","curClass","removeClass","canRemove","classList_2","classes_1","classArr","isEval","docFrag","createDocumentFragment","executeScript","eleArray","script","head","iKey","needsVDOM","querySelectId","nodeList","charRegex","idList","list","splitId","setId","el","nodeType","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","bulkChanges","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","muteOnChange","prevDetection","serverDataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","sfBlazor","newValue","oldValue","moduleClass","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","inst","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","curText","Animation","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","animation","animationId","frameId","cancelAnimationFrame","applyAnimation","step","timerId","prevTimeStamp","startAnimation","avg","timingFunction","progress","requestAnimationFrame","performance","now","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","getRippleModel","rippleFlag","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","isCenterRipple","sqrt","rippleElement","transform","removeRipple","rippleElements","opacity","lastPageID","MODULE_SUFFIX","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","usedModules","arg","removableModule","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","clearUpdate","curIndex","restrictServerDataBind","isSaveChanges","parentKey","complexKeys","isFinal","actionProperty","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","needsID","isReactHybrid","moduleLoader","localObserver","detectFunction","enablePersistence","setPersistData","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","injectedModules","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","isHistoryChanged","pageID","history","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","scroll","client","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","getProperTargetElement","bindDragEvents","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","pageYOffset","pageXOffset","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","draggable","draggedElement","dropIns","getDropInstance","eleInst","eleInst_1","Droppable","mouseOver","area","isDrag","isDropArea","canDrop","coord","KeyboardEvents","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","localeObject","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","scrollArg","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","isFirefox","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","sanitize","output","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","cells_1","rowArgs","cellArgs","attrCopy","chekBoxEnable","isSelected","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","Filter","CommandColumn","requestTypeAction","isRowSpanned","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","rowHeight","lazyLoadCssClass","vFTable","summarycell","lastSummaryCell","firstSummaryCell","isAltRow","rowindex","dataUID","ariaSelected","RowModelGenerator","getInfiniteIndex","generateRow","ensureColumns","generateCell","RowDragIcon","tIndex","parentGid","enableAltRow","selectionModule","checkBoxState","selectedRowIndexes","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","getTextNode","childnode","createCheckBox","enableRipple","rippleSpan","frameSpan","labelSpan","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","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","Tooltip","isBlazorTooltip","contentTargetValue","contentEvent","contentAnimation","formatPosition","isServerRender","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tooltipEle","tipClass","renderPopup","elePos","mouseTrail","getTooltipPosition","popupObj","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","reposition","needTemplateReposition","findTarget","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","HTMLElement","enableHtmlSanitizer","enableHtmlParse","templateFunction","tempArr","isBlazorTemplate","renderCloseIcon","isSticky","tipClose","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList","ctrlId","targetList_1","target_1","restoreElement","showTooltip","showAnimation","showTimer","hideTimer","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isBlazorTooltipRendered","interopAdaptor","invokeMethodAsync","beforeRenderBlazor","afterRenderBlazor","contentUpdated","ctrlObj","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","openDelay","onMouseMove","wireMouseEvents","tooltip","checkCollision","affectedPos","checkCollideTarget","newpos","collidedPosition","eleOffset","arrowleft","windowCollision","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","blazorHide","popupHide","proxy","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","keyDown","touchEnd","scrollHandler","opensOn","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHold","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","HeaderRender","frzIdx","notfrzIdx","isFirstCol","headercelldiv","getStackedHeaderColumnByHeaderText","colIndex","lineHeight","ariaService","getFrozenLeftColumnsCount","colPosRefresh","renderCustomToolbar","rowRenderingMode","updateCustomResponsiveToolbar","renderPanel","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","headerTable","getColGroup","colgroup","setColGroup","colGroup","tHead","skipDom","createTable","createHeader","tableEle","cellspacing","tblName","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","Header","len_1","updateColGroup","frozenMode","colHeader","rowRenderer","colFreezeMode","indexes","getColumnIndexesInView","len_2","RowDragHIcon","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","getColumnIndexByUid","isTrue","lockColsCount","getFrozenColSpan","displayVal","clen","normalizedfrzCols","mTblColGrp","mTbl","refreshUI","freezeReorder","isVFTable","setFrozenTable","getVirtualFreezeHeader","appendContent","updateDefaultCursor","gCells","allowTextWrap","textWrapSettings","wrapMode","stackedHdr","toolbarItems","toolbarLeft","toolbarItem","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","getGui","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","buildAttributeFromCell","appendHtml","matchFlColumns","customAttributes","extendPrepareHeader","gridObj","headerTempID","clipMode","matchFilteredColumns","innerHtml","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","localizer","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","refreshDataManager","preventUpdate","resetTemplates","editSettings","tempPreventUpdate","commandDelIndex","getSelectedRecords","tempSelectedRecord","dataLength","totalRecordsCount","prevPageMoving","ceil","pagerModule","pagerObj","getGroupCache","refreshContentRows","toolbarTemplate","refreshComplete","isFActon","isNeedForeignAction","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerFailure","deferred","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","cFormat","equalTo","fmtr","validationRules","isColTypeDef","isServerDateMap","actionArgs","isInfiniteDelete","infiniteScrollSettings","enableCache","isInfiniteEnd","prevCurrentView","updatesOnInitialRender","isInitialLoad","enableImmutableMode","immutableModeRendering","setRowElements","setRowObjects","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","curDm","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","data_1","customAggregate","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","closeCustomDialog","setCustomFilterHeader","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","filterModule","saveBtn","backBtn","customExcelFilterParent","isFilter","isOpen","filterClearBtn","getHeaderTitle","renderResponsiveContent","filterParent","customColumnDiv","sortBtnParent","filteredCols","cDiv","isSort","getSortedFieldsAndDirections","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","setSortedCols","getCurrentSortedFields","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","filteredCol","renderResponsiveDialog","enableAdaptiveUI","setFilterModel","createOptions","setTopToChildDialog","renderCustomFilterDialog","customFilterDlg","dialogEle","top_1","outerDiv","getDialogOptions","isCustomFilter","isModal","showCloseIcon","closeOnEscape","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","clearSorting","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","ServiceLocator","services","register","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","ColumnChooserSettings","ShowHide","showBy","getToggleFields","hideBy","finalized","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","emptyVcRows","selectionSettings","persistSelection","clearSelection","colsInCurrentView","col1","col2","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","keyDownHandler","pasteHandler","isMacLike","platform","metaKey","cellSelectionMode","clipBoardTextArea","x_1","scrollX","y_1","scrollY","scrollTo","paste","getSelectedRowCellIndexes","cellIndexes","rIdx","frRows","dataRows","getMovableDataRows","getFrozenRightDataRows","getRowByIndex","getCellFromIndex","fTr","mTr","frTr","editModule","updateCell","selectCellsByRange","setCopyData","withHeader","getSelection","getFrozenRightRows","selectedIndexes","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","setSelectionRange","isCell","splitKey","isElement","queryCommandSupported","execCommand","blur","removeAllRanges","rowCellIndxes","gridObserver","BlazorAction","virtualHeight","onDetailRowClick","addDeleteSuccess","editSuccess","setColumnVisibility","setServerOffSet","modelChanged","onGroupClick","setColVTableWidthAndTranslate","invokeServerDataBind","contentColGroup","dataSourceModified","currentAction","editArgs","rIndex","gridRowId","gridRow","virtualContentModule","activeKey","blzRowIndex","selectRow","preventScroll","blazorDataLoad","foreignColumnsData","aggRows","aggRow","rowUid","offsetTime","sign","setClientOffSet","batchChanges","getMediaColumns","setVirtualHeight","removeDisplayNone","renderedContentRows","renderedContentCells","setVirtualTrackHeight","VisibleGroupedRowsCount","prevInfo","columnIndexes","translateX","getColumnOffset","startColIndex","endColIndex","virtualEle","setWrapperWidth","adjustTable","dataSourceChanged","refreshOffsets","refreshVirtualElement","serverTimezoneOffset","serverTimeZone","exactTopIndex","rowElements","mergePersistGridData","resetPersistData","parseArgs","persistArgs","contentTable","movableContentTable","movableHeaderTable","dataFailure","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","keyA","frozenRightCount","frozenLeftCount","tablesCount","movableCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","pageTemplateChange","mediaBindInstance","asyncTimeOut","enableLogger","Grid_1","keyEntity","selectedRowIndex","scrollPosition","currentObject","pagerTemplate","setFrozenCount","allowPdfExport","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","isPersistSelection","filterOperators","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","EndsWith","Contains","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","escape","ctrlHome","ctrlEnd","pageUp","pageDown","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","enter","ctrlEnter","shiftEnter","tab","shiftTab","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","gcol","getShowHideService","hideAtMedia","pushMediaColumn","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","invokedFromMedia","showHider","refreshMediaCol","footerContent","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","keyboardModule","enableBoxSelection","enableAutoFill","checkCursor","requireRefresh","requireGridRefresh","isEllipsisTooltip","updateColumnObject","properties_1","updateAutoFillPosition","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","case","isModeChg","pending_1","getPrototypeOf","deepWatch","pKeyField","setRowData","gResult","scrollRefresh","isSelectedRowIndexUpdating","setWidthToTable","enableVerticalRendering","fn_1","refreshFilter","setTablesCount","frozenCols","frozenLeft","frozenRight","getTablesCount","headerCells","stdHdrCell","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","stackedHeader","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getFrozenDataRows","getRowElements","getFrozenRightRowByIndex","getRowInfo","getMovableRows","rowsObject","getMovableRowElements","getFrozenRightRowElements","getAllDataRows","includeAdd","getFrozenLeftContentTbody","hdrTbody","freezeRows","addMovableRows","generateDataRows","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","setCellValue","fieldIdx","rowuID","pkName","selectedRow","movableSelectedRow","rowObjects","movableRowObjects","sRow","mRow","refreshTD","columnUid","rowsObj","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnsCount","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenRightHeader","getFrozenLeftColumnHeaderByIndex","isFrozenRight","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getRowTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowCellIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","removeSortColumn","filterByColumn","filterOperator","filterValue","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","searchString","fieldname","startEdit","closeEdit","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","enableItems","clipboardModule","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","minWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderModule","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","sCols","sLen","parentDetails","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","popup","tabIndex","gridLines","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","hoverFrozenRows","myTableDiv","cssText","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","allowKeyboard","keyActionHandler","tapEvent","dataBoundFunction","blazorTemplate","isChildGrid","checkEdit","clonedColumn","ariaOwns","keyPress","editFormValidate","persistedData","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","this_2","presskey","stopImmediatePropagation","focusHeader","addOutline","focusContent","refreshColumns","fCnt","frCnt","isColFrozen","getMovableContent","frTbl","getFrozenRightContent","colGrp","excelExportModule","pdfExportProperties","pdfDoc","pdfExportModule","groupModule","groupExpandAll","groupCollapseAll","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getFrozenVirtualContent","rowEle","frozenRigtRows","frHdr","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","nonContentHeight","getNoncontentHeight","contentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","getFormat","setHeaderText","form","gridInput","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","portals","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","assign","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","mTbody","modelData","addRowObject","moveTbody","getHeight","isInteger","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","showCustomFilter","CellRenderer","rowChkBox","evaluate","fData","literals","templateID","rNumber","invokeFormatter","refreshCell","parentRow","newTD","cloneAttributes","displayAsCheckBox","localeStr","fromFormatter","checkWrap","setAttributes","isCheckBoxType","isTemplate","colindex","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","updateStyles","link","frag","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","next","previousPageNo","currentPageSet","totalPages","customText","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","Pager","hasParent","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","containerModule","pagerMessageModule","isReactTemplate","initLocalization","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","setPageSize","pageSizes","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","pushState","uri","prevString","activeClass","prevElementId","incrementalSearch","selectedIndex","elementId","listItems","strLength","li","ul","hasChild","collapsible","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","dataField","ListBase","defaultMappedFields","isChecked","iconCss","hasChildren","htmlAttributes","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","ariaAttributes","listClass","itemClass","processSubChild","sortOrder","groupTemplate","expandIconClass","expandIconPosition","itemNavigable","createList","isSingleLevel","componentInstance","curOpt","typeofData","typeof","createListFromArray","createListFromJson","subChild","createListItemFromArray","generateUL","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","curItem","innerEle","imageElemnt","iconElement","getSiblingLI","elementArray","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","addSorting","getDataSource","itemObj","grpItem","hdr","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","i_1","hasChildNodes","attributes_1","getAllAttributes","elementAttributes","nodeName","nodeValue","renderContentTemplate","ulElement","compiledString","liCollection","currentID","groupTemplateID","renderGroupTemplate","headerItems","headerItems_1","headerData","subDS","subLi","expandElement","innerElements","grpLI","elementID","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","blazId","removeBlazorID","liElement","generateIcon","FieldSettings","dropDownBaseClasses","root","hover","noData","fixedHead","ITEMTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","DropDownBase","preventChange","isPreventChange","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","exception","l10nUpdate","noRecordsTemplate","actionFailureTemplate","DropDownBaseresetBlazorTemplates","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataCompTemp","DropDownBaseupdateBlazorTemplates","l10nLocale","componentLocale","getLocaleName","liElem","getTextByValue","enableRtlElements","bindEvent","jsonElement","resetList","renderItemsBySelect","setListData","noRecord","itemTemplateId","groupTemplateId","valueTemplateId","headerTemplateId","footerTemplateId","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","emptyDataRequest","renderItems","bindChildItems","onActionFailure","localDataArgs","childNode","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupcheck","groupValue","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","zIndex","scrollStop","liHeight","topIndex","currentLi","isTempEmpty","itemcheck","listDataType","isNullData","defaultView","liWidth","firstLi","textField","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleFun","isGroupChecking","itemIndex","itemsCount","selectedItemValue","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","updateDataList","validationAttribute","hidden","itemCount","getDataByValue","dropDownListClasses","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","previousValue","isListSearched","checkBlazor","isServerBlazor","initializeData","activeIndex","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","keyConfigure","down","up","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","resetSelection","getItemData","onChangeEvent","selectedLI","itemData","valueTempElement","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","validateAttr","getAriaAttributes","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlur","isFilterLayout","focusOutAction","focusOut","onFocusOut","onFocus","resetValueHandler","formElement","wireEvent","dropDownClick","focusIn","bindCommonEvent","mobileKeyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","isServerIncrementalSearch","searchKeyEvent","onServerIncrementalSearch","isValidLI","back","closePopup","setHover","hoveredItem","setScrollPosition","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavAction","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isServerNavigation","focusEle","isSelectFocusItem","nextItem","findLi","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSelectedLI","dropdownCompiler","dropdownTemplate","templateData","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","eve","detachChangeEvent","defineProperties","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterType","selectionStart","selectionEnd","clearElement","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","checkField_1","checkVal","addNewItem","isExist","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","serverPopupEle","listHeight","popupHeight","setHeaderTemplate","setFooterTemplate","updateServerPopup","searchBoxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","collision","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements","scrollParentElements_1","listScroll","inputParent","animModel","popupInstance","destroyPopup","serverBlazorUpdateSelection","bindServerScrollEvent","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","targetType","relateTo","isResetItem","actionList","targetExitViewport","popupOffset","lastItem","lastItemOffsetValue","paddingBottom","inputHeight","popupWidth","inputWidth","scrollBottom","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","scrollableParentElements","scrollableParentElements_1","fixedHeader","popupHolderEle","updatedCssClassValues","selectElement","onselect","onchange","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","ddlProps","newClass","invokeRenderPopup","isDropdownComp","proxy_2","onpopstate","clientRenderPopup","renderHightSearch","updateclientItemData","initValueItemData","serverUpdateListElement","isSelectVal","isFocused","attrArray","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","replaceChild","isForceCancel","previousPage","keyActions","appendToElement","handlers","complete","updateLayout","inboundChange","__assign","t","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","factory","initializeSelection","onActionBegin","fDataUpdate","getRowObj","hidePopUp","mouseDownHandler","isEditing","formObj","getSelectedMovableRow","getSelectedFrozenRightRow","getCurrentBatchRecordChanges","currentRecords","newRowPosition","primaryKey","enableSimpleMultiRowSelection","addRowsToSelection","selectedMovableRow","selectedFrozenRightRow","isRemoved","frozenData","getRowObjectByIndex","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isHybrid","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","toggle","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","frRow","mObj","previousMovRow","frozenRightRow","previousFrozenRightRow","getCollectionFromIndexes","isSingleSel","currentRow","prevRow","selectRowFn","rightEle","rowIndexes_1","checkboxOnly","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","chkState","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","isPresent","chkBox","nextElementSibling","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","clearColumnSelection","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","isRowClicked","checkSelectAllClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","cancl_1","rowDeselectObj","rowInString","target_2","rowidx","rowidxex","data_2","isHeaderCheckBxClick","rowIndex_2","data_3","getSelectedMovableCell","getColIndex","isCellType","selectedCell","isCellSelected","prevCIdxs","successCallBack","previousRowCell","prevECIdxs","getCellIndex","currentCell","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","addCellsToSelection","movable","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","rowCell","cLen","bdrElement","showHideBorders","gBRect","x1","y1","x2","y2","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastCell","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","frcBdrElement","fhBdrElement","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","includes","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","startCellIndex","trIdx","mouseUpHandler","mUPTarget","lastCell","updateStartCellsIndex","autofill","rindex","isFrozenCol","isFrozenRow","clientRect","colWidth","enableDrag","isUpdate","postion","clearSelAfterRefresh","isInfiniteScroll","onCellFocused","columnPositionChanged","actionBeginFunction","actionCompleteFunction","actionComplete","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyUpHandler","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","renderFrozenRightContent","gobj","chkField","refreshPersistSelection","setRowSelection","mtbody","frtbody","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","vgenerator","rowCache","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","isInteraction","checkToSelectAll","isServerRenderedVirtualization","checkedLen","allowColumnSelection","popUpClickHandler","chkSelect","headerSelectionHandler","byKey","keyArgs","isJump","isContent","isSelectable","headerAction","thLen","childElementCount","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","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","isFreeze","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","movableRows","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","refreshSearch","onSearchComplete","cancelBeginEvent","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","elementWidth","fWidth","isDraggable","freezeLeft","freezeRight","getColumnLevelFrozenColgroup","frCont","editTableCol","frzMode","frozenScrollbar","movableScrollbar","frozencontent","movableContent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","previous","getHeightFromDirection","sibling","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","ComponentBase","hasInjectedModules","hasChildDirective","childDirObjects","ej2Instances","$emit","vueInstance","getInjectedServices","injectables","$vnode","$options","updated","childKey","fetchChildPropValues","curChildDir","assignValueToWrapper","beforeDestroy","tempBeforeDestroyThis","bindProperties","prevModule","curModule","curModule_1","silent","childOption","dirProps","getDirectiveValues","$slots","default","tagMapper","tagNameMapper","dirProp","tagDirectives","keyTags","dir","tagDirectives_1","tagDirective","componentOptions","dirTag","tagDirChild","retObj","getVNodeValue","getMultiLevelDirValue","tagDirectories","tagKey","mulObj","tagDirectories_1","tagDir","mulLevObj","getCamelCaseProps","retProps","$internalHooks","EJComponentDecorator","EJcomponentFactory","_componentTag","proto","watch","newVal","mixins","collectDataFromConstructor","__decorators__","superProto","Super","Extended","vm","_init","plainData","stringCompiler","templateElement","that","returnEle","tempObj","propsData","extends","templateVue","$mount","ColumnsDirective","ColumnsPlugin","install","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","modelProps","GridComponent","models","_trigger","_setProperties","propKey","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","matrix","generate","validator","passiveFocus","skipAction","getFocusInfo","elementToFocus","force","beforeArgs","byClick","clickArgs","clearOutline","onKeyPress","skipOn","bValue","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","setActiveByKey","lastIdxCell","clearIndicator","th","inputTarget","filterCell","focusVirtualElement","virtualData","isCancel","isKeyFocus","empty","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","resetFocus","getInfo","focusedColumnUid","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","newMovableRows","newFrozenRows","newfrRows","handlerInstance","index_1","focusElement","cellPosition","gridPosition","passiveHandler","restoreFocus","evts","filterfocus","actionsG","restoreFocusWithAction","internalCellFocus","forgetPrevious","getFocusable","Matrix","allow","emptyTable","inValid","vector","indexesByKey","getCurrentFromAction","editNextRow","isLastCellPrimaryKey","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","isDirty","nextRowFocusValidate","previousRowFocusValidate","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","headerSwap","fMatrix","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","headerMat","PositionData","OPEN","Popup","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","orientationOnChange","getRelateToElement","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","isElementVisible","checkGetBoundingClientRect","win","windowView","elementView","checkFixedParent","parentDisplay","getAnchorPosition","eleRect","anchorEle","anchorRect","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","zIndexElement","getZindexPartial","parentStyle","overflowRegex","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","rowDataBound","queryCellInfo","headerCellInfo","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","beforePrint","printComplete","batchAdd","batchCancel","batchDelete","recordDoubleClick","recordClick","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","exportGroupCaption","initialLoad","uiUpdate","inBoundModelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","searchComplete","reorderComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","preventBatch","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","beforePdfExport","pdfQueryCellInfo","pdfHeaderQueryCellInfo","freezeRender","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","showEmptyGrid","dataStateChange","rtlUpdated","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","filterCboxValue","componentRendered","detailStateChange","detailIndentCellInfo","virtaulCellFocus","virtualScrollEdit","editReset","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","ContentRender","freezeRowElements","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","mutableData","rafCallback","mContentRows","fContentRows","fHdr","generator","getModelGenerator","droppableDestroy","pressedKey","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentMovableRows","initialPageRecords","trElement","hdrfrag","tbdy","fCont","virtualInfo","sentinelInfo","borderRightWidth","removeClassByUid","addClassByUid","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","updateVirtualCells","blockLoad","offsets","offsets_1","bSize","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","rowTemplateID","lastElementChild","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","renderNextFrozentPart","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","colIdx","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","trs","getHeaderColGroup","droppable","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","updateCellIndex","GroupModelGenerator","summaryModelGen","ensureRowVisibility","parentid","childId","isRenderCaption","prevKey","captionRow","generateCaptionRow","rowCnt","isCaptionRow","aggregatesCount","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","selectedHandler","minHeight","resizeWestWidth","elementClass","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","RESIZE_HANDLER","FOCUSED_HANDLER","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","resizeStart","resize","resizeEnd","setLeft","previousWidth","dialogBorderResize","createResize","resizeBegin","resizing","resizeComplete","getDOMElement","boundary","directions","setBorderResizeElm","resizeHandler","calculateValues","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseUp","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CONTENT","DLG_CLOSE_ICON","DLG_OVERLAY","DLG_TARGET","DLG_CONTAINER","SCROLL_DISABLED","DLG_PRIMARY_BUTTON","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_HIDE","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_REF_ELEMENT","Dialog","initRender","enableResize","setResize","getMinHeight","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","localeText","checkPositionData","prevOnChange","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","toLocaleLowerCase","targetEle","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","ftrTemplateContent","focusableElements","isTagName","isContentEdit","primaryButtonEle","buttonIndex_1","firstPrimary","setCSSClass","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragObj","dragEventArgs","buttonContent","buttonType","footerBtn","innerContentElement","sanitizeHelper","templateProps","templateValue","isString","dialogItem","beforeEvent","headerEle","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","Element","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","beforeCloseArgs","getButtons","DialogUtility","alertDialogObj","dialogElement","okButtonModel","createDialog","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","dialogObject","formOptions","setAlertButtonModel","setConfirmButtonModel","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","total","gLen","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","setStyleAndAttributes","copyAttr","exclude","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","isBottomTail","popUpSpan","targetPosition","getPopupLeftPosition","getPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","getUid","appendChildren","calculateAggregate","Global","divNode","showConfirmDialog","clName","isServer","addRemoveActiveClasses","getFilterMenuPostion","elementVisible","dlgWidth","leftPos","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","setSeconds","predicateSt","predicateEnd","renderMovable","mEle","isGroupAdaptive","object","getExpandedState","getPrintGridModel","printGridModel","extendObjWithFn","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","compareChanges","newArray","frozenRightRowElements","gridActionHandler","getCellsByTableName","getCellByColAndRowIndex","mtch_1","addBiggerDialog","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","DataUtil","localeCompare","extractFields","jsonArray","newData","isLazyLoad","groupedArray","getVal","aggs","grp","fKeyData","copyObj","middle","diacritics","fnName","param1","param2","adp","rand","hexs","getItemFromComparer","castRequired","requiresCompleteRecord","sum","average","truecount","falsecount","operatorSymbols","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","ms","offSet","toTimeZone","isUTC","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","toUTC","utc","unix","datefn","differenceString","localtimefn","norm","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","getIndexFromAllColumns","vColumnIndices","ExportHelper","hideColumnInclude","processColumns","columnPromise","fColumns","isHideColumnInclude","processHeaderCells","generateActualColumns","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","exportId","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","isServerBlaz","CLS_ROOT","CLS_DISABLE","CLS_HSCROLLBAR","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","touchHandler","swipe","swipeHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle_1","ele_1","scrollItems","nav","overlay","navEles","rightOverlayEle","clsRight","navItem","leftEle","eventBinding","clsLeft","navEle","navLeftItem","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","timeout","scrollDis","timeoutFun","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","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","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","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_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","resizeContext","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","wireKeyboardEvent","keyModule","docKeyDown","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","popAnimate","eleFocus","popupCheck","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","skipEle","clsList","isPopupElement","popupNav","popupClickHandler","tempItem","clickedArgs","CLS_RTL","getElementOffsetY","renderControl","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleInlineItem","eleItem","multiVar","extendVar","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","nodeIndex","poppedEle","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","eleStyles","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","sepDisplay","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","tempArray","toolbarTemplateID","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","multirowele","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","eleIndex","innerItems_1","innerItems_2","nextEle","setFlag","removeFlag","initELe","predefinedItems","gridID","preItems_1","itemStr","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","getResponsiveToolbarItems","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","toolbarItems_1","getItemObject","itemObject","items_2","gID","newArgs","toolbarargs","tarElement","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","gObj_1","colObj","initiateSort","showPopUp","colUid","allowUnsort","enableSortMultiTouch","filterElement","updateAriaAttr","isValDiff","makechanges","extension","mimeType","getMimeType","downloadLink","hasDownloadAttribute","isPopupBlocked","onloadend","readAsDataURL","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","high","low","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteLength","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16","cssClassName","BUTTON","PRIMARY","ICONBTN","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","btnClickHandler","FooterRenderer","gridModule","modelGenerator","fDiv","mDiv","frDiv","frozenContent","frozenRightContent","tFoot","frTable","frCol","renderSummaryContent","cStart","cEnd","summaries","fragment","rowrenderer","srow","movableLastCell","borderRight","movableCnt","frozenCnt","refreshHeight","frozenDiv","updateFooterTableWidth","onScroll","movableHeight","refreshCol","mheaderCol","fheaderCol","onWidthChange","getColFromIndex","fCol","getIndexByKey","isModified","gridData","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","groupKey","cellNode","curCell","initiateRender","cellFac","footerRenderer","summaryIterator","dataColumn","cModel","gModel"],"mappings":"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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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e,gBAAgD,IAA9Bf,EAAIe,eAAevkH,OAAewjH,EAAIe,eAAe,GAAKf,EAC5F,OAAO6J,GAEX,GAAW,CACP,MACDJ,EAAMvvH,UAAW,WAAO,GAC3B,GAAW,CACP,MACDuvH,EAAMvvH,UAAW,eAAW,GAC/B,GAAW,CACP,MACDuvH,EAAMvvH,UAAW,aAAS,GAC7B,GAAW,CACP,MACDuvH,EAAMvvH,UAAW,cAAU,GAC9B,GAAW,CACP46G,GAAS,MACV2U,EAAMvvH,UAAW,oBAAgB,GACpC,GAAW,CACP46G,GAAS,MACV2U,EAAMvvH,UAAW,wBAAoB,GACxC,GAAW,CACP+6G,GAAQ,GAAI,KACbwU,EAAMvvH,UAAW,qBAAiB,GACrCuvH,EAAQ,GAAW,CACfnU,IACDmU,GACIA,EAjQe,CAkQxB,IC3TE8D,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEtyE,UAAW,OAAQqP,SAAU,yBAC/B,CAAErP,UAAW,aAAcqP,SAAU,+BACrC,CAAErP,UAAW,QAASqP,SAAU,0BAChC,CAAErP,UAAW,QAASqP,SAAU,0BAChC,CAAErP,UAAW,OAAQqP,SAAU,qCAE/BkjE,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBAEA,GAAoC,WACpC,SAASC,KA2ET,OAzEAA,EAAmBC,eAAiB,WAChC,M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AAS,IACV83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,2BAAuB,GAC1C,GAAW,CACP,eAAQ,GAAI,KACb83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAQ,GAAI,KACb83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,2BAAuB,GAC1C,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAQ,GAAI,KACb83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACb83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAW,GAAI,KAChB83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAQ,GAAI,KACb83D,EAAK93D,UAAW,6BAAyB,GAC5C,GAAW,CACP,gBAAS,IACV83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAS,SACV83D,EAAK93D,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,SACV83D,EAAK93D,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,YACV83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,aACV83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,aACV83D,EAAK93D,UAAW,0BAAsB,GACzC,GAAW,CACP,eAAS,KACV83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,OACV83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,QACV83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,IACV83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,IACV83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,QACV83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAS,KACV83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,YACV83D,EAAK93D,UAAW,kCAA8B,GACjD,GAAW,CACP,kBACD83D,EAAK93D,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iCAA6B,GAChD,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mCAA+B,GAClD,GAAW,CACP,kBACD83D,EAAK93D,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACD83D,EAAK93D,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACD83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,+BAA2B,GAC9C,GAAW,CACP,kBACD83D,EAAK93D,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD83D,EAAK93D,UAAW,kB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N,KAAM,OACN,KAAM,OACN,KAAM,OACN,SAAY,OACZ,gBAAmB,OACnB,YAAe,OACf,mBAAsB,OACtB,MAAS,OACT,SAAY,QAMhBmwN,EAASlwN,cAAgB,CACrB,KAAM,WACN,KAAM,aACN,KAAM,cACN,SAAY,WACZ,WAAc,aACd,SAAY,eAMhBkwN,EAASjwN,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,YAEhBiwN,EAASa,WAAa,CAClB,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IA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","file":"js/chunk-3ed29042.0a1cb52e.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.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!./QuickDispense.vue?vue&type=style&index=1&id=e7515836&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 { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query));\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + _this.options.select + \"=\" + selected[expand].join(',') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n data = request ? JSON.parse(request.data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar AjaxAdaptor = /** @class */ (function (_super) {\n __extends(AjaxAdaptor, _super);\n function AjaxAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n AjaxAdaptor.prototype.getModuleName = function () {\n return 'AjaxAdaptor';\n };\n return AjaxAdaptor;\n}(UrlAdaptor));\nexport { AjaxAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n * @param args\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @param args\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0,\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @param args\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","import { Draggable, Droppable, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, 'e-gridcontent') || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, 'e-gridcontent') || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup(e);\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n // tslint:disable-next-line\n var grouped = [].slice.call(_this.element.querySelectorAll('.e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[c]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.querySelectorAll('.e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function (e) {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n var gObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n e.target.classList.contains('e-groupdroparea') ? this.element.classList.add('e-hover') : this.element.classList.remove('e-hover');\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var gObj = this.parent;\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on('blazor-action-begin', this.blazorActionBegin, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off('blazor-action-begin', this.blazorActionBegin);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.blazorActionBegin = function () {\n if (this.parent.allowGrouping && !this.parent.isCollapseStateEnabled()) {\n this.expandAll();\n }\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (isBlazor() && gObj.isServerRendered) {\n for (var i = 0; i < gObj.columns.length; i++) {\n this.removeColFromGroupDrop(gObj.columns[i].field);\n }\n this.updateGroupDropArea();\n }\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector('tbody').children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-detailrow')) {\n grpRow = rows[i];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null)) {\n return;\n }\n var element = this.focus.getFocusedElement();\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n this.expandCollapseRows(row);\n break;\n case 'ctrlSpace':\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n column.field && gObj.groupSettings.columns.indexOf(column.field) < 0 ?\n this.groupColumn(column.field) : this.ungroupColumn(column.field);\n }\n break;\n }\n };\n Group.prototype.clickHandler = function (e) {\n this.expandCollapseRows(e.target);\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).querySelectorAll('.e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var cellIdx = trgt.cellIndex;\n var rowIdx = trgt.parentElement.rowIndex;\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var rows = [].slice.call(rowNodes).slice(rowIdx + 1, rowNodes.length);\n var isHide = void 0;\n var expandElem = void 0;\n var dataManager = void 0;\n var query = void 0;\n var toExpand = [];\n var gObj = this.parent;\n var indent = trgt.parentElement.querySelectorAll('.e-indentcell').length;\n var expand = false;\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', {\n uid: trgt.parentElement.getAttribute('data-uid'),\n isExpand: trgt.classList.contains('e-recordpluscollapse')\n });\n return;\n }\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n expand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].querySelectorAll('td')[cellIdx] &&\n rows[i].querySelectorAll('td')[cellIdx].classList.contains('e-indentcell') && rows) {\n if (isHide) {\n rows[i].style.display = 'none';\n }\n else {\n if (rows[i].querySelectorAll('.e-indentcell').length === indent + 1) {\n rows[i].style.display = '';\n expandElem = rows[i].querySelector('.e-recordplusexpand');\n if (expandElem) {\n toExpand.push(expandElem);\n }\n if (rows[i].classList.contains('e-detailrow')) {\n if (rows[i - 1].querySelectorAll('.e-detailrowcollapse').length) {\n rows[i].style.display = 'none';\n }\n }\n }\n }\n }\n else {\n break;\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n for (var i = 0, len = toExpand.length; i < len; i++) {\n removeClass([toExpand[i]], 'e-recordplusexpand');\n addClass([toExpand[i]], 'e-recordpluscollapse');\n toExpand[i].firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n this.expandCollapseRows(toExpand[i]);\n }\n }\n };\n Group.prototype.updateVisibleexpandCollapseRows = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].isDataRow && this.parent.getRowElementByUID(rows[i].uid).style.display === 'none') {\n rows[i].visible = false;\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', { isExpand: isExpand });\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[i].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[i].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n row.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n row.firstElementChild.className = isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' :\n 'e-icons e-gnextforward e-icon-grightarrow';\n }\n if (!(rowNodes[i].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[i].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n * @return {Element}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * @return {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n if (isBlazor() && gObj.isServerRendered) {\n var setVisible = [];\n setVisible[0] = column;\n this.parent.notify('setvisibility', setVisible);\n }\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[i].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n gObj.sortSettings.columns = gObj.sortSettings.columns;\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n * @return {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var gObj = this.parent;\n var i = 0;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var gObj = this.parent;\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[i].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.sortSettings.columns = this.parent.sortSettings.columns;\n }\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[i].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode \n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': 'Drag the grouped column' }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'ungroup button' }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: isBlazor() ? this.l10n.getConstant('UnGroupButton') : this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': 'ungroup the grouped column' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n var index = this.groupSettings.columns.indexOf(field);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n if (this.groupSettings.allowReordering\n && this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']')) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.querySelectorAll('.e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n //Todo: rtl \n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'Separator for the grouped columns' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[i].classList.contains('e-emptycell')) || (headers[i].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[i].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[i].querySelectorAll('.e-grptogglebtn').length) {\n remove(headers[i].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[i].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' +\n (this.groupSettings.columns.indexOf(column.field) > -1 ? 'e-toggleungroup e-icon-ungroup'\n : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1', 'aria-label': 'Group button' }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.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 var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[j].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[i];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[i]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[prop].indexOf(columns[i]) === -1) {\n this.parent.getColumnByField(columns[i]).visible = true;\n }\n }\n }\n var requestType = 'requestType';\n if (isBlazor() && this.parent.isServerRendered && this.parent.isCollapseStateEnabled() &&\n args[requestType] === 'grouping') {\n this.parent.refreshHeader();\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n this.groupSettings.showDropArea ? this.element.style.display = '' : this.element.style.display = 'none';\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[i]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.querySelectorAll('.' + className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[i].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.isDestroyed && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n remove(this.element);\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[i]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function (e) {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[i].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[i].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[i].field) && this.getGHeaderCell(cols[i].field).querySelectorAll('.e-groupsort').length) {\n if (cols[i].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[i]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[i]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[i];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[i] ? summaryRows[i].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[i]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[k].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[k].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[l], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_1 = function (j) {\n var childRow = rows[j];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_1 = _loop_1(j);\n if (state_1 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","import { 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","import { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked } from '../base/util';\nimport { remove, debounce } 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 * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\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 }\n /**\n * To destroy the filter bar.\n * @return {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 EventHandler.add(this.dialogObj.element.querySelector('.e-searchinput'), 'keyup', this.searchHandler, this);\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 }\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[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].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 = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\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 if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = 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.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\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 }\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 if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\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: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\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 createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\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, this.parent);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n this.parent.notify(events.filterDialogCreated, e);\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.dialogObj && !this.dialogObj.isDestroyed) {\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // tslint:disable-next-line:no-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) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n this.parent.renderTemplates();\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 /** @hidden */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n /* tslint:disable-next-line:max-line-length */\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 var value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n var args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type\n },\n field: this.options.field\n };\n value !== undefined && value !== null && value !== '' ? this.isForeignColumn(this.options.column) ?\n this.foreignFilter(args, value) : this.options.handler(args) : this.closeDialog();\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\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 = this.searchBox.querySelector('.e-searchinput');\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.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.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], '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 var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], '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 this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n };\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 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[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].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 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 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n /* tslint:disable-next-line:max-line-length */\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 (isBlazor() && !this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = {};\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n filterargs.operator = (isBlazor() && filterargs.excelSearchOperator !== 'none') ?\n filterargs.excelSearchOperator : filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\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 // tslint:disable-next-line:no-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 foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\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) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\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).isForeignColumn()) {\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 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 if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\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 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 query.distinct(filteredColumn);\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.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 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 for (var j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\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.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 /* tslint:disable-next-line:max-line-length */\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[i];\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[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\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).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n this.sInput.focus();\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\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.updateResult();\n this.createFilterItems(dataSource, isInitial, args);\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\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 target = e.target;\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\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 }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\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) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame'));\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 label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('True') : this.getLocalizedLabel('False');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n if (isReactCompiler) {\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.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\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 (cnt === selected) {\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 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;\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[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\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 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[i]);\n var value = getValue(this.options.field, data[i]);\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[i] };\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 var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ||\n (isBlazor() && this.parent.isServerRendered) ? [] : data };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.result[value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\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[len];\n value = getObject(field, value); //local remote diff, check with mdu \n if (!(value in lookup)) {\n var obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\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[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var first;\n var operate = 'or';\n first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\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[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].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.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } 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 * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\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 * @return {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 gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n * @return {Query}\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage) {\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[i].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 this.groupQuery(query);\n return query;\n };\n /** @hidden */\n Data.prototype.aggregateQuery = function (query, isForeign) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[j];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var gObj = this.parent;\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][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 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[i][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.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[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], 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[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n var fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[i].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[i].direction === 'string') {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[i].field);\n query.sortByForeignKey(sortGrp[i].field, sortGrp[i].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[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], 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 = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.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 if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\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).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 * @param {Query} query - Defines the query which will execute along with data processing.\n * @return {Promise}\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 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 if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\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 if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n if (isBlazor()) {\n return crud.then(function (result) {\n return _this.insert(query, args);\n }).catch(function (e) {\n return null;\n });\n }\n else {\n return crud.then(function (result) {\n return _this.insert(query, args);\n });\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 (e) {\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 gObj = this.parent;\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 if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\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 /** @hidden */\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 state = void 0;\n state = this.getStateEventArgument(query);\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 changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var data = 'data';\n if (isBlazor() && this.parent.isServerRendered) {\n for (var i = 0; i < changes[changedRecords].length; i++) {\n var args = { data: changes[changedRecords][i] };\n this.parent.notify('offset', args);\n changes[changedRecords][i] = args[data];\n }\n for (var i = 0; i < changes[addedRecords].length; i++) {\n var args = { data: changes[addedRecords][i] };\n this.parent.notify('offset', args);\n changes[addedRecords][i] = args[data];\n }\n }\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 /** @hidden */\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 this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value, index) { return e.records.indexOf(value) === -1; });\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 state;\n var dataArgs = args;\n state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && 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 (e) {\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 * @return {string[]}\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","import { isBlazor, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { closest, classList, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Grid } from '../base/grid';\nimport { parents, getUid, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.focus = locator.getService('focus');\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.expandChildGrid, this.expand, this);\n this.parent.on(events.columnVisibilityChanged, this.refreshColSpan, this);\n }\n DetailRow.prototype.clickHandler = function (e) {\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n // tslint:disable-next-line:max-func-body-length\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n var gObj = this.parent;\n var table = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var isServerRendered = 'isServerRendered';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))) {\n return;\n }\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.notify('detailclick', target);\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var nextRow = this.parent.getContentTable().querySelector('tbody').children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(events.detailStateChange, { data: data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId } });\n var detailCell = this.parent.createElement('td', { className: 'e-detailcell' });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell.setAttribute('colspan', colSpan.toString());\n var row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-detailindentcell' }));\n detailRow.appendChild(detailCell);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n if (gObj.detailTemplate) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string';\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler) {\n gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(detailCell, gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID));\n }\n if (isBlazor()) {\n updateBlazorTemplate(detailTemplateID, 'DetailTemplate', gObj, false);\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: data[gObj.childGrid.queryString],\n parentRowData: data\n };\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(events.contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(events.onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid('')\n });\n detailCell.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n gObj.getRows().splice(tr.rowIndex + 1, 0, detailRow);\n gObj.getRowsObject().splice(rowObj.index + 1, 0, row);\n gObj.trigger(events.detailDataBound, { detailElement: detailCell, data: data, childGrid: childGrid });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table.querySelector('tbody').querySelectorAll('.e-detailrow').length - 1;\n addClass(table.querySelector('tbody').querySelectorAll('.e-detailrow')[detailrowIdx].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(events.detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute('aria-rowindex'), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n /**\n * @hidden\n * @param gObj\n * @param rowObj\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = gObj.expandedRows[rowObj.index].gridModel;\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n gridModel = gObj.childGrid;\n }\n else {\n gridModel = gObj.childGrid;\n }\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(events.contentReady, _this.promiseResolve);\n grid.off(events.onEmpty, _this.promiseResolve);\n grid.notify(events.hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row) {\n return row && row.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.expandChildGrid, this.expand);\n this.parent.off(events.columnVisibilityChanged, this.refreshColSpan);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = this.parent.getDataRows()[index];\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(events.actionComplete, { requestType: 'expandAllComplete', type: events.actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(events.actionComplete, { requestType: 'collapseAllComplete', type: events.actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[i].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n isExpand ? this.expand(td) : this.collapse(td);\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n e.action === 'altDownArrow' ? this.expand(td) : this.collapse(td);\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n var element = this.focus.getFocusedElement();\n if (!e.target.classList.contains('e-detailrowcollapse') &&\n !e.target.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[i].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","var __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 { isBlazor } 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 * @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 * @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 * @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 * @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 * @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 * @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 * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\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 * @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/#custom-component-in-filter-menu) for its customization.\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 * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\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 * @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 * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /** @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\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 = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : 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 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', isBlazor() ? ' ' : '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[i] === 'columns') {\n col[keys[i]] = [];\n for (var j = 0; j < _this[keys[i]].length; j++) {\n col[keys[i]].push(_this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = _this[keys[i]];\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 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 comparer(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 /** @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /** @hidden */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /** @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /** @hidden */\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[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact && keys[i] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid);\n }\n }\n };\n /**\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 /** @hidden */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /** @hidden */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /** @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /** @hidden */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /** @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /** @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\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","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';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n * @hidden\n */\n function Scroll(parent) {\n this.lastScrollTop = 0;\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 * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\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 this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.e-content');\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && 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().querySelector('tbody');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.querySelectorAll('.e-addedrow').length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\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 * @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 var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right' ? '0.5px' : '1px';\n content.querySelector('.e-headercontent').style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.e-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`](grid/#height/) must be set to 100%.\n * @return\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 '.e-gridcontent';\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\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 * @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 * @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 };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.e-headercontent').scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains('e-headercontent');\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\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 sLimit = target.scrollWidth;\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 (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector('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 = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.e-movableheader') :\n _this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.e-movablecontent') :\n _this.parent.getContent().querySelector('.e-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) {\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.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.e-content');\n this.header = this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = this.content.querySelector('.e-movablecontent');\n var fCont = this.content.querySelector('.e-frozencontent');\n var mHdr = this.header.querySelector('.e-movableheader');\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\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 (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.e-movablecontent').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\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 }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft =\n _this.content.querySelector('.e-movablecontent').scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\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 /**\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.removeEventListener();\n //Remove padding\n this.removePadding();\n var cont = this.parent.getContent().querySelector('.e-content');\n removeClass([this.parent.getHeaderContent().querySelector('.e-headercontent')], 'e-headercontent');\n removeClass([cont], 'e-content');\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n };\n /**\n * Function to get the scrollbar width of the browser.\n * @return {number}\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, isBlazor } 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 * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\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[i].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, end) {\n var columns = [];\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.detailTemplate || !isNullOrUndefined(this.parent.childGrid) || (this.parent.isRowDragable() && !start)) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\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[i], data[i], 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(raw);\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.isRowDragable()) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n if (isBlazor() && this.parent.isServerRendered && !isNullOrUndefined(parentUid)) {\n row.uid = this.parent.getRowUid('grid-row');\n }\n else {\n row.uid = getUid('grid-row');\n }\n row.parentUid = parentUid;\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 var key = '';\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[i].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function (data) {\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[i].toLowerCase();\n var disp = column.columnName;\n var val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !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 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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickDispense.vue?vue&type=style&index=0&id=e7515836&prod&lang=scss\"","/**\n * AriaService\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[i]], options[props[i]]);\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 * @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 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","import { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n * @param args\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputElement;\n var floatLinelement;\n var floatLabelElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label) {\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function wireClearBtnEvents(element, button, container) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('blur', function (event) {\n setTimeout(function () { addClass([button], CLASSNAMES.CLEARICONHIDE); }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n * @param value - Specify the value of the input element.\n * @param element - The element on which the specified value is updated.\n * @param floatLabelType - Specify the float label type of the input element.\n * @param clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n * @param cssClass - Css class names which are needed to add.\n * @param elements - The elements which are needed to add / remove classes.\n * @param oldClass - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n * @param width - Width value which is need to add.\n * @param container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n * @param placeholder - Placeholder value which is need to add.\n * @param element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n var parentElement;\n placeholder = encodePlaceHolder(placeholder);\n parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n * @param isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n * @param isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n * @param isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n * @param attrs\n * - Array of attributes which are need to removed from the element.\n * @param element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n * @param attrs\n * - Array of attributes which is added to element.\n * @param element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type, customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n * @param isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param inputObject\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = this;\n setTimeout(function () { ele.classList.remove('e-input-btn-ripple'); }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function addIcon(position, icons, container, input, internalCreate) {\n // tslint:enable\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n // tslint:enable\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n","import { extend, isNullOrUndefined, isBlazor } 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';\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 * @hidden\n */\n function Reorder(parent) {\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 }\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 cols = this.parent.columns;\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 parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[i]) {\n return true;\n }\n else if (cols[i].columns) {\n var cnt = parent.length;\n parent.push(cols[i]);\n if (!this.findColParent(col, cols[i].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) {\n var columnModel = [];\n var subCols = [];\n var isFrozen = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid();\n if (isFrozen) {\n return this.parent.getColumns();\n }\n else {\n for (var i = 0, len = cols.length; i < len; i++) {\n columnModel.push(cols[i]);\n if (cols[i].columns) {\n subCols = subCols.concat(cols[i].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\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 var bool = 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 var column_2 = columns[oldIdx];\n this.moveColumns(newIndex, column_2);\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 isFrozen = !gObj.getFrozenColumns() && gObj.isFrozenGrid();\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : isFrozen ? this.parent.getColumns() : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if (((this.parent.isFrozenGrid() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].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[i].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[i].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 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 };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var isFrozen = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid();\n var cols = isFrozen ? this.parent.getColumns() : this.parent.columns;\n var headers = this.getHeaderCells();\n var flatColumns = this.getColumnsModel(cols);\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.getHeaderCells = function () {\n var frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.lockcolPositionCount) {\n var fTh = void 0;\n var mTh = void 0;\n var fHeaders = [];\n var fRows = [].slice.call(this.parent.getHeaderTable().querySelectorAll('.e-columnheader'));\n if (frozenColumns) {\n var mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelectorAll('.e-columnheader'));\n for (var i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[i].getElementsByClassName('e-headercell'));\n var isAvail = void 0;\n for (var k = 0; k < fTh.length; k++) {\n for (var j = 0; j < mTh.length; j++) {\n if (mTh[j].innerText === fTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[k]]);\n }\n }\n for (var j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[j]);\n }\n }\n }\n else {\n for (var i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n for (var k = 0; k < mTh.length; k++) {\n var isAvail = void 0;\n for (var j = k + 1; j < mTh.length; j++) {\n if (mTh[j].innerText === mTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[k]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\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 || fColumn.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[i]);\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[i]), true, !(isBlazor() && !this.parent.isJsComponent));\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n var cols_1 = this.parent.getColumns();\n this.parent.notify(events.modelChanged, {\n fromColumnUid: fromFNames.map(function (name) { return cols_1.filter(function (col) { return col.field === name; })[0].uid; }),\n toColumnUid: toColumn.uid,\n isMultipleReorder: true,\n requestType: 'reorder',\n type: 'actionBegin'\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 var column = this.parent.getColumnByField(fieldName);\n this.moveTargetColumn(column, toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[i], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @return {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 * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n var column = this.parent.getColumnByIndex(fromIndex);\n this.moveTargetColumn(column, toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n typeof fieldName === 'string' ? this.reorderSingleColumnByTarget(fieldName, toIndex) :\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\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.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.e-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 * @return {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\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 * @return {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n remove(this.upArrow);\n remove(this.downArrow);\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 //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\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 if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass(gObj.getHeaderTable().querySelectorAll('.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 if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\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 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 if (this.parent.isFrozenGrid()) {\n this.updateFrozenScrollPosition(x, cliRect);\n }\n else {\n var cliRectBaseLeft = cliRect.left;\n var scrollElem_1 = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, false); }, 50);\n }\n }\n };\n Reorder.prototype.updateFrozenScrollPosition = function (x, cliRect) {\n var _this = this;\n var scrollElem = this.parent.getContent().querySelector('.e-movablecontent');\n var mhdrCliRect = this.parent.element.querySelector('.e-movableheader').getBoundingClientRect();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var cliRectBaseRight = right ? mhdrCliRect.right : cliRect.right;\n var cliRectBaseLeft = left ? mhdrCliRect.left : cliRect.left;\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 if (this.parent.isFrozenGrid() && target.classList.contains('e-headercell')) {\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var dropEle = this.element.querySelector('.e-headercelldiv');\n var dropCol = dropEle ? this.parent.getColumnByUid(dropEle.getAttribute('data-uid')) : null;\n var col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n var fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n var mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col) {\n if (left && !right && this.parent.getNormalizedColumnIndex(col.uid) >= left\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n if (!left && right && dropCol && dropCol.getFreezeTableName() !== col.getFreezeTableName()\n && (!isLeft && Math.round(cliRect.right) < fhdrWidth)) {\n return;\n }\n }\n }\n this.upArrow.style.top = cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = (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.isFrozenGrid() ? gObj.getMovableVirtualContent() : 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(gObj.getHeaderTable().querySelectorAll('.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 * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, AjaxAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof AjaxAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isAjaxAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isAjaxAdaptor(this.adaptor)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isAjaxAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isAjaxAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isAjaxAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isAjaxAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'AjaxAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isAjaxAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n ;\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isAjaxAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var topData = '';\n var leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, axis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null };\n var eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n };\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\nfunction leftCollideCheck(left, right) {\n var leftSide = false;\n var rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left >= ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topCollideCheck(top, bottom) {\n var topSide = false;\n var bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : document.documentElement.offsetWidth;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('vx-card',{staticClass:\"pb-3\",attrs:{\"title\":\"FAMS Quick Dispensing View\",\"refresh-content-action\":\"\",\"collapse-action\":\"\"},on:{\"refresh\":_vm.closeCardAnimationDemo}},[_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"From date\")]),_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-full\",attrs:{\"id\":\"FromDate\",\"placeholder\":\"From Date\",\"format\":\"yyyy-MM-dd\",\"name\":\"From Date\"},model:{value:(_vm.formData.fromDate),callback:function ($$v) {_vm.$set(_vm.formData, \"fromDate\", $$v)},expression:\"formData.fromDate\"}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.has('From Date')),expression:\"errors.has('From Date')\"}],staticClass:\"text-danger text-sm\"},[_vm._v(_vm._s(_vm.errors.first('From Date')))])],1),_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"To date\")]),_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-full\",attrs:{\"id\":\"ToDate\",\"placeholder\":\"To Date\",\"format\":\"yyyy-MM-dd\",\"name\":\"To Date\"},model:{value:(_vm.formData.toDate),callback:function ($$v) {_vm.$set(_vm.formData, \"toDate\", $$v)},expression:\"formData.toDate\"}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.has('To Date')),expression:\"errors.has('To Date')\"}],staticClass:\"text-danger text-sm\"},[_vm._v(_vm._s(_vm.errors.first('To Date')))])],1)]),_c('br'),_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-full\",attrs:{\"placeholder\":\"Search / Select report\",\"options\":_vm.reportDropdown,\"name\":\"Report\"},on:{\"search:blur\":_vm.populateData},model:{value:(_vm.report),callback:function ($$v) {_vm.report=$$v},expression:\"report\"}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.has('Report')),expression:\"errors.has('Report')\"}],staticClass:\"text-danger text-sm\"},[_vm._v(_vm._s(_vm.errors.first('Report')))])],1),_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('vs-button',{ref:\"submit\",staticClass:\"rounded-lg w-full vs-con-loading__container\",attrs:{\"id\":\"addInfo\",\"color\":\"primary\"},on:{\"click\":_vm.loadFamsInformation}},[_vm._v(\"Submit\")])],1)]),_c('div',{ref:\"fgrid\",staticClass:\"vs-con-loading__container\",attrs:{\"id\":\"QDPGrid\"}},[_c('div',{attrs:{\"id\":\"Grid\"}})])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\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!./QuickDispense.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!./QuickDispense.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./QuickDispense.vue?vue&type=template&id=e7515836\"\nimport script from \"./QuickDispense.vue?vue&type=script&lang=js\"\nexport * from \"./QuickDispense.vue?vue&type=script&lang=js\"\nimport style0 from \"./QuickDispense.vue?vue&type=style&index=0&id=e7515836&prod&lang=scss\"\nimport style1 from \"./QuickDispense.vue?vue&type=style&index=1&id=e7515836&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","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n (positionY + positionX === 'topright') ? popupRect = undefined : popupRect = targetValues;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\nfunction setPosx(value, pos) {\n pos.left = value;\n}\nfunction setPosy(value, pos) {\n pos.top = value;\n}\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect ? popupRect.width : 0);\n}\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\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})();\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.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 }\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 var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var r = _a[_i];\n if (r.index === row.index) {\n _this[count] = row;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(row);\n }\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","import { CompressedStreamWriter } from './compression-writer';\nimport { Save } from '@syncfusion/ej2-file-utils';\nvar CRC32TABLE = [];\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, \"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 /**\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 return ZipArchive;\n}());\nexport { ZipArchive };\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, \"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","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';\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 += '\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\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) {\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 CsvHelper.prototype.saveAsBlob = function () {\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 += '' + 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 += '' + 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 //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.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 }\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.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.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 Workbook.prototype.saveAsBlob = function (blobSaveType) {\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();\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 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 }\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].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 (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 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.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 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 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 /* 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","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend, isBlazor } 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';\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 * @hidden\n */\n function ExcelExport(parent, locator) {\n /* tslint:disable-next-line:no-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.isElementIdChanged = false;\n this.foreignKeyData = {};\n this.gridPool = {};\n this.sheet = {};\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 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 * @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 {isCsv} isCsv - true if export to CSV.\n * @return {Promise}\n */\n /* tslint:disable-next-line:max-line-length */\n /* tslint:disable-next-line:no-any */\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 csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!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\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[cancel]) {\n return new Promise(function (resolve, reject) {\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 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 } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n this.sheet.images = [];\n };\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n if (!(exportProperties.dataSource instanceof DataManager)) {\n exportProperties.dataSource = new DataManager(exportProperties.dataSource);\n }\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, reject) {\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, reject) {\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 /* tslint:disable-next-line:max-func-body-length */\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n /* tslint:disable-next-line:no-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 /* tslint:disable-next-line:max-line-length */\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 }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\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.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 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 /* tslint:disable-next-line:no-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 autoFilters = {\n row: colDepth, 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 (isBlazor() && gObj.isServerRendered) {\n _this.book.isServerRendered = gObj.isServerRendered;\n }\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n /* tslint:disable-next-line:max-line-length */\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, 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, gObj.currencyCode);\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[i];\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 var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj);\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, exportProperties.dataSource, excelRows, helper);\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\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 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)) {\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 /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processGroupedRows = function (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 /* tslint:disable-next-line:no-any */\n var cell = {};\n cell.index = index + level;\n var col = gObj.getColumnByField(item.field);\n /* tslint:disable-next-line:no-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' };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, dataSource.level + dataSource.childLevels, 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 /* tslint:disable-next-line:no-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) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level), true);\n }\n }\n };\n /* tslint:disable-next-line:max-func-body-length */\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[c];\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 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 /* tslint:disable-next-line:no-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 if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n /* tslint:disable-next-line:no-any */\n var excelImage = {\n image: excelCellArgs.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n templateRowHeight = excelCellArgs.image.height || 50;\n this.columns[idx - 1].width = excelCellArgs.image.width || this.columns[idx - 1].width;\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[styleIndex], 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 /* tslint:disable-next-line:no-any */\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength < 8 && level > 0) {\n excelRow.grouping = { outlineLevel: level, isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\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 gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\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[i].grouping = { outlineLevel: intent + childGridObj.childGridLevel,\n 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 // tslint:disable-next-line:max-line-length\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 excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n // tslint:disable-next-line:max-line-length\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 /* tslint:disable-next-line:no-any */\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\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(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(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 };\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 if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\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 (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) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return 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[index] !== 'name') {\n result[attrname[index]] = JSON1[attrname[index]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON2[attrname[index]];\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.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 row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n /* tslint:disable-next-line:no-any */\n var style = {};\n var cell = {};\n var gridCell = gridRows[row].cells[column];\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 cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n excelRows.push({ index: this.rowLength++, cells: cells });\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\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[row];\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[cellId];\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[row];\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.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = 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') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n /**\n * To destroy the excel export\n * @return {void}\n * @hidden\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';\n/**\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 * @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.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\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`](grid/#printmode-string/).\n * @return {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\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 };\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 document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[i] = extend({}, printGrid.columns[i]);\n printGrid.columns[i].freeze = undefined;\n }\n }\n /* tslint:disable-next-line:no-any */\n if (this.parent.isAngular) {\n /* tslint:disable-next-line:no-any */\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n /* tslint:disable:no-empty */\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.appendTo(element);\n printGrid.trigger = gObj.trigger;\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('.e-content');\n var headerDiv = gObj.element.querySelector('.e-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.querySelectorAll('.e-content')); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = gObj.element.querySelectorAll('.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 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 = 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(id + \"captioncell.e-groupcaption\", element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[i].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colGroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, 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[i].children[j].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\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 * @return {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.actionBegin.bind(this));\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 * @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","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\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 if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\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 if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\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 instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @return {any}\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n * @param {Function} handler - callback function to be triggered.\n * @return {Function}\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @return {any}\n * @private\n */\nexport function getValue(nameSpace, obj) {\n /* tslint:disable no-any */\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} params - String value to the get the inner object\n * @return {void}\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n * @param {any} obj - Object which is need to check.\n * @return {boolean}\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @return {any}\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @return {void}\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @return {Object}\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!arguments_1[i]) {\n return \"continue\";\n }\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, deep);\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n * @param {Object} value - To check the object is null or undefined\n * @return {boolean}\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n * @param {Object} value - To check the object is undefined\n * @return {boolean}\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n * @param {string} definedName - To concatenate the unique id to provided name\n * @return {string}\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @return {Function}\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n // tslint:disable-next-line\n return function () {\n var _this = this;\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n// Added since lint ignored after added '//tslint:disable-next-line' \n/* tslint:disable:no-any */\n/**\n * To convert the object to string for query url\n * @param {Object} data\n * @returns string\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n * @param {T[]} value- Specifies the T type array to be checked.\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n * @param{Element} - Specifies the child element to compare with parent.\n * @param{Element} - Specifies the parent element.\n * @return boolean\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n * @param{string} - Specifies the error message to be thrown.\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n * @param{Element} element - Specifies the print content element.\n * @param{Window} printWindow - Specifies the print window.\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar latnRegex = /^[0-9]*$/;\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n var charKey = datePartMatcher[char];\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar number = 'numbers';\nvar defNoSystem = 'defaultNumberingSystem';\nvar noSystem = 'numberingSystem';\nvar standalone = 'stand-alone';\nvar curWeekDay = 'curWeekDay';\nvar latnRegex = /^[0-9]*$/;\nvar abbreviateRegex = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|ccc/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // tslint:disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n var iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n var nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var result;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n/* tslint:enable */\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar formatRegex = /(^[ncpa]{1})([0-1]?[0-9]|20)?$/i;\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar latnDecimalRegex = /^[0-9]*(\\.[0-9]+)?$/;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // tslint:disable-next-line:no-any\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n */\n Observer.prototype.notExist = function (prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(this.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n Browser.getEvent = function (event) {\n // tslint:disable-next-line:no-any\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer && !Browser.isWindows ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n }\n else {\n return [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n var fn = null;\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nexport function compile(template, helper) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper);\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\"; return str;\";\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, true);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + 'var ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /\\@|\\$|\\#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, emptyStrCheck) {\n /* istanbul ignore next */\n if (emptyStrCheck && str === '') {\n return str;\n }\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n var double = \"\\\\\\\\\";\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, emptyStrCheck) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, emptyStrCheck);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\\\s]+))?)*)\\s*(\\/?)>/;\nvar endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nvar attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nexport var VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n var children = [];\n var extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n var keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n var valArr = extended.styles.split(';');\n var vObj = {};\n for (var i = 0, length_1 = valArr.length; i < length_1; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach(function (child) {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (var i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n var parent = element.parent;\n if (parent) {\n var index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector(_a) {\n var ele = _a.ele, selector = _a.selector, selectAll = _a.selectAll, immediateParent = _a.immediateParent;\n var iSelector = selector.split(' ');\n var curColl = ele;\n for (var i = 0, length_2 = iSelector.length; i < length_2; i++) {\n var isDescendant = false;\n var parent_2 = curColl;\n var curSelector = iSelector[i];\n var simpleSelector = false;\n var mapper = [];\n if (simpleRegex.test(curSelector)) {\n simpleSelector = true;\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n var splitSelector = curSelector.match(multipleSplitRegex);\n for (var _i = 0, splitSelector_1 = splitSelector; _i < splitSelector_1.length; _i++) {\n var curMap = splitSelector_1[_i];\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n var dSelector = curSelector.split('>');\n //tslint:disable-next-line\n var dParent = ele;\n var descendent = void 0;\n var flag = 0;\n for (var _b = 0, dSelector_1 = dSelector; _b < dSelector_1.length; _b++) {\n var sel = dSelector_1[_b];\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n var descendentChild = [];\n for (var _c = 0, dParent_1 = dParent; _c < dParent_1.length; _c++) {\n var child = dParent_1[_c];\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll: selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll: selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent_2.length) {\n var iCurSelector = [];\n for (var _d = 0, parent_1 = parent_2; _d < parent_1.length; _d++) {\n var curParent = parent_1[_d];\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent_2, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n var match = selector.match(idClassSelector);\n var obj = {};\n if (match) {\n var curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n var curObj = mapper.filter(function (obj) { return obj.hasOwnProperty('className'); })[0];\n var canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n var existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n var temp_1 = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n var matched = true;\n for (var _i = 0, mapper_1 = mapper; _i < mapper_1.length; _i++) {\n var map = mapper_1[_i];\n var key = Object.keys(map)[0];\n var expected = map[key];\n var actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp_1.length || selectAll)) {\n ele.children.forEach(function (child) {\n if (isObject(child)) {\n temp_1 = temp_1.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp_1;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n var results = [];\n var isText;\n var tagArray = [];\n var backup = htmlString;\n var nodeArray = [];\n while (htmlString) {\n isText = true;\n var lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), function (all, text) {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n backup = htmlString;\n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n var isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n var attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n //tslint:disable-next-line\n var val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n var valArr = val.split(';');\n var vObj = {};\n for (var i = 0, length_3 = valArr.length; i < length_3; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n var tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n var parent_3 = (nodeArray[0] || results);\n if (parent_3.children === undefined) {\n parent_3.children = [];\n }\n tagObject.parent = parent_3;\n parent_3.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n var pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (var j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n var node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n var parent_4 = nodeArray[0];\n if (parent_4.children === undefined) {\n parent_4.children = [];\n }\n node.parent = parent_4;\n parent_4.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n var parent_5 = nodeArray[0];\n if (parent_5.children === undefined) {\n parent_5.children = [];\n }\n parent_5.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n if (ele) {\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // tslint:disable-next-line:no-any\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n var marginTop = parseFloat(styles.marginTop);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += this.element.offsetTop;\n if (dTop < 0) {\n if ((this.element.offsetTop + dTop) >= 0) {\n draEleTop = this.element.offsetTop + dTop;\n }\n else {\n draEleTop -= this.element.offsetTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (!this.clone) {\n this.getScrollableValues();\n pageY -= this.tempScrollHeight ? this.parentScrollY : 0;\n pageX -= this.tempScrollWidth ? this.parentScrollY : 0;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n * @param {HTMLElement} element\n * @param {KeyboardEventsModel} options\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n * @return {void}\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n * @param newProp\n * @param oldProp\n * @returns {void}\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n ;\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n * @param {string} config - configuration data\n * returns {KeyData}\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string \n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n * @param {string} locale\n * @returns {void}\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n * @param {string} propertyName - specifies the property for which localize text to be returned.\n * @return string\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n * @param {Object} curObject\n * @param {string} locale\n * @returns {Object}\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n // tslint:disable-next-line:no-any\n var isFirefox = (/Mozilla|Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // tslint:disable-next-line:no-any\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n // tslint:disable-next-line:max-line-length\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n ;\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue;\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","/**\n * index\n */\nexport * from './src/index';\n","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\n/**\n * RowRenderer class which responsible for building row content.\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 /**\n * Function to render the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /**\n * Function to refresh the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\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 node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\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 attrCopy = extend({}, attributes, {});\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 if (row.isDataRow) {\n row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {\n this.parent.getSelectedRowIndexes().push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, attrCopy);\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || 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[i].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_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || 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 var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = tr.querySelectorAll('.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.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 /**\n * Function to check and add alternative row css class.\n * @param {Element} tr\n * @param {{[x:string]:Object}} attr\n */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push('e-row');\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\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, isBlazor } 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 * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\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 for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], 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 var isServerRendered = 'isServerRendered';\n options.uid = isBlazor() && this.parent[isServerRendered] ? this.parent.getRowUid('grid-row') : 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[index]) {\n options.isExpand = this.parent.expandedRows[index].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 if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization && this.parent.selectionModule.checkBoxState) {\n options.isSelected = this.parent.selectionModule.checkBoxState;\n if (options.isSelected && this.parent.selectionModule.selectedRowIndexes.indexOf(index) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(index);\n }\n }\n else {\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n }\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = isBlazor() ? new Row(options) :\n 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[i].field, getForeignData(foreignKeyColumns[i], 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[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\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[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * Defines types of Cell\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 * @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 * @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 * @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})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\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","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n * @private\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n * @private\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n * @private\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label', innerHTML: options.label });\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n * @private\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\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, Event, append, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove, updateBlazorTemplate, resetBlazorTemplate } 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 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 /**\n * Constructor for creating the Tooltip Component\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isBlazorTooltip = false;\n _this.contentTargetValue = null;\n _this.contentEvent = null;\n _this.contentAnimation = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT);\n }\n };\n Tooltip.prototype.isServerRender = function () {\n return isBlazor() && this.isServerRendered;\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 if (!(this.isServerRender())) {\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 else {\n var tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\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.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\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 };\n Tooltip.prototype.closePopupHandler = function () {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\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 = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\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 if (this.showTipPointer === false) {\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 arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\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 {\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 = this.tooltipEle.querySelector('.' + CONTENT);\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 if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent[this.enableHtmlParse ? 'innerHTML' : 'textContent'] = this.content;\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 if (typeof this.content === 'string' && this.content.indexOf('
Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\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 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(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\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.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\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 var isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n var args = { 'enableTooltip': 'true' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n isBlazorTooltipRendered = true;\n }\n else {\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.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\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.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n };\n ;\n Tooltip.prototype.contentUpdated = function (args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n };\n ;\n Tooltip.prototype.beforeRenderBlazor = 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 if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\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.afterRenderBlazor = 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.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.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 }\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 // tslint:disable-next-line:no-any\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\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.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 (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (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 = left;\n return eleOffset;\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 = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\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 if (_this.isServerRender()) {\n _this.blazorHide(hideAnimation, target);\n }\n else {\n _this.popupHide(hideAnimation, target);\n }\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n /* istanbul ignore next */\n Tooltip.prototype.blazorHide = function (hideAnimation, target) {\n var proxy = this;\n var hide = function () {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.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 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.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n var args = { 'enableTooltip': 'false' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n remove(this.tooltipEle);\n }\n else 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 pos = this.calculateTooltipOffset(this.position);\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);\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) {\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 * @private\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 * @private\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 * @hidden\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 if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, 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(this.element.querySelectorAll(this.target));\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, 'focus', 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 === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\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 * @hidden\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 if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\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, 'focus', 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 }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\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 = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n };\n /**\n * Core method to return the component name.\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n * @private\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 if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n var args = { 'content': newProp.content };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\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 = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\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 }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n * @param element Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param animation Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @return {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 * @param animation Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @return {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 * @param target Target element where the Tooltip content or position needs to be refreshed.\n * @return {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 };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @return {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n if (!this.isServerRender()) {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n var placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\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 };\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()\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 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","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove, isBlazor } 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 } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\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 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.querySelectorAll('.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 result = void 0;\n var colIndex = gObj.getColumnIndexByField(col.field);\n result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\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 if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\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.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\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 HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.e-gridheader');\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.e-headercontent') :\n this.parent.createElement('div', { className: 'e-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 table\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.e-table'));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n * @param {Element} panel\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n * @param {Element} table\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n * @return {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 * @return {Element}\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n if (!skipDom) {\n innerDiv.appendChild(table);\n }\n return innerDiv;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (!(isBlazor() && !gObj.isJsComponent) && this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var columns = gObj.getColumns();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n var table = skipDom ? tableEle || innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement('tbody', { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement('colgroup');\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, this.parent);\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n var cell = rows[i].cells[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 if (!skipDom) {\n tbody.appendChild(rowBody);\n }\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n if (!skipDom) {\n table.appendChild(tbody);\n }\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\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 index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\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[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === 'Left-Right' && colFreezeMode === 'frozen-right')) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === 'frozen-left') {\n rows[0].cells[0].column.freeze = colFreezeMode === 'frozen-left' ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === 'frozen-right') {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\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 if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + '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[i].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[i].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[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var column;\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[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\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[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\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 var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\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[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\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[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n count++;\n }\n }\n return count;\n };\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 * @param {Column[]} columns?\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = [].slice.call(this.getRows()); //NodeList -> Array \n var displayVal;\n var idx;\n var className;\n var element;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(this.getTable().querySelector('colgroup').children[idx], { 'display': displayVal });\n setStyleAttribute(this.getTable().querySelectorAll('th')[idx], { 'display': displayVal });\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup');\n var mTbl = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('table');\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(mTbl.querySelectorAll('th')[idx - frzCols], { 'display': displayVal });\n }\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n if (isBlazor() && this.parent.isServerRendered && this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.freezeReorder = true;\n }\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var setFrozenTable = isBlazor() && this.parent.isServerRendered && this.parent.frozenRows !== 0 && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table')\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (setFrozenTable && !isVFTable) {\n table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table') :\n this.headerPanel.querySelector('.e-frozenheader').querySelector('.e-table');\n }\n if (table) {\n if (isBlazor() && this.parent.isServerRendered) {\n table.removeChild(table.querySelector('colgroup'));\n table.removeChild(table.querySelector('thead'));\n }\n else {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n }\n var colGroup = this.parent.createElement('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 if (!isVFTable && !setFrozenTable) {\n this.setTable(table);\n }\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.appendContent(table);\n }\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\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.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, 'e-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 };\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('.e-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[i], 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 };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar && (gObj.allowSorting || gObj.allowFiltering)) {\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 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('.e-gridheader'));\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, isBlazor } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } 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 * @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: { role: 'columnheader', tabindex: '-1' } });\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' });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\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 * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\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' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Cell} cell\n * @param {Element} node\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' });\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 //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()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\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 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[count].field === column.field || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[count].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 (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\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 = isBlazor() ? column.toJSON() : column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n if (isReactCompiler) {\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]);\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 if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\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' }));\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[j].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 * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns 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 } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\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 role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\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, 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 this.parent.trigger(headerCellInfo, { cell: cell, node: node });\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 * @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 * @param {Cell} cell\n * @param {Object} data\n */\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, isBlazor } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\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.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var result;\n var helper = {};\n var fKeyValue;\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 if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n if (isBlazor()) {\n var tempID = gObj.element.id + 'captionTemplate';\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, null, null, tempID);\n }\n else {\n if (isReactCompiler) {\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 }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node.innerHTML = cell.column.headerText + ': ' + value;\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\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 * @param {Cell} cell\n * @param {Object} data\n */\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';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\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 * @param {Cell} cell\n * @param {Object} data\n * @param {{ [x: string]: string }} attr\n * @param {boolean} isExpand\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\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 node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\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 * @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 * @param {Cell} cell\n * @param {Object} data\n */\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 * @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 * @param {Cell} cell\n * @param {Object} data\n */\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 * @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', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\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('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\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';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\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',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\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 }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\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';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\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 * @param {Cell} cell\n * @param {Object} data\n */\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, updateBlazorTemplate, blazorTemplates, isBlazor } 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 } 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';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\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 Render.prototype.render = function () {\n var gObj = this.parent;\n var isServerRendered = 'isServerRendered';\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 if (!(isBlazor() && this.parent[isServerRendered])) {\n this.refreshDataManager();\n }\n };\n /**\n * Refresh the entire Grid.\n * @return {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 var preventUpdate = 'preventUpdate';\n gObj.notify(e.requestType + \"-begin\", e);\n if (isBlazor()) {\n this.resetTemplates();\n }\n if (isBlazor() && gObj.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].dataSource) {\n delete gObj[bulkChanges].dataSource;\n }\n gObj.notify('blazor-action-begin', e);\n if (e.requestType === 'filtering') {\n var columns = 'columns';\n e[columns] = null;\n }\n if (e.requestType === 'sorting') {\n var target = 'target';\n e[target] = null;\n }\n if (gObj.editSettings.mode === 'Batch' && !gObj.isEdit) {\n gObj.notify('closebatch', {});\n }\n }\n var tempPreventUpdate = this.parent[preventUpdate];\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.requestType === 'delete' && isBlazor() && !gObj.isJsComponent) {\n var data = 'data';\n if (isNullOrUndefined(gObj.commandDelIndex)) {\n args[data] = gObj.getSelectedRecords();\n }\n else {\n var tempSelectedRecord = args[data];\n args[data] = {};\n args[data][0] = tempSelectedRecord;\n }\n }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (isBlazor() && gObj.editSettings.mode === 'Normal' && gObj.isEdit && e.requestType !== 'infiniteScroll') {\n gObj.notify('closeinline', {});\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 if (!(currentViewData - dataLength) && count && currentViewData !== 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 (isBlazor() && _this.parent.isServerRendered) {\n if (tempPreventUpdate) {\n var bulkChanges = 'bulkChanges';\n gObj[bulkChanges] = {};\n return;\n }\n if (e.requestType === 'refresh') {\n _this.parent.notify('updateaction', args);\n }\n if (args.requestType !== 'virtualscroll') {\n _this.parent.showSpinner();\n }\n if (args.requestType === 'delete' || args.requestType === 'save') {\n _this.parent.notify(events.addDeleteAction, args);\n _this.parent.notify('add-delete-success', args);\n }\n else {\n _this.parent.allowServerDataBinding = true;\n _this.parent.serverDataBind();\n _this.parent.allowServerDataBinding = false;\n }\n }\n else 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.contentModule.getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\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[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].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[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n * @return {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\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('.e-content'), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\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 promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n if (isBlazor() && !this.parent.isJsComponent) {\n promise.then(function (e) {\n _this.parent.notify('editsuccess', args);\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n }\n else {\n var query_1 = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n promise.then(function (e) {\n _this.data.getData(args, query_1)\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 };\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 * @return {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('tbody');\n var tr;\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement('tbody');\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getColumns().length + spanCount).toString() }\n }));\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[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type || (isBlazor() && this.parent.isServerRendered && columns[i].type === 'none')) {\n columns[i].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[i].type = columns[i].type || (isBlazor() && this.parent.isServerRendered ? 'none' : null);\n }\n var valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || columns[i].format.format)) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n var isServerRendered = 'isServerRendered';\n var isServerDateMap = this.parent[isServerRendered] || this.parent.printModule.isPrintGrid();\n setFormatter(this.locator, columns[i], isServerDateMap);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /** @hidden */\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 && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\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 _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (isBlazor() && gObj.filterSettings.type === 'FilterBar'\n && (isNullOrUndefined(gObj.currentViewData) ||\n (!isNullOrUndefined(gObj.currentViewData) && !gObj.currentViewData.length))) {\n var gridColumns = gObj.getColumns();\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].filterTemplate) {\n var tempID = gObj.element.id + gridColumns[i].uid + 'filterTemplate';\n resetBlazorTemplate(tempID, 'FilterTemplate');\n var fieldName = gridColumns[i].field;\n var filteredColumns = gObj.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName === filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(tempID, 'FilterTemplate', gridColumns[i], false);\n }\n }\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 _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && 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 _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 (!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('.e-content'), false);\n _this.renderEmptyRow();\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 = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n });\n };\n /** @hidden */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.e-content'), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n var gObj = this.parent;\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\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 if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\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[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\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[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].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 /** @hidden */\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[index];\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[i].field).and(_this.getPredicate('key', 'equal', groups[i].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() || isBlazor()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].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[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n var itemGroup = elements[i].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[l] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n elements[i].aggregates[key] = row.columns[k].customAggregate ?\n row.columns[k].customAggregate\n .call(context, data_1, row.columns[k]) : '';\n }\n else {\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].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 * @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 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 { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog } 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 /**\n * Constructor for Grid Responsive dialog renderer\n * @hidden\n */\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.parent.on(events.filterDialogClose, this.closeCustomDialog, this);\n this.parent.on(events.setCustomFilterHeader, this.setCustomFilterHeader, this);\n this.parent.on(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn, this);\n this.parent.on(events.renderResponsiveCmenu, this.renderResponsiveContextMenu, this);\n this.parent.on(events.filterCmenuSelect, this.renderCustomFilterDiv, this);\n this.parent.on(events.customFilterClose, this.customExFilterClose, this);\n this.parent.on(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn, 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: '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 });\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 };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n if (this.action === ResponsiveDialogAction.isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[i].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[i].field);\n cDiv.setAttribute('data-e-mappinguid', cols[i].uid);\n var span = gObj.createElement('span', { innerHTML: cols[i].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (this.action === ResponsiveDialogAction.isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[i].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[i].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n button.innerHTML = index > -1 ? this.parent.sortSettings.columns[index].direction : 'None';\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (this.action === ResponsiveDialogAction.isFilter && filteredCols.indexOf(cols[i].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[i].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, '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[i][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 direction = txt === 'None' ? 'Ascending' : txt === 'Ascending' ? 'Descending' : 'None';\n target.innerHTML = direction;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.querySelectorAll('.e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i] !== target) {\n buttons[i].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[i]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\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 * To show the responsive custom filter dialog\n * @return {void}\n * @hidden\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\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 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) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter', className: 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n this.customFilterDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\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),\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 });\n var isStringTemplate = 'isStringTemplate';\n options[isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader();\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 var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id, className: '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[i].field);\n var sortField = this.parent.sortSettings.columns[i].field;\n var sortDirection = this.parent.sortSettings.columns[i].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 }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\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[i].field, this.sortPredicate[i].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) {\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 = gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\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 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 text = 'OKButton';\n }\n return text;\n };\n /** @hidden */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (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);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n 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 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: '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.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 }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\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.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[i].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setCustomFilterHeader = function (args) {\n if (this.parent.rowRenderingMode !== 'Vertical') {\n return;\n }\n var header = this.customResponsiveDlg.element.querySelector('.e-reslabel');\n if (header && header.firstElementChild) {\n header.firstElementChild.innerHTML = args.title;\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, 'click', this.customFilterColumnClickHandler);\n }\n this.parent.off(events.filterDialogClose, this.closeCustomDialog);\n this.parent.off(events.setCustomFilterHeader, this.setCustomFilterHeader);\n this.parent.off(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn);\n this.parent.off(events.renderResponsiveCmenu, this.renderResponsiveContextMenu);\n this.parent.off(events.filterCmenuSelect, this.renderCustomFilterDiv);\n this.parent.off(events.customFilterClose, this.customExFilterClose);\n this.parent.off(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\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 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 * @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 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 return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive } 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 * @hidden\n */\n function ShowHide(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\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 * @return {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[i].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\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 * @return {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[i].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, index) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item, index) {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n /**\n * Shows or hides columns by given column collection.\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @return {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns :\n isBlazor() ? (JSON.parse(JSON.stringify(columns))) : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\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 _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 };\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 * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\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 * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\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, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\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 * @hidden\n */\n function Clipboard(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\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 EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\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 EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\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 if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.e-rowcell');\n if (!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 this.clipBoardTextArea.value = '';\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, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\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 */\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 if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || 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 (isFrozen) {\n var fTr = dataRows[rIdx];\n var mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[rIdx];\n isAvail = frTr.querySelector('[aria-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\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 };\n Clipboard.prototype.initialEnd = function () {\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': '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 var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\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[i] = this.parent.getVisibleColumns()[i].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 cells = [].slice.call(rows[selectedIndexes[i]].\n querySelectorAll('.e-rowcell:not(.e-hide)'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n this.getCopyData(cells, 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 headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\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[i]].\n querySelectorAll('.e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.querySelectorAll('.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 this.copyContent += this.parent.getColumns()[parseInt(cells[j].getAttribute('aria-colindex'), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n if (isBlazor()) {\n if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-check')).length) {\n this.copyContent += true;\n }\n else if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-uncheck')).length) {\n this.copyContent += false;\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n }\n else {\n this.copyContent += cells[j];\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 * @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')) {\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 * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n * @return {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 isBox = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { Observer, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { AriaService } from '../services/aria-service';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport { DataUtil } from '@syncfusion/ej2-data';\nexport var gridObserver = new Observer();\n/**\n * BlazorAction is used for performing Blazor related Grid Actions.\n * @hidden\n */\nvar BlazorAction = /** @class */ (function () {\n function BlazorAction(parent) {\n this.aria = new AriaService();\n this.actionArgs = {};\n this.virtualHeight = 0;\n this.parent = parent;\n this.addEventListener();\n }\n BlazorAction.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('detailclick', this.onDetailRowClick, this);\n this.parent.on('add-delete-success', this.addDeleteSuccess, this);\n this.parent.on('editsuccess', this.editSuccess, this);\n this.parent.on('setvisibility', this.setColumnVisibility, this);\n this.parent.on('offset', this.setServerOffSet, this);\n this.parent.on('updateaction', this.modelChanged, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on('group-expand-collapse', this.onGroupClick, this);\n this.parent.on('setcolumnstyles', this.setColVTableWidthAndTranslate, this);\n this.parent.on('refresh-virtual-indices', this.invokeServerDataBind, this);\n this.parent.on('contentcolgroup', this.contentColGroup, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n };\n BlazorAction.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('detailclick', this.onDetailRowClick);\n this.parent.off('add-delete-success', this.addDeleteSuccess);\n this.parent.off('editsuccess', this.editSuccess);\n this.parent.off('setvisibility', this.setColumnVisibility);\n this.parent.off('offset', this.setServerOffSet);\n this.parent.off('updateaction', this.modelChanged);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off('group-expand-collapse', this.onGroupClick);\n this.parent.off('setcolumnstyles', this.setColVTableWidthAndTranslate);\n this.parent.off('refresh-virtual-indices', this.invokeServerDataBind);\n this.parent.off('contentcolgroup', this.contentColGroup);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n };\n BlazorAction.prototype.getModuleName = function () { return 'blazor'; };\n ;\n BlazorAction.prototype.modelChanged = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n };\n BlazorAction.prototype.addDeleteSuccess = function (args) {\n var _this = this;\n var editArgs;\n var action = 'action';\n var data = 'data';\n var index = 'index';\n editArgs = {\n requestType: args.requestType,\n data: args[data],\n action: args[action]\n };\n if (!isNullOrUndefined(args[index])) {\n editArgs[index] = args[index];\n }\n args.promise.then(function (e) { return _this.editSuccess(editArgs); }).catch(function (e) {\n if (isBlazor() && _this.parent.isServerRendered) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n _this.parent.trigger(events.actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n _this.parent.hideSpinner();\n _this.parent.log('actionfailure', { error: e });\n });\n };\n BlazorAction.prototype.editSuccess = function (args) {\n this.parent.renderModule.resetTemplates();\n this.invokeServerDataBind(args);\n };\n BlazorAction.prototype.invokeServerDataBind = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n };\n BlazorAction.prototype.onDetailRowClick = function (target) {\n var gObj = this.parent;\n var adaptor = 'interopAdaptor';\n var rIndex = 'rowIndex';\n var invokeMethodAsync = 'invokeMethodAsync';\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var args = {\n uid: uid, classList: target.classList[0], index: tr.getAttribute('aria-rowindex'),\n rowIndex: gObj.getRowsObject().indexOf(rowObj), colSpan: this.parent.getVisibleColumns().length\n };\n gObj[adaptor][invokeMethodAsync]('OnDetailClick', args);\n if (target.classList.contains('e-detailrowcollapse')) {\n var rows = gObj.getRowsObject();\n var rowData = rowObj.data;\n var gridRowId = this.parent.getRowUid('grid-row');\n var len = gObj.groupSettings.columns.length;\n var gridRow = new Row({\n isDataRow: true,\n isExpand: true,\n uid: gridRowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0; i < len; i++) {\n gridRow.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n rows.splice(args[rIndex] + 1, 0, gridRow);\n gObj.trigger(events.detailDataBound, { data: rowData });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = true;\n this.aria.setExpand(target, true);\n }\n else {\n gObj.getRowsObject().splice(args[rIndex] + 1, 1);\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n BlazorAction.prototype.setColumnVisibility = function (columns) {\n var visible = {};\n var adaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n for (var i = 0; i < columns.length; i++) {\n visible[columns[i].uid] = columns[i].visible;\n }\n this.parent[adaptor][invokeMethodAsync]('setColumnVisibility', { visible: visible });\n };\n BlazorAction.prototype.dataSuccess = function (args) {\n if (this.parent.enableVirtualization && Object.keys(this.actionArgs).length === 0) {\n this.actionArgs.requestType = 'virtualscroll';\n }\n var startIndex = 'startIndex';\n var endIndex = 'endIndex';\n this.actionArgs[startIndex] = args[startIndex];\n this.actionArgs[endIndex] = args[endIndex];\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n if (this.virtualContentModule.activeKey === 'downArrow' || this.virtualContentModule.activeKey === 'upArrow') {\n var row = this.parent.getRowByIndex(this.virtualContentModule.blzRowIndex);\n if (row) {\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n // tslint:disable-next-line:no-any\n row.cells[0].focus({ preventScroll: true });\n }\n }\n this.virtualContentModule.blazorDataLoad = false;\n }\n if (args.foreignColumnsData) {\n var columns = this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (args.foreignColumnsData[columns[i].field]) {\n columns[i].columnData = args.foreignColumnsData[columns[i].field];\n }\n }\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n var agg = [];\n var aggRows = this.parent.aggregates;\n for (var i = 0; i < aggRows.length; i++) {\n var aggRow = aggRows[i];\n for (var j = 0; j < aggRow.columns.length; j++) {\n var aggr = {};\n var type = aggRow.columns[j].type.toString();\n aggr = { type: type.toLowerCase(), field: aggRow.columns[j].field };\n agg.push(aggr);\n }\n }\n var data = void 0;\n var aggrds = void 0;\n var groupedCols = this.parent.groupSettings.columns;\n for (var k = 0; k < groupedCols.length; k++) {\n aggrds = data ? data : args.result;\n data = DataUtil.group(aggrds, groupedCols[k], agg, null, null);\n }\n args.result = data ? data : args.result;\n }\n var rowUid = 'rowUid';\n var offsetTime = 'offsetTime';\n var off = 'offset';\n this.parent[rowUid] = args[rowUid];\n args[off] = Math.sign(args[off]) === 1 ? -Math.abs(args[off]) : Math.abs(args[off]);\n this.parent[offsetTime] = args[off];\n if (this.parent[offsetTime] !== new Date().getTimezoneOffset() / 60) {\n if (this.parent.editSettings.mode !== 'Batch') {\n var action = 'action';\n var rowIndex = 'rowIndex';\n var index = 'index';\n if (this.actionArgs[action] === 'edit') {\n this.setClientOffSet(args, this.actionArgs[rowIndex]);\n }\n else if (this.actionArgs[action] === 'add') {\n this.setClientOffSet(args, this.actionArgs[index]);\n }\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n var changes = 'changes';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var batchChanges = this.actionArgs[changes] || { changedRecords: [], addedRecords: [] };\n for (var i = 0; i < batchChanges[changedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[changedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[addedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n }\n }\n this.parent.renderModule.dataManagerSuccess(args, this.actionArgs);\n this.parent.getMediaColumns();\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n this.setColVTableWidthAndTranslate();\n if (this.parent.groupSettings.columns.length) {\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n }\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.removeDisplayNone = function () {\n var renderedContentRows = this.parent.getContentTable().querySelectorAll('tr');\n for (var i = 0; i < renderedContentRows.length; i++) {\n var renderedContentCells = renderedContentRows[i].querySelectorAll('td');\n for (var j = 0; j < renderedContentCells.length; j++) {\n renderedContentCells[j].style.display = '';\n }\n }\n };\n BlazorAction.prototype.setVirtualTrackHeight = function (args) {\n this.virtualHeight = args.VisibleGroupedRowsCount * this.parent.getRowHeight();\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n };\n BlazorAction.prototype.setColVTableWidthAndTranslate = function (args) {\n if (this.parent.enableColumnVirtualization && this.virtualContentModule.prevInfo &&\n (JSON.stringify(this.virtualContentModule.currentInfo.columnIndexes) !==\n JSON.stringify(this.virtualContentModule.prevInfo.columnIndexes)) || ((args && args.refresh))) {\n var translateX = this.virtualContentModule.getColumnOffset(this.virtualContentModule.startColIndex - 1);\n var width = this.virtualContentModule.getColumnOffset(this.virtualContentModule.endColIndex - 1) - translateX + '';\n this.virtualContentModule.header.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.header.virtualEle.adjustTable(translateX, 0);\n this.parent.getContentTable().parentElement.style.width = width + 'px';\n }\n if (this.dataSourceChanged) {\n this.virtualContentModule.getPanel().firstElementChild.scrollTop = 0;\n this.virtualContentModule.getPanel().firstElementChild.scrollLeft = 0;\n if (this.virtualContentModule.header.virtualEle) {\n this.virtualContentModule.header.virtualEle.adjustTable(0, 0);\n }\n this.parent.getContentTable().parentElement.style.transform = 'translate(0px,0px)';\n this.virtualContentModule.refreshOffsets();\n this.virtualContentModule.refreshVirtualElement();\n this.dataSourceChanged = false;\n }\n };\n BlazorAction.prototype.dataSourceModified = function () {\n this.dataSourceChanged = true;\n };\n BlazorAction.prototype.setClientOffSet = function (args, index) {\n var timeZone = DataUtil.serverTimezoneOffset;\n DataUtil.serverTimezoneOffset = 0;\n args.result[index] = DataUtil.parse.parseJson(JSON.stringify(args.result[index]));\n DataUtil.serverTimezoneOffset = timeZone;\n };\n BlazorAction.prototype.setServerOffSet = function (args) {\n var serverTimeZone = DataUtil.serverTimezoneOffset;\n var offsetTime = 'offsetTime';\n var data = 'data';\n var timeZone = new Date().getTimezoneOffset() / 60 * 2 + this.parent[offsetTime];\n DataUtil.serverTimezoneOffset = timeZone;\n args[data] = DataUtil.parse.parseJson(JSON.stringify(args[data]));\n DataUtil.serverTimezoneOffset = serverTimeZone;\n };\n BlazorAction.prototype.onGroupClick = function (args) {\n var _this = this;\n var adaptor = 'interopAdaptor';\n var content = 'contentModule';\n var invokeMethodAsync = 'invokeMethodAsync';\n var exactTopIndex = 'exactTopIndex';\n args[exactTopIndex] = Math.round((this.parent.element.querySelector('.e-content').scrollTop) / this.parent.getRowHeight());\n var rowHeight = 'rowHeight';\n args[rowHeight] = this.parent.getRowHeight();\n this.parent[adaptor][invokeMethodAsync]('OnGroupExpandClick', args).then(function () {\n _this.parent[content].rowElements = [].slice.call(_this.parent.getContentTable().querySelectorAll('tr.e-row[data-uid]'));\n });\n };\n BlazorAction.prototype.setPersistData = function (args) {\n var gObj = this.parent;\n gObj.mergePersistGridData(args);\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n gObj.notify('persist-data-changed', {});\n gObj.notify(events.columnVisibilityChanged, gObj.getColumns());\n };\n ;\n BlazorAction.prototype.resetPersistData = function (args) {\n var gObj = this.parent;\n var bulkChanges = 'bulkChanges';\n var parseArgs = JSON.parse(args);\n var persistArgs = { filterSettings: parseArgs.filterSettings,\n groupSettings: parseArgs.groupSettings, pageSettings: parseArgs.pageSettings, sortSettings: parseArgs.sortSettings,\n searchSettings: parseArgs.searchSettings, columns: parseArgs.columns };\n if (!persistArgs.sortSettings.columns) {\n persistArgs.sortSettings.columns = [];\n }\n if (!persistArgs.groupSettings.columns) {\n persistArgs.groupSettings.columns = [];\n }\n if (!persistArgs.pageSettings.currentPage) {\n gObj.pageSettings.currentPage = 1;\n }\n for (var i = 0; i < gObj.columns.length; i++) {\n if (gObj.groupSettings.columns.indexOf(gObj.columns[i].field) > -1) {\n gObj.columns[i].visible = true;\n }\n }\n gObj.mergePersistGridData(persistArgs);\n gObj.notify('persist-data-changed', {});\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n for (var i = 0; i < gObj.columns.length; i++) {\n gObj.columns[i].editType = gObj.columns[i].editType.toLowerCase();\n }\n gObj.setProperties({ filterSettings: { columns: [] } }, true);\n };\n BlazorAction.prototype.contentColGroup = function () {\n var gObj = this.parent;\n var contentTable = gObj.getContent().querySelector('.e-table');\n contentTable.insertBefore(contentTable.querySelector(\"#content-\" + gObj.element.id + \"colGroup\"), contentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var headerTable = gObj.getHeaderContent().querySelector('.e-table');\n headerTable.insertBefore(headerTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), headerTable.querySelector('tbody'));\n }\n if (gObj.getFrozenColumns() !== 0) {\n var movableContentTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('.e-table');\n movableContentTable.insertBefore(movableContentTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableContentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var movableHeaderTable = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('.e-table');\n movableHeaderTable.insertBefore(movableHeaderTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableHeaderTable.querySelector('tbody'));\n }\n }\n };\n BlazorAction.prototype.dataFailure = function (args) {\n this.parent.renderModule.dataManagerFailure(args, this.actionArgs);\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n return BlazorAction;\n}());\nexport { BlazorAction };\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, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getValue, isBlazor, blazorTemplates } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, updateBlazorTemplate, 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 } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\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 { gridObserver } from '../actions/blazor-action';\nimport { RowModelGenerator } from '../services/row-model-generator';\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 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()\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, \"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 * 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 * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n * @return {string}\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 var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource', 'headerText'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n this.pageSettings.template = undefined;\n /* tslint:disable-next-line:no-any */\n if (this.isAngular) {\n /* tslint:disable:no-string-literal */\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n * @return {ModuleDeclaration[]}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\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 if (isBlazor()) {\n modules.push({ member: 'blazor', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\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 /* tslint:disable */\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 if (isBlazor() && this.enableVirtualization && this.allowGrouping) {\n var isExpanded = 'isExpanded';\n this[isExpanded] = false;\n }\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'\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 SearchColumns: 'search columns',\n Matchs: 'No Matches Found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\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 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 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 FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser 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 };\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 /* tslint:enable */\n };\n /**\n * For internal use only - To Initialize the component rendering.\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 if (isBlazor()) {\n this.renderComplete();\n }\n createSpinner({ target: this.element }, 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 this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.getMediaColumns();\n setColumnIndex(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 this.showSpinner();\n this.notify(events.initialEnd, {});\n if (isBlazor() && this.isServerRendered) {\n gridObserver.notify(events.componentRendered, { id: this.element.id, grid: this });\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 Grid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually showed spinner needs to hide by `hideSpinnner`.\n */\n Grid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().querySelectorAll('.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[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\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[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\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[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\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('.e-gridfooter');\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (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 };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\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 * @method destroy\n * @return {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-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 (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\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[i]]) {\n this[modules[i]] = null;\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'none';\n }\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n if (this.isAngular && !this.isFreezeRefresh) {\n this.element = null;\n }\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n };\n /**\n * For internal use only - Get 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 /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\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 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 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 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 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 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 break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\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 '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 '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 break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\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 break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\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 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 if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\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 /* tslint:disable */\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) {\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 var pending_1 = this.getDataModule().getState();\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[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\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 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 }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\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 */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\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().querySelectorAll('.e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].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[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = 'frozen-left';\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = 'frozen-right';\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = 'frozen-left';\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = 'frozen-left';\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\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.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 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[i].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[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.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 if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\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 */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getVisibleColumns = 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) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Gets the header div of the Grid.\n * @return {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 * @param {Element} element - Specifies the Grid header.\n * @return {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n * @return {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 * @param {Element} element - Specifies the Grid content table.\n * @return {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n * @return {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 * @param {Element} element - Specifies the Grid content.\n * @return {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 * @return {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 * @param {Element} element - Specifies the Grid header table.\n * @return {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n * @return {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 * @param {Element} element - Specifies the Grid pager.\n * @return {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n * @return {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 * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n * @param {Element}\n * @return RowInfo\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, '.e-rowcell');\n if (!cell) {\n var row = closest(ele, '.e-row');\n if (!isNullOrUndefined(row)) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute('aria-colindex'), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.e-row');\n var rowIndex = parseInt(row_1.getAttribute('aria-rowindex'), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === 'frozen-left') {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === 'frozen-right') {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.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[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, 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 * @return {Element[]}\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n * @return {Element[]}\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector('tbody'))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody() : this.getContentTable().querySelector('tbody');\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody')\n : this.getHeaderTable().querySelector('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 * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\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[i].classList.contains('e-row') && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute(\"aria-rowindex\"))] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-movablecontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.e-frozencontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\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 * @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 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 fieldIdx;\n var col;\n var tr;\n var mTr;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var selectedRow = {};\n var movableSelectedRow = {};\n var rowObjects = this.contentModule.getRows();\n var movableRowObjects = this.contentModule.getMovableRows();\n fieldIdx = this.getColumnIndexByField(field);\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 col = this.getColumnByField(field);\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n movableSelectedRow = movableRowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n tr = !isNullOrUndefined(selectedRow) ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n mTr = !isNullOrUndefined(movableSelectedRow) ? this.element.querySelector('[data-uid=' + movableSelectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var td = !isNullOrUndefined(tr[cells][fieldIdx]) ?\n tr[cells][fieldIdx] : mTr[cells][fieldIdx - this.frozenColumns];\n if (!isNullOrUndefined(td)) {\n var sRow = selectedRow[cells][fieldIdx];\n var mRow = void 0;\n if (this.frozenColumns) {\n mRow = movableSelectedRow[cells][fieldIdx - this.frozenColumns];\n }\n cell.refreshTD(td, !isNullOrUndefined(sRow) ? sRow : mRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\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(movableSelectedRow) && !isNullOrUndefined(movableSelectedRow['changes'])) {\n movableSelectedRow['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 }\n }\n else {\n return;\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n //tslint:disable-next-line:no-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\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 * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rwdata = 'data';\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var selectedRow;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\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 /**\n * Gets a cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {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 * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().querySelectorAll('.e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().querySelectorAll('.e-headercell')[index];\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\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 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 return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n * @param {string} field - Specifies the column name.\n * @return {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 * @param {string} field - Specifies the column uid.\n * @return {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 * @blazorType GridColumn\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 * @param {string} field - Specifies the column name.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\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 * @param {string} field - Specifies the column name.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item, index) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\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 * @param {string} uid - Specifies the column UID.\n * @return {number}\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 * @param {string} field - Specifies the column name.\n * @return {string}\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets TH index by column uid value.\n * @private\n * @param {string} uid - Specifies the column uid.\n * @return {number}\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 * @private\n * @return {number}\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 * @return {string[]}\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()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n * @return {Function}\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n * @private\n * @return {Function}\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 * @return {string[]}\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n * @return {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 * @return {number[]}\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 * @return {number[]}\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\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 * @return {string[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n * @return {Data}\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\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 * @return {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 * @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 * @return {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 */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\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.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\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 };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n ;\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n ;\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n ;\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\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 * @return {Object}\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[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].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[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].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 * @param {number} pageNo - Defines the page number to navigate.\n * @return {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 * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\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 * @return {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 * Clears all the sorted columns of the Grid.\n * @return {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 * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\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 * @return {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 * @return {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 * @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 * @return {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 * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {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 * @param {number[]} rowIndexes - Specifies the row indexes.\n * @return {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 * @return {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 * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {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 * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {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 * @param {string} searchString - Defines the key.\n * @return {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 * @return {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 * @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 */\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 * @return {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 Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\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 * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\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 * @param {HTMLTableRowElement} tr - Defines the table row element.\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 * @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 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 * {% 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 * @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 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 * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\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 * @return {Object}\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 * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {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 * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = 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('colgroup').childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector('colgroup').childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\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 */\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 }\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.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n /**\n * @hidden\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 * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @return {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 * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {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 * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {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 * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @return {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e, args) {\n this.notify('refreshdataSource', e);\n };\n /**\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('colgroup').childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\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 * @param {string |string[]} fieldNames - Defines the column names.\n * @return {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 * @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_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\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 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 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);\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: 'e-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 * @return {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.querySelectorAll('.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 * @return {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.querySelectorAll('.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 * @return {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var width;\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerDivTag = 'e-gridheader';\n var contentDivTag = 'e-gridcontent';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var td = element;\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 width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\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 (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /** @hidden */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, 'e-row');\n if ([].slice.call(this.element.querySelectorAll('.e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.querySelectorAll('.e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute('aria-rowindex') + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') != 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\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[i].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 * @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');\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 * @hidden\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 /* tslint:disable-next-line:no-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, 'mousemove', 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 * @hidden\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, 'mousemove', 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 /* tslint:disable-next-line:no-any */\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\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.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n this.on(events.contentReady, this.blazorTemplate, this);\n };\n /**\n * @hidden\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.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n Grid.prototype.blazorTemplate = function () {\n if (isBlazor()) {\n if (this.pageSettings.template) {\n updateBlazorTemplate(this.element.id + \"_template\", 'Template', this.pageSettings);\n }\n for (var i = 0; i < this.columnModel.length; i++) {\n if (this.columnModel[i].template) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid, 'Template', this.columnModel[i], false);\n }\n if (this.columnModel[i].headerTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'headerTemplate', 'HeaderTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type == 'FilterBar' && this.columnModel[i].filterTemplate) {\n var fieldName = this.columnModel[i].field;\n var tempID = this.element.id + this.columnModel[i].uid + 'filterTemplate';\n var filteredColumns = this.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName == filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type != 'FilterBar' && this.columnModel[i].filterTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i]);\n }\n }\n if (this.groupSettings.captionTemplate) {\n updateBlazorTemplate(this.element.id + 'captionTemplate', 'CaptionTemplate', this.groupSettings);\n }\n var guid = 'guid';\n for (var k = 0; k < this.aggregates.length; k++) {\n for (var j = 0; j < this.aggregates[k].columns.length; j++) {\n if (this.aggregates[k].columns[j].footerTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'footerTemplate', 'FooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupFooterTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupFooterTemplate', 'GroupFooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupCaptionTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupCaptionTemplate', 'GroupCaptionTemplate', this.aggregates[k].columns[j]);\n }\n }\n }\n }\n };\n /**\n * Get current visible data of grid.\n * @return {Object[]}\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 ;\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length && this.currentViewData.records) ?\n this.currentViewData.records : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.querySelectorAll('.e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, 'e-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'))) {\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 (isBlazor()) {\n var clonedColumn = extend({}, args.column);\n args = { rowData: args.rowData, rowIndex: args.rowIndex,\n cellIndex: args.cellIndex, column: clonedColumn };\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, 'e-row');\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains('e-editedrow') || tr.classList.contains('e-addedrow'));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, 'e-rowcell') &&\n parentsUntil(e.target, 'e-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) {\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') {\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) {\n return true;\n }\n return false;\n };\n /**\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) {\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 if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this[key]);\n }\n this.mergeColumns(dataObj[key], this[key]);\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 _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n if (isBlazor()) {\n var guid = 'guid';\n storedColumns[i][guid] = localCol[guid];\n storedColumns[i].uid = localCol.uid;\n }\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.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 this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\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 * @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 if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this.columns);\n }\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\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 Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.e-table');\n remove(mTbl.querySelector('colgroup'));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.e-table');\n remove(frTbl.querySelector('colgroup'));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup')).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector('tbody'));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\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 * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* tslint:disable-next-line:no-any */\n workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\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 * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob);\n return null;\n }\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 * @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 * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, pdfDoc, isBlob) {\n if (isBlazor()) {\n this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n return null;\n }\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {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 * @return {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 * @return {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 * @param {Element} target - Defines the target element of the grouped row.\n * @return {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 * @return {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 * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @return {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 * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {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 = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {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 * @return {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 * @param {Element} target - Defines the collapsed element to expand.\n * @return {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 * @return {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 * @return {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 * @return {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 * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {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 * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {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 */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\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 * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\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 */\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 * @return {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.e-content');\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n * @param {string} value - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n for (var i = 0; i < this.getRowsObject().length; i++) {\n var pKvalue = this.getRowsObject()[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, this.getRowsObject()[i].data);\n }\n if (pKvalue === value) {\n return this.getRowsObject()[i].index;\n }\n }\n return -1;\n };\n ;\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\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 (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\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[i].uid) {\n column = gCols[i];\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 * @return {Object[] | Promise}\n\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.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/.test(userAgent);\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\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 * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.e-movablecontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.e-frozencontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-movableheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozenheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector('tbody').children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector('tbody').children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector('tbody').children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector('tbody').children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector('tbody').children)).concat(frozenRigtRows);\n }\n ;\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector('tbody').children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\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 * @return {Column[]}\n * @blazorType List\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 * calculatePageSizeByParentHeight\n\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) / 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.querySelectorAll('.e-summaryrow').length; i++) {\n height += this.element.querySelectorAll('.e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\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 */\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 data in server side.\n * @param {string} url - Pass Url for server side excel export action.\n * @return {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 data in server side.\n * @param {string} url - Pass Url for server side pdf export action.\n * @return {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n var _this = this;\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = state.data;\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n gridModel.filterSettings.columns = JSON.parse(queries).where;\n gridModel.columns.forEach(function (e) {\n var column = grid.getColumnByUid(e.uid);\n if (column) {\n e.headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n e.template = \"true\";\n }\n ;\n if (e.format) {\n e.format = getNumberFormat(_this.getFormat(e.format), e.type, _this.isExcel);\n }\n }\n if (e.columns) {\n _this.setHeaderText(e.columns);\n }\n });\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 * @hidden\n */\n Grid.prototype.setHeaderText = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = \"true\";\n }\n ;\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns);\n }\n }\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 */\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} value - Defines the row data.\n\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 */\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 * @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 filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {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 * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = ['addedRecords', 'changedRecords', 'deletedRecords'];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = 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 (e) {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = 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.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute('aria-rowindex'), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().querySelectorAll('.e-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 var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector('tbody');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = this.getContent().querySelector('tbody');\n }\n tbody = this.getContent().querySelector('tbody');\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') != -1) {\n height = parseInt(height) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /** @hidden */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector('tbody');\n }\n return tbody;\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomFilter = function () {\n if (this.filterModule) {\n this.filterModule.showCustomFilter();\n }\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomSort = function () {\n if (this.sortModule) {\n this.sortModule.showCustomFilter();\n }\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", 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, \"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 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 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, \"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, \"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('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('18.4.49')\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, \"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, \"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","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend, isBlazor, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\n/**\n * CellRenderer class which responsible for building cell content.\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: 'e-rowcell', attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n * @returns string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\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 value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\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';\n var literals = ['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 var index = 'index';\n if (isBlazor() && isEdit) {\n var rNumber = this.parent.editSettings.mode !== 'Batch' ? parseInt(attributes[index], 10) : null;\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str], rNumber);\n window[templateID] = null;\n if (this.parent.editSettings.mode !== 'Batch') {\n updateBlazorTemplate(templateID, 'Template', cell.column, false);\n }\n }\n else {\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n 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 * @param {Column} column\n * @param {Object} value\n * @param {Object} data\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 * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {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 * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\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 td.innerHTML = '';\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 parentRow.cells.length !== cellIndex - 1 ? parentRow.insertBefore(newTD, parentRow.cells[cellIndex])\n : parentRow.appendChild(newTD);\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\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 // tslint:disable-next-line:no-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // tslint:disable-next-line:no-any\n var attrs = source.attributes;\n // tslint:disable-next-line:no-any\n var i = attrs.length;\n // tslint:disable-next-line:no-any\n var attr;\n while (i--) {\n attr = attrs[i];\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 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 node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add('e-gridchkbox');\n node.setAttribute('aria-label', 'checkbox');\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 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 checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns 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 * @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 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': 'aria-colindex' };\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 }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\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, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { 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 * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\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 NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\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: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,\n href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\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 * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\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: isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1'\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: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\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: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\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: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\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 pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[i].style.display = '';\n this.links[i].setAttribute('index', pageNo.toString());\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[i].classList.add('e-pager-default');\n }\n else {\n this.links[i].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[i].style.display = 'none';\n }\n classList(this.links[i], [], ['e-currentitem', 'e-active']);\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\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) {\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 if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > 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, isBlazor } 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 * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': 'Pager Information' } });\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 PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n if (isBlazor()) {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('CurrentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('TotalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n else {\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 }\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\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 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 * @method destroy\n * @return {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].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, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler } 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 } from '../grid/base/util';\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 * @hidden\n */\n function Pager(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\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 * @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',\n previousPagerTooltip: 'Go to previous pager',\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',\n PreviousPagerTooltip: 'Go to previous pager',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n */\n Pager.prototype.render = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on('pager-refresh', this.pagerTemplate, this);\n this.notify('pager-refresh', {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.initLocalization();\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 };\n /**\n * Get the properties to be maintained in the persisted state.\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 * @method destroy\n * @return {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isReactTemplate()) {\n this.off('pager-refresh', this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\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 * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get 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 * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\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 }\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 };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n * @param {number} pageNo - Defines page number.\n * @return {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\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.refresh();\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()) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = isBlazor() ? this.getPagerTemplate()(data, this, 'template', tempId, this.isStringTemplate) :\n this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /** @hidden */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /** @hidden */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Pager.prototype.compile = function (template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\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 * @return {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify('pager-refresh', {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.containerModule.refresh();\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 }\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 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: isBlazor() ? this.getLocalizedLabel('FirstPageTooltip') : this.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('PreviousPageTooltip') :\n 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: isBlazor() ? this.getLocalizedLabel('NextPageTooltip') :\n this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('LastPageTooltip') :\n 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[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return this.isReact && this.template && typeof (this.template) !== 'string';\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 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","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]] } items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () { queryString = ''; }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n i === -1 ? index = 0 : index = i;\n item = listItems[index];\n if (isBlazor) {\n text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();\n }\n else {\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n }\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\nexport function Search(inputVal, items, searchType, ignoreCase) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var item = itemsData[i];\n var text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {\n itemData.item = item;\n itemData.index = i;\n return { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\n}\n","import { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\nexport var ListBase;\n(function (ListBase) {\n /**\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n * @param {{[key:string]:Object}[]|string[]} dataSource - Specifies an array of JSON or String data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // tslint:disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n // tslint:disable-next-line\n return createListFromJson(createElement, dataSource, options, \n // tslint:disable-next-line\n ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListItemFromArray(createElement, dataSource, \n // tslint:disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n // tslint:disable-next-line:max-func-body-length\n // tslint:disable-next-line\n function createListItemFromJson(createElement, dataSource, \n // tslint:disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = void 0;\n iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // tslint:disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]|NodeList} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n * @param {{[key:string]:Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder='None'} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query=new Query()} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // tslint:disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // tslint:disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compile(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // tslint:disable-next-line\n headerItems, options, componentInstance) {\n var compiledString = compile(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable',\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // tslint:disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n !isNullOrUndefined(uID) ? li.setAttribute('data-uid', uID) : li.setAttribute('data-uid', generateId());\n var blazId = 'BlazId';\n if (options && !!options.removeBlazorID\n && typeof item === 'object'\n && item.hasOwnProperty(blazId)) {\n delete item[blazId];\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compile(options.groupTemplate);\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n else if (!grpLI && options && options.template) {\n var compiledString = compile(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n * @param {string} className? - Specifies class name that need to be added in UL element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n * @param {liElement} liElement - Specifies LI element.\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n * @param {{[key:string]:Object}|string[]|string} dataSource - Specifies an JSON or String data.\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\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, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, remove, select, selectAll } from '@syncfusion/ej2-base';\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()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n return _this;\n }\n ;\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n ;\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === value.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true);\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // tslint:disable-next-line\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, !actionFailure, actionFailure, false, false, false, false);\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n }\n else {\n ele.innerHTML = content;\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n ;\n DropDownBase.prototype.getTextByValue = function (value) {\n var text;\n text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (isBlazor() && isNullOrUndefined(value) || value === 'null') {\n return null;\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return (value === 'true');\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n this.enableRtl ? addClass(this.enableRtlElements, dropDownBaseClasses.rtl) :\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n };\n ;\n /**\n * Initialize the Component.\n */\n DropDownBase.prototype.initialize = function () {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n };\n ;\n DropDownBase.prototype.DropDownBaseupdateBlazorTemplates = function (item, group, noRecord, action, value, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n updateBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.groupTemplate && group) {\n updateBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (value) {\n updateBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY, this);\n }\n }\n };\n DropDownBase.prototype.DropDownBaseresetBlazorTemplates = function (item, group, noRecord, action, value, header, footer) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n resetBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY);\n }\n if (this.groupTemplate && group) {\n resetBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY);\n }\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY);\n }\n if (value) {\n resetBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY);\n }\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n var items = element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n * @private\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.list], dropDownBaseClasses.noData);\n };\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n this.listData = list;\n if (isBlazor() && this.isServerRendered && this.getModuleName() === 'listbox') {\n remove(this.list.querySelector('.e-list-parent'));\n remove(this.list.querySelector('.e-hidden-select'));\n }\n else {\n // tslint:disable-next-line \n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.list.innerHTML = '';\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n };\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n }\n else {\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n }\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n };\n /**\n * To create the ul li list items\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n ;\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n ;\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = e.target;\n var liHeight = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = e.target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n /**\n * To render the list items\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n var isTempEmpty = (this.getModuleName() === 'listbox') ? true : false;\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, isTempEmpty);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n ;\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n ;\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n this.list.parentElement.style.display = 'block';\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n }\n var liWidth = this.liCollections[0].offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n ;\n /**\n * To dispatch the event manually\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n this.setListData(dataSource, fields, query);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n * @private\n */\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\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 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n ;\n /**\n * Build and render the component\n * @private\n */\n DropDownBase.prototype.render = function (isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\n }\n };\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n ;\n /**\n * Adds a new item to the 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 * @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 * @return {void}.\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var compiledString = compile(this.itemTemplate);\n // tslint:disable-next-line\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.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 (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n _super.prototype.destroy.call(this);\n };\n ;\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\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/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\n/* tslint:disable */\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames \nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n ;\n /**\n * Initialize the event handler.\n * @private\n */\n DropDownList.prototype.preRender = function () {\n var checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n if (this.isServerBlazor) {\n this.initializeData();\n }\n else {\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n }\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (isEmptyData) {\n if (!this.isServerBlazor) {\n _super.prototype.render.call(this, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n this.inputElement.value = '';\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = 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 if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n htmlAttr === 'placeholder' ? Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement) :\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ;\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n ;\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return this.inputWrapper.container;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n ;\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\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 DropDownList.prototype.onBlur = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlur, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlur);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (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 /**\n * Event binding for list\n */\n DropDownList.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n ;\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n if (!this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.isServerIncrementalSearch = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var classList = target.classList;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n ;\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n ;\n DropDownList.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n ;\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = (this.isServerBlazor && this.popupObj && this.popupObj.element) ?\n this.popupObj.element.querySelectorAll('.' + dropDownBaseClasses.hover) :\n this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n ;\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n ;\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id, this.isServerBlazor);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n ;\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\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 DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (!(this.isServerBlazor && (e.action === 'open' || e.action === 'space')) && isNullOrUndefined(this.list) ||\n (!isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0) || this.isRequested) {\n if (!(this.isServerBlazor && isNavAction)) {\n return;\n }\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup();\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else {\n var nextItem = void 0;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n }\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\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 this.hidePopup();\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n */\n DropDownList.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n ;\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup();\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup();\n }\n var proxy_1 = this;\n var duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () { proxy_1.cloneElements(); proxy_1.isSecondClick = true; }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (_this.isServerBlazor) {\n // tslint:disable-next-line\n _this.interopAdaptor.invokeMethodAsync('OnServerItemData', _this.itemData);\n }\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n if (isBlazor() && dataItem.text !== null || dataItem.text !== '') {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerValueTemplate', dataItem);\n }\n if (this.valueTemplate && this.itemData !== null && !this.isServerBlazor) {\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, true);\n this.setValueTemplate();\n }\n else if (this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (this.isPopupOpen) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n this.valueTempElement.innerHTML = '';\n var templateData = (isBlazor()) ? JSON.parse(JSON.stringify(this.itemData)) : this.itemData;\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // tslint:disable-next-line\n var valueCompTemp = compiledString(templateData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, true, true);\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n ;\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n ;\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n if (this.isServerBlazor && this.enablePersistence) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('ServerChange');\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.isServerBlazor && this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow \n case 40: //down arrow \n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow \n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab \n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.getModuleName() === 'combobox' && this.isFiltering() && !this.beforePopupOpen)\n ? !this.beforePopupOpen : this.beforePopupOpen;\n if (this.filterInput.value === '' && this.getModuleName() !== 'dropdownlist') {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n }\n else {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n }\n };\n /**\n * To filter the data from given data source by using query\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 * @return {void}.\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n if (this.isServerBlazor) {\n parentElement.innerHTML = '';\n }\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n ;\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.updateValues();\n this.initRemoteRender = false;\n this.initial = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var checkVal = list.some(function (x) { return x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n });\n }\n }\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }, 0);\n }\n else {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index != null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n ;\n DropDownList.prototype.renderPopup = function () {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = (_this.serverPopupEle) ? _this.serverPopupEle : _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate && !_this.isServerBlazor) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate && !_this.isServerBlazor) {\n _this.setFooterTemplate(popupEle);\n }\n if (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer')) {\n popupEle.appendChild(popupEle.querySelector('.e-ddl-footer'));\n }\n document.body.appendChild(popupEle);\n _this.updateServerPopup(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-header'))) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer'))) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (Browser.isDevice && _this.isFilterLayout()) {\n EventHandler.add(_this.list, 'scroll', _this.listScroll, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true' });\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = (isBlazor() && _this.isServerRendered) ? null : _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.serverBlazorUpdateSelection();\n _this.bindServerScrollEvent();\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.serverBlazorUpdateSelection = function () {\n if (this.isServerBlazor && (this.value !== null || this.index !== null || this.text !== null) ||\n (this.getModuleName() !== 'dropdownlist' && !this.isTyped)) {\n if (this.getModuleName() === 'dropdownlist') {\n this.removeSelection();\n this.removeFocus();\n this.removeHover();\n this.updateValues();\n }\n if (this.getModuleName() === 'combobox' && this.ulElement &&\n this.findListElement(this.ulElement, 'li', 'data-value', this.value) && !this.isTyped) {\n this.updateValues();\n }\n if (this.isServerBlazor && this.getModuleName() !== 'dropdownlist' &&\n (this.text === '' || this.text === null) && this.ulElement) {\n if (!this.ulElement.querySelector('li').classList.contains(dropDownBaseClasses.hover)) {\n addClass([this.ulElement.querySelector('li')], dropDownBaseClasses.hover);\n }\n }\n }\n };\n DropDownList.prototype.bindServerScrollEvent = function () {\n if (this.isServerBlazor && this.list) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n }\n };\n DropDownList.prototype.updateServerPopup = function (popupEle) {\n if (this.isServerBlazor) {\n if (popupEle && popupEle.querySelector('li')) {\n removeClass([popupEle.querySelector('.e-content')], ['e-nodata']);\n }\n this.initial = false;\n popupEle.removeAttribute('style');\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // tslint:disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.DropDownBaseresetBlazorTemplates(isResetItem, isResetItem, true, true, false, true, true);\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n var formElement = closest(_this.inputElement, 'form');\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.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 = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.listScroll = function () {\n this.filterInput.blur();\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n EventHandler.remove(this.list, 'scroll', this.listScroll);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlur);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete' && !_this.isServerBlazor) {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n var popupHolderEle = select('#' + this.element.id + '_popup_holder', document);\n if (this.isServerBlazor && this.serverPopupEle && popupHolderEle) {\n popupHolderEle.appendChild(this.serverPopupEle);\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerClosePopup');\n }\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n // tslint:disable-next-line\n DropDownList.prototype.render = function () {\n if (this.isServerBlazor) {\n this.inputElement = this.element;\n this.inputWrapper = { container: this.element.parentElement };\n this.hiddenElement = this.inputWrapper.container.querySelector('select');\n this.inputWrapper.buttons = [this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon')];\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.inputWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.element);\n }\n Input.bindInitialEvent({\n element: this.element,\n buttons: null, customTag: null,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n this.setFields();\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n this.initial = false;\n }\n else {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) { e.stopImmediatePropagation(); };\n this.inputElement.onchange = function (e) { e.stopImmediatePropagation(); };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n ;\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // tslint:disable-next-line\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // tslint:disable-next-line\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n * @private\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.isServerBlazor) {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\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': break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'width':\n this.setEleWidth(newProp.width);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n break;\n case 'readonly':\n if (this.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this.inputElement);\n }\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var li = this.getElementByText(newProp.text);\n if (!this.checkValidLi(li)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (!this.isServerBlazor) {\n this.setOldText(oldProp.text);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this.clearAll();\n break;\n }\n this.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var item = this.getElementByValue(newProp.value);\n if (!this.checkValidLi(item)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (!this.isServerBlazor) {\n this.setOldValue(oldProp.value);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender && this.liCollections) {\n var element = this.liCollections[newProp.index];\n if (!this.checkValidLi(element)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else if (!this.isServerBlazor) {\n this.index = oldProp.index;\n }\n }\n this.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this.popupObj) {\n this.setFooterTemplate(this.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this.popupObj) {\n this.setHeaderTemplate(this.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this.itemData) && this.valueTemplate != null) {\n this.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.actionCompleteData = { ulElement: this.ulElement,\n list: this.listData, isUpdated: true };\n this.updateSelectElementData(this.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, newProp.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputElement, this.inputWrapper, null, this.createElement);\n this.bindClearEvent();\n break;\n default:\n var ddlProps = void 0;\n ddlProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, ddlProps.newProperty, ddlProps.oldProperty);\n break;\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name.\n * @private\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n */\n DropDownList.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (isBlazor() && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList();\n }\n else if (this.isFiltering() && this.isServerBlazor) {\n this.renderList();\n }\n if (!this.isServerBlazor) {\n this.invokeRenderPopup();\n }\n var popupHolderEle = !this.isFiltering() || select('#' + this.element.id + '_popup_holder', document);\n var isDropdownComp = this.getModuleName() === 'dropdownlist' || !this.isFiltering();\n if (this.isServerBlazor && popupHolderEle && !isNullOrUndefined(this.list) && isDropdownComp) {\n this.invokeRenderPopup();\n }\n };\n DropDownList.prototype.invokeRenderPopup = function () {\n if (Browser.isDevice && this.isFilterLayout()) {\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n };\n DropDownList.prototype.clientRenderPopup = function (data, popupEle) {\n if (popupEle) {\n this.serverPopupEle = popupEle;\n this.list = popupEle.querySelector('.e-dropdownbase.e-content') ?\n popupEle.querySelector('.e-dropdownbase.e-content') : this.list;\n this.ulElement = this.list.querySelector('ul');\n if (isNullOrUndefined(this.ulElement) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n addClass([this.list], [dropDownBaseClasses.noData]);\n }\n this.liCollections = this.ulElement ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li) : [];\n this.listData = data;\n if (this.getModuleName() === 'autocomplete' && this.liCollections.length > 0) {\n this.renderHightSearch();\n }\n this.initRemoteRender = false;\n if (!this.isPopupOpen) {\n this.serverBlazorUpdateSelection();\n }\n this.unWireListEvents();\n this.wireListEvents();\n if (this.isServerIncrementalSearch && this.searchKeyEvent) {\n this.isServerIncrementalSearch = false;\n this.initial = false;\n this.onServerIncrementalSearch(this.searchKeyEvent);\n }\n if (this.isServerNavigation && this.searchKeyEvent) {\n if (this.searchKeyEvent.action === 'down' || this.searchKeyEvent.action === 'up') {\n this.isServerNavigation = false;\n this.updateUpDownAction(this.searchKeyEvent);\n }\n else if (this.searchKeyEvent.action === 'home' || this.searchKeyEvent.action === 'end') {\n this.isServerNavigation = false;\n this.updateHomeEndAction(this.searchKeyEvent);\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup();\n }\n if (this.getModuleName() !== 'dropdownlist') {\n this.onActionComplete(this.ulElement, this.listData);\n }\n }\n else if (data != null && this.listData !== data) {\n this.listData = data;\n this.initRemoteRender = false;\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search \n };\n DropDownList.prototype.updateclientItemData = function (data) {\n this.listData = data;\n };\n DropDownList.prototype.initValueItemData = function (selectData) {\n this.itemData = selectData;\n this.previousValue = this.value;\n this.initial = false;\n };\n DropDownList.prototype.serverUpdateListElement = function (data, popupEle) {\n this.listData = data;\n if (this.ulElement) {\n this.liCollections = this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n };\n /**\n * Hides the popup if it is in an open state.\n * @returns void.\n */\n DropDownList.prototype.hidePopup = function (e) {\n var isHeader = (this.headerTemplate) ? true : false;\n var isFooter = (this.headerTemplate) ? true : false;\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, false, isHeader, isFooter);\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup();\n var dataItem = this.getItemData();\n var isSelectVal = this.isServerBlazor ? !isNullOrUndefined(this.value) : !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /**\n * Sets the focus on the component for interaction.\n * @returns void.\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n */\n DropDownList.prototype.focusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerBlazor || (this.popupObj && document.body.contains(this.popupObj.element))) {\n this.hidePopup();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n if (this.isServerBlazor) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n }\n }\n if (!this.isServerBlazor) {\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n _super.prototype.destroy.call(this);\n }\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","import { createElement, remove, isBlazor } 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 * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get 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 * @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', { className: 'e-constant', innerHTML: isBlazor() ?\n this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown') });\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 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 * @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.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 if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.pagerModule.pageSize === this.pagerModule.totalRecordsCount) {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerAllDropDown') :\n this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\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[i] = parseInt(item[i], 10) ? item[i].toString() : (this.pagerModule.getLocalizedLabel(item[i]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[i]) : item[i];\n }\n return item;\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.dropDownListObject[prop] = 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 * @method destroy\n * @return {void}\n * @hidden\n */\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 * @param {Pager} pagerModule?\n * @returns defaultType\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get 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 * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\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 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 ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, isBlazor } 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 } from '../base/util';\nimport * as events from '../base/constant';\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 * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\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 * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n * @return {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n var pagerObj;\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 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 this.pagerObj = new Pager(pagerObj);\n this.pagerObj.hasParent = true;\n this.pagerObj.on('pager-refresh', 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[i].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[i].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[i]);\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[j]);\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 * @return {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 * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\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 * @return {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\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) {\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.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\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 this.pageSettings.currentPage = e.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, type: events.actionBegin\n };\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n e.cancel = true;\n }\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 * @param {string} message - Defines the message to update.\n * @return {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 (e) {\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.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 * @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) {\n this.parent.addEventListener('created', this.handlers.created.bind(this));\n }\n this.parent.on(events.initialLoad, this.handlers.load, this);\n this.parent.on(events.initialEnd, this.handlers.end, this); //For initial rendering\n this.parent.on(events.dataReady, this.handlers.ready, this);\n this.parent.on(events.pageComplete, this.handlers.complete, this);\n this.parent.on(events.uiUpdate, this.handlers.updateLayout, this);\n this.parent.on(events.inBoundModelChanged, this.handlers.inboundChange, this);\n this.parent.on(events.keyPressed, this.handlers.keyPress, 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.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\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 this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n };\n /**\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.removeEventListener('created', this.handlers.created);\n }\n this.parent.off('pager-refresh', this.renderReactPagerTemplate);\n this.parent.off(events.initialLoad, this.handlers.load);\n this.parent.off(events.initialEnd, this.handlers.end); //For initial rendering\n this.parent.off(events.dataReady, this.handlers.ready);\n this.parent.off(events.pageComplete, this.handlers.complete);\n this.parent.off(events.uiUpdate, this.handlers.updateLayout);\n this.parent.off(events.inBoundModelChanged, this.handlers.inboundChange);\n this.parent.off(events.keyPressed, this.handlers.keyPress);\n };\n /**\n * To destroy the pager\n * @return {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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked } from '../base/util';\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 * @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.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\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 /**\n * @hidden\n */\n this.autoFillRLselection = true;\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 * @return {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 * @return {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 * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-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.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.e-movablecontent')) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === 'Left-Right' && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n var added = 'addedRecords';\n var deleted = 'deletedRecords';\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()[added]) :\n this.parent.editModule.getBatchChanges()[added].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[deleted];\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[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {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 selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n this.parent.notify(events.selectVirtualRow, { selectedIndex: index });\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\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 ? (index === this.selectedRowIndexes[0]) : false);\n var args;\n var can = 'cancel';\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, previousRowIndex: this.prevRowIndex,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\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.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 var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\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\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', [index]);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === 'Left-Right' && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === 'Left-Right' && frRow) {\n mObj[frozenRightRow] = frRow;\n mObj[previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @return {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n }\n var isHybrid = 'isHybrid';\n this.activeTarget();\n var args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, 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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\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 _this.clearRow();\n _this.selectRowIndex(rowIndexes.slice(-1)[0]);\n var selectRowFn = function (index) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === 'Left-Right' ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIdx = rowIndexes_1[_i];\n selectRowFn(rowIdx);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: _this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[_this.prevRowIndex],\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\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 * @param {number} startIndex - Specifies the row indexes.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\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 indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(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 for (var _i = 0, rowIndexes_2 = rowIndexes; _i < rowIndexes_2.length; _i++) {\n var rowIndex = rowIndexes_2[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\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 selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n var isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\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 this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\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 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.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 ? rowObj.data[this.primaryKey] : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey_1] = chkState;\n if (!this.persistSelectedData.some(function (data) { return data[_this.primaryKey] === 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) {\n var _this = this;\n delete (this.selectedRowState[pKey]);\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return data[_this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\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) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\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) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n * @return {void}\n */\n Selection.prototype.clearSelection = function () {\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.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n var currentViewData = this.parent.getCurrentViewRecords();\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[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\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[i]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n mRow_1.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n if (gObj.getFrozenMode() === 'Left-Right') {\n fRightRow_1.push(gObj.getFrozenRightRows()[this.selectedRowIndexes[i]]);\n }\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, mRow_1, 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[i], 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 || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[j], false);\n }\n _this.updateCheckBoxes(element[j]);\n }\n if (isBlazor() && _this.parent.isServerRendered && _this.parent.enableVirtualization) {\n _this.getRenderer().setSelection(null, false, true);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!_this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[i]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\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, mRow_1, undefined, fRightRow_1);\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 }, fRightRow_1);\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)) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && this.parent.checkAllRows === 'Uncheck'\n && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ?\n this.persistSelectedData : data, foreignKeyData: foreignKeyData,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var data_2 = '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[data_2] = rowDeselectObj[data_2][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n var rowIndex_2 = 'rowIndex';\n var data_3 = 'data';\n rowDeselectObj[rowIndex_2] = rowDeselectObj[rowIndex_2][rowDeselectObj[rowIndex_2].length - 1];\n rowDeselectObj[data_3] = rowDeselectObj[data_3][rowDeselectObj[data_3].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : 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 if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\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 Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var selectedTable;\n var cIdx;\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 if (!isBlazor() || this.parent.isJsComponent) {\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\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 = void 0;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n 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 }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\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.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\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 * @return {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 = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\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 if (!isBlazor()) {\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\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 if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\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 var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n 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 }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\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 * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\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 var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n 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 }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\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 if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n 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 previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n * @param {IIndex} startIndex - Defines the collection of row and column index.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\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 var isHybrid = 'isHybrid';\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === 'frozen-left' ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === 'frozen-right' ? gObj.getFrozenRightRowsObject() : []\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[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === 'frozen-right' ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n 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 previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\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 = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n 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 var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\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 frzCols = this.parent.isFrozenGrid();\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[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute('aria-colindex'), 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[0] && cells[0].classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\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('e-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[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].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 * @return {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 var selectedTable = void 0;\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n var rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (var j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[i].cellIndexes[j]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\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[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].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 mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\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('aria-rowindex'), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n var td = parentsUntil(e.target, 'e-rowcell');\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, 'e-rowcell');\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute('aria-colindex'), 10));\n }\n }\n }\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.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 }\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, '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, '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.querySelectorAll('.e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\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 var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 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() === 'Left-Right' && (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 + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 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.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), 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.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\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 ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '0 0 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 0 0';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '2p 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.bdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n this.mcBdrElement.style.borderWidth = '2px';\n this.frcBdrElement.style.borderWidth = '2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n this.mhBdrElement.style.borderWidth = '2px';\n this.frhBdrElement.style.borderWidth = '2px';\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === 'Left-Right') {\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 ? '0 0 2px 2px' : '0 2px 2px 0';\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = '2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = '2px';\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.contentModule.getMovableContent().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() === 'Left-Right') {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().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.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().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) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\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, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 'e-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;\n var totalWidth = this.parent.element.clientWidth;\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, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-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, parseInt(args.value, 10));\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 Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute('aria-colindex'), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n var col;\n switch (true) { //direction \n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, 'e-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, 'e-row').getAttribute('aria-rowindex'), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute('aria-colindex'), 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[c]);\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[c]);\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('aria-rowindex'), 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[c]);\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('aria-rowindex'), 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[c]);\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 document.body.classList.remove('e-disableuserselect');\n if (this.element) {\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, 'e-rowcell');\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n var cellIndex = parseInt(target.getAttribute('aria-colindex'), 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 var lastCell = parentsUntil(e.target, 'e-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 this.isAutoFillSel = 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 * @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('aria-colindex'), 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() === 'Left-Right' && col.getFreezeTableName() === 'frozen-right';\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, 'e-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 !isFrozenRow ? !isFrozenCol ? this.parent.getContentTable().parentElement.appendChild(this.autofill) :\n this.parent.contentModule.getMovableContent().appendChild(this.autofill) :\n !isFrozenCol ? this.parent.getHeaderTable().parentElement.appendChild(this.autofill) :\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n if (isFrozenRight) {\n isFrozenRow ? this.parent.getFrozenRightHeader().appendChild(this.autofill)\n : this.parent.getFrozenRightContent().appendChild(this.autofill);\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 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, 'e-headercontent') && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, 'e-editedrow')) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 'e-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) {\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.querySelectorAll('.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('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 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('aria-rowindex'), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, 'e-rowcell').getAttribute('aria-colindex'), 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 };\n /**\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.initialEnd, this.initializeSelection, this);\n this.parent.on(events.rowSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.cellSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.cellFocused, this.onCellFocused, this);\n this.parent.on(events.beforeFragAppend, this.clearSelAfterRefresh, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.contentReady, this.initialEnd, 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.parent.on(events.rowsRemoved, this.rowsRemoved, this);\n this.parent.on(events.headerRefreshed, this.refreshHeader, this);\n this.addEventListener_checkbox();\n };\n /**\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.initialEnd, this.initializeSelection);\n this.parent.off(events.rowSelectionComplete, this.onActionComplete);\n this.parent.off(events.cellSelectionComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.cellFocused, this.onCellFocused);\n this.parent.off(events.beforeFragAppend, this.clearSelAfterRefresh);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.off(events.rowsRemoved, this.rowsRemoved);\n this.parent.off(events.headerRefreshed, this.refreshHeader);\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 };\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 };\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 delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n ;\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\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 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) && this.selectionSettings.type === 'Single') {\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 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 this.initPerisistSelection();\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').querySelectorAll('.e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === 'Left-Right';\n if (!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n this.parent.off(events.contentReady, this.checkBoxSelectionChanged);\n var gobj = this.parent;\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 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 for (var i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (var _i = 0, _a = this.getData().records; _i < _a.length; _i++) {\n var data = _a[_i];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (var _b = 0, _c = this.getData(); _b < _c.length; _b++) {\n var data = _c[_b];\n this.selectedRowState[data[this.primaryKey]] = true;\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 };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (rows !== null && 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[j]);\n var pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n var checkState = void 0;\n var chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute('aria-rowindex'), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n this.isSingleSel() && indexes.length > 0 ? this.selectRow(indexes[0], true) : this.selectRows(indexes);\n }\n if (this.parent.isCheckBoxSelection && 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, '.e-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[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = [];\n if (!isBlazor()) {\n records = e.data;\n }\n else {\n records = this.getSelectedRecords();\n }\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\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 this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\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[i].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[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\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 if (isBlazor() && this.parent.enableVirtualization &&\n !isNullOrUndefined(this.parent.contentModule.currentInfo.endIndex)) {\n this.selectRowsByRange(this.parent.contentModule.currentInfo.startIndex, this.parent.contentModule.currentInfo.endIndex);\n }\n else {\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\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 (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return data[_this.primaryKey] in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', !state, 'checkbox', null);\n this.checkBoxState = !state;\n if (!state) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n var rowCache = this.parent.contentModule[vgenerator].rowCache;\n Object[values](rowCache).forEach(function (x) { return x.isSelected = true; });\n for (var i = 0; i < Object.keys(rowCache).length; i++) {\n if (this.parent.selectionModule.selectedRowIndexes.indexOf(Number(Object.keys(rowCache)[i])) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(Number(Object.keys(rowCache)[i]));\n }\n }\n }\n }\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\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, '.e-rowcell');\n var checkObj = checkBox;\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 rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n this.moveIntoUncheckCollection(closest(target, '.e-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 ? rowObj.data[this.primaryKey] : 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.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = 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 if (index && this.parent.getRowByIndex(index).getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n ;\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var isServerRenderedVirtualization = isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization;\n if (isServerRenderedVirtualization) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n checkToSelectAll = !Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected === undefined || x.isSelected === false; }).length &&\n Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected; }).length === this.selectedRowIndexes.length;\n }\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection && !(isServerRenderedVirtualization)) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\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 if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && checkedLen === this.getData().length)) {\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 (isServerRenderedVirtualization && !this.selectedRowIndexes.length ||\n checkedLen === 0 && !isServerRenderedVirtualization || this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\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 }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\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 };\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 (parentsUntil(target, 'e-row') || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\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.querySelectorAll('.e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, 'e-row')) ? true : false;\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, 'e-rowcell');\n if ((target && target.parentElement.classList.contains('e-row') && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\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('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.e-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.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('e-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 > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n var gObj = this.parent;\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, '.e-rowcell').classList.contains('e-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 (isBlazor() && this.parent.enableVirtualization && this.parent.isServerRendered) {\n var rowIndexes = this.parent.getSelectedRowIndexes();\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', rowIndexes);\n }\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n /* tslint:disable-next-line:max-func-body-length */\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('aria-rowindex'));\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 = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((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, '.e-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 (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.e-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.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute('aria-colindex'));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\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 switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\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 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 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 * @return {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.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\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('aria-colindex'), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\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 * @return {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\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 {\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 var gObj = this.parent;\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[i].columns) {\n this.getstackedColumns(column[i].columns);\n }\n else {\n innerColumnIndexes.push(column[i]);\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.querySelectorAll('.e-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 * @return {Object[]}\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\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 * @param {number} startIndex\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[index])) {\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 * @param {number} startIndex\n * @param {number} endIndex\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\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 * @param {number[]} columnIndexes\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[i]).uid), columnIndexes[i]);\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 * @param {number} startIndex\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var frzCols = gObj.getFrozenColumns();\n var isFreeze = frzCols && startIndex >= frzCols;\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 var rows = !isFreeze ? gObj.getDataRows() : gObj.getMovableRows();\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 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 col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === 'frozen-right') {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\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().querySelectorAll('.e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[i]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[i]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[clearIndex].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[i]).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 movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.e-movablecontent')) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[aria-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[i].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()[startIndex])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[startIndex].isSelected = true;\n if (col.getFreezeTableName() === 'frozen-right') {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[j].classList.contains('e-row')) {\n if ((rows[j].classList.contains('e-editedrow') || rows[j].classList.contains('e-addedrow')) &&\n this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(rows[j].querySelector('tr').childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].querySelector('tr').childNodes[startIndex]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[j].childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].childNodes[startIndex]], 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 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.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 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.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 }\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;\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 this.parent.selectedRowIndex = index;\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 { extend, isNullOrUndefined, isBlazor } 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 * @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`](grid/#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {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 gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\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 * @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 * @return {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\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 * @return {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\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 * @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 { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\n/**\n * ColumnWidthService\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[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), 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 if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, this.parent.getColumnIndexByField(collection[i].field));\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount(), 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[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].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') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\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;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n var mCont = this.parent.getContent().querySelector('.e-movablecontent');\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols && mHdr && mHdr.querySelector('colgroup')) {\n headerCol = mHdr.querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector('colgroup');\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector('colgroup').children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup');\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector('colgroup').children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\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[i], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector('colgroup')) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector('colgroup').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[index].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[index].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /** @hidden */\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 frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.e-frozencontent');\n var movableContent = this.parent.getContent().querySelector('.e-movablecontent');\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\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 = ['e-gridheader', 'e-gridfooter', 'e-groupdroparea', 'e-gridpager', 'e-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 (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === 'frozen-left' || column.getFreezeTableName() === 'frozen-right')) {\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.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('.e-table');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.e-table');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild) {\n this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.e-movablecontent').firstElementChild.style.width =\n movableWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\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 }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else 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","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 * Vue Component Base\n */\nimport Vue from 'vue';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasInjectedModules = false;\n _this.hasChildDirective = false;\n _this.childDirObjects = '';\n return _this;\n }\n ComponentBase.prototype.created = function () {\n var _this = this;\n var _loop_1 = function (prop) {\n this_1.ej2Instances.addEventListener(prop, function (args) {\n _this.$emit(prop, args);\n });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n ComponentBase.prototype.mounted = function () {\n this.ej2Instances.isVue = true;\n this.ej2Instances.vueInstance = this;\n this.ej2Instances.appendTo(this.$el);\n };\n ComponentBase.prototype.getInjectedServices = function () {\n var ret = [];\n var provide = getValue('$vnode.context.$options.provide', this);\n if (provide) {\n // tslint:disable:no-any\n var injectables = provide;\n if (typeof provide === 'function') {\n // tslint:disable:no-any\n injectables = this.$vnode.context.$options.provide();\n }\n ret = injectables[this.ej2Instances.getModuleName()] || [];\n }\n return ret;\n };\n ComponentBase.prototype.updated = function () {\n if (this.hasChildDirective) {\n var childKey = {};\n this.fetchChildPropValues(childKey);\n var curChildDir = JSON.stringify(childKey);\n if (this.childDirObjects !== curChildDir) {\n this.childDirObjects = curChildDir;\n this.assignValueToWrapper(childKey, false);\n }\n }\n };\n ComponentBase.prototype.beforeDestroy = function () {\n var tempBeforeDestroyThis = this;\n tempBeforeDestroyThis.ej2Instances.destroy();\n tempBeforeDestroyThis.$el.style.visibility = 'hidden';\n tempBeforeDestroyThis = null;\n };\n ComponentBase.prototype.bindProperties = function () {\n var options = {};\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n if (!isNullOrUndefined(this[prop])) {\n options[prop] = this[prop];\n }\n }\n if (this.hasChildDirective) {\n this.fetchChildPropValues(options);\n }\n if (this.hasInjectedModules) {\n var prevModule = this.getInjectedServices() || [];\n var curModule = this.ej2Instances.getInjectedModules() || [];\n for (var _b = 0, curModule_1 = curModule; _b < curModule_1.length; _b++) {\n var mod = curModule_1[_b];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.ej2Instances.injectedModules = prevModule;\n }\n this.assignValueToWrapper(options);\n };\n ComponentBase.prototype.assignValueToWrapper = function (option, silent) {\n this.ej2Instances.setProperties(extend({}, {}, option, true), isNullOrUndefined(silent) ? true : silent);\n };\n ComponentBase.prototype.fetchChildPropValues = function (childOption) {\n var dirProps = this.getDirectiveValues(this.$slots.default, this.tagMapper || {}, this.tagNameMapper || {});\n if (!this.childDirObjects) {\n this.childDirObjects = JSON.stringify(dirProps);\n }\n for (var _i = 0, _a = Object.keys(dirProps); _i < _a.length; _i++) {\n var dirProp = _a[_i];\n childOption[dirProp] = dirProps[dirProp];\n }\n };\n ComponentBase.prototype.getDirectiveValues = function (tagDirectives, tagMapper, tagNameMapper) {\n var keyTags = Object.keys(tagMapper);\n var dir = {};\n if (tagDirectives) {\n for (var _i = 0, tagDirectives_1 = tagDirectives; _i < tagDirectives_1.length; _i++) {\n var tagDirective = tagDirectives_1[_i];\n if (tagDirective.componentOptions && tagDirective.componentOptions.children && tagDirective.componentOptions.tag) {\n var dirTag = tagDirective.componentOptions.tag;\n if (keyTags.indexOf(dirTag) !== -1) {\n var tagName = tagNameMapper[dirTag] ? tagNameMapper[dirTag] : dirTag;\n dir[tagName.replace('e-', '')] = [];\n for (var _a = 0, _b = tagDirective.componentOptions.children; _a < _b.length; _a++) {\n var tagDirChild = _b[_a];\n var retObj = this.getVNodeValue(tagDirChild, tagMapper[dirTag], tagNameMapper);\n if (Object.keys(retObj).length !== 0) {\n dir[tagName.replace('e-', '')].push(retObj);\n }\n }\n }\n }\n }\n }\n return dir;\n };\n ComponentBase.prototype.getMultiLevelDirValue = function (tagDirectories, tagKey, tagNameMapper) {\n var mulObj = {};\n for (var _i = 0, tagDirectories_1 = tagDirectories; _i < tagDirectories_1.length; _i++) {\n var tagDir = tagDirectories_1[_i];\n if (tagDir.componentOptions) {\n var key = tagDir.componentOptions.tag;\n var tagName = tagNameMapper[key] ? tagNameMapper[key] : key;\n mulObj[tagName.replace('e-', '')] = [];\n if (tagDir.componentOptions && tagDir.componentOptions.children) {\n for (var _a = 0, _b = tagDir.componentOptions.children; _a < _b.length; _a++) {\n var tagDirChild = _b[_a];\n var mulLevObj = this.getVNodeValue(tagDirChild, tagKey[key], tagNameMapper);\n if (Object.keys(mulLevObj).length !== 0) {\n mulObj[tagName.replace('e-', '')].push(mulLevObj);\n }\n }\n }\n }\n }\n return mulObj;\n };\n ComponentBase.prototype.getVNodeValue = function (tagDirective, tagKey, tagNameMapper) {\n var ret = {};\n if (tagDirective.componentOptions) {\n var dirTag = tagDirective.componentOptions.tag;\n if (typeof tagKey === 'string' && dirTag === tagKey && tagDirective.data) {\n ret = tagDirective.data.attrs ? this.getCamelCaseProps(tagDirective.data.attrs) : this.getCamelCaseProps(tagDirective.data);\n }\n else if (typeof tagKey === 'object') {\n if (tagDirective.componentOptions.children && (Object.keys(tagKey).indexOf(dirTag) !== -1)) {\n ret = this.getMultiLevelDirValue(tagDirective.componentOptions.children, tagKey[dirTag], tagNameMapper);\n }\n if (tagDirective.data && tagDirective.data.attrs) {\n ret = extend(ret, this.getCamelCaseProps(tagDirective.data.attrs));\n }\n }\n }\n return ret;\n };\n /**\n * convert kebab case directive props to camel case\n */\n ComponentBase.prototype.getCamelCaseProps = function (props) {\n var retProps = {};\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var prop = _a[_i];\n retProps[prop.replace(/-[a-z]/g, function (e) { return e[1].toUpperCase(); })] = props[prop];\n }\n return retProps;\n };\n ComponentBase.prototype.dataBind = function () {\n this.ej2Instances.dataBind();\n };\n ComponentBase.prototype.setProperties = function (arg, muteOnChange) {\n return this.ej2Instances.setProperties(arg, muteOnChange);\n };\n return ComponentBase;\n}(Vue));\nexport { ComponentBase };\n","/**\n * Vue Component Base\n */\nimport Vue from 'vue';\nimport { ComponentBase } from './component-base';\nexport var $internalHooks = [\n 'data',\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeDestroy',\n 'destroyed',\n 'beforeUpdate',\n 'updated',\n 'activated',\n 'deactivated',\n 'render',\n 'errorCaptured' // 2.5\n];\nexport function EJComponentDecorator(options) {\n return function (Component) {\n return EJcomponentFactory(Component, options);\n };\n}\nexport function EJcomponentFactory(Component, options) {\n if (options === void 0) { options = {}; }\n options.name = options.name || Component._componentTag || Component.name;\n // prototype props.\n var proto = Component.prototype;\n if (options.props) {\n var _loop_1 = function (prop) {\n (options.props || (options.props = {}))[prop] = {};\n (options.watch || (options.watch = {}))[prop] = function (newVal) {\n this.ej2Instances[prop] = newVal;\n if (this.dataBind && (options.name !== 'DateRangePickerComponent')) {\n this.dataBind();\n }\n };\n };\n for (var _i = 0, _a = options.props; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n }\n Object.getOwnPropertyNames(proto).forEach(function (key) {\n // hooks\n if (key === 'constructor') {\n return;\n }\n if ($internalHooks.indexOf(key) > -1) {\n options[key] = proto[key];\n return;\n }\n var descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (typeof descriptor.value === 'function') {\n // methods\n (options.methods || (options.methods = {}))[key] = descriptor.value;\n }\n else if (descriptor.get || descriptor.set) {\n // computed properties\n (options.computed || (options.computed = {}))[key] = {\n get: descriptor.get,\n set: descriptor.set\n };\n }\n });\n Object.getOwnPropertyNames(ComponentBase.prototype).forEach(function (key) {\n if ($internalHooks.indexOf(key) > -1) {\n options[key] = proto[key];\n return;\n }\n });\n (options.mixins || (options.mixins = [])).push({\n data: function () {\n return collectDataFromConstructor(this, Component);\n }\n });\n // decorate options\n var decorators = Component.__decorators__;\n if (decorators) {\n decorators.forEach(Function(options));\n delete Component.__decorators__;\n }\n // find super\n var superProto = Object.getPrototypeOf(Component.prototype);\n var Super = superProto instanceof Vue\n ? superProto.constructor\n : Vue;\n var Extended = Super.extend(options);\n return Extended;\n}\nfunction collectDataFromConstructor(vm, Component) {\n Component.prototype._init = function () {\n var _this = this;\n var keys = Object.getOwnPropertyNames(vm);\n if (vm.$options.props) {\n for (var key in vm.$options.props) {\n if (!vm.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n }\n keys.forEach(function (key) {\n if (key.charAt(0) !== '_') {\n Object.defineProperty(_this, key, {\n get: function () { return vm[key]; },\n set: function (value) { return vm[key] = value; }\n });\n }\n });\n };\n var data = new Component();\n var plainData = {};\n Object.keys(data).forEach(function (key) {\n if (data[key] !== undefined) {\n plainData[key] = data[key];\n }\n });\n return plainData;\n}\n","import Vue from 'vue';\nimport { setTemplateEngine, getTemplateEngine, getUniqueID, createElement, detach, extend, getValue } from \"@syncfusion/ej2-base\";\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n var that = this;\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, context) {\n var pid = getUniqueID('templateParentDiv');\n var id = getUniqueID('templateDiv');\n var ele = createElement('div', { id: pid, innerHTML: '
' });\n document.body.appendChild(ele);\n var tempObj = templateElement.call(that, {});\n var returnEle;\n if (context) {\n var templateFunction = tempObj.template;\n var propsData = getValue('template.propsData', tempObj);\n var dataObj = { 'data': { data: extend(tempObj.data || {}, data) }, parent: context.vueInstance };\n if (propsData) {\n templateFunction = tempObj.template.extends;\n dataObj.propsData = propsData;\n }\n if (typeof templateFunction !== 'function') {\n templateFunction = Vue.extend(templateFunction);\n }\n var templateVue = new templateFunction(dataObj);\n //let templateVue: any = new Vue(tempObj.template);\n //templateVue.$data.data = extend(tempObj.data, data);\n templateVue.$mount('#' + id);\n returnEle = ele.childNodes;\n detach(ele);\n }\n return returnEle || [];\n };\n }\n}\nsetTemplateEngine({ compile: compile });\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.prototype.render = function () {\n return;\n };\n ColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnsDirective);\n return ColumnsDirective;\n}(Vue));\nexport { ColumnsDirective };\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 */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.prototype.render = function () {\n return;\n };\n ColumnDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnDirective);\n return ColumnDirective;\n}(Vue));\nexport { ColumnDirective };\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AggregateColumnsDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnsDirective, _super);\n function AggregateColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnsDirective.prototype.render = function () {\n return;\n };\n AggregateColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnsDirective);\n return AggregateColumnsDirective;\n}(Vue));\nexport { AggregateColumnsDirective };\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 */\nvar AggregateColumnDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnDirective, _super);\n function AggregateColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnDirective.prototype.render = function () {\n return;\n };\n AggregateColumnDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnDirective);\n return AggregateColumnDirective;\n}(Vue));\nexport { AggregateColumnDirective };\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AggregatesDirective = /** @class */ (function (_super) {\n __extends(AggregatesDirective, _super);\n function AggregatesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregatesDirective.prototype.render = function () {\n return;\n };\n AggregatesDirective = __decorate([\n EJComponentDecorator({})\n ], AggregatesDirective);\n return AggregatesDirective;\n}(Vue));\nexport { AggregatesDirective };\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 */\nvar AggregateDirective = /** @class */ (function (_super) {\n __extends(AggregateDirective, _super);\n function AggregateDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateDirective.prototype.render = function () {\n return;\n };\n AggregateDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateDirective);\n return AggregateDirective;\n}(Vue));\nexport { AggregateDirective };\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Grid } from '@syncfusion/ej2-grids';\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 = ['aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'currencyCode', 'currentAction', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableVirtualization', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', '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', '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'];\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = true;\n _this.tagMapper = { \"e-columns\": \"e-column\", \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } };\n _this.tagNameMapper = {};\n _this.ej2Instances = new Grid({});\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 return _this;\n }\n GridComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n GridComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n GridComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n GridComponent.prototype.addRecord = function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n };\n GridComponent.prototype.autoFitColumns = function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n };\n GridComponent.prototype.batchAsyncUpdate = function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n };\n GridComponent.prototype.batchUpdate = function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n };\n GridComponent.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n };\n GridComponent.prototype.clearCellSelection = function () {\n return this.ej2Instances.clearCellSelection();\n };\n GridComponent.prototype.clearFiltering = function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n };\n GridComponent.prototype.clearGrouping = function () {\n return this.ej2Instances.clearGrouping();\n };\n GridComponent.prototype.clearRowSelection = function () {\n return this.ej2Instances.clearRowSelection();\n };\n GridComponent.prototype.clearSelection = function () {\n return this.ej2Instances.clearSelection();\n };\n GridComponent.prototype.clearSorting = function () {\n return this.ej2Instances.clearSorting();\n };\n GridComponent.prototype.closeEdit = function () {\n return this.ej2Instances.closeEdit();\n };\n GridComponent.prototype.copy = function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n };\n GridComponent.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.dataReady = function () {\n return this.ej2Instances.dataReady();\n };\n GridComponent.prototype.deleteRecord = function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n };\n GridComponent.prototype.deleteRow = function (tr) {\n return this.ej2Instances.deleteRow(tr);\n };\n GridComponent.prototype.destroyTemplate = function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n };\n GridComponent.prototype.detailCollapseAll = function () {\n return this.ej2Instances.detailCollapseAll();\n };\n GridComponent.prototype.detailExpandAll = function () {\n return this.ej2Instances.detailExpandAll();\n };\n GridComponent.prototype.editCell = function (index, field) {\n return this.ej2Instances.editCell(index, field);\n };\n GridComponent.prototype.enableToolbarItems = function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n };\n GridComponent.prototype.endEdit = function () {\n return this.ej2Instances.endEdit();\n };\n GridComponent.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.extendRequiredModules = function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n };\n GridComponent.prototype.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 GridComponent.prototype.getBatchChanges = function () {\n return this.ej2Instances.getBatchChanges();\n };\n GridComponent.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getColumnByField = function (field) {\n return this.ej2Instances.getColumnByField(field);\n };\n GridComponent.prototype.getColumnByUid = function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n };\n GridComponent.prototype.getColumnFieldNames = function () {\n return this.ej2Instances.getColumnFieldNames();\n };\n GridComponent.prototype.getColumnHeaderByField = function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n };\n GridComponent.prototype.getColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getColumnHeaderByUid = function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n };\n GridComponent.prototype.getColumnIndexByField = function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n };\n GridComponent.prototype.getColumnIndexByUid = function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n };\n GridComponent.prototype.getColumns = function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n };\n GridComponent.prototype.getContent = function () {\n return this.ej2Instances.getContent();\n };\n GridComponent.prototype.getContentTable = function () {\n return this.ej2Instances.getContentTable();\n };\n GridComponent.prototype.getCurrentViewRecords = function () {\n return this.ej2Instances.getCurrentViewRecords();\n };\n GridComponent.prototype.getDataModule = function () {\n return this.ej2Instances.getDataModule();\n };\n GridComponent.prototype.getDataRows = function () {\n return this.ej2Instances.getDataRows();\n };\n GridComponent.prototype.getFilterUIInfo = function () {\n return this.ej2Instances.getFilterUIInfo();\n };\n GridComponent.prototype.getFilteredRecords = function () {\n return this.ej2Instances.getFilteredRecords();\n };\n GridComponent.prototype.getFooterContent = function () {\n return this.ej2Instances.getFooterContent();\n };\n GridComponent.prototype.getFooterContentTable = function () {\n return this.ej2Instances.getFooterContentTable();\n };\n GridComponent.prototype.getForeignKeyColumns = function () {\n return this.ej2Instances.getForeignKeyColumns();\n };\n GridComponent.prototype.getFrozenDataRows = function () {\n return this.ej2Instances.getFrozenDataRows();\n };\n GridComponent.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenLeftCount = function () {\n return this.ej2Instances.getFrozenLeftCount();\n };\n GridComponent.prototype.getFrozenMode = function () {\n return this.ej2Instances.getFrozenMode();\n };\n GridComponent.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenRightDataRows = function () {\n return this.ej2Instances.getFrozenRightDataRows();\n };\n GridComponent.prototype.getFrozenRightRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n };\n GridComponent.prototype.getFrozenRightRows = function () {\n return this.ej2Instances.getFrozenRightRows();\n };\n GridComponent.prototype.getFrozenRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n };\n GridComponent.prototype.getHeaderContent = function () {\n return this.ej2Instances.getHeaderContent();\n };\n GridComponent.prototype.getHeaderTable = function () {\n return this.ej2Instances.getHeaderTable();\n };\n GridComponent.prototype.getHiddenColumns = function () {\n return this.ej2Instances.getHiddenColumns();\n };\n GridComponent.prototype.getMediaColumns = function () {\n return this.ej2Instances.getMediaColumns();\n };\n GridComponent.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getMovableDataRows = function () {\n return this.ej2Instances.getMovableDataRows();\n };\n GridComponent.prototype.getMovableRowByIndex = function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n };\n GridComponent.prototype.getMovableRows = function () {\n return this.ej2Instances.getMovableRows();\n };\n GridComponent.prototype.getPager = function () {\n return this.ej2Instances.getPager();\n };\n GridComponent.prototype.getPrimaryKeyFieldNames = function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n };\n GridComponent.prototype.getRowByIndex = function (index) {\n return this.ej2Instances.getRowByIndex(index);\n };\n GridComponent.prototype.getRowIndexByPrimaryKey = function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n };\n GridComponent.prototype.getRowInfo = function (target) {\n return this.ej2Instances.getRowInfo(target);\n };\n GridComponent.prototype.getRows = function () {\n return this.ej2Instances.getRows();\n };\n GridComponent.prototype.getSelectedColumnsUid = function () {\n return this.ej2Instances.getSelectedColumnsUid();\n };\n GridComponent.prototype.getSelectedRecords = function () {\n return this.ej2Instances.getSelectedRecords();\n };\n GridComponent.prototype.getSelectedRowCellIndexes = function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n };\n GridComponent.prototype.getSelectedRowIndexes = function () {\n return this.ej2Instances.getSelectedRowIndexes();\n };\n GridComponent.prototype.getSelectedRows = function () {\n return this.ej2Instances.getSelectedRows();\n };\n GridComponent.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n };\n GridComponent.prototype.getUidByColumnField = function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n };\n GridComponent.prototype.getVisibleColumns = function () {\n return this.ej2Instances.getVisibleColumns();\n };\n GridComponent.prototype.goToPage = function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n };\n GridComponent.prototype.groupCollapseAll = function () {\n return this.ej2Instances.groupCollapseAll();\n };\n GridComponent.prototype.groupColumn = function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n };\n GridComponent.prototype.groupExpandAll = function () {\n return this.ej2Instances.groupExpandAll();\n };\n GridComponent.prototype.hideColumns = function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n };\n GridComponent.prototype.hideScroll = function () {\n return this.ej2Instances.hideScroll();\n };\n GridComponent.prototype.hideSpinner = function () {\n return this.ej2Instances.hideSpinner();\n };\n GridComponent.prototype.isFrozenGrid = function () {\n return this.ej2Instances.isFrozenGrid();\n };\n GridComponent.prototype.openColumnChooser = function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n };\n GridComponent.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n GridComponent.prototype.print = function () {\n return this.ej2Instances.print();\n };\n GridComponent.prototype.refresh = function () {\n return this.ej2Instances.refresh();\n };\n GridComponent.prototype.refreshColumns = function () {\n return this.ej2Instances.refreshColumns();\n };\n GridComponent.prototype.refreshHeader = function () {\n return this.ej2Instances.refreshHeader();\n };\n GridComponent.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n };\n GridComponent.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n };\n GridComponent.prototype.reorderColumns = function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n };\n GridComponent.prototype.reorderRows = function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n };\n GridComponent.prototype.saveCell = function () {\n return this.ej2Instances.saveCell();\n };\n GridComponent.prototype.search = function (searchString) {\n return this.ej2Instances.search(searchString);\n };\n GridComponent.prototype.selectCell = function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n };\n GridComponent.prototype.selectCells = function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n };\n GridComponent.prototype.selectCellsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.selectRow = function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n };\n GridComponent.prototype.selectRows = function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n };\n GridComponent.prototype.selectRowsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.serverExcelExport = function (url) {\n return this.ej2Instances.serverExcelExport(url);\n };\n GridComponent.prototype.serverPdfExport = function (url) {\n return this.ej2Instances.serverPdfExport(url);\n };\n GridComponent.prototype.setCellValue = function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n };\n GridComponent.prototype.setGridContent = function (element) {\n return this.ej2Instances.setGridContent(element);\n };\n GridComponent.prototype.setGridContentTable = function (element) {\n return this.ej2Instances.setGridContentTable(element);\n };\n GridComponent.prototype.setGridHeaderContent = function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n };\n GridComponent.prototype.setGridHeaderTable = function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n };\n GridComponent.prototype.setGridPager = function (element) {\n return this.ej2Instances.setGridPager(element);\n };\n GridComponent.prototype.setRowData = function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n };\n GridComponent.prototype.showColumns = function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n };\n GridComponent.prototype.showSpinner = function () {\n return this.ej2Instances.showSpinner();\n };\n GridComponent.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n };\n GridComponent.prototype.startEdit = function () {\n return this.ej2Instances.startEdit();\n };\n GridComponent.prototype.ungroupColumn = function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n };\n GridComponent.prototype.updateCell = function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n };\n GridComponent.prototype.updateExternalMessage = function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n };\n GridComponent.prototype.updateRow = function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n };\n GridComponent.prototype.updateRowValue = function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n };\n GridComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], GridComponent);\n return GridComponent;\n}(ComponentBase));\nexport { GridComponent };\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(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, isBlazor } 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 } from '../base/util';\n/**\n * FocusStrategy class\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = 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.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function () {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n var added = 'addedRecords';\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[added].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) {\n this.focus();\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\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 if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.e-gridcontent'));\n var isHeader = !isNullOrUndefined(closest(e.target, '.e-gridheader'));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.e-frozencontent')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozenheader'));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader')) ||\n e.target.classList.contains('e-content') ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-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, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.skipOn(e)) {\n return;\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 this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\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 (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\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 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 ||\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, '.e-gridcontent') === null && closest(target, '.e-gridheader') === null)\n || (e.action === 'space' && (!target.classList.contains('e-gridchkbox') && closest(target, '.e-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 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 // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll) {\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = 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, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : 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 {\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 FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\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 /** @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /** @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\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);\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 && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : 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 var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject();\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === 'Left-Right') {\n var frRows = _this.parent.getFrozenRightRowsObject();\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging') {\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 };\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, '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.parent.on(event.keyPressed, this.onKeyPress, this);\n this.parent.on(event.click, this.onClick, this);\n this.parent.on(event.contentReady, this.refMatrix, this);\n this.parent.on(event.partialRefresh, this.refMatrix, this);\n this.parent.on(event.refreshExpandandCollapse, this.refMatrix, this);\n this.parent.on(event.headerRefreshed, this.refreshMatrix(), this);\n this.parent.on('close-edit', this.restoreFocus, this);\n this.parent.on('restore-Focus', this.restoreFocus, this);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.on(evts[i], this.clearIndicator, this);\n }\n this.parent.on('sorting-complete', this.restoreFocus, this);\n this.parent.on('filtering-complete', this.filterfocus, this);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction, this);\n }\n this.parent.on(event.batchAdd, this.refMatrix, this);\n this.parent.on(event.batchCancel, this.refMatrix, this);\n this.parent.on(event.batchDelete, this.refMatrix, this);\n this.parent.on(event.detailDataBound, this.refMatrix, this);\n this.parent.on(event.onEmpty, this.refMatrix, this);\n this.parent.on(event.cellFocused, this.internalCellFocus, 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, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n this.parent.off(event.keyPressed, this.onKeyPress);\n this.parent.off(event.click, this.onClick);\n this.parent.off(event.contentReady, this.refMatrix);\n this.parent.off(event.partialRefresh, this.refMatrix);\n this.parent.off(event.refreshExpandandCollapse, this.refMatrix);\n this.parent.off(event.headerRefreshed, this.refreshMatrix());\n this.parent.off('close-edit', this.restoreFocus);\n this.parent.off('restore-focus', this.restoreFocus);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.off(evts[i], this.clearOutline);\n }\n this.parent.off('sorting-complete', this.restoreFocus);\n this.parent.off('filtering-complete', this.filterfocus);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction);\n }\n this.parent.off(event.batchAdd, this.refMatrix);\n this.parent.off(event.batchDelete, this.refMatrix);\n this.parent.off(event.batchCancel, this.refMatrix);\n this.parent.off(event.detailDataBound, this.refMatrix);\n this.parent.off(event.onEmpty, this.refMatrix);\n this.parent.off(event.cellFocused, this.internalCellFocus);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\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 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 var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\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: _this.parent.isFrozenGrid() }); },\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, swap.toFrozen);\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') || e.parent.classList.contains('e-templatecell')))) {\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 * @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[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = 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[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[rowIndex], 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[i].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current[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[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[index]) ? 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[rowIndex].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[i].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (var j = 0; j < cells.length; j++) {\n this.set(i, j, rows[i].visible === false ? false : selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\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.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, 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 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())) {\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[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[rowIndex].querySelectorAll('.e-indentcell').length +\n this.getTable().rows[rowIndex].querySelectorAll('.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('e-rowcell') && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\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 var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\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 target = (target.classList.contains('e-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('e-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, 'e-rowcell') && !parentsUntil(e.target, 'e-groupcaption'))) {\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[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : 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.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 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 ? 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.column && 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[index].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[index].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 var frozenSwap = this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n var right = ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns);\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\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 frozenSwap = this.parent.isFrozenGrid();\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\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 = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains('e-row')) {\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\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 (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right' && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n }\n else 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('e-rowcell');\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute('aria-rowindex'), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute('aria-colindex'), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\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[rowIndex])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains('e-rowcell');\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains('e-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('e-rowcell') && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return !isBlazor() && 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.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.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('e-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[rowIndex].cells[cellIndex];\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 cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && current[1] === 0;\n var right = (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && current[1] === this.matrix.columns;\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\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 if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right'\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else 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 for (var i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\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 return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0);\n return { swap: swap, toHeader: toHeader, toFrozen: toHeader };\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: toHeader,\n toFrozen: toHeader\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frSwap, toFrozen: toFrozen };\n }\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n /** @hidden */\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n };\n SearchBox.prototype.searchBlur = function (args) {\n args.target.parentElement.classList.remove('e-input-focus');\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 };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0),\n toHeader: toHeader,\n toFrozenRight: toHeader\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frozenSwap, toFrozenRight: toFrozen };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = 0;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\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 { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n Popup.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 setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n */\n Popup.prototype.destroy = function () {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n */\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var display = this.element.style.display;\n var parentDisplay = void 0;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n * @param { AnimationModel | Function } collisionOrAnimationOptions? - To pass animation options or collision function.\n * @param { Function } collision? - To pass the collision function.\n * @param { HTMLElement } relativeElement? - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n * @param { AnimationModel } animationOptions? - To give the animation options.\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @private\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n //Body direct children element traversal\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n // Checking the max-zindex value\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\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 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 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 setCustomFilterHeader = 'set-custom-filter-header';\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 refreshVirtualCacheOnRowDD = 'refresh-Virtual-Cache-On-RowDD';\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","import { Droppable, isBlazor, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate, removeClass } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\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 { getScrollBarWidth, isGroupAdaptive } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\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.viewColIndexes = [];\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 this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n this.mutableData = false;\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var mContentRows = [].slice.call(_this.parent.getMovableVirtualContent().querySelectorAll('.e-row'));\n var fContentRows = [].slice.call(_this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n _this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().querySelectorAll('.e-row'));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().querySelectorAll('.e-row'));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.e-content'), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.isLoaded) {\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 (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.ariaService = this.serviceLocator.getService('ariaService');\n this.mutableData = 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 ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.e-gridcontent');\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.e-content'), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: 'e-gridcontent' });\n var innerDiv = this.parent.createElement('div', {\n className: 'e-content'\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\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 && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.e-table'));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n * @return {Element}\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (!isBlazor()) {\n if (this.getTable()) {\n remove(this.getTable());\n }\n }\n var table = innerDiv.querySelector('.e-table') ? innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement('tbody'));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n * @return {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 var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.e-frozencontent');\n var mCont = this.getPanel().querySelector('.e-movablecontent');\n var cont = this.getPanel().querySelector('.e-content');\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n modelData = this.generator.generateRows(dataSource, args);\n if (this.parent.enableVirtualization) {\n this.prevInfo = this.prevInfo ? this.prevInfo : args.virtualInfo;\n this.prevInfo = args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== args.virtualInfo.page ? this.currentInfo : args.virtualInfo;\n }\n this.rows = modelData;\n this.freezeRows = modelData;\n this.rowElements = [].slice.call(this.getTable().querySelectorAll('tr.e-row[data-uid]'));\n if (frzCols) {\n this.movableRows = modelData.map(function (mRow) {\n var sRow = new Row(mRow);\n sRow.cells = mRow.cells.slice(frzCols, mRow.cells.length);\n mRow.cells = mRow.cells.slice(0, frzCols);\n return sRow;\n });\n this.freezeRowElements = this.rowElements;\n }\n this.isLoaded = true;\n this.parent.hideSpinner();\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n var arg = extend({ rows: this.rows }, args);\n if (this.getTable().querySelector('.e-emptyrow')) {\n remove(this.getTable().querySelector('.e-emptyrow'));\n if (!isNullOrUndefined(this.getTable().querySelectorAll('.e-table > tbody')[1])) {\n remove(this.getTable().querySelectorAll('.e-table > tbody')[1]);\n }\n }\n this.parent.notify('contentcolgroup', {});\n this.rafCallback(arg)();\n if (frzCols) {\n cont.style.overflowY = 'hidden';\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n this.parent.notify(events.contentReady, { rows: this.movableRows, args: extend({}, arg, { isFrozen: false }) });\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection && !this.parent.enableVirtualization)) {\n var rowIndex = 'editRowIndex';\n if (this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(args[rowIndex])) {\n this.parent.selectRow(args[rowIndex]);\n }\n }\n if (this.parent.enableVirtualization && !this.parent.getHeaderContent().querySelectorAll('.e-check').length) {\n var removeClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected'); })\n .map(function (y) { return y.getAttribute('data-uid'); });\n var addClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected') === null; })\n .map(function (y) { return y.getAttribute('data-uid'); });\n for (var i = 0; i < removeClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(removeClassByUid[i])) &&\n !this.parent.getRowObjectFromUID(removeClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(removeClassByUid[i]).removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check'))) {\n removeClass([this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(removeClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(removeClassByUid[i])\n .children[j].classList.remove('e-selectionbackground', 'e-active');\n }\n }\n }\n for (var i = 0; i < addClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(addClassByUid[i]))\n && this.parent.getRowObjectFromUID(addClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(addClassByUid[i]).setAttribute('aria-selected', 'true');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame'))) {\n addClass([this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(addClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(addClassByUid[i])\n .children[j].classList.add('e-selectionbackground', 'e-active');\n }\n }\n }\n }\n return;\n }\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === 'Left-Right' && tableName === 'frozen-right';\n /* tslint:disable:no-any */\n if (args.requestType !== 'infiniteScroll' && 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 /* tslint:enable:no-any */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.isReact && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n this.parent.destroyTemplate(['columnTemplate', 'rowTemplate', 'detailTemplate', 'captionTemplate', 'commandsTemplate']);\n this.parent.renderTemplates();\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector('tbody');\n }\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[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\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 && !gObj.isFrozenGrid() && 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[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\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 for (var i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.setRowsInLazyGroup(modelData[i], i);\n if (isNullOrUndefined(modelData[i].indent)) {\n continue;\n }\n }\n this.setInfiniteVisibleRows(args, modelData[i], tableName);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n var isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].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[i]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n gObj.renderTemplates();\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].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[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\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 = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector('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 }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n if (!isBlazor() || this.parent.isJsComponent) {\n args.rows = this.rows.slice(0);\n }\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(tbdy);\n tbdy = _this.parent.createElement('tbody');\n }\n else {\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement('tbody');\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector('tbody'), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector('tbody'), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\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 if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'frozen-right'))\n || (gObj.getFrozenMode() === 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\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 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 };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\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 var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\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 &&\n (args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && this.parent.contentModule.getGroupCache()[this.parent.pageSettings.currentPage]) {\n this.useGroupCache = true;\n return this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === 'frozen-left' || (this.parent.getFrozenMode() === 'Right' && tableName === 'frozen-right')) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute('aria-rowindex'), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n var last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\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 }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\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 = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\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 = !frozenCols ? rows.concat(this.infiniteCache[keys[i]]) : rows.concat(this.infiniteCache[keys[i]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : 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 * @return {Element}\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n * @param {Element} panel\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n * @return {Element}\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n * @param {Element} table\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Row collection in the Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {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 * @param {Column[]} columns?\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === 'Left-Right') {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n var rightLen = rightRows.length ? rightRows[i].cells.length : 0;\n row = fRows[i].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[i].cells[k]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var element;\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var tasks = [];\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[c];\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 if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === 'frozen-right') {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('colgroup');\n setStyleAttribute(colG.childNodes[idx], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('colgroup');\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\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 if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (this.parent.isRowDragable()) {\n var index = this.parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[i]].cells[index].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\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(true) : 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 = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return isBlazor() ? this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true) :\n this.parent.element.querySelector('.e-gridheader').querySelector('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[index].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 if (isBlazor() && !this.parent.isJsComponent && this.parent.frozenRows) {\n return;\n }\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('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 isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n var cells = row[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute('aria-rowindex'), 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.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[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 /** @hidden */\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('tbody');\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector('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[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[i][key]] = oldKeys[this.prevCurrentView[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldKeys[this.prevCurrentView[i][key]] = i;\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[i][key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.mutableData) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[i], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[i] && this.rowElements[i].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[i] === dataSource[i])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!this.mutableData && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.mutableData && !isEqual)) {\n oldRowObjs[oldIndex].setRowValue(dataSource[i]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var modelData = this.generator.generateRows([dataSource[i]]);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector('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 /** @hidden */\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[i]] !== next[keys[i]]) {\n isEqual = false;\n break;\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[i][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 row.isAltRow ? tr.classList.add('e-altrow') : tr.classList.remove('e-altrow');\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute('aria-rowindex', index.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[i].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\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 { isNullOrUndefined, extend, setValue, isBlazor } 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 * @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.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.getGroupedRecords(0, data[i], 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 isRenderCaption = this.isInfiniteScroll && this.prevKey === data.key;\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[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\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) {\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[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\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 /** @hidden */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var tmp = [];\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 = isBlazor() && this.parent.isServerRendered ? this.parent.getRowUid('grid-row') : 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 /** @hidden */\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[i] = this.generateRow(data[i], 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[i].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[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (var j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// tslint:disable-next-line\nvar proxy;\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// tslint:disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var containerRectValues;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\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, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /**\n * Constructor for creating the widget\n * @hidden\n */\n function Dialog(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = this.minHeight.toString();\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n ;\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && typeof (this.buttons[i].click) === 'function' && footerBtn.length > 0) {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n this.btnObj[i].element.classList.add('e-flat');\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.setContent = function () {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /**\n * @hidden\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\!?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.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 Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msMatchesSelector : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n * @private\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n * @method destroy\n * @return {void}\n * @memberof dialog\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n * @return {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @return {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n * @return {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n !isNullOrUndefined(_this.targetEle) ? removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n if (args) {\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n * @param { number } index - Index of the button.\n * @return {Button}\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n function alert(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n function confirm(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } 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, isBlazor, Browser, 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';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n * @param {Object} target\n * @param {string} checkFor\n * @returns no\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n /* tslint:disable:no-any */\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n * @param {string} field\n * @param {Object} data\n * @param {IColumn} column\n * @hidden\n */\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 * @param {string} field\n * @param {IColumn} column\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 * @param {Function} fn - Function that contains the actual action\n * @return {Promise}\n * @hidden\n */\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 */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\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[i].columns) {\n for (var j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\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[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\n/**\n * @hidden\n */\nvar count = 0;\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][i];\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 * @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][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\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[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/** @hidden */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/** @hidden */\nexport function templateCompiler(template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/** @hidden */\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/** @hidden */\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[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/** @hidden */\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[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/** @hidden */\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[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c], gObj);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns, null, gObj);\n column = new Column(columns[c], gObj);\n }\n }\n else {\n column = columns[c];\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[c] = column;\n }\n return columns;\n}\n/** @hidden */\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 var isBottomTail;\n popUpSpan.className = className;\n popUp.style.display = '';\n 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/** @hidden */\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/** @hidden */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/** @hidden */\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/** @hidden */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/** @hidden */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/** @hidden */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/** @hidden */\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[i]);\n }\n}\n/** @hidden */\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/** @hidden */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/** @hidden */\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[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/** @hidden */\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/** @hidden */\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 */\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/** @hidden */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\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/** @hidden */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\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/** @hidden */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/** @hidden */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/** @hidden */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/** @hidden */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, 'e-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/** @hidden */\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) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/** @hidden */\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 action ? elem[i].classList.add(clName) : elem[i].classList.remove(clName);\n }\n}\n/** @hidden */\nexport function setFormatter(serviceLocator, column, isServerRendered) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n var isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\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 '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/** @hidden */\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[i], args.slice(), []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], args.slice());\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/** @hidden */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/** @hidden */\nexport function getFilterMenuPostion(target, dialogObj, grid) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos;\n 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/** @hidden */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/** @hidden */\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/** @hidden */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/** @hidden */\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/** @hidden */\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 * @param row - Grid Row model object.\n * @param columns - Foreign columns array.\n * @param data - Updated Row data.\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n * @param column - Foreign Key column\n * @param data - Row data.\n * @param lValue - cell value.\n * @param foreignData - foreign data source.\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 * @param foreignKeyValue - Defines ForeignKeyValue.\n * @param columns - Array of column object.\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 * @hidden\n * @param filterObject - Defines predicate model object\n */\nexport function getDatePredicate(filterObject, type) {\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)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\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 (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 if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @hidden\n */\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[i]];\n }\n return value;\n }\n}\n/**\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 isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, 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 isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\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 obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\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 var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\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(isFrozen ? gObj.getColumns() : gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\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 if (!arguments[i]) {\n continue;\n }\n var obj1 = arguments[i];\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[i_1]];\n var cpy = obj1[keys[i_1]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i_1]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i_1]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i_1]] = cpy;\n }\n }\n }\n return res;\n}\n/**\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 * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\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[i] = checkDepth(col.columns[i], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\nexport var Global;\n(function (Global) {\n Global.timer = null;\n})(Global || (Global = {}));\n/**\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/** @hidden */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/** @hidden */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.e-row').getBoundingClientRect().height;\n var fHeight = closest(fTD, '.e-row').getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/** @hidden */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/** @hidden */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/** @hidden */\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/** @hidden */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/** @hidden */\nexport function eventPromise(args, query) {\n var state;\n 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/** @hidden */\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/** @hidden */\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[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/** @hidden */\nexport function resetRowIndex(gObj, rows, rowElms, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDataRow) {\n rows[i].index = startIndex;\n rows[i].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[i].setAttribute('aria-rowindex', startIndex.toString());\n rows[i].isAltRow ? rowElms[i].classList.add('e-altrow') : rowElms[i].classList.remove('e-altrow');\n for (var j = 0; j < rowElms[i].cells.length; j++) {\n rowElms[i].cells[j].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/** @hidden */\nexport function resetRowObjectIndex(gObj, rows, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n startIndex++;\n }\n}\n/** @hidden */\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/** @hidden */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === 'Left-Right' ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === 'Left-Right') {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/** @hidden */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === 'frozen-left') {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === 'frozen-right') {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n rowObj ? callBack('frozen-left', rows[0], rowObj[0]) : callBack('frozen-left', rows[0]);\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n rowObj ? callBack('movable', rows[1], rowObj[1]) : callBack('movable', rows[1]);\n }\n if ((gObj.getFrozenMode() === 'Left-Right' || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n rowObj ? callBack('frozen-right', rows[2], rowObj[2]) : callBack('frozen-right', rows[2]);\n }\n}\n/** @hidden */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/** @hidden */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/** @hidden */\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[k]);\n k--;\n }\n}\n/** @hidden */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n}\n/** @hidden */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === 'frozen-right'\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/** @hidden */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len) {\n if (col.getFreezeTableName() === 'frozen-left' || (!index && col.getFreezeTableName() === 'frozen-right') || 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() === 'frozen-right') {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n}\n/** @hidden */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/** @hidden */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === 'Left-Right') {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/** @hidden */\nexport function getNumberFormat(numberFormat, type, isExcel) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: this.currency, 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 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 return mtch_1[pattern];\n });\n }\n return format;\n}\n/** @hidden */\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[i].classList.add('e-bigger');\n }\n }\n}\n/** @hidden */\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[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\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[i].cellType || CellType.Data);\n var colSpan = row.cells[i].cellSpan ? row.cells[i].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 cells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ? this.parent.getRowsObject()[row.index].cells :\n this.parent.getRowsObject()[row.index - 1].cells;\n var targetCell_1 = row.cells[i];\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[j].visible === false) {\n visible++;\n }\n else {\n row.cells[j].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[j].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[i].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[i].spanText;\n td = cellRenderer.render(row.cells[i], 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[i].isRowSpanned = true;\n row.cells[i].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[i].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[i].isSpanned = true;\n row.cells[i].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[i].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[i].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 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 { 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) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\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[i];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[startIndex]) {\n options.isExpand = gObj.expandedRows[startIndex].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[i].dataSource) ?\n new DataManager(fColumns[i].dataSource.result) :\n fColumns[i].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[j].field] = e[j].result;\n }\n // tslint:disable-next-line:no-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[i] = new Row({});\n rows[i].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[i].commands) {\n rows = this.appendGridCells(columns[i], 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[index].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[index].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[i].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[i], 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; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[i].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[i], 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 // tslint:disable-next-line:no-any\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 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[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\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 /* tslint:disable-next-line:no-any */\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 /* tslint:disable-next-line:no-any */\n ExportValueFormatter.prototype.formatCellValue = function (args, isServerBlaz) {\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 return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat({ format: 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 === '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') {\n format = isServerBlaz ? { type: 'date', format: cFormat } : { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = isServerBlaz ? { type: 'time', format: cFormat } : { type: 'time', skeleton: cFormat };\n }\n else {\n format = isServerBlaz ? { type: 'dateTime', format: cFormat } : { 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 /* tslint:disable-next-line:max-line-length */\n var customFormat = void 0;\n if (args.column.type === 'date') {\n /* tslint:disable-next-line:max-line-length */\n customFormat = { type: args.column.format.type, format: args.column.format.format, skeleton: args.column.format.skeleton };\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","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 * @param options - Specifies HScroll model properties as options.\n * @param 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 * @private\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 * @private\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 * @returns string\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 * @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 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 * @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 value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\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 nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\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 navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\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 element = this.scrollEle;\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 var scrlLeft = element.scrollLeft;\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 };\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;\n 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 {\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 if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\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 * @param {HScrollModel} newProp\n * @param {HScrollModel} oldProp\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","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 * @param options - Specifies VScroll model properties as options.\n * @param 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 * @private\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 * @private\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.overflowY = '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 * @returns string\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 * @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]);\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 * @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 value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\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 () { timeoutFun_1(); }, 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 () { timeoutFun(); }, 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 rootElement = this.element;\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;\n 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 rootEle = this.element;\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 * @param {VScrollModel} newProp\n * @param {VScrollModel} oldProp\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 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 ], 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 { 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 } 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 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 * @param options - Specifies Toolbar model properties as options.\n * @param 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 /**\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 * @returns void.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\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 while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\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', 'aria-haspopup', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n * @private\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 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.element.setAttribute('tabIndex', '0');\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 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) {\n detach(el);\n });\n }\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\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 // tslint:disable-next-line:max-line-length\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 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 var ele = void 0;\n var nodes = void 0;\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n var value = e.action === 'moveUp' ? 'previous' : 'next';\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) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\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 this.element.removeAttribute('tabindex');\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 clst;\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n 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 * @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 value ? rootEle.classList.add(CLS_DISABLE) : rootEle.classList.remove(CLS_DISABLE);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\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 // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\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 };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var clsList = trgt.classList;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\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 ;\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 * @private\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\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', 'aria-haspopup': '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[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n var portals = 'portals';\n // tslint:disable-next-line:no-any\n this.notify('render-react-toolbar-template', this[portals]);\n this.renderReactTemplates();\n }\n };\n /** @hidden */\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 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 * @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 this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var eleInlineItem;\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n 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[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].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 nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\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[index]);\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[i];\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 eleHeight;\n var eleItem;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\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 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 popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\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 this.element.setAttribute('aria-haspopup', 'true');\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 isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\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 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[i];\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 popObj.refreshPosition();\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\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[i]);\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[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\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[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].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', 'list');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\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 var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\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 if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\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 popNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\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 ele.setAttribute('aria-haspopup', 'false');\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 checkOverflow;\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 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[index].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);\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 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 this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\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 this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\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 ele.setAttribute('aria-disabled', 'false');\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[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\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 ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\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[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} 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 */\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[algIndex];\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[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\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[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n // tslint:disable-next-line:no-any\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 * @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 */\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[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = void 0;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(innerItems[index]);\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 val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n var e = void 0;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\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 }\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);\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 item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\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 item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\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 innerEle;\n var dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? 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', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\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.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', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n * @returns 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 // tslint:disable-next-line:no-any\n if (this.isReact) {\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 // tslint:disable-next-line:no-any\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.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 /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\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) && !this.isServerRendered) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var newProperty = Object(newProp.items[index])[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[index].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 // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].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 var wid = tEle.offsetWidth;\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\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 newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\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 * @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 initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\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","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, isBlazor, updateBlazorTemplate, select } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n * The `Toolbar` module is used to handle ToolBar actions.\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\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 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.parent.enableAdaptiveUI ? '' : this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\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.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: this.l10n.getConstant('Columnchooser'), tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right',\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.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon'\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n * @return {Element}\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n * @method destroy\n * @return {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\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 remove(this.element);\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 this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = ' \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getResponsiveToolbarItems(this.getItems());\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this)\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[viewStr]) {\n this.toolbar[registerTemp] = {};\n this.toolbar[viewStr] = this.parent[viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.toolbar.overflowMode = 'Popup';\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (!isBlazor() && typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n if (isBlazor()) {\n var tempID = this.parent.element.id + 'toolbarTemplate';\n var item = appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', tempID));\n var items_1 = this.getItem(item);\n this.toolbar.items.push(items_1);\n this.toolbar.appendTo(this.element);\n updateBlazorTemplate(this.parent.element.id + 'toolbarTemplate', 'ToolbarTemplate', this.parent);\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n }\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n };\n Toolbar.prototype.getResponsiveToolbarItems = function (items) {\n if (this.parent.enableAdaptiveUI) {\n for (var i = 0; i < items.length; i++) {\n items[i].visible = (items[i].id === this.parent.element.id + '_add'\n || items[i].id === this.parent.element.id + '_search' || items[i].id === this.parent.element.id + '_responsivesort'\n || items[i].id === this.parent.element.id + '_responsivefilter');\n }\n }\n return items;\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n var items = this.toolbar.items;\n var initial = ['add', 'search', 'responsivesort', 'responsivefilter'];\n if (this.parent.getSelectedRowIndexes().length) {\n initial.push('edit', 'delete');\n if (this.parent.rowRenderingMode !== 'Vertical') {\n initial.push('update', 'cancel');\n }\n }\n var search = ['responsiveback', 'search'];\n var buttons = action === ResponsiveToolbarAction.isInitial ? initial : search;\n for (var i = 0; i < items.length; i++) {\n var names = items[i].id.split('_');\n var ele = this.element.querySelector('#' + items[i].id);\n if (ele) {\n var parent_1 = parentsUntil(ele, 'e-toolbar-item');\n if (buttons.indexOf(names[1]) > -1) {\n parent_1.classList.remove('e-hidden');\n }\n else {\n parent_1.classList.add('e-hidden');\n }\n }\n }\n return items;\n };\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n edit.allowAdding ? enableItems.push(this.gridID + '_add') : disableItems.push(this.gridID + '_add');\n edit.allowEditing && hasData ? enableItems.push(this.gridID + '_edit') : disableItems.push(this.gridID + '_edit');\n edit.allowDeleting && hasData ? enableItems.push(this.gridID + '_delete') : disableItems.push(this.gridID + '_delete');\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.querySelectorAll('.e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n if (this.parent.enableAdaptiveUI) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\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 * @return {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {\n var item = items_2[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = !isBlazor() || this.parent.isJsComponent ? args : { item: args.item, cancel: args.cancel, name: args.name };\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n break;\n case gID + '_columnchooser':\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case 'copy':\n if (isBlazor()) {\n gObj.copy();\n }\n break;\n case 'copyheader':\n case 'copyHeader':\n if (isBlazor()) {\n gObj.copy(true);\n }\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n };\n Toolbar.prototype.search = function () {\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.reRenderToolbar, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.uiUpdate, this.onPropertyChanged, this);\n this.parent.on(events.inBoundModelChanged, this.updateSearchBox.bind(this));\n this.parent.on(events.modelChanged, this.refreshToolbarItems, this);\n this.parent.on(events.toolbarRefresh, this.refreshToolbarItems, this);\n this.parent.on(events.inBoundModelChanged, this.modelChanged, this);\n this.parent.on(events.dataBound, this.refreshToolbarItems, this);\n this.parent.on(events.click, this.removeResponsiveSearch, this);\n this.parent.on(events.rowModeChange, this.reRenderToolbar, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.reRenderToolbar);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.onPropertyChanged);\n this.parent.off(events.inBoundModelChanged, this.updateSearchBox);\n this.parent.off(events.modelChanged, this.refreshToolbarItems);\n this.parent.off(events.toolbarRefresh, this.refreshToolbarItems);\n this.parent.off(events.inBoundModelChanged, this.modelChanged);\n this.parent.off(events.dataBound, this.refreshToolbarItems);\n this.parent.off(events.click, this.removeResponsiveSearch);\n this.parent.off(events.rowModeChange, this.reRenderToolbar);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n * @return {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[i], sortedCols);\n if (this.columnName === gCols[i]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[i]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @return {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n var column = gObj.getColumnHeaderByField(columnName);\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols; \n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[i]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[i].isFromGroup) {\n this.sortedColumns.push(sortColumns[i].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[i].field);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[i].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, {\n requestType: 'sorting', type: events.actionBegin, target: this.currentTarget\n });\n }\n break;\n }\n }\n this.addSortIcons();\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n return;\n }\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @hidden\n */\n Sort.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.contentReady, this.initialEnd, this);\n this.parent.on(events.sortComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressed, this);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.sortComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressed);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the sorting\n * @return {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.querySelectorAll('.e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n }\n else {\n this.sortColumn(field, direction, e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey));\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = 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 Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (fieldNames.indexOf(cols[i].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, cols[i].direction);\n if (this.isMultiSort && cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[i].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 Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1 &&\n !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[i].field === field) {\n return this.sortSettings.columns[i];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n * @return {void}\n * @hidden\n */\n Sort.prototype.showCustomFilter = function () {\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n * @param {Object} data - To update new data for the particular row.\n * @return {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\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 * @return {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\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 * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\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 { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n * @param {ButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n * @returns void\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n Button.prototype.destroy = function () {\n var span;\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n * @private\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n * @param {ButtonModel} newProp\n * @param {ButtonModel} oldProp\n * @returns void\n * @private\n */\n Button.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 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss':\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\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 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content':\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n * @public\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n * @public\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\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, remove } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { colGroupRefresh, columnWidthChanged, scroll, columnVisibilityChanged, refreshFooterRenderer } from '../base/constant';\nimport { ContentRender } from './content-renderer';\nimport { RowRenderer } from './row-renderer';\nimport { SummaryModelGenerator } from '../services/summary-model-generator';\nimport { renderMovable, calculateAggregate, iterateExtend } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Footer module is used to render grid content\n * @hidden\n */\nvar FooterRenderer = /** @class */ (function (_super) {\n __extends(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: 'e-gridfooter' });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n var movableContent = innerDiv;\n if (this.parent.isFrozenGrid()) {\n var fDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-left-footercontent' });\n var mDiv = this.parent.createElement('div', { className: 'e-movablefootercontent' });\n var frDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-right-footercontent' });\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n innerDiv.appendChild(fDiv);\n this.frozenContent = fDiv;\n }\n innerDiv.appendChild(mDiv);\n this.movableContent = mDiv;\n movableContent = mDiv;\n if (this.parent.getFrozenRightColumnsCount()) {\n innerDiv.appendChild(frDiv);\n this.frozenRightContent = frDiv;\n }\n }\n if (Browser.isDevice) {\n movableContent.style.overflowX = 'scroll';\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n */\n FooterRenderer.prototype.renderTable = function () {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var innerDiv = this.createContentTable('_footer_table');\n var table = innerDiv.querySelector('.e-table');\n var tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n if (this.parent.isFrozenGrid()) {\n var freezeTable = table.cloneNode(true);\n var frTable = table.cloneNode(true);\n if (frzCols) {\n this.frozenContent.appendChild(freezeTable);\n this.freezeTable = freezeTable;\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n remove(frTable.querySelector('colgroup'));\n var hdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCol = (hdr.querySelector('colgroup').cloneNode(true));\n frTable.insertBefore(frCol, frTable.querySelector('tbody'));\n this.frozenRightContent.appendChild(frTable);\n this.frTable = frTable;\n }\n this.movableContent.appendChild(table);\n remove(table.querySelector('colgroup'));\n var colGroup = ((this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n table.insertBefore(colGroup, table.querySelector('tbody'));\n this.setColGroup(colGroup);\n }\n this.setTable(table);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart, cEnd);\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow' });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row = rows[srow];\n if (!row) {\n continue;\n }\n var tr = rowrenderer.render(row, dummies);\n fragment.appendChild(tr);\n }\n table.tFoot.appendChild(fragment);\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (this.parent.isFrozenGrid()) {\n remove(this.getPanel());\n this.renderPanel();\n this.renderTable();\n if (frzCols) {\n this.freezeTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.freezeTable, 0, frzCols);\n }\n }\n this.getTable().tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.getTable(), frzCols, right ? frzCols + movable : undefined);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.frTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.frTable, frzCols + movable, frzCols + movable + right);\n var movableLastCell = [].slice.call(this.getTable().querySelectorAll('.e-lastsummarycell'));\n if (movableLastCell.length) {\n for (var i = 0; i < movableLastCell.length; i++) {\n movableLastCell[i].style.borderRight = '0px';\n }\n }\n }\n // check freeze content have no row case\n if (this.parent.isFrozenGrid()) {\n var movableCnt = [].slice.call(this.parent.element.querySelector('.e-movablefootercontent')\n .querySelectorAll('.e-summaryrow'));\n var frozenCnt = void 0;\n if (frzCols) {\n frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-left-footercontent')\n .querySelectorAll('.e-summaryrow'));\n this.refreshHeight(frozenCnt, movableCnt);\n var frozenDiv = this.frozenContent;\n if (!frozenDiv.offsetHeight) {\n frozenDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (right) {\n var frCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-right-footercontent')\n .querySelectorAll('.e-summaryrow'));\n this.refreshHeight(frCnt, movableCnt);\n if (frozenCnt) {\n this.refreshHeight(frCnt, frozenCnt);\n }\n var frDiv = this.frTable;\n if (!frDiv.offsetHeight) {\n frDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (this.parent.allowResizing) {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshHeight = function (frozenCnt, movableCnt) {\n for (var i = 0; i < frozenCnt.length; i++) {\n var frozenHeight = frozenCnt[i].getBoundingClientRect().height;\n var movableHeight = movableCnt[i].getBoundingClientRect().height;\n if (frozenHeight < movableHeight) {\n frozenCnt[i].classList.remove('e-hide');\n frozenCnt[i].style.height = movableHeight + 'px';\n }\n else if (frozenHeight > movableHeight) {\n movableCnt[i].classList.remove('e-hide');\n movableCnt[i].style.height = frozenHeight + 'px';\n }\n }\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table \n var mheaderCol;\n var fheaderCol = mheaderCol = this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n var isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns(), this.parent);\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector('colGroup'));\n }\n }\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.isFrozenGrid() ? this.parent.getContent().querySelector('.e-movablecontent').scrollLeft :\n this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n var fCol = this.parent.getFrozenColumns();\n fCol = fCol && this.parent.isRowDragable() ? fCol + 1 : fCol;\n if (fCol && fCol > index) {\n return this.freezeTable.querySelector('colGroup').children[index];\n }\n return this.getColGroup().children[index - fCol];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.parent.on(colGroupRefresh, this.refreshCol, this);\n this.parent.on(columnWidthChanged, this.onWidthChange, this);\n this.parent.on(scroll, this.onScroll, this);\n this.parent.on(columnVisibilityChanged, this.columnVisibilityChanged, this);\n this.parent.on(refreshFooterRenderer, this.refreshFooterRenderer, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n this.parent.off(colGroupRefresh, this.refreshCol);\n this.parent.off(columnWidthChanged, this.onWidthChange);\n this.parent.off(scroll, this.onScroll);\n this.parent.off(columnVisibilityChanged, this.columnVisibilityChanged);\n this.parent.off(refreshFooterRenderer, this.refreshFooterRenderer);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[i][key] === data[key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var deletedRecords = 'deletedRecords';\n var currentViewData = this.parent.dataSource instanceof Array ?\n this.parent.dataSource : this.parent.dataSource[gridData].json.length\n ? this.parent.dataSource[gridData].json : this.parent.getCurrentViewRecords();\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n if (batchChanges[changedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[changedRecords]) > -1) {\n isModified = true;\n dataSource.push(batchChanges[changedRecords][this.getIndexByKey(currentViewData[i], batchChanges[changedRecords])]);\n }\n if (batchChanges[deletedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[i]);\n }\n }\n if (batchChanges[addedRecords].length) {\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n dataSource.push(batchChanges[addedRecords][i]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[i].columns.length; j++) {\n var data = [];\n var type = aggregateRows[i].columns[j].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[i].columns[j], this.parent);\n aggregate[aggregateRows[i].columns[j].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\nexport { FooterRenderer };\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, isBlazor } from '@syncfusion/ej2-base';\nimport { appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { refreshAggregateCell } from '../base/constant';\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n * @hidden\n */\nvar SummaryCellRenderer = /** @class */ (function (_super) {\n __extends(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key;\n key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][key] : '';\n };\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n if (isBlazor()) {\n var guid = 'guid';\n tempID = this.parent.element.id + column[guid] + tempObj.property;\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n if (isReactCompiler) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[groupKey] = prop[key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\nexport { SummaryCellRenderer };\n","import { remove, isBlazor, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { uiUpdate, initialEnd, dataReady, modelChanged, refreshAggregates, refreshFooterRenderer, groupAggregates } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[i], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var dataColumn = _this.parent.getColumnByField(column.field) || {};\n var type = dataColumn.type;\n var cFormat = 'customFormat';\n if (!isNullOrUndefined(column[cFormat])) {\n column.setPropertiesSilent({ format: column[cFormat] });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n if (isBlazor() && this.parent.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n var aggregates = 'aggregates';\n var prop = Object.keys(this.parent[bulkChanges]);\n for (var i = 0; i < prop.length; i++) {\n if (prop[i].startsWith(aggregates)) {\n delete this.parent[bulkChanges][prop[i]];\n }\n }\n }\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n remove(this.parent.element.querySelector('.e-gridfooter'));\n };\n Aggregate.prototype.refresh = function (data) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\nexport { Aggregate };\n/**\n * @private\n */\nexport function summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[i].columns.length; j++) {\n callback(aggregates[i].columns[j], aggregates[i]);\n }\n }\n}\n"],"sourceRoot":""}