{"version":3,"file":"EditorEnabledContext.cjs","names":["useEditorStateManager","MessageKey"],"sources":["../../src/EditorEnabledContext.tsx"],"sourcesContent":["'use client';\n\nimport { MessageKey } from '@intlayer/editor';\nimport { useEffect, useState } from 'react';\nimport { useEditorStateManager } from './EditorStateContext';\n\nexport type EditorEnabledStateProps = {\n  enabled: boolean;\n};\n\n/**\n * Returns the current editor-enabled state, kept in sync with the shared\n * EditorStateManager. Replaces the old EditorEnabledContext + EditorEnabledProvider.\n */\nexport const useEditorEnabled = (): EditorEnabledStateProps => {\n  const manager = useEditorStateManager();\n  const [enabled, setEnabled] = useState<boolean>(\n    manager?.editorEnabled.value ?? false\n  );\n\n  useEffect(() => {\n    if (!manager) return;\n\n    const handler = (e: Event) =>\n      setEnabled((e as CustomEvent<boolean>).detail);\n    manager.editorEnabled.addEventListener('change', handler);\n    return () => manager.editorEnabled.removeEventListener('change', handler);\n  }, [manager]);\n\n  return { enabled };\n};\n\n/**\n * Subscribes to incoming \"get\" requests for editor-enabled state and calls\n * the provided callback so the caller can respond.\n * Used by the editor side to respond when the client asks for the current state.\n */\nexport const useGetEditorEnabledState = (onRequest?: () => void) => {\n  const manager = useEditorStateManager();\n\n  useEffect(() => {\n    if (!onRequest) return;\n\n    return manager?.messenger.subscribe(\n      `${MessageKey.INTLAYER_EDITOR_ENABLED}/get`,\n      onRequest\n    );\n  }, [manager, onRequest]);\n};\n\n/**\n * Returns a function that sets the editor-enabled state and broadcasts it.\n */\nexport const usePostEditorEnabledState = () => {\n  const manager = useEditorStateManager();\n\n  return (value: boolean) => {\n    manager?.editorEnabled.set(value);\n    manager?.editorEnabled.postCurrentValue();\n  };\n};\n\nexport const useEditorEnabledState = () => {\n  const { enabled } = useEditorEnabled();\n  const manager = useEditorStateManager();\n  const setter = (value: boolean) => manager?.editorEnabled.set(value);\n\n  return [enabled, setter] as const;\n};\n\n/**\n * Returns a function that re-pings the client via ARE_YOU_THERE.\n * Use this as the onClick for an \"Enable Editor\" / reconnect button.\n */\nexport const useEditorPingClient = (): (() => void) => {\n  const manager = useEditorStateManager();\n\n  return () => manager?.pingClient();\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,yBAAkD;CAC7D,MAAM,UAAUA,kDAAuB;CACvC,MAAM,CAAC,SAAS,kCACd,SAAS,cAAc,SAAS,MACjC;AAED,4BAAgB;AACd,MAAI,CAAC,QAAS;EAEd,MAAM,WAAW,MACf,WAAY,EAA2B,OAAO;AAChD,UAAQ,cAAc,iBAAiB,UAAU,QAAQ;AACzD,eAAa,QAAQ,cAAc,oBAAoB,UAAU,QAAQ;IACxE,CAAC,QAAQ,CAAC;AAEb,QAAO,EAAE,SAAS;;;;;;;AAQpB,MAAa,4BAA4B,cAA2B;CAClE,MAAM,UAAUA,kDAAuB;AAEvC,4BAAgB;AACd,MAAI,CAAC,UAAW;AAEhB,SAAO,SAAS,UAAU,UACxB,GAAGC,4BAAW,wBAAwB,OACtC,UACD;IACA,CAAC,SAAS,UAAU,CAAC;;;;;AAM1B,MAAa,kCAAkC;CAC7C,MAAM,UAAUD,kDAAuB;AAEvC,SAAQ,UAAmB;AACzB,WAAS,cAAc,IAAI,MAAM;AACjC,WAAS,cAAc,kBAAkB;;;AAI7C,MAAa,8BAA8B;CACzC,MAAM,EAAE,YAAY,kBAAkB;CACtC,MAAM,UAAUA,kDAAuB;CACvC,MAAM,UAAU,UAAmB,SAAS,cAAc,IAAI,MAAM;AAEpE,QAAO,CAAC,SAAS,OAAO;;;;;;AAO1B,MAAa,4BAA0C;CACrD,MAAM,UAAUA,kDAAuB;AAEvC,cAAa,SAAS,YAAY"}