UNPKG

@mui/x-data-grid-premium

Version:

The Premium plan edition of the MUI X Data Grid Components.

58 lines (56 loc) 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupExcelExportWebWorker = setupExcelExportWebWorker; var _utils = require("./utils"); function setupExcelExportWebWorker(workerOptions = {}) { globalThis.addEventListener('message', async event => { const { namespace, serializedColumns, serializedRows, options, valueOptionsSheetName, valueOptionsData, columnGroupDetails, columnGroupPaths } = event.data; // workers share the pub-sub channel namespace. Use this property to filter out messages. if (namespace !== 'mui-x-data-grid-export') { return; } const { exceljsPostProcess, exceljsPreProcess } = workerOptions; const excelJS = await (0, _utils.getExcelJs)(); const workbook = new excelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); worksheet.columns = serializedColumns; if (exceljsPreProcess) { await exceljsPreProcess({ workbook, worksheet }); } if (options.includeColumnGroupsHeaders) { (0, _utils.addColumnGroupingHeaders)(worksheet, serializedColumns, columnGroupPaths, columnGroupDetails); } const includeHeaders = options.includeHeaders ?? true; if (includeHeaders) { worksheet.addRow(serializedColumns.map(column => column.headerText)); } (0, _utils.createValueOptionsSheetIfNeeded)(valueOptionsData, valueOptionsSheetName, workbook); serializedRows.forEach(serializedRow => { (0, _utils.addSerializedRowToWorksheet)(serializedRow, worksheet); }); if (exceljsPostProcess) { await exceljsPostProcess({ workbook, worksheet }); } postMessage(await workbook.xlsx.writeBuffer()); }); }