diff --git a/packages/editor/src/components/popup-presenter/index.tsx b/packages/editor/src/components/popup-presenter/index.tsx index 6fb7d61f8..5938a76f2 100644 --- a/packages/editor/src/components/popup-presenter/index.tsx +++ b/packages/editor/src/components/popup-presenter/index.tsx @@ -253,7 +253,7 @@ export function PopupWrapper(props: PopupWrapperProps) { }, [autoCloseOnUnmount, id, PopupRenderer]); useEffect(() => { - if (PopupRenderer && isPopupOpen) { + if (PopupRenderer && isPopupOpen && !PopupRenderer.isOpen(id)) { PopupRenderer.openPopup(id, function Popup({ id }) { const isPopupOpen = useToolbarStore( (store) => !!store.openedPopups[id] diff --git a/packages/editor/src/components/popup-presenter/popuprenderer.tsx b/packages/editor/src/components/popup-presenter/popuprenderer.tsx index 081cf1591..2ee6a5a19 100644 --- a/packages/editor/src/components/popup-presenter/popuprenderer.tsx +++ b/packages/editor/src/components/popup-presenter/popuprenderer.tsx @@ -40,6 +40,10 @@ export class PopupRenderer extends React.Component< popups: [] as PopupRendererState["popups"] }; + isOpen(id: string) { + return !!this.state.popups?.find((popup) => popup.id === id); + } + openPopup = (id: string, popup: PopupComponent) => { if (!popup) return; this.setState((prev) => {