/** @jsx h */ import { h } from "preact"; import { useEffect, useState } from "preact/hooks"; interface TopBarProps { allowMode: "edit" | "read" | "both"; } export default function TopBar(props: TopBarProps) { const [mode, setMode] = useState(props.allowMode); // Event listener const modeChangeListener = (e: CustomEvent) => { if ( e.detail && (props.allowMode === e.detail || props.allowMode === "both") ) { setMode(e.detail); } }; // Event dispatche const modeChangeDispatcher = (mode: string) => { dispatchEvent(new CustomEvent("ModeChange", { detail: mode })); }; // Init event listeners useEffect(() => { addEventListener("ModeChange", modeChangeListener); return () => { removeEventListener("ModeChange", modeChangeListener); }; }, []); return (
); }