UNPKG

@woocommerce/csv-export

Version:
84 lines (83 loc) 2.96 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var index_exports = {}; __export(index_exports, { downloadCSVFile: () => downloadCSVFile, generateCSVDataFromTable: () => generateCSVDataFromTable, generateCSVFileName: () => generateCSVFileName }); module.exports = __toCommonJS(index_exports); var import_browser_filesaver = require("browser-filesaver"); function escapeCSVValue(value) { let stringValue = value.toString(); if (typeof value === "number") { return stringValue; } if ([ "=", "+", "-", // Only escape '-' if it's not part of a numeric value. "@", String.fromCharCode(9), // tab String.fromCharCode(13) // carriage return ].includes(stringValue.charAt(0))) { stringValue = `"'` + stringValue + '"'; } else if (stringValue.match(/[,"\s]/)) { stringValue = '"' + stringValue.replace(/"/g, '""') + '"'; } return stringValue; } function getCSVHeaders(headers) { return Array.isArray(headers) ? headers.map((header) => escapeCSVValue(header.label)).join(",") : []; } function getCSVRows(rows) { return Array.isArray(rows) ? rows.map( (row) => row.map((rowItem) => { if (void 0 === rowItem.value || rowItem.value === null) { return ""; } return escapeCSVValue(rowItem.value); }).join(",") ).join("\n") : []; } function generateCSVDataFromTable(headers, rows) { return [getCSVHeaders(headers), getCSVRows(rows)].filter((text) => text.length).join("\n"); } function todayDateStr() { const date = /* @__PURE__ */ new Date(); const dateStr = date.toISOString().split("T")[0]; return dateStr; } function generateCSVFileName(name = "", params = {}) { const fileNameSections = [ name.toLowerCase().replace(/[^a-z0-9]/g, "-"), todayDateStr(), Object.keys(params).map( (key) => key.toLowerCase().replace(/[^a-z0-9]/g, "-") + "-" + decodeURIComponent(params[key]).toLowerCase().replace(/[^a-z0-9]/g, "-") ).join("_") ].filter((text) => text.length); return fileNameSections.join("_") + ".csv"; } function downloadCSVFile(fileName, content) { const blob = new Blob([content], { type: "text/csv;charset=utf-8" }); (0, import_browser_filesaver.saveAs)(blob, fileName); }