import React, {useCallback, useEffect, useState} from 'react'; import * as ReactDOM from 'react-dom/client'; import { SidebarButtonToggleStyle, SidebarCloseButtonStyle, SidebarDataOptionsStyle, SidebarHeaderStyle, SidebarStyle, } from "./data-options.style.js"; import {isClickOutside, isEscHit} from "../responsive-button/ResponsiveButton.jsx"; import {DesignPreview} from "./DesignPreview.jsx"; function DataOptions(props = {}) { props.rootAttributes = props.rootAttributes ?? {}; const initialState = {dataName: 'default', data: {}, dataOptions: []}; const [state, setState] = useState(initialState); const updateState = (update) => setState(Object.assign({}, state, update)); const [sidebarOpen, setSidebarOpen] = useState(false); useEffect(async () => { const data = await fetchDataOptions(state.dataName); updateState(data); }, []); const handleCloseSidebarEscEvent = useCallback((e) => { if (isEscHit(e)) { (() => { closeSidebar() })(); } }, []); useEffect(async () => { document.addEventListener("keydown", handleCloseSidebarEscEvent); // Unsubscribe from ESC listener. return () => { document.removeEventListener("keydown", handleCloseSidebarEscEvent); } }, [handleCloseSidebarEscEvent]); const handleBlur = async (e) => await isClickOutside(e) ? closeSidebar() : null; return
{JSON.stringify(state.data, null, 2)}
}