diff --git a/packages/x-data-grid-premium/src/hooks/features/export/serializer/setupExcelExportWebWorker.ts b/packages/x-data-grid-premium/src/hooks/features/export/serializer/setupExcelExportWebWorker.ts index 1a1440225c41e..b5c0dff866cff 100644 --- a/packages/x-data-grid-premium/src/hooks/features/export/serializer/setupExcelExportWebWorker.ts +++ b/packages/x-data-grid-premium/src/hooks/features/export/serializer/setupExcelExportWebWorker.ts @@ -14,6 +14,7 @@ export function setupExcelExportWebWorker( // eslint-disable-next-line no-restricted-globals addEventListener('message', async (event: MessageEvent) => { const { + namespace, serializedColumns, serializedRows, options, @@ -23,6 +24,11 @@ export function setupExcelExportWebWorker( 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 getExcelJs(); diff --git a/packages/x-data-grid-premium/src/hooks/features/export/serializer/utils.ts b/packages/x-data-grid-premium/src/hooks/features/export/serializer/utils.ts index c40fb9ab44041..c44430a8cb875 100644 --- a/packages/x-data-grid-premium/src/hooks/features/export/serializer/utils.ts +++ b/packages/x-data-grid-premium/src/hooks/features/export/serializer/utils.ts @@ -122,6 +122,7 @@ export async function createValueOptionsSheetIfNeeded( } export interface ExcelExportInitEvent { + namespace?: string; serializedColumns: SerializedColumns; serializedRows: SerializedRow[]; valueOptionsSheetName: string; diff --git a/packages/x-data-grid-premium/src/hooks/features/export/useGridExcelExport.tsx b/packages/x-data-grid-premium/src/hooks/features/export/useGridExcelExport.tsx index a410dc75d4ceb..edea6dbb04149 100644 --- a/packages/x-data-grid-premium/src/hooks/features/export/useGridExcelExport.tsx +++ b/packages/x-data-grid-premium/src/hooks/features/export/useGridExcelExport.tsx @@ -156,6 +156,8 @@ export const useGridExcelExport = ( }, {}); const message: ExcelExportInitEvent = { + // workers share the pub-sub channel namespace. Use this property to filter out messages. + namespace: 'mui-x-data-grid-export', serializedColumns, serializedRows, valueOptionsData,