{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-pan.ts","../../src/vue/components/pan-mode.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\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 (can be ref, computed, getter, or plain value)\n */\nexport const usePan = (documentId: MaybeRefOrGetter<string>) => {\n  const { provides } = usePanCapability();\n  const isPanning = ref(initialDocumentState.isPanMode);\n\n  watch(\n    [provides, () => toValue(documentId)],\n    ([providesValue, docId], _, onCleanup) => {\n      if (!providesValue) {\n        isPanning.value = initialDocumentState.isPanMode;\n        return;\n      }\n\n      const scope = providesValue.forDocument(docId);\n\n      // Set initial state\n      isPanning.value = scope.isPanMode();\n\n      // Subscribe to pan mode changes\n      const unsubscribe = scope.onPanModeChange((isPan) => {\n        isPanning.value = isPan;\n      });\n\n      onCleanup(unsubscribe);\n    },\n    { immediate: true },\n  );\n\n  // Return a computed ref for the scoped capability\n  const scopedProvides = computed(() => {\n    const docId = toValue(documentId);\n    return provides.value?.forDocument(docId) ?? null;\n  });\n\n  return {\n    provides: scopedProvides,\n    isPanning: readonly(isPanning),\n  };\n};\n","<template>\n  <!-- This component is only used to make the pan mode default when the plugin is initialized -->\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, watchEffect } from 'vue';\nimport { usePanCapability, usePanPlugin } from '../hooks/use-pan';\n\nconst { provides: pan } = usePanCapability();\nconst { plugin: panPlugin } = usePanPlugin();\n\nonMounted(() => {\n  watchEffect(() => {\n    if (!pan.value || !panPlugin.value) return;\n\n    const mode = panPlugin.value.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.value.makePanDefault();\n    }\n  });\n});\n</script>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\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","provides","pan","plugin","panPlugin","onMounted","watchEffect","value","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","PanMode","build","documentId","isPanning","ref","initialDocumentState","isPanMode","watch","toValue","providesValue","docId","_","onCleanup","scope","forDocument","onPanModeChange","isPan","immediate","computed","readonly"],"mappings":"qMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,oDCGzE,MAAQG,SAAUC,GAAQH,KAClBI,OAAQC,GAAcT,WAE9BU,EAAAA,UAAU,KACRC,EAAAA,YAAY,WACV,IAAKJ,EAAIK,QAAUH,EAAUG,MAAO,OAEpC,MAAMC,GAAO,OAAAC,EAAAL,EAAUG,MAAMG,iBAAQC,cAAe,QAC9CC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBV,EAAIK,MAAMS,oCCZHC,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWC,GAASC,oEFGjEC,IACrB,MAAMtB,SAAEA,GAAaF,IACfyB,EAAYC,EAAAA,IAAIC,EAAAA,qBAAqBC,WAE3CC,EAAAA,MACE,CAAC3B,EAAU,IAAM4B,UAAQN,IACzB,EAAEO,EAAeC,GAAQC,EAAGC,KAC1B,IAAKH,EAEH,YADAN,EAAUjB,MAAQmB,EAAAA,qBAAqBC,WAIzC,MAAMO,EAAQJ,EAAcK,YAAYJ,GAGxCP,EAAUjB,MAAQ2B,EAAMP,YAOxBM,EAJoBC,EAAME,gBAAiBC,IACzCb,EAAUjB,MAAQ8B,MAKtB,CAAEC,WAAW,IASf,MAAO,CACLrC,SANqBsC,EAAAA,SAAS,WAC9B,MAAMR,EAAQF,EAAAA,QAAQN,GACtB,OAAO,OAAAd,EAAAR,EAASM,YAAT,EAAAE,EAAgB0B,YAAYJ,KAAU,OAK7CP,UAAWgB,EAAAA,SAAShB"}