{"version":3,"file":"use-keyboard-height.cjs","names":[],"sources":["../../src/hooks/use-keyboard-height.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface KeyboardState {\n  isKeyboardOpen: boolean;\n  keyboardHeight: number;\n  availableHeight: number;\n  viewportHeight: number;\n}\n\n/**\n * Hook to detect mobile keyboard appearance and calculate available viewport height.\n * Uses the Visual Viewport API to track keyboard state on mobile devices.\n *\n * @returns KeyboardState object with keyboard information\n */\nexport function useKeyboardHeight(): KeyboardState {\n  const [keyboardState, setKeyboardState] = useState<KeyboardState>({\n    isKeyboardOpen: false,\n    keyboardHeight: 0,\n    availableHeight: typeof window !== \"undefined\" ? window.innerHeight : 0,\n    viewportHeight: typeof window !== \"undefined\" ? window.innerHeight : 0,\n  });\n\n  useEffect(() => {\n    if (typeof window === \"undefined\") {\n      return;\n    }\n\n    // Check if Visual Viewport API is available\n    const visualViewport = window.visualViewport;\n    if (!visualViewport) {\n      return;\n    }\n\n    const updateKeyboardState = () => {\n      const layoutHeight = window.innerHeight;\n      const visualHeight = visualViewport.height;\n\n      // Calculate keyboard height (difference between layout and visual viewport)\n      const keyboardHeight = Math.max(0, layoutHeight - visualHeight);\n\n      // Keyboard is considered open if the height difference is significant (> 150px)\n      const isKeyboardOpen = keyboardHeight > 150;\n\n      setKeyboardState({\n        isKeyboardOpen,\n        keyboardHeight,\n        availableHeight: visualHeight,\n        viewportHeight: layoutHeight,\n      });\n    };\n\n    // Initial state\n    updateKeyboardState();\n\n    // Listen for viewport changes\n    visualViewport.addEventListener(\"resize\", updateKeyboardState);\n    visualViewport.addEventListener(\"scroll\", updateKeyboardState);\n\n    return () => {\n      visualViewport.removeEventListener(\"resize\", updateKeyboardState);\n      visualViewport.removeEventListener(\"scroll\", updateKeyboardState);\n    };\n  }, []);\n\n  return keyboardState;\n}\n"],"mappings":";;;;;;;;;;AAeA,SAAgB,oBAAmC;CACjD,MAAM,CAAC,eAAe,wCAA4C;EAChE,gBAAgB;EAChB,gBAAgB;EAChB,iBAAiB,OAAO,WAAW,cAAc,OAAO,cAAc;EACtE,gBAAgB,OAAO,WAAW,cAAc,OAAO,cAAc;EACtE,CAAC;AAEF,4BAAgB;AACd,MAAI,OAAO,WAAW,YACpB;EAIF,MAAM,iBAAiB,OAAO;AAC9B,MAAI,CAAC,eACH;EAGF,MAAM,4BAA4B;GAChC,MAAM,eAAe,OAAO;GAC5B,MAAM,eAAe,eAAe;GAGpC,MAAM,iBAAiB,KAAK,IAAI,GAAG,eAAe,aAAa;AAK/D,oBAAiB;IACf,gBAHqB,iBAAiB;IAItC;IACA,iBAAiB;IACjB,gBAAgB;IACjB,CAAC;;AAIJ,uBAAqB;AAGrB,iBAAe,iBAAiB,UAAU,oBAAoB;AAC9D,iBAAe,iBAAiB,UAAU,oBAAoB;AAE9D,eAAa;AACX,kBAAe,oBAAoB,UAAU,oBAAoB;AACjE,kBAAe,oBAAoB,UAAU,oBAAoB;;IAElE,EAAE,CAAC;AAEN,QAAO"}