{"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID\n */\nexport const usePan = (documentId: string) => {\n  const { provides } = usePanCapability();\n  const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);\n\n  useEffect(() => {\n    if (!provides) return;\n\n    const scope = provides.forDocument(documentId);\n\n    // Get initial state\n    setIsPanning(scope.isPanMode());\n\n    // Subscribe to pan mode changes\n    return scope.onPanModeChange((isPan) => {\n      setIsPanning(isPan);\n    });\n  }, [provides, documentId]);\n\n  return {\n    provides: provides?.forDocument(documentId) ?? null,\n    isPanning,\n  };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n  const { provides: pan } = usePanCapability();\n  const { plugin: panPlugin } = usePanPlugin();\n\n  useEffect(() => {\n    if (!pan || !panPlugin) return;\n\n    const mode = panPlugin.config?.defaultMode ?? 'never';\n    const SUPPORT_TOUCH =\n      typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n    if (mode === 'mobile' && SUPPORT_TOUCH) {\n      pan.makePanDefault();\n    }\n  }, [pan, panPlugin]);\n\n  // This component is only used to make the pan mode default when the plugin is initialized.\n  return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","PanMode","provides","pan","plugin","panPlugin","useEffect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","build","documentId","isPanning","setIsPanning","useState","initialDocumentState","isPanMode","scope","forDocument","onPanModeChange","isPan"],"mappings":"yMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,ICF5DG,EAAU,KACrB,MAAQC,SAAUC,GAAQJ,KAClBK,OAAQC,GAAcV,IAe9B,OAbAW,EAAAA,UAAU,WACR,IAAKH,IAAQE,EAAW,OAExB,MAAME,GAAO,OAAAC,EAAAH,EAAUI,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBR,EAAIY,kBAEL,CAACZ,EAAKE,IAGF,MCXIW,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWlB,GAASmB,oEFEjEC,IACrB,MAAMnB,SAAEA,GAAaH,KACduB,EAAWC,GAAgBC,EAAAA,SAASC,EAAAA,qBAAqBC,WAgBhE,OAdApB,EAAAA,UAAU,KACR,IAAKJ,EAAU,OAEf,MAAMyB,EAAQzB,EAAS0B,YAAYP,GAMnC,OAHAE,EAAaI,EAAMD,aAGZC,EAAME,gBAAiBC,IAC5BP,EAAaO,MAEd,CAAC5B,EAAUmB,IAEP,CACLnB,UAAU,MAAAA,OAAA,EAAAA,EAAU0B,YAAYP,KAAe,KAC/CC"}