From ce64f81d308a08bcd657ac22ba017b531d6d3765 Mon Sep 17 00:00:00 2001 From: John Philip Date: Sat, 15 Feb 2025 01:24:36 -0500 Subject: [PATCH] include dominant-baseline styling for svgs Signed-off-by: John Philip --- .../html/transformer.sanitizer.test.tsx | 21 +++++++++++++++++++ .../reader/transformers/html/transformer.ts | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs/src/reader/transformers/html/transformer.sanitizer.test.tsx b/plugins/techdocs/src/reader/transformers/html/transformer.sanitizer.test.tsx index a26757764c..ea609e04f8 100644 --- a/plugins/techdocs/src/reader/transformers/html/transformer.sanitizer.test.tsx +++ b/plugins/techdocs/src/reader/transformers/html/transformer.sanitizer.test.tsx @@ -99,4 +99,25 @@ describe('Transformers > Html > Sanitizer Custom Elements', () => { expect(elements[1].hasAttribute('attribute3')).toEqual(false); expect(elements[1].hasAttribute('attribute4')).toEqual(false); }); + + it('should retain the dominant baseline attribute for svgs', async () => { + const { result } = renderHook(() => useSanitizerTransformer(), { wrapper }); + + const dirtyDom = document.createElement('html'); + dirtyDom.innerHTML = ` + + + + + Hej + + + `; + const clearDom = await result.current(dirtyDom); + + const elements = Array.from(clearDom.querySelectorAll('text')); + + expect(elements).toHaveLength(1); + expect(elements[0].hasAttribute('dominant-baseline')).toBe(true); + }); }); diff --git a/plugins/techdocs/src/reader/transformers/html/transformer.ts b/plugins/techdocs/src/reader/transformers/html/transformer.ts index 2004f941e3..42f34f0410 100644 --- a/plugins/techdocs/src/reader/transformers/html/transformer.ts +++ b/plugins/techdocs/src/reader/transformers/html/transformer.ts @@ -83,7 +83,7 @@ export const useSanitizerTransformer = (): Transformer => { return DOMPurify.sanitize(dom.outerHTML, { ADD_TAGS: tags, FORBID_TAGS: ['style'], - ADD_ATTR: ['http-equiv', 'content'], + ADD_ATTR: ['http-equiv', 'content', 'dominant-baseline'], WHOLE_DOCUMENT: true, RETURN_DOM: true, CUSTOM_ELEMENT_HANDLING: {