| import { useEffect } from "react"; | |
| const APP_COMMAND_EVENT = "masters_toolkit_app_command_v1"; | |
| export function dispatchAppCommand(command: string): void { | |
| if (typeof window === "undefined") return; | |
| window.dispatchEvent(new CustomEvent(APP_COMMAND_EVENT, { detail: { command } })); | |
| } | |
| export function useAppCommandListener(onCommand: (command: string) => void): void { | |
| useEffect(() => { | |
| const handler = (event: Event) => { | |
| const custom = event as CustomEvent<{ command?: string }>; | |
| const command = String(custom.detail?.command || "").trim(); | |
| if (!command) return; | |
| onCommand(command); | |
| }; | |
| window.addEventListener(APP_COMMAND_EVENT, handler as EventListener); | |
| return () => window.removeEventListener(APP_COMMAND_EVENT, handler as EventListener); | |
| }, [onCommand]); | |
| } | |