{"version":3,"sources":["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-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.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/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack:///./src/utils/date-utils.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","Worksheets","_super","apply","arguments","Worksheet","isSummaryRowBelow","showGridLines","enableRtl","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","_this","add","mergeCell","inserted","count","_i","_a","length","mCell","isIntersecting","intersectingCell","x","Math","min","y","Y","width","max","Width","X","height","Height","ref","split","push","base","compare","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","strikeThrough","wrapText","hAlign","vAlign","indent","rotation","numberFormat","type","borders","Borders","isGlobalStyle","Font","sz","name","u","i","color","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","id","code","formatCode","Border","mLine","mColor","lineStyle","left","right","top","bottom","all","Column","Row","Rows","row","Image","Cell","Cells","cell","c","index","Encoding","includeBom","emitBOM","encodingType","initBOM","defineProperty","get","enumerable","configurable","set","value","undefined","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","charCodeAt","getByteCountInternal","codePoint","bytes","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","charCode","high","low","getBytes","s","RangeError","ArrayBuffer","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteLength","out","byteCal","Uint8Array","getStringOfUtf8Encoding","byteUnicode","Uint16Array","getStringofUnicodeEncoding","j","String","fromCharCode","bufview","k","charcode","uint","uint16","byteUni","byte16","destroy","message","Error","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","floor","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","write","data","offset","end","encode","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","len","lastBlock","more","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","distance","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","isClose","array","result","bitReverse","close","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","temp","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pos","pPos","leafsCount","nodesCount","child","values","node","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","path","second","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","Save","save","fileName","extension","substring","lastIndexOf","mimeType","getMimeType","Blob","isMicrosoftBrowser","navigator","msSaveBlob","downloadLink","document","createElementNS","saveInternal","hasDownloadAttribute","download","dataUrl_1","window","URL","createObjectURL","href","event_1","createEvent","initEvent","dispatchEvent","setTimeout","revokeObjectURL","url","isPopupBlocked","open","location","reader_1","FileReader","onloadend","readAsDataURL","CRC32TABLE","ZipArchive","initCrc32Table","files","level","addItem","item","file","ZipArchiveItem","addDirectory","directoryName","slice","indexOf","getItem","contains","zipArchive","Promise","resolve","reject","then","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","promise","onload","input","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","length_1","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","nextIndex","subArray","zipParts","extFileAttr","date","Date","header","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","shift","writeFooter","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","a","modTime","getHours","getMinutes","getSeconds","modiDate","getFullYear","getMonth","getDate","itemName","ValueFormatter","cultureName","intl","getFormatFunction","format","isServerRendered","getDateFormat","getNumberFormat","toView","displayText","CsvHelper","json","separator","csvStr","formatter","styles","globalStyles","Map","worksheets","parseWorksheet","rows","parseRows","rows_1","parseRow","cells","parseCell","csv","style","parseCellValue","skeleton","error","has","val","start","replace","dwlLink","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","title","createdDate","modifiedDate","tags","status","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","toString","columns","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","fromJson","toJson","applyProperties","sourceJson","destJson","keys","getCellName","column","getColumnName","col","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","r","parserRow","insertMergedCellsStyle","forEach","key","filter","rowToInsert","createCell","insertIndex","splice","styleIndex","cellToInsert","refName","rowIndex","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","colSpan","hyperlink","hyperLink","target","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","toUpperCase","rgbColors","processCellValue","cellValue","processedVal","startindex","endIndex","processString","subString","text","subSplit","subSplit_1","element","trim","applyGlobalStyle","cellType","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","toLowerCase","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","_b","_c","cellXfs","returnFormat","getNumberPattern","useGrouping","getDatePattern","border","processNumFormatId","compareResult","compareStyle","size","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","value_1","sstvalue","imagesLength","image","parserImage","lastRow","lastColumn","horizontalFlip","verticalFlip","blobSaveType","obj","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_d","_e","_f","_g","_h","_j","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","round","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","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","year","month","day","ticksPerDay","daysToMonth365","daysToMonth366","days","isLeapYear","timeToTicks","hour","minute","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","ExportHelper","parent","foreignKeyData","hideColumnInclude","parentDetails","getQuery","query","generateQuery","requiresCount","isRemote","groupSettings","enableLazyLoading","lazyLoad","take","pageSettings","totalRecordsCount","getFData","field","getGridRowModel","dataSource","gObj","startIndex","options","isExpand","childGrid","hierarchyPrintMode","expandedRows","generateCells","processColumns","childGridLevel","generateCell","Indent","columns_1","Data","getColumnData","gridObj","columnPromise","fColumns","getForeignKeyColumns","colData","executeQuery","e","getHeaders","isHideColumnInclude","colDepth","processHeaderCells","generateActualColumns","getConvertedWidth","parseFloat","getBoundingClientRect","actualColumns","columns_2","commands","visible","getCellCount","cols","appendGridCells","gridRows","StackedHeader","isIgnoreFirstCell","Header","gridColumn","option","columnIndexes","enableColumnVirtualization","getColumnIndexesInView","allowGrouping","len_1","HeaderIndent","checkAndExport","gridPool","globalResolve","bool","some","failureHandler","childGridObj","createChildGrid","exportType","detailRowModule","getGridModel","isPrinting","parentID","parentPrimaryKeys","getPrimaryKeyFieldNames","parentKeyField","queryString","parentKeyFieldValue","parentRowData","exportId","body","appendChild","isExportGrid","getGridExportColumns","actualGridColumns","gridColumns","getForeignKeyData","ExportValueFormatter","valueFormatter","internationalization","returnFormattedValue","args","customFormat","formatCellValue","isForeignKey","foreignKeyValue","cFormat","ExcelExport","locator","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","helper","l10n","getService","getModuleName","init","isDestroyed","isExporting","footer","exportValueFormatter","locale","grid","exportProperties","isMultipleExport","workbook","isCsv","isBlob","cancel","isBlb","workbk","isMultiEx","hierarchyExportMode","requestType","gridObject","trigger","log","processRecords","exportingSuccess","blobPromise","query_1","isCountRequired","aggregates","dataManager","processInnerRecords","allPromise_1","getData","catch","getCurrentViewRecords","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","JSON","parse","stringify","processGridExport","organisedRows","organiseRows","concat","processExcelFooter","allowFiltering","getVisibleColumns","enableFilter","headerRowLen","headerRows","notify","currencyCode","initialIndex","childRows","excelRows","isFrozen","isFrozenGrid","getFrozenColumns","theme","gColumns","getColumns","headerRow","groupIndent","processHeaderContent","processRecordContent","currentViewData","returnType","currentViewRecords","excelRow","record","processRecordRows","processGroupedRows","GroupGuid","records","processAggregates","excelExportProperties","dataSource_1","getColumnByField","isForeignColumn","headerText","enableGroupByFormat","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","generateRows","fillAggregates","childLevels","lIndex","hIndex","tCell","span","col_1","items","templateRowHeight","gCell","valueAccessor","fkData","idx","excelCellArgs","base64","setImage","getConstant","getColumnStyle","returnVal","actionFailure","beforeDataBound","childGridCell","appendTo","rowObj","excelImage","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","isEmpty","DetailFooterIntent","isDataCell","footerTemplate","groupFooterTemplate","groupCaptionTemplate","getAggreateValue","Summary","GroupSummary","CaptionSummary","Sum","Average","Max","Min","Count","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","attributes","textAlign","row_1","dummyOutlineLevel","dummyGrouping","template","txt","templateFn","columnName","isReact","isVue","renderTemplates","textContent","JSON1","JSON2","attrname","columnIndex","spannedCells","parseStyles","getRecordThemeStyle","currentCellIndex","gridCell","DetailHeader","getIndex","spannedCell","getHeaderThemeStyle","headerTextAlign","excelHeaderCellArgs","updateThemeStyle","themestyle","caption","noRows","updatedCellIndex","footerRows","spannedCells_1","getExcelReportDate","getDisplayDate","getDisplayDateFormat","getDataGridDateFormat"],"mappings":"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","file":"js/chunk-98300da4.5bf209b3.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/**\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","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","/**\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","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 += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.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.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n 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 var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\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.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n 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 { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[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 - 1; 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 ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n 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 = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\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 * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var 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) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) &&\n exportProperties.dataSource instanceof DataManager) {\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, 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, this.helper.getForeignKeyData());\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 ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n // eslint-disable-next-line max-len\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 ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (row.isExpand && !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.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[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 ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n 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 col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-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 if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[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 ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","// eslint-disable-next-line no-use-before-define\r\nconst getExcelReportDate = (date) => getDate(date);\r\n\r\nconst getDisplayDate = (date) => {\r\n if (date) {\r\n const a = new Date(date);\r\n return `${(`0${a.getMonth() + 1}`).slice(-2)\r\n }/${(`0${a.getDate()}`).slice(-2)\r\n // eslint-disable-next-line no-useless-concat\r\n }/` + `${a.getFullYear()}`;\r\n }\r\n\r\n return date;\r\n};\r\nconst getDisplayDateFormat = () => 'MM/DD/YYYY';\r\n\r\nconst getDataGridDateFormat = () => ({ type: 'date', format: 'MM/dd/yy' });\r\n\r\nconst getDate = (date) => {\r\n if (date) {\r\n const a = new Date(date);\r\n return `${(`0${a.getMonth() + 1}`).slice(-2)\r\n }/${(`0${a.getDate()}`).slice(-2)\r\n }/${(`0${a.getFullYear()}`).slice(-2)}`;\r\n }\r\n\r\n return date;\r\n};\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport {\r\n getExcelReportDate,\r\n getDataGridDateFormat,\r\n getDisplayDate,\r\n getDisplayDateFormat,\r\n};\r\n"],"sourceRoot":""}