@embedpdf/plugin-view-manager 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-view-manager.svelte.ts","../../src/svelte/components/ViewContext.svelte"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { ViewManagerPlugin, View } from '@embedpdf/plugin-view-manager';\n\nexport const useViewManagerPlugin = () => usePlugin<ViewManagerPlugin>(ViewManagerPlugin.id);\nexport const useViewManagerCapability = () =>\n useCapability<ViewManagerPlugin>(ViewManagerPlugin.id);\n\n/**\n * Hook for a specific view's state\n * @param getViewId Function that returns the view ID\n */\nexport const useView = (getViewId: () => string | null) => {\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n\n // Reactive viewId\n const viewId = $derived(getViewId());\n\n $effect(() => {\n const provides = capability.provides;\n const currentViewId = viewId;\n\n if (!provides || !currentViewId) {\n view = null;\n return;\n }\n\n // Get initial view\n view = provides.getView(currentViewId);\n\n // Subscribe to all document events for this view\n const unsubAdded = provides.onDocumentAddedToView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubRemoved = provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubReordered = provides.onDocumentReordered((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubActiveChanged = provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n return () => {\n unsubAdded();\n unsubRemoved();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return view;\n },\n };\n};\n\n/**\n * Hook for focused view state\n */\nexport const useFocusedView = () => {\n const capability = useViewManagerCapability();\n\n let focusedViewId = $state<string | null>(null);\n\n $effect(() => {\n if (!capability.provides) {\n focusedViewId = null;\n return;\n }\n\n focusedViewId = capability.provides.getFocusedViewId();\n\n return capability.provides.onViewFocusChanged((event) => {\n focusedViewId = event.currentViewId;\n });\n });\n\n return {\n get focusedViewId() {\n return focusedViewId;\n },\n };\n};\n\n/**\n * Hook for all views\n */\nexport const useAllViews = () => {\n const capability = useViewManagerCapability();\n\n let views = $state<View[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n views = [];\n return;\n }\n\n const updateViews = () => {\n views = capability.provides!.getAllViews();\n };\n\n updateViews();\n\n const unsubCreated = capability.provides.onViewCreated(updateViews);\n const unsubRemoved = capability.provides.onViewRemoved(updateViews);\n const unsubAdded = capability.provides.onDocumentAddedToView(updateViews);\n const unsubRemovedDoc = capability.provides.onDocumentRemovedFromView(updateViews);\n const unsubReordered = capability.provides.onDocumentReordered(updateViews);\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged(updateViews);\n\n return () => {\n unsubCreated();\n unsubRemoved();\n unsubAdded();\n unsubRemovedDoc();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return views;\n },\n };\n};\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useViewManagerCapability } from '../hooks';\n import type { View } from '@embedpdf/plugin-view-manager';\n import type { ViewContextRenderProps } from './types';\n\n interface ViewContextProps {\n viewId: string;\n autoCreate?: boolean;\n children: Snippet<[ViewContextRenderProps]>;\n }\n\n let { viewId, autoCreate = true, children }: ViewContextProps = $props();\n\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n let isFocused = $state(false);\n\n $effect(() => {\n if (!capability.provides) {\n view = null;\n isFocused = false;\n return;\n }\n\n // Get or create view\n let v = capability.provides.getView(viewId);\n if (!v && autoCreate) {\n capability.provides.createView(viewId);\n v = capability.provides.getView(viewId);\n }\n view = v;\n isFocused = capability.provides.getFocusedViewId() === viewId;\n\n const unsubFocus = capability.provides.onViewFocusChanged((event) => {\n isFocused = event.currentViewId === viewId;\n });\n\n const unsubAdded = capability.provides.onDocumentAddedToView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubRemoved = capability.provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n return () => {\n unsubFocus();\n unsubAdded();\n unsubRemoved();\n unsubActiveChanged();\n };\n });\n\n const slotProps = $derived.by((): ViewContextRenderProps | null => {\n if (!view || !capability.provides) return null;\n\n return {\n view,\n documentIds: view.documentIds,\n activeDocumentId: view.activeDocumentId,\n isFocused,\n addDocument: (docId: string, index?: number) =>\n capability.provides?.addDocumentToView(viewId, docId, index),\n removeDocument: (docId: string) => capability.provides?.removeDocumentFromView(viewId, docId),\n setActiveDocument: (docId: string | null) =>\n capability.provides?.setViewActiveDocument(viewId, docId),\n moveDocumentWithinView: (docId: string, index: number) =>\n capability.provides?.moveDocumentWithinView(viewId, docId, index),\n focus: () => capability.provides?.setFocusedView(viewId),\n };\n });\n</script>\n\n<!--\n Headless component for managing a single view with multiple documents\n \n @example\n <ViewContext viewId=\"main-view\">\n {#snippet children({ view, documentIds, activeDocumentId, isFocused, addDocument, removeDocument, setActiveDocument, focus })}\n <div class:focused={isFocused} onclick={focus}>\n {#each documentIds as docId (docId)}\n <button\n onclick={() => setActiveDocument(docId)}\n class:active={docId === activeDocumentId}\n >\n {docId}\n <button onclick={(e) => { e.stopPropagation(); removeDocument(docId); }}>×</button>\n </button>\n {/each}\n </div>\n {/snippet}\n </ViewContext>\n-->\n{#if slotProps}\n {@render children?.(slotProps)}\n{/if}\n"],"names":["useViewManagerCapability","useCapability","ViewManagerPlugin","id","autoCreate","capability","view","isFocused","$","user_effect","provides","set","v","getView","$$props","viewId","createView","getFocusedViewId","unsubFocus","onViewFocusChanged","event","currentViewId","unsubAdded","onDocumentAddedToView","unsubRemoved","onDocumentRemovedFromView","unsubActiveChanged","onViewActiveDocumentChanged","slotProps","derived","get","documentIds","activeDocumentId","addDocument","docId","index","_a","addDocumentToView","removeDocument","removeDocumentFromView","setActiveDocument","setViewActiveDocument","moveDocumentWithinView","focus","setFocusedView","consequent","views","state","proxy","updateViews","getAllViews","unsubCreated","onViewCreated","onViewRemoved","unsubRemovedDoc","unsubReordered","onDocumentReordered","current","focusedViewId","getViewId","usePlugin"],"mappings":"4gBAIaA,EAAA,IACXC,gBAAiCC,EAAAA,kBAAkBC,mDCOrC,IAAAC,2BAAa,GAErB,MAAAC,EAAaL,IAEf,IAAAM,UAA2B,MAC3BC,WAAmB,GAEvBC,EAAAC,YAAO,SACAJ,EAAWK,gBACdF,EAAAG,IAAAL,EAAO,WACPE,EAAAG,IAAAJ,GAAY,GAKV,IAAAK,EAAIP,EAAWK,SAASG,QAAOC,EAAAC,SAC9BH,GAAKR,MACRC,EAAWK,SAASM,WAAUF,EAAAC,QAC9BH,EAAIP,EAAWK,SAASG,QAAOC,EAAAC,SAEjCP,EAAAG,IAAAL,EAAOM,GAAC,GACRJ,EAAAG,IAAAJ,EAAYF,EAAWK,SAASO,qBAAgBH,EAAAC,cAE1CG,EAAab,EAAWK,SAASS,mBAAoBC,UACzDb,EAAYa,EAAMC,gBAAaP,EAAAC,UAG3BO,EAAajB,EAAWK,SAASa,sBAAuBH,IACxDA,EAAML,SAAMD,EAAAC,QACdP,EAAAG,IAAAL,EAAOD,EAAWK,SAAUG,QAAOC,EAAAC,SAAA,KAIjCS,EAAenB,EAAWK,SAASe,0BAA2BL,IAC9DA,EAAML,SAAMD,EAAAC,QACdP,EAAAG,IAAAL,EAAOD,EAAWK,SAAUG,QAAOC,EAAAC,SAAA,KAIjCW,EAAqBrB,EAAWK,SAASiB,4BAA6BP,IACtEA,EAAML,SAAMD,EAAAC,QACdP,EAAAG,IAAAL,EAAOD,EAAWK,SAAUG,QAAOC,EAAAC,SAAA,KAI1B,MAAA,KACXG,IACAI,IACAE,IACAE,OAIE,MAAAE,EAASpB,EAAAqB,QAAA,IACRrB,EAAAsB,IAAAxB,IAASD,EAAWK,UAGvBJ,WAAAA,GACAyB,YAAWvB,EAAAsB,IAAExB,GAAKyB,YAClBC,iBAAgBxB,EAAAsB,IAAExB,GAAK0B,iBACvBzB,gBAAAA,GACA0B,YAAW,CAAGC,EAAeC,WAC3B,OAAA,OAAAC,EAAA/B,EAAWK,eAAX,EAAA0B,EAAqBC,kBAAiBvB,EAAAC,OAASmB,EAAOC,IACxDG,eAAiBJ,UAAkB,OAAA,OAAAE,EAAA/B,EAAWK,eAAX,EAAA0B,EAAqBG,uBAAsBzB,EAAAC,OAASmB,IACvFM,kBAAoBN,UAClB,OAAA,OAAAE,EAAA/B,EAAWK,eAAX,EAAA0B,EAAqBK,sBAAqB3B,EAAAC,OAASmB,IACrDQ,uBAAsB,CAAGR,EAAeC,WACtC,OAAA,OAAAC,EAAA/B,EAAWK,eAAX,EAAA0B,EAAqBM,uBAAsB5B,EAAAC,OAASmB,EAAOC,IAC7DQ,MAAK,WAAQ,OAAA,OAAAP,EAAA/B,EAAWK,eAAX,EAAA0B,EAAqBQ,eAAc9B,EAAAC,UAdR,mIAwCxBa,oCADjBA,MAASiB,0BAtBd,2BDoBQ,MAAAxC,EAAaL,QAEf8C,EAAAtC,EAAAuC,MAAAvC,EAAAwC,MAAA,YAEJxC,EAAAC,qBACOJ,EAAWK,2BACdoC,EAAA,IAAA,GAII,MAAAG,OACJzC,EAAAG,IAAAmC,EAAQzC,EAAWK,SAAUwC,eAAA,IAG/BD,IAEM,MAAAE,EAAe9C,EAAWK,SAAS0C,cAAcH,GACjDzB,EAAenB,EAAWK,SAAS2C,cAAcJ,GACjD3B,EAAajB,EAAWK,SAASa,sBAAsB0B,GACvDK,EAAkBjD,EAAWK,SAASe,0BAA0BwB,GAChEM,EAAiBlD,EAAWK,SAAS8C,oBAAoBP,GACzDvB,EAAqBrB,EAAWK,SAASiB,4BAA4BsB,cAGzEE,IACA3B,IACAF,IACAgC,IACAC,IACA7B,QAKE,WAAA+B,gBACKX,EACT,gCAhEI,MAAAzC,EAAaL,IAEf,IAAA0D,UAAsC,aAE1ClD,EAAAC,oBACOJ,EAAWK,SAOT,OAFPF,EAAAG,IAAA+C,EAAgBrD,EAAWK,SAASO,oBAAA,GAE7BZ,EAAWK,SAASS,mBAAoBC,UAC7CsC,EAAgBtC,EAAMC,eAAA,KAPtBb,EAAAG,IAAA+C,EAAgB,SAYd,iBAAAA,gBACKA,EACT,oBApFoBC,IAChB,MAAAtD,EAAaL,IAEf,IAAAM,UAA2B,MAGzB,MAAAS,YAAkB4C,UAExBnD,EAAAC,uBACQC,EAAWL,EAAWK,SACtBW,QAAgBN,OAEjBL,IAAaW,cAChBb,EAAAG,IAAAL,EAAO,MAKTE,EAAAG,IAAAL,EAAOI,EAASG,QAAQQ,IAAa,GAG/B,MAAAC,EAAaZ,EAASa,sBAAuBH,IAC7CA,EAAML,SAAWM,GACnBb,EAAAG,IAAAL,EAAOI,EAASG,QAAQQ,IAAa,KAInCG,EAAed,EAASe,0BAA2BL,IACnDA,EAAML,SAAWM,GACnBb,EAAAG,IAAAL,EAAOI,EAASG,QAAQQ,IAAa,KAInCkC,EAAiB7C,EAAS8C,oBAAqBpC,IAC/CA,EAAML,SAAWM,GACnBb,EAAAG,IAAAL,EAAOI,EAASG,QAAQQ,IAAa,KAInCK,EAAqBhB,EAASiB,4BAA6BP,IAC3DA,EAAML,SAAWM,GACnBb,EAAAG,IAAAL,EAAOI,EAASG,QAAQQ,IAAa,gBAKvCC,IACAE,IACA+B,IACA7B,QAKE,WAAA+B,gBACKnD,EACT,oEAhES,IAA6BsD,YAA6B1D,EAAAA,kBAAkBC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-view-manager.svelte.ts","../../src/svelte/components/ViewContext.svelte"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { ViewManagerPlugin, View } from '@embedpdf/plugin-view-manager';\n\nexport const useViewManagerPlugin = () => usePlugin<ViewManagerPlugin>(ViewManagerPlugin.id);\nexport const useViewManagerCapability = () =>\n useCapability<ViewManagerPlugin>(ViewManagerPlugin.id);\n\n/**\n * Hook for a specific view's state\n * @param getViewId Function that returns the view ID\n */\nexport const useView = (getViewId: () => string | null) => {\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n\n // Reactive viewId\n const viewId = $derived(getViewId());\n\n $effect(() => {\n const provides = capability.provides;\n const currentViewId = viewId;\n\n if (!provides || !currentViewId) {\n view = null;\n return;\n }\n\n // Get initial view\n view = provides.getView(currentViewId);\n\n // Subscribe to all document events for this view\n const unsubAdded = provides.onDocumentAddedToView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubRemoved = provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubReordered = provides.onDocumentReordered((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubActiveChanged = provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n return () => {\n unsubAdded();\n unsubRemoved();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return view;\n },\n };\n};\n\n/**\n * Hook for focused view state\n */\nexport const useFocusedView = () => {\n const capability = useViewManagerCapability();\n\n let focusedViewId = $state<string | null>(null);\n\n $effect(() => {\n if (!capability.provides) {\n focusedViewId = null;\n return;\n }\n\n focusedViewId = capability.provides.getFocusedViewId();\n\n return capability.provides.onViewFocusChanged((event) => {\n focusedViewId = event.currentViewId;\n });\n });\n\n return {\n get focusedViewId() {\n return focusedViewId;\n },\n };\n};\n\n/**\n * Hook for all views\n */\nexport const useAllViews = () => {\n const capability = useViewManagerCapability();\n\n let views = $state<View[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n views = [];\n return;\n }\n\n const updateViews = () => {\n views = capability.provides!.getAllViews();\n };\n\n updateViews();\n\n const unsubCreated = capability.provides.onViewCreated(updateViews);\n const unsubRemoved = capability.provides.onViewRemoved(updateViews);\n const unsubAdded = capability.provides.onDocumentAddedToView(updateViews);\n const unsubRemovedDoc = capability.provides.onDocumentRemovedFromView(updateViews);\n const unsubReordered = capability.provides.onDocumentReordered(updateViews);\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged(updateViews);\n\n return () => {\n unsubCreated();\n unsubRemoved();\n unsubAdded();\n unsubRemovedDoc();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return views;\n },\n };\n};\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useViewManagerCapability } from '../hooks';\n import type { View } from '@embedpdf/plugin-view-manager';\n import type { ViewContextRenderProps } from './types';\n\n interface ViewContextProps {\n viewId: string;\n autoCreate?: boolean;\n children: Snippet<[ViewContextRenderProps]>;\n }\n\n let { viewId, autoCreate = true, children }: ViewContextProps = $props();\n\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n let isFocused = $state(false);\n\n $effect(() => {\n if (!capability.provides) {\n view = null;\n isFocused = false;\n return;\n }\n\n // Get or create view\n let v = capability.provides.getView(viewId);\n if (!v && autoCreate) {\n capability.provides.createView(viewId);\n v = capability.provides.getView(viewId);\n }\n view = v;\n isFocused = capability.provides.getFocusedViewId() === viewId;\n\n const unsubFocus = capability.provides.onViewFocusChanged((event) => {\n isFocused = event.currentViewId === viewId;\n });\n\n const unsubAdded = capability.provides.onDocumentAddedToView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubRemoved = capability.provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n return () => {\n unsubFocus();\n unsubAdded();\n unsubRemoved();\n unsubActiveChanged();\n };\n });\n\n const slotProps = $derived.by((): ViewContextRenderProps | null => {\n if (!view || !capability.provides) return null;\n\n return {\n view,\n documentIds: view.documentIds,\n activeDocumentId: view.activeDocumentId,\n isFocused,\n addDocument: (docId: string, index?: number) =>\n capability.provides?.addDocumentToView(viewId, docId, index),\n removeDocument: (docId: string) => capability.provides?.removeDocumentFromView(viewId, docId),\n setActiveDocument: (docId: string | null) =>\n capability.provides?.setViewActiveDocument(viewId, docId),\n moveDocumentWithinView: (docId: string, index: number) =>\n capability.provides?.moveDocumentWithinView(viewId, docId, index),\n focus: () => capability.provides?.setFocusedView(viewId),\n };\n });\n</script>\n\n<!--\n Headless component for managing a single view with multiple documents\n \n @example\n <ViewContext viewId=\"main-view\">\n {#snippet children({ view, documentIds, activeDocumentId, isFocused, addDocument, removeDocument, setActiveDocument, focus })}\n <div class:focused={isFocused} onclick={focus}>\n {#each documentIds as docId (docId)}\n <button\n onclick={() => setActiveDocument(docId)}\n class:active={docId === activeDocumentId}\n >\n {docId}\n <button onclick={(e) => { e.stopPropagation(); removeDocument(docId); }}>×</button>\n </button>\n {/each}\n </div>\n {/snippet}\n </ViewContext>\n-->\n{#if slotProps}\n {@render children?.(slotProps)}\n{/if}\n"],"names":["useViewManagerCapability","useCapability","ViewManagerPlugin","id","autoCreate","capability","view","$","state","isFocused","user_effect","provides","set","v","getView","$$props","viewId","createView","getFocusedViewId","unsubFocus","onViewFocusChanged","event","currentViewId","unsubAdded","onDocumentAddedToView","unsubRemoved","onDocumentRemovedFromView","unsubActiveChanged","onViewActiveDocumentChanged","slotProps","derived","get","documentIds","activeDocumentId","addDocument","docId","index","_a","addDocumentToView","removeDocument","removeDocumentFromView","setActiveDocument","setViewActiveDocument","moveDocumentWithinView","focus","setFocusedView","consequent","views","proxy","updateViews","getAllViews","unsubCreated","onViewCreated","onViewRemoved","unsubRemovedDoc","unsubReordered","onDocumentReordered","current","focusedViewId","getViewId","usePlugin"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-view-manager.svelte.ts","../../src/svelte/components/ViewContext.svelte"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { ViewManagerPlugin, View } from '@embedpdf/plugin-view-manager';\n\nexport const useViewManagerPlugin = () => usePlugin<ViewManagerPlugin>(ViewManagerPlugin.id);\nexport const useViewManagerCapability = () =>\n useCapability<ViewManagerPlugin>(ViewManagerPlugin.id);\n\n/**\n * Hook for a specific view's state\n * @param getViewId Function that returns the view ID\n */\nexport const useView = (getViewId: () => string | null) => {\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n\n // Reactive viewId\n const viewId = $derived(getViewId());\n\n $effect(() => {\n const provides = capability.provides;\n const currentViewId = viewId;\n\n if (!provides || !currentViewId) {\n view = null;\n return;\n }\n\n // Get initial view\n view = provides.getView(currentViewId);\n\n // Subscribe to all document events for this view\n const unsubAdded = provides.onDocumentAddedToView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubRemoved = provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubReordered = provides.onDocumentReordered((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubActiveChanged = provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n return () => {\n unsubAdded();\n unsubRemoved();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return view;\n },\n };\n};\n\n/**\n * Hook for focused view state\n */\nexport const useFocusedView = () => {\n const capability = useViewManagerCapability();\n\n let focusedViewId = $state<string | null>(null);\n\n $effect(() => {\n if (!capability.provides) {\n focusedViewId = null;\n return;\n }\n\n focusedViewId = capability.provides.getFocusedViewId();\n\n return capability.provides.onViewFocusChanged((event) => {\n focusedViewId = event.currentViewId;\n });\n });\n\n return {\n get focusedViewId() {\n return focusedViewId;\n },\n };\n};\n\n/**\n * Hook for all views\n */\nexport const useAllViews = () => {\n const capability = useViewManagerCapability();\n\n let views = $state<View[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n views = [];\n return;\n }\n\n const updateViews = () => {\n views = capability.provides!.getAllViews();\n };\n\n updateViews();\n\n const unsubCreated = capability.provides.onViewCreated(updateViews);\n const unsubRemoved = capability.provides.onViewRemoved(updateViews);\n const unsubAdded = capability.provides.onDocumentAddedToView(updateViews);\n const unsubRemovedDoc = capability.provides.onDocumentRemovedFromView(updateViews);\n const unsubReordered = capability.provides.onDocumentReordered(updateViews);\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged(updateViews);\n\n return () => {\n unsubCreated();\n unsubRemoved();\n unsubAdded();\n unsubRemovedDoc();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return views;\n },\n };\n};\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useViewManagerCapability } from '../hooks';\n import type { View } from '@embedpdf/plugin-view-manager';\n import type { ViewContextRenderProps } from './types';\n\n interface ViewContextProps {\n viewId: string;\n autoCreate?: boolean;\n children: Snippet<[ViewContextRenderProps]>;\n }\n\n let { viewId, autoCreate = true, children }: ViewContextProps = $props();\n\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n let isFocused = $state(false);\n\n $effect(() => {\n if (!capability.provides) {\n view = null;\n isFocused = false;\n return;\n }\n\n // Get or create view\n let v = capability.provides.getView(viewId);\n if (!v && autoCreate) {\n capability.provides.createView(viewId);\n v = capability.provides.getView(viewId);\n }\n view = v;\n isFocused = capability.provides.getFocusedViewId() === viewId;\n\n const unsubFocus = capability.provides.onViewFocusChanged((event) => {\n isFocused = event.currentViewId === viewId;\n });\n\n const unsubAdded = capability.provides.onDocumentAddedToView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubRemoved = capability.provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n return () => {\n unsubFocus();\n unsubAdded();\n unsubRemoved();\n unsubActiveChanged();\n };\n });\n\n const slotProps = $derived.by((): ViewContextRenderProps | null => {\n if (!view || !capability.provides) return null;\n\n return {\n view,\n documentIds: view.documentIds,\n activeDocumentId: view.activeDocumentId,\n isFocused,\n addDocument: (docId: string, index?: number) =>\n capability.provides?.addDocumentToView(viewId, docId, index),\n removeDocument: (docId: string) => capability.provides?.removeDocumentFromView(viewId, docId),\n setActiveDocument: (docId: string | null) =>\n capability.provides?.setViewActiveDocument(viewId, docId),\n moveDocumentWithinView: (docId: string, index: number) =>\n capability.provides?.moveDocumentWithinView(viewId, docId, index),\n focus: () => capability.provides?.setFocusedView(viewId),\n };\n });\n</script>\n\n<!--\n Headless component for managing a single view with multiple documents\n \n @example\n <ViewContext viewId=\"main-view\">\n {#snippet children({ view, documentIds, activeDocumentId, isFocused, addDocument, removeDocument, setActiveDocument, focus })}\n <div class:focused={isFocused} onclick={focus}>\n {#each documentIds as docId (docId)}\n <button\n onclick={() => setActiveDocument(docId)}\n class:active={docId === activeDocumentId}\n >\n {docId}\n <button onclick={(e) => { e.stopPropagation(); removeDocument(docId); }}>×</button>\n </button>\n {/each}\n </div>\n {/snippet}\n </ViewContext>\n-->\n{#if slotProps}\n {@render children?.(slotProps)}\n{/if}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-view-manager.svelte.ts","../../src/svelte/components/ViewContext.svelte"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { ViewManagerPlugin, View } from '@embedpdf/plugin-view-manager';\n\nexport const useViewManagerPlugin = () => usePlugin<ViewManagerPlugin>(ViewManagerPlugin.id);\nexport const useViewManagerCapability = () =>\n useCapability<ViewManagerPlugin>(ViewManagerPlugin.id);\n\n/**\n * Hook for a specific view's state\n * @param getViewId Function that returns the view ID\n */\nexport const useView = (getViewId: () => string | null) => {\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n\n // Reactive viewId\n const viewId = $derived(getViewId());\n\n $effect(() => {\n const provides = capability.provides;\n const currentViewId = viewId;\n\n if (!provides || !currentViewId) {\n view = null;\n return;\n }\n\n // Get initial view\n view = provides.getView(currentViewId);\n\n // Subscribe to all document events for this view\n const unsubAdded = provides.onDocumentAddedToView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubRemoved = provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubReordered = provides.onDocumentReordered((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n const unsubActiveChanged = provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === currentViewId) {\n view = provides.getView(currentViewId);\n }\n });\n\n return () => {\n unsubAdded();\n unsubRemoved();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return view;\n },\n };\n};\n\n/**\n * Hook for focused view state\n */\nexport const useFocusedView = () => {\n const capability = useViewManagerCapability();\n\n let focusedViewId = $state<string | null>(null);\n\n $effect(() => {\n if (!capability.provides) {\n focusedViewId = null;\n return;\n }\n\n focusedViewId = capability.provides.getFocusedViewId();\n\n return capability.provides.onViewFocusChanged((event) => {\n focusedViewId = event.currentViewId;\n });\n });\n\n return {\n get focusedViewId() {\n return focusedViewId;\n },\n };\n};\n\n/**\n * Hook for all views\n */\nexport const useAllViews = () => {\n const capability = useViewManagerCapability();\n\n let views = $state<View[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n views = [];\n return;\n }\n\n const updateViews = () => {\n views = capability.provides!.getAllViews();\n };\n\n updateViews();\n\n const unsubCreated = capability.provides.onViewCreated(updateViews);\n const unsubRemoved = capability.provides.onViewRemoved(updateViews);\n const unsubAdded = capability.provides.onDocumentAddedToView(updateViews);\n const unsubRemovedDoc = capability.provides.onDocumentRemovedFromView(updateViews);\n const unsubReordered = capability.provides.onDocumentReordered(updateViews);\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged(updateViews);\n\n return () => {\n unsubCreated();\n unsubRemoved();\n unsubAdded();\n unsubRemovedDoc();\n unsubReordered();\n unsubActiveChanged();\n };\n });\n\n return {\n get current() {\n return views;\n },\n };\n};\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useViewManagerCapability } from '../hooks';\n import type { View } from '@embedpdf/plugin-view-manager';\n import type { ViewContextRenderProps } from './types';\n\n interface ViewContextProps {\n viewId: string;\n autoCreate?: boolean;\n children: Snippet<[ViewContextRenderProps]>;\n }\n\n let { viewId, autoCreate = true, children }: ViewContextProps = $props();\n\n const capability = useViewManagerCapability();\n\n let view = $state<View | null>(null);\n let isFocused = $state(false);\n\n $effect(() => {\n if (!capability.provides) {\n view = null;\n isFocused = false;\n return;\n }\n\n // Get or create view\n let v = capability.provides.getView(viewId);\n if (!v && autoCreate) {\n capability.provides.createView(viewId);\n v = capability.provides.getView(viewId);\n }\n view = v;\n isFocused = capability.provides.getFocusedViewId() === viewId;\n\n const unsubFocus = capability.provides.onViewFocusChanged((event) => {\n isFocused = event.currentViewId === viewId;\n });\n\n const unsubAdded = capability.provides.onDocumentAddedToView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubRemoved = capability.provides.onDocumentRemovedFromView((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged((event) => {\n if (event.viewId === viewId) {\n view = capability.provides!.getView(viewId);\n }\n });\n\n return () => {\n unsubFocus();\n unsubAdded();\n unsubRemoved();\n unsubActiveChanged();\n };\n });\n\n const slotProps = $derived.by((): ViewContextRenderProps | null => {\n if (!view || !capability.provides) return null;\n\n return {\n view,\n documentIds: view.documentIds,\n activeDocumentId: view.activeDocumentId,\n isFocused,\n addDocument: (docId: string, index?: number) =>\n capability.provides?.addDocumentToView(viewId, docId, index),\n removeDocument: (docId: string) => capability.provides?.removeDocumentFromView(viewId, docId),\n setActiveDocument: (docId: string | null) =>\n capability.provides?.setViewActiveDocument(viewId, docId),\n moveDocumentWithinView: (docId: string, index: number) =>\n capability.provides?.moveDocumentWithinView(viewId, docId, index),\n focus: () => capability.provides?.setFocusedView(viewId),\n };\n });\n</script>\n\n<!--\n Headless component for managing a single view with multiple documents\n \n @example\n <ViewContext viewId=\"main-view\">\n {#snippet children({ view, documentIds, activeDocumentId, isFocused, addDocument, removeDocument, setActiveDocument, focus })}\n <div class:focused={isFocused} onclick={focus}>\n {#each documentIds as docId (docId)}\n <button\n onclick={() => setActiveDocument(docId)}\n class:active={docId === activeDocumentId}\n >\n {docId}\n <button onclick={(e) => { e.stopPropagation(); removeDocument(docId); }}>×</button>\n </button>\n {/each}\n </div>\n {/snippet}\n </ViewContext>\n-->\n{#if slotProps}\n {@render children?.(slotProps)}\n{/if}\n"],"names":[],"mappings":"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"}
@@ -14,7 +14,17 @@ interface ViewContextProps {
14
14
  viewId: string;
15
15
  autoCreate?: boolean;
16
16
  }
17
- declare var __VLS_1: any;
17
+ declare var __VLS_1: {
18
+ view: View;
19
+ documentIds: string[];
20
+ activeDocumentId: string | null;
21
+ isFocused: boolean;
22
+ addDocument: (documentId: string, index?: number) => void;
23
+ removeDocument: (documentId: string) => void;
24
+ setActiveDocument: (documentId: string | null) => void;
25
+ moveDocumentWithinView: (documentId: string, index: number) => void;
26
+ focus: () => void;
27
+ };
18
28
  type __VLS_Slots = {} & {
19
29
  default?: (props: typeof __VLS_1) => any;
20
30
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embedpdf/plugin-view-manager",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.cjs",
@@ -35,14 +35,14 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@embedpdf/models": "2.0.0"
38
+ "@embedpdf/models": "2.0.2"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/react": "^18.2.0",
42
42
  "typescript": "^5.0.0",
43
+ "@embedpdf/core": "2.0.2",
43
44
  "@embedpdf/build": "1.1.0",
44
- "@embedpdf/core": "2.0.0",
45
- "@embedpdf/plugin-document-manager": "2.0.0"
45
+ "@embedpdf/plugin-document-manager": "2.0.2"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": ">=16.8.0",
@@ -50,7 +50,7 @@
50
50
  "preact": "^10.26.4",
51
51
  "vue": ">=3.2.0",
52
52
  "svelte": ">=5 <6",
53
- "@embedpdf/core": "2.0.0"
53
+ "@embedpdf/core": "2.0.2"
54
54
  },
55
55
  "files": [
56
56
  "dist",