SD-2508 - fix: toc not being displayed inside w:sdt#2850
SD-2508 - fix: toc not being displayed inside w:sdt#2850chittolinag wants to merge 3 commits intomainfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad510e09aa
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| child.content, | ||
| { docPartGallery: docPartGallery ?? '', docPartObjectId, tocInstruction, sdtMetadata: docPartSdtMetadata }, |
There was a problem hiding this comment.
Preserve nested TOC instruction when forwarding child nodes
The new non-"Table of Contents" branch calls processTocChildren with child.content instead of the tableOfContents node itself, which drops the nested node context where processTocChildren reads getNodeInstruction(child) (toc.ts). In documents where a custom gallery stores the TOC field code on the nested tableOfContents node (the case this patch targets), tocInstruction now stays undefined and paragraph TOC metadata is incomplete, so downstream TOC behavior can differ from the standard gallery path.
Useful? React with 👍 / 👎.
Issue
Documents with a TOC inside a
w:sdtwhosedocPartGalleryis not exactly"Table of Contents"(e.g."Custom Table of Contents") have the TOC dropped on render.The field preprocessor converts TOC field codes (
w:fldChar begin/end) into a singlesd:tableOfContentselement regardless of the gallery type. This means the PMdocumentPartObjectnode for any custom TOC gallery ends up with atableOfContentschild.handleDocumentPartObjectNodedispatches ondocPartGallery === 'Table of Contents'for theprocessTocChildrenpath. For any other gallery string it falls to an else-if loop that only handledparagraphchildren —tableOfContentschildren were silently dropped.Proposed solution
Add a
tableOfContentsbranch to the else-if loop indocument-part-object.tsthat forwards to the existingprocessTocChildrenhelper. No changes to the import handler or preprocessing pipeline.Side notes
This PR fixes the issue where the TOC is completely dropped and doesn't show up in the document. However, there are still rendering issues with the TOC. This other PR is open and fixes the rendering issue.