import { InspectorControls } from "@wordpress/block-editor"; import { createRoot } from "@wordpress/element"; import { ArrowUpRight } from "../../icons/icons"; import "./editor.scss"; import { blockDocLink, blockPreviewPanelLink } from "../../controls/constants"; import Library from "../../prebuild-library/Library"; let modalRoot = null; const InspectorControl = ({ Inspector, attributes, setAttributes, isSelected = false }) => { const { blockName } = attributes; // Close modal. const removeModal = () => { if (modalRoot) { modalRoot.unmount(); modalRoot = null; } const modalNode = document.querySelector(".sp-smart-builder-modal"); if (modalNode) modalNode.remove(); document.body.classList.remove("sp-smart-popup-open"); }; // Open modal. const onInsertButtonClick = (e) => { e.preventDefault(); // If modal already exists, do nothing. if (document.querySelector(".sp-smart-builder-modal")) return; const node = document.createElement("div"); node.className = "sp-smart-builder-modal sp-smart-blocks-layouts"; document.body.appendChild(node); modalRoot = createRoot(node); modalRoot.render(); document.body.classList.add("sp-smart-popup-open"); // Close when clicking outside. setTimeout(() => { node.addEventListener("click", (e) => { if (e.target === node) removeModal(); }); }, 0); }; return ( {/* Documentation link */} {blockDocLink[blockName] && ( Documentation )} {/* Buttons */} { "container" !== blockName && ( Ready Patterns )} {blockPreviewPanelLink[blockName] && ( Block Preview )} {/* Rest of the inspector */} ); }; export default InspectorControl;