From 9a7be1cc1a97f36ed0490db46470eb71bb053455 Mon Sep 17 00:00:00 2001 From: Nick Bernal Date: Wed, 18 Mar 2026 15:34:14 -0700 Subject: [PATCH] fix: import regression --- .../v2/importer/docxImporter.js | 2 +- .../src/tests/import/docxImporter.test.js | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/super-editor/src/core/super-converter/v2/importer/docxImporter.js b/packages/super-editor/src/core/super-converter/v2/importer/docxImporter.js index 5818fb88e4..2727b13d4a 100644 --- a/packages/super-editor/src/core/super-converter/v2/importer/docxImporter.js +++ b/packages/super-editor/src/core/super-converter/v2/importer/docxImporter.js @@ -766,7 +766,7 @@ const findSectPr = (obj, result = []) => { if (obj && obj.name === 'w:sectPr') { result.push(obj); } - if (obj.elements) { + if (obj && obj.elements) { obj.elements.forEach((el) => findSectPr(el, result)); } return result; diff --git a/packages/super-editor/src/tests/import/docxImporter.test.js b/packages/super-editor/src/tests/import/docxImporter.test.js index 8ed278bee3..7e9e045ce2 100644 --- a/packages/super-editor/src/tests/import/docxImporter.test.js +++ b/packages/super-editor/src/tests/import/docxImporter.test.js @@ -61,6 +61,33 @@ describe('addDefaultStylesIfMissing', () => { }); describe('createDocumentJson', () => { + it('falls back to default document XML and base numbering when document.xml is missing', () => { + const docx = {}; + + const converter = { + headers: {}, + footers: {}, + headerIds: {}, + footerIds: {}, + docHiglightColors: new Set(), + }; + + const editor = { options: {}, emit: vi.fn() }; + + const result = createDocumentJson(docx, converter, editor); + + expect(result).toBeTruthy(); + expect(result.pmDoc?.type).toBe('doc'); + expect(result.pageStyles.pageMargins.left).toBeCloseTo(1); + expect(result.pageStyles.pageSize.width).toBeCloseTo(8.5); + expect(Object.keys(result.numbering.definitions || {})).not.toHaveLength(0); + expect(Object.keys(result.numbering.abstracts || {})).not.toHaveLength(0); + expect(Object.keys(result.translatedNumbering.definitions || {})).not.toHaveLength(0); + expect(Object.keys(result.translatedNumbering.abstracts || {})).not.toHaveLength(0); + expect(converter.headers).toEqual({}); + expect(converter.footers).toEqual({}); + }); + it('handles missing document relationships gracefully', () => { const simpleDocXml = 'Hello';