// export function connectResponsiveness(rootAttributes) { // // API // return { // selectMode: (mode) => selectMode(mode), // } // } // import React, {useEffect, useState} from 'react'; import * as ReactDOM from 'react-dom/client'; import {WrapperStyling} from "./responsive.style.js"; import {ResponsiveButton} from "./responsive-button/ResponsiveButton.jsx"; const modes = [ 'reset', 'desktop', 'tablet', 'mobile' ]; function Responsive(props = {}) { props.rootAttributes = props.rootAttributes ?? {}; const initialState = {mode: 'default', breakpoint: '100%'} const [mode, setMode] = useState(initialState.mode); const [breakpoint, setBreakpoint] = useState(initialState.breakpoint); useEffect(() => { updateController(); }, [mode, breakpoint]); const previewFrame = props.rootAttributes.previewFrame; return render(); // // Functions // function render() { return {modes.map((mode) => { return selectMode(mode, breakpoint)}/> })} ; } function selectMode(mode, breakpoint) { if (mode === 'reset') { setMode(initialState.mode); setBreakpoint(initialState.breakpoint); return; } setMode(mode); setBreakpoint(breakpoint); } function isActive(requestedMode) { return mode === requestedMode; } function updateController() { let frameBreakpoint = breakpoint; if (typeof frameBreakpoint !== 'string') { frameBreakpoint = frameBreakpoint + 'px'; } previewFrame.style.setProperty('--breakpoint', frameBreakpoint); previewFrame.classList.add('has-breakpoint'); window.postMessage('responsiveUpdate'); window.responsiveState = {mode, breakpoint}; } } export function setupResponsiveness(rootAttributes) { // INIT const wrapper = document.createElement('div'); document.querySelector('.page_toolbar__middle').prepend(wrapper) const root = ReactDOM.createRoot(wrapper); const html = (); root.render(html); }