{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-spread.ts"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, type MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { SpreadMode, SpreadPlugin, initialDocumentState } from '@embedpdf/plugin-spread';\n\nexport const useSpreadPlugin = () => usePlugin<SpreadPlugin>(SpreadPlugin.id);\nexport const useSpreadCapability = () => useCapability<SpreadPlugin>(SpreadPlugin.id);\n\n/**\n * Hook for spread state for a specific document\n * @param documentId Document ID (can be ref, computed, getter, or plain value)\n */\nexport const useSpread = (documentId: MaybeRefOrGetter<string>) => {\n  const { provides } = useSpreadCapability();\n  const spreadMode = ref<SpreadMode>(initialDocumentState.spreadMode);\n\n  watch(\n    [provides, () => toValue(documentId)],\n    ([providesValue, docId], _, onCleanup) => {\n      if (!providesValue) {\n        spreadMode.value = initialDocumentState.spreadMode;\n        return;\n      }\n\n      const scope = providesValue.forDocument(docId);\n\n      // Set initial spread mode\n      spreadMode.value = scope.getSpreadMode();\n\n      // Subscribe to spread mode changes\n      const unsubscribe = scope.onSpreadChange((newSpreadMode) => {\n        spreadMode.value = newSpreadMode;\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    spreadMode: readonly(spreadMode),\n  };\n};\n"],"names":["useSpreadCapability","useCapability","SpreadPlugin","id","documentId","provides","spreadMode","ref","initialDocumentState","watch","toValue","providesValue","docId","_","onCleanup","value","scope","forDocument","getSpreadMode","onSpreadChange","newSpreadMode","immediate","computed","_a","readonly","usePlugin"],"mappings":"4KAKaA,EAAsB,IAAMC,gBAA4BC,EAAAA,aAAaC,sBAMxDC,IACxB,MAAMC,SAAEA,GAAaL,IACfM,EAAaC,EAAAA,IAAgBC,EAAAA,qBAAqBF,YAExDG,EAAAA,MACE,CAACJ,EAAU,IAAMK,UAAQN,IACzB,EAAEO,EAAeC,GAAQC,EAAGC,KAC1B,IAAKH,EAEH,YADAL,EAAWS,MAAQP,EAAAA,qBAAqBF,YAI1C,MAAMU,EAAQL,EAAcM,YAAYL,GAGxCN,EAAWS,MAAQC,EAAME,gBAOzBJ,EAJoBE,EAAMG,eAAgBC,IACxCd,EAAWS,MAAQK,MAKvB,CAAEC,WAAW,IASf,MAAO,CACLhB,SANqBiB,EAAAA,SAAS,WAC9B,MAAMV,EAAQF,EAAAA,QAAQN,GACtB,OAAO,OAAAmB,EAAAlB,EAASU,YAAT,EAAAQ,EAAgBN,YAAYL,KAAU,OAK7CN,WAAYkB,EAAAA,SAASlB,2DA1CM,IAAMmB,YAAwBvB,EAAAA,aAAaC"}