From c057a75f830eab7b47de9e8098b6b7c711b7f8e2 Mon Sep 17 00:00:00 2001 From: Ugo Stephant Date: Fri, 25 Oct 2024 11:40:55 +0200 Subject: [PATCH 1/2] fix(react): allow to use polyfills to parse html --- packages/react/lib/Builder/index.tsx | 11 +++++- .../react/lib/components/Button/index.tsx | 36 ++++++++++++------- packages/react/lib/components/Text/index.tsx | 30 +++++++++++----- packages/react/lib/components/Title/index.tsx | 13 +++++-- packages/react/lib/contexts.ts | 4 +++ packages/react/lib/utils.ts | 27 ++++++++------ 6 files changed, 87 insertions(+), 34 deletions(-) diff --git a/packages/react/lib/Builder/index.tsx b/packages/react/lib/Builder/index.tsx index 7497b34ca..bc578874f 100644 --- a/packages/react/lib/Builder/index.tsx +++ b/packages/react/lib/Builder/index.tsx @@ -49,6 +49,10 @@ export declare interface BuilderProps extends SpecialComponentPropsWithoutRef { topHistoryButtonsContainer?: string | HTMLElement | DocumentFragment; topHistoryButtonsEnabled?: boolean; value?: Array; + polyfills?: { + DOMParser: typeof DOMParser; + XMLSerializer: typeof XMLSerializer; + }; onChange?(content: Array): void; onImageUpload?(event: FormEvent, opts: { element?: ElementObject; @@ -66,6 +70,7 @@ const Builder = forwardRef(({ onImageUpload, topHistoryButtonsContainer, bottomHistoryButtonsContainer, + polyfills, historyEnabled = true, topHistoryButtonsEnabled = true, bottomHistoryButtonsEnabled = true, @@ -107,7 +112,11 @@ const Builder = forwardRef(({ rootRef: innerRef, floatingsRef, editableType, - }), [builder, content, addons, rootBoundary, onImageUpload, editableType]); + polyfills, + }), [ + builder, content, addons, rootBoundary, onImageUpload, polyfills, + editableType, + ]); const onAppend = (component: ComponentObject) => { catalogueRef.current?.close(); diff --git a/packages/react/lib/components/Button/index.tsx b/packages/react/lib/components/Button/index.tsx index b7aa1de53..75a084317 100644 --- a/packages/react/lib/components/Button/index.tsx +++ b/packages/react/lib/components/Button/index.tsx @@ -1,8 +1,9 @@ -import type { ComponentPropsWithoutRef } from 'react'; import type { ElementObject } from '@oakjs/core'; +import { type ComponentPropsWithoutRef, useContext } from 'react'; import { Button, classNames } from '@junipero/react'; import { sanitizeHTML } from '../../utils'; +import { BuilderContext, type BuilderContextValue } from '../../contexts'; export interface ButtonProps extends ComponentPropsWithoutRef { element: ElementObject; @@ -11,17 +12,28 @@ export interface ButtonProps extends ComponentPropsWithoutRef { const Button_ = ({ element, className, -}: ButtonProps) => !element.content ? null : ( -