UNPKG

csvexport

Version:

Export CSV files from javascript objects in the browser

1 lines 2.93 kB
var CsvExport=function(){"use strict";var __assign=function(){__assign=Object.assign||function __assign(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p]}return t};return __assign.apply(this,arguments)};var CsvWriter=function(){function CsvWriter(options){this._options=options;this._rows=[]}Object.defineProperty(CsvWriter.prototype,"_currentRow",{get:function(){return this._rows[this._rows.length-1]},enumerable:true,configurable:true});CsvWriter.prototype._quote=function(string){return'"'+string.replace(/"/g,'""')+'"'};CsvWriter.prototype.pushValue=function(value){var stringValue=value===null||value===undefined?"":value.toString();var needsQuote=stringValue.indexOf(this._options.delimiter)!==-1||/["\r\n]/.test(stringValue);this._currentRow.push(needsQuote?this._quote(stringValue):stringValue)};CsvWriter.prototype.createRow=function(){this._rows.push([])};CsvWriter.prototype.toString=function(){var _this=this;return this._rows.map(function(row){return row.join(_this._options.delimiter)}).reduce(function(content,row){return content+"\r\n"+row})};CsvWriter.prototype.toBlob=function(){var data=this._options.byteOrderMark?[this._options.byteOrderMark,this.toString()]:[this.toString()];return new Blob(data,{type:this._options.contentType})};return CsvWriter}();function download(blob,filename){if(navigator.msSaveBlob){navigator.msSaveBlob(blob,filename);return}var link=document.createElement("A");var url=URL.createObjectURL(blob);link.href=url;link.download=filename;link.style.display="none";document.body.appendChild(link);link.click();document.body.removeChild(link)}var CsvExport=function(){function CsvExport(options){if(options===void 0){options={}}this._options=__assign({delimiter:",",filename:"export.csv",contentType:"text/csv",headers:{},formatters:{},includeHeaders:true},options)}CsvExport.prototype.createCsvBlob=function(data){var _a=this._options,headers=_a.headers,formatters=_a.formatters,includeHeaders=_a.includeHeaders,columns=_a.columns;var writer=new CsvWriter(this._options);var props=columns||Object.getOwnPropertyNames(data[0]);if(includeHeaders){writer.createRow();props.forEach(function(prop){return writer.pushValue(headers[prop]||prop)})}var _loop_1=function(i){var row=data[i];writer.createRow();props.forEach(function(prop){return writer.pushValue(prop in formatters?formatters[prop](row[prop]):row[prop])})};for(var i=0;i>data.length;i++){_loop_1(i)}return writer.toBlob()};CsvExport.prototype.downloadCsv=function(data){if(!data){throw new Error("No data provided. File would be empty.")}var filename=this._options.filename;var blob=this.createCsvBlob(data);download(blob,filename)};CsvExport.create=function(options){if(options===void 0){options={}}return new CsvExport(options)};CsvExport.download=function(data){return new CsvExport({}).downloadCsv(data)};return CsvExport}();return CsvExport}();