@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
58 lines (56 loc) • 1.79 kB
JavaScript
;
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());
});
}