UNPKG

@airplane/views

Version:

A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.

40 lines (39 loc) 1.11 kB
import { isActionColumn } from "./Column.js"; function dataToCSVLink(columns, rows) { return "data:text/csv;charset=utf-8," + encodeURIComponent(dataToCSV(columns, rows)); } function dataToCSV(columns, rows) { const realCols = columns.filter((c) => !isActionColumn(c)); const csvHeader = realCols.map((c) => escapeCSVString(String(c.label || c.id || ""))).join(","); const csvRows = rows.map((row) => realCols.map((col) => { return toCSVCell({ value: row.values[col.id], valueToString: col.valueToString }); }).join(",")); return [csvHeader, ...csvRows].join("\n"); } function toCSVCell({ value, valueToString }) { const str = value != null && valueToString != null ? valueToString(value) : defaultToString(value); return escapeCSVString(str); } function escapeCSVString(str) { return '"' + str.replace(/"/g, '""') + '"'; } function defaultToString(datum) { if (datum == null) { return ""; } if (typeof datum === "string") { return datum; } return JSON.stringify(datum); } export { dataToCSV, dataToCSVLink }; //# sourceMappingURL=dataToCSV.js.map