{"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-spread.svelte.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport {\n  SpreadMode,\n  SpreadPlugin,\n  initialDocumentState,\n  SpreadScope,\n} from '@embedpdf/plugin-spread';\n\n/**\n * Hook to get the raw spread plugin instance.\n * Useful for accessing plugin-specific properties or methods not exposed in the capability.\n */\nexport const useSpreadPlugin = () => usePlugin<SpreadPlugin>(SpreadPlugin.id);\n\n/**\n * Hook to get the spread plugin's capability API.\n * This provides methods for controlling spread mode.\n */\nexport const useSpreadCapability = () => useCapability<SpreadPlugin>(SpreadPlugin.id);\n\n// Define the return type explicitly to maintain type safety\ninterface UseSpreadReturn {\n  provides: SpreadScope | null;\n  spreadMode: SpreadMode;\n}\n\n/**\n * Hook for spread state for a specific document\n * @param getDocumentId Function that returns the document ID\n */\nexport const useSpread = (getDocumentId: () => string | null): UseSpreadReturn => {\n  const capability = useSpreadCapability();\n\n  let spreadMode = $state<SpreadMode>(initialDocumentState.spreadMode);\n\n  // Reactive documentId\n  const documentId = $derived(getDocumentId());\n\n  // Scoped capability for current docId\n  const scopedProvides = $derived(\n    capability.provides && documentId ? capability.provides.forDocument(documentId) : null,\n  );\n\n  $effect(() => {\n    const provides = capability.provides;\n    const docId = documentId;\n\n    if (!provides || !docId) {\n      spreadMode = initialDocumentState.spreadMode;\n      return;\n    }\n\n    const scope = provides.forDocument(docId);\n\n    // Set initial spread mode\n    spreadMode = scope.getSpreadMode();\n\n    // Subscribe to spread mode changes for this document\n    return scope.onSpreadChange((newSpreadMode) => {\n      spreadMode = newSpreadMode;\n    });\n  });\n\n  return {\n    get provides() {\n      return scopedProvides;\n    },\n    get spreadMode() {\n      return spreadMode;\n    },\n  };\n};\n"],"names":["useSpreadCapability","useCapability","SpreadPlugin","id","getDocumentId","capability","spreadMode","$","state","proxy","initialDocumentState","documentId","scopedProvides","derived","provides","forDocument","user_effect","docId","scope","getSpreadMode","onSpreadChange","newSpreadMode","set","usePlugin"],"mappings":"0dAkBaA,EAAA,IAA4BC,gBAA4BC,EAAAA,aAAaC,sBAYxDC,IAClB,MAAAC,EAAaL,IAEf,IAAAM,EAAaC,EAAAC,MAAAD,EAAAE,MAAmBC,EAAAA,qBAAqBJ,aAGnD,MAAAK,YAAsBP,GAGtBQ,EAAAL,EAAAM,QAAA,IACJR,EAAWS,gBAAYH,GAAaN,EAAWS,SAASC,kBAAYJ,IAAc,aAGpFJ,EAAAS,uBACQF,EAAWT,EAAWS,SACtBG,QAAQN,OAETG,IAAaG,oBAChBX,EAAaI,EAAAA,qBAAqBJ,YAAA,GAI9B,MAAAY,EAAQJ,EAASC,YAAYE,GAM5B,aAHPX,EAAaY,EAAMC,iBAAA,GAGZD,EAAME,eAAgBC,IAC3Bd,EAAAe,IAAAhB,EAAae,GAAA,QAKX,YAAAP,gBACKF,EACT,EACI,cAAAN,gBACKA,EACT,0DAzDS,IAAwBiB,YAAwBrB,EAAAA,aAAaC"}