// 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 [state, setState] = useState(initialState); const updateState = (update) => setState(Object.assign({}, state, update)); useEffect(() => { // Update the document title using the browser API updateController(state); }); 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') { updateState(initialState); return; } updateState({mode, breakpoint}) } function isActive(mode) { return mode === state.mode; } function updateController() { const unit = typeof state.breakpoint === 'string' ? '' : 'px'; previewFrame.style.setProperty('--breakpoint', state.breakpoint + unit); previewFrame.classList.add('has-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); }