@embedpdf/plugin-view-manager 2.0.0-next.0

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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.cjs +2 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +549 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/actions.d.ts +61 -0
  8. package/dist/lib/index.d.ts +9 -0
  9. package/dist/lib/manifest.d.ts +4 -0
  10. package/dist/lib/reducer.d.ts +5 -0
  11. package/dist/lib/types.d.ts +66 -0
  12. package/dist/lib/view-manager-plugin.d.ts +43 -0
  13. package/dist/preact/adapter.d.ts +5 -0
  14. package/dist/preact/core.d.ts +1 -0
  15. package/dist/preact/index.cjs +2 -0
  16. package/dist/preact/index.cjs.map +1 -0
  17. package/dist/preact/index.d.ts +1 -0
  18. package/dist/preact/index.js +141 -0
  19. package/dist/preact/index.js.map +1 -0
  20. package/dist/react/adapter.d.ts +2 -0
  21. package/dist/react/core.d.ts +1 -0
  22. package/dist/react/index.cjs +2 -0
  23. package/dist/react/index.cjs.map +1 -0
  24. package/dist/react/index.d.ts +1 -0
  25. package/dist/react/index.js +140 -0
  26. package/dist/react/index.js.map +1 -0
  27. package/dist/shared/components/index.d.ts +1 -0
  28. package/dist/shared/components/view-context.d.ts +23 -0
  29. package/dist/shared/hooks/index.d.ts +1 -0
  30. package/dist/shared/hooks/use-view-manager.d.ts +25 -0
  31. package/dist/shared/index.d.ts +3 -0
  32. package/dist/shared-preact/components/index.d.ts +1 -0
  33. package/dist/shared-preact/components/view-context.d.ts +23 -0
  34. package/dist/shared-preact/hooks/index.d.ts +1 -0
  35. package/dist/shared-preact/hooks/use-view-manager.d.ts +25 -0
  36. package/dist/shared-preact/index.d.ts +3 -0
  37. package/dist/shared-react/components/index.d.ts +1 -0
  38. package/dist/shared-react/components/view-context.d.ts +23 -0
  39. package/dist/shared-react/hooks/index.d.ts +1 -0
  40. package/dist/shared-react/hooks/use-view-manager.d.ts +25 -0
  41. package/dist/shared-react/index.d.ts +3 -0
  42. package/dist/svelte/components/ViewContext.svelte.d.ts +10 -0
  43. package/dist/svelte/components/index.d.ts +2 -0
  44. package/dist/svelte/components/types.d.ts +12 -0
  45. package/dist/svelte/hooks/index.d.ts +1 -0
  46. package/dist/svelte/hooks/use-view-manager.svelte.d.ts +30 -0
  47. package/dist/svelte/index.cjs +2 -0
  48. package/dist/svelte/index.cjs.map +1 -0
  49. package/dist/svelte/index.d.ts +3 -0
  50. package/dist/svelte/index.js +202 -0
  51. package/dist/svelte/index.js.map +1 -0
  52. package/dist/vue/components/index.d.ts +2 -0
  53. package/dist/vue/components/view-context.vue.d.ts +31 -0
  54. package/dist/vue/hooks/index.d.ts +1 -0
  55. package/dist/vue/hooks/use-view-manager.d.ts +39 -0
  56. package/dist/vue/index.cjs +2 -0
  57. package/dist/vue/index.cjs.map +1 -0
  58. package/dist/vue/index.d.ts +3 -0
  59. package/dist/vue/index.js +197 -0
  60. package/dist/vue/index.js.map +1 -0
  61. package/package.json +82 -0
@@ -0,0 +1,25 @@
1
+ import { ViewManagerPlugin, View } from '../../index.ts';
2
+ export declare const useViewManagerPlugin: () => {
3
+ plugin: ViewManagerPlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useViewManagerCapability: () => {
8
+ provides: Readonly<import('../../index.ts').ViewManagerCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ /**
13
+ * Hook for a specific view's state
14
+ */
15
+ export declare const useView: (viewId: string) => View | null;
16
+ /**
17
+ * Hook for focused view state
18
+ */
19
+ export declare const useFocusedView: () => {
20
+ focusedViewId: string | null;
21
+ };
22
+ /**
23
+ * Hook for all views
24
+ */
25
+ export declare const useAllViews: () => View[];
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './hooks';
3
+ export * from '../index.ts';
@@ -0,0 +1 @@
1
+ export * from './view-context';
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from '../../preact/adapter.ts';
2
+ import { View } from '../../lib/index.ts';
3
+ export interface ViewContextRenderProps {
4
+ view: View;
5
+ documentIds: string[];
6
+ activeDocumentId: string | null;
7
+ isFocused: boolean;
8
+ addDocument: (documentId: string, index?: number) => void;
9
+ removeDocument: (documentId: string) => void;
10
+ setActiveDocument: (documentId: string | null) => void;
11
+ moveDocumentWithinView: (documentId: string, index: number) => void;
12
+ focus: () => void;
13
+ }
14
+ interface ViewContextProps {
15
+ viewId: string;
16
+ autoCreate?: boolean;
17
+ children: (props: ViewContextRenderProps) => ReactNode;
18
+ }
19
+ /**
20
+ * Headless component for managing a single view with multiple documents
21
+ */
22
+ export declare function ViewContext({ viewId, autoCreate, children }: ViewContextProps): import("preact").JSX.Element | null;
23
+ export {};
@@ -0,0 +1 @@
1
+ export * from './use-view-manager';
@@ -0,0 +1,25 @@
1
+ import { ViewManagerPlugin, View } from '../../lib/index.ts';
2
+ export declare const useViewManagerPlugin: () => {
3
+ plugin: ViewManagerPlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useViewManagerCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').ViewManagerCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ /**
13
+ * Hook for a specific view's state
14
+ */
15
+ export declare const useView: (viewId: string) => View | null;
16
+ /**
17
+ * Hook for focused view state
18
+ */
19
+ export declare const useFocusedView: () => {
20
+ focusedViewId: string | null;
21
+ };
22
+ /**
23
+ * Hook for all views
24
+ */
25
+ export declare const useAllViews: () => View[];
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './hooks';
3
+ export * from '../lib/index.ts';
@@ -0,0 +1 @@
1
+ export * from './view-context';
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from '../../react/adapter.ts';
2
+ import { View } from '../../lib/index.ts';
3
+ export interface ViewContextRenderProps {
4
+ view: View;
5
+ documentIds: string[];
6
+ activeDocumentId: string | null;
7
+ isFocused: boolean;
8
+ addDocument: (documentId: string, index?: number) => void;
9
+ removeDocument: (documentId: string) => void;
10
+ setActiveDocument: (documentId: string | null) => void;
11
+ moveDocumentWithinView: (documentId: string, index: number) => void;
12
+ focus: () => void;
13
+ }
14
+ interface ViewContextProps {
15
+ viewId: string;
16
+ autoCreate?: boolean;
17
+ children: (props: ViewContextRenderProps) => ReactNode;
18
+ }
19
+ /**
20
+ * Headless component for managing a single view with multiple documents
21
+ */
22
+ export declare function ViewContext({ viewId, autoCreate, children }: ViewContextProps): import("react/jsx-runtime").JSX.Element | null;
23
+ export {};
@@ -0,0 +1 @@
1
+ export * from './use-view-manager';
@@ -0,0 +1,25 @@
1
+ import { ViewManagerPlugin, View } from '../../lib/index.ts';
2
+ export declare const useViewManagerPlugin: () => {
3
+ plugin: ViewManagerPlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useViewManagerCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').ViewManagerCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ /**
13
+ * Hook for a specific view's state
14
+ */
15
+ export declare const useView: (viewId: string) => View | null;
16
+ /**
17
+ * Hook for focused view state
18
+ */
19
+ export declare const useFocusedView: () => {
20
+ focusedViewId: string | null;
21
+ };
22
+ /**
23
+ * Hook for all views
24
+ */
25
+ export declare const useAllViews: () => View[];
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './hooks';
3
+ export * from '../lib/index.ts';
@@ -0,0 +1,10 @@
1
+ import { Snippet } from 'svelte';
2
+ import { ViewContextRenderProps } from './types';
3
+ interface ViewContextProps {
4
+ viewId: string;
5
+ autoCreate?: boolean;
6
+ children: Snippet<[ViewContextRenderProps]>;
7
+ }
8
+ declare const ViewContext: import('svelte', { with: { "resolution-mode": "import" } }).Component<ViewContextProps, {}, "">;
9
+ type ViewContext = ReturnType<typeof ViewContext>;
10
+ export default ViewContext;
@@ -0,0 +1,2 @@
1
+ export { default as ViewContext } from './ViewContext.svelte';
2
+ export type { ViewContextRenderProps } from './types';
@@ -0,0 +1,12 @@
1
+ import { View } from '../../lib/index.ts';
2
+ export interface ViewContextRenderProps {
3
+ view: View;
4
+ documentIds: string[];
5
+ activeDocumentId: string | null;
6
+ isFocused: boolean;
7
+ addDocument: (documentId: string, index?: number) => void;
8
+ removeDocument: (documentId: string) => void;
9
+ setActiveDocument: (documentId: string | null) => void;
10
+ moveDocumentWithinView: (documentId: string, index: number) => void;
11
+ focus: () => void;
12
+ }
@@ -0,0 +1 @@
1
+ export * from './use-view-manager.svelte';
@@ -0,0 +1,30 @@
1
+ import { ViewManagerPlugin, View } from '../../lib/index.ts';
2
+ export declare const useViewManagerPlugin: () => {
3
+ plugin: ViewManagerPlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useViewManagerCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').ViewManagerCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ /**
13
+ * Hook for a specific view's state
14
+ * @param getViewId Function that returns the view ID
15
+ */
16
+ export declare const useView: (getViewId: () => string | null) => {
17
+ readonly current: View | null;
18
+ };
19
+ /**
20
+ * Hook for focused view state
21
+ */
22
+ export declare const useFocusedView: () => {
23
+ readonly focusedViewId: string | null;
24
+ };
25
+ /**
26
+ * Hook for all views
27
+ */
28
+ export declare const useAllViews: () => {
29
+ readonly current: View[];
30
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("svelte/internal/client"),t=require("@embedpdf/core/svelte"),i=require("@embedpdf/plugin-view-manager");function o(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const i in e)if("default"!==i){const o=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,o.get?o:{enumerable:!0,get:()=>e[i]})}return t.default=e,Object.freeze(t)}require("svelte/internal/disclose-version");const r=o(e),n=()=>t.useCapability(i.ViewManagerPlugin.id);exports.ViewContext=function(e,t){r.push(t,!0);let i=r.prop(t,"autoCreate",3,!0);const o=n();let d=r.state(null),s=r.state(!1);r.user_effect(()=>{if(!o.provides)return r.set(d,null),void r.set(s,!1);let e=o.provides.getView(t.viewId);!e&&i()&&(o.provides.createView(t.viewId),e=o.provides.getView(t.viewId)),r.set(d,e,!0),r.set(s,o.provides.getFocusedViewId()===t.viewId);const n=o.provides.onViewFocusChanged(e=>{r.set(s,e.currentViewId===t.viewId)}),u=o.provides.onDocumentAddedToView(e=>{e.viewId===t.viewId&&r.set(d,o.provides.getView(t.viewId),!0)}),v=o.provides.onDocumentRemovedFromView(e=>{e.viewId===t.viewId&&r.set(d,o.provides.getView(t.viewId),!0)}),c=o.provides.onViewActiveDocumentChanged(e=>{e.viewId===t.viewId&&r.set(d,o.provides.getView(t.viewId),!0)});return()=>{n(),u(),v(),c()}});const u=r.derived(()=>r.get(d)&&o.provides?{view:r.get(d),documentIds:r.get(d).documentIds,activeDocumentId:r.get(d).activeDocumentId,isFocused:r.get(s),addDocument:(e,i)=>{var r;return null==(r=o.provides)?void 0:r.addDocumentToView(t.viewId,e,i)},removeDocument:e=>{var i;return null==(i=o.provides)?void 0:i.removeDocumentFromView(t.viewId,e)},setActiveDocument:e=>{var i;return null==(i=o.provides)?void 0:i.setViewActiveDocument(t.viewId,e)},moveDocumentWithinView:(e,i)=>{var r;return null==(r=o.provides)?void 0:r.moveDocumentWithinView(t.viewId,e,i)},focus:()=>{var e;return null==(e=o.provides)?void 0:e.setFocusedView(t.viewId)}}:null);var v=r.comment(),c=r.first_child(v),w=e=>{var i=r.comment(),o=r.first_child(i);r.snippet(o,()=>t.children??r.noop,()=>r.get(u)),r.append(e,i)};r.if(c,e=>{r.get(u)&&e(w)}),r.append(e,v),r.pop()},exports.useAllViews=()=>{const e=n();let t=r.state(r.proxy([]));return r.user_effect(()=>{if(!e.provides)return void r.set(t,[],!0);const i=()=>{r.set(t,e.provides.getAllViews(),!0)};i();const o=e.provides.onViewCreated(i),n=e.provides.onViewRemoved(i),d=e.provides.onDocumentAddedToView(i),s=e.provides.onDocumentRemovedFromView(i),u=e.provides.onDocumentReordered(i),v=e.provides.onViewActiveDocumentChanged(i);return()=>{o(),n(),d(),s(),u(),v()}}),{get current(){return r.get(t)}}},exports.useFocusedView=()=>{const e=n();let t=r.state(null);return r.user_effect(()=>{if(e.provides)return r.set(t,e.provides.getFocusedViewId(),!0),e.provides.onViewFocusChanged(e=>{r.set(t,e.currentViewId,!0)});r.set(t,null)}),{get focusedViewId(){return r.get(t)}}},exports.useView=e=>{const t=n();let i=r.state(null);const o=r.derived(e);return r.user_effect(()=>{const e=t.provides,n=r.get(o);if(!e||!n)return void r.set(i,null);r.set(i,e.getView(n),!0);const d=e.onDocumentAddedToView(t=>{t.viewId===n&&r.set(i,e.getView(n),!0)}),s=e.onDocumentRemovedFromView(t=>{t.viewId===n&&r.set(i,e.getView(n),!0)}),u=e.onDocumentReordered(t=>{t.viewId===n&&r.set(i,e.getView(n),!0)}),v=e.onViewActiveDocumentChanged(t=>{t.viewId===n&&r.set(i,e.getView(n),!0)});return()=>{d(),s(),u(),v()}}),{get current(){return r.get(i)}}},exports.useViewManagerCapability=n,exports.useViewManagerPlugin=()=>t.usePlugin(i.ViewManagerPlugin.id),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>i[e]})});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ export * from './hooks';
2
+ export * from './components';
3
+ export * from '../lib/index.ts';
@@ -0,0 +1,202 @@
1
+ import * as $ from "svelte/internal/client";
2
+ import { usePlugin, useCapability } from "@embedpdf/core/svelte";
3
+ import { ViewManagerPlugin } from "@embedpdf/plugin-view-manager";
4
+ export * from "@embedpdf/plugin-view-manager";
5
+ import "svelte/internal/disclose-version";
6
+ const useViewManagerPlugin = () => usePlugin(ViewManagerPlugin.id);
7
+ const useViewManagerCapability = () => useCapability(ViewManagerPlugin.id);
8
+ const useView = (getViewId) => {
9
+ const capability = useViewManagerCapability();
10
+ let view = $.state(null);
11
+ const viewId = $.derived(getViewId);
12
+ $.user_effect(() => {
13
+ const provides = capability.provides;
14
+ const currentViewId = $.get(viewId);
15
+ if (!provides || !currentViewId) {
16
+ $.set(view, null);
17
+ return;
18
+ }
19
+ $.set(view, provides.getView(currentViewId), true);
20
+ const unsubAdded = provides.onDocumentAddedToView((event) => {
21
+ if (event.viewId === currentViewId) {
22
+ $.set(view, provides.getView(currentViewId), true);
23
+ }
24
+ });
25
+ const unsubRemoved = provides.onDocumentRemovedFromView((event) => {
26
+ if (event.viewId === currentViewId) {
27
+ $.set(view, provides.getView(currentViewId), true);
28
+ }
29
+ });
30
+ const unsubReordered = provides.onDocumentReordered((event) => {
31
+ if (event.viewId === currentViewId) {
32
+ $.set(view, provides.getView(currentViewId), true);
33
+ }
34
+ });
35
+ const unsubActiveChanged = provides.onViewActiveDocumentChanged((event) => {
36
+ if (event.viewId === currentViewId) {
37
+ $.set(view, provides.getView(currentViewId), true);
38
+ }
39
+ });
40
+ return () => {
41
+ unsubAdded();
42
+ unsubRemoved();
43
+ unsubReordered();
44
+ unsubActiveChanged();
45
+ };
46
+ });
47
+ return {
48
+ get current() {
49
+ return $.get(view);
50
+ }
51
+ };
52
+ };
53
+ const useFocusedView = () => {
54
+ const capability = useViewManagerCapability();
55
+ let focusedViewId = $.state(null);
56
+ $.user_effect(() => {
57
+ if (!capability.provides) {
58
+ $.set(focusedViewId, null);
59
+ return;
60
+ }
61
+ $.set(focusedViewId, capability.provides.getFocusedViewId(), true);
62
+ return capability.provides.onViewFocusChanged((event) => {
63
+ $.set(focusedViewId, event.currentViewId, true);
64
+ });
65
+ });
66
+ return {
67
+ get focusedViewId() {
68
+ return $.get(focusedViewId);
69
+ }
70
+ };
71
+ };
72
+ const useAllViews = () => {
73
+ const capability = useViewManagerCapability();
74
+ let views = $.state($.proxy([]));
75
+ $.user_effect(() => {
76
+ if (!capability.provides) {
77
+ $.set(views, [], true);
78
+ return;
79
+ }
80
+ const updateViews = () => {
81
+ $.set(views, capability.provides.getAllViews(), true);
82
+ };
83
+ updateViews();
84
+ const unsubCreated = capability.provides.onViewCreated(updateViews);
85
+ const unsubRemoved = capability.provides.onViewRemoved(updateViews);
86
+ const unsubAdded = capability.provides.onDocumentAddedToView(updateViews);
87
+ const unsubRemovedDoc = capability.provides.onDocumentRemovedFromView(updateViews);
88
+ const unsubReordered = capability.provides.onDocumentReordered(updateViews);
89
+ const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged(updateViews);
90
+ return () => {
91
+ unsubCreated();
92
+ unsubRemoved();
93
+ unsubAdded();
94
+ unsubRemovedDoc();
95
+ unsubReordered();
96
+ unsubActiveChanged();
97
+ };
98
+ });
99
+ return {
100
+ get current() {
101
+ return $.get(views);
102
+ }
103
+ };
104
+ };
105
+ function ViewContext($$anchor, $$props) {
106
+ $.push($$props, true);
107
+ let autoCreate = $.prop($$props, "autoCreate", 3, true);
108
+ const capability = useViewManagerCapability();
109
+ let view = $.state(null);
110
+ let isFocused = $.state(false);
111
+ $.user_effect(() => {
112
+ if (!capability.provides) {
113
+ $.set(view, null);
114
+ $.set(isFocused, false);
115
+ return;
116
+ }
117
+ let v = capability.provides.getView($$props.viewId);
118
+ if (!v && autoCreate()) {
119
+ capability.provides.createView($$props.viewId);
120
+ v = capability.provides.getView($$props.viewId);
121
+ }
122
+ $.set(view, v, true);
123
+ $.set(isFocused, capability.provides.getFocusedViewId() === $$props.viewId);
124
+ const unsubFocus = capability.provides.onViewFocusChanged((event) => {
125
+ $.set(isFocused, event.currentViewId === $$props.viewId);
126
+ });
127
+ const unsubAdded = capability.provides.onDocumentAddedToView((event) => {
128
+ if (event.viewId === $$props.viewId) {
129
+ $.set(view, capability.provides.getView($$props.viewId), true);
130
+ }
131
+ });
132
+ const unsubRemoved = capability.provides.onDocumentRemovedFromView((event) => {
133
+ if (event.viewId === $$props.viewId) {
134
+ $.set(view, capability.provides.getView($$props.viewId), true);
135
+ }
136
+ });
137
+ const unsubActiveChanged = capability.provides.onViewActiveDocumentChanged((event) => {
138
+ if (event.viewId === $$props.viewId) {
139
+ $.set(view, capability.provides.getView($$props.viewId), true);
140
+ }
141
+ });
142
+ return () => {
143
+ unsubFocus();
144
+ unsubAdded();
145
+ unsubRemoved();
146
+ unsubActiveChanged();
147
+ };
148
+ });
149
+ const slotProps = $.derived(() => {
150
+ if (!$.get(view) || !capability.provides) return null;
151
+ return {
152
+ view: $.get(view),
153
+ documentIds: $.get(view).documentIds,
154
+ activeDocumentId: $.get(view).activeDocumentId,
155
+ isFocused: $.get(isFocused),
156
+ addDocument: (docId, index) => {
157
+ var _a;
158
+ return (_a = capability.provides) == null ? void 0 : _a.addDocumentToView($$props.viewId, docId, index);
159
+ },
160
+ removeDocument: (docId) => {
161
+ var _a;
162
+ return (_a = capability.provides) == null ? void 0 : _a.removeDocumentFromView($$props.viewId, docId);
163
+ },
164
+ setActiveDocument: (docId) => {
165
+ var _a;
166
+ return (_a = capability.provides) == null ? void 0 : _a.setViewActiveDocument($$props.viewId, docId);
167
+ },
168
+ moveDocumentWithinView: (docId, index) => {
169
+ var _a;
170
+ return (_a = capability.provides) == null ? void 0 : _a.moveDocumentWithinView($$props.viewId, docId, index);
171
+ },
172
+ focus: () => {
173
+ var _a;
174
+ return (_a = capability.provides) == null ? void 0 : _a.setFocusedView($$props.viewId);
175
+ }
176
+ };
177
+ });
178
+ var fragment = $.comment();
179
+ var node = $.first_child(fragment);
180
+ {
181
+ var consequent = ($$anchor2) => {
182
+ var fragment_1 = $.comment();
183
+ var node_1 = $.first_child(fragment_1);
184
+ $.snippet(node_1, () => $$props.children ?? $.noop, () => $.get(slotProps));
185
+ $.append($$anchor2, fragment_1);
186
+ };
187
+ $.if(node, ($$render) => {
188
+ if ($.get(slotProps)) $$render(consequent);
189
+ });
190
+ }
191
+ $.append($$anchor, fragment);
192
+ $.pop();
193
+ }
194
+ export {
195
+ ViewContext,
196
+ useAllViews,
197
+ useFocusedView,
198
+ useView,
199
+ useViewManagerCapability,
200
+ useViewManagerPlugin
201
+ };
202
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,2 @@
1
+ export { default as ViewContext } from './view-context.vue';
2
+ export type { ViewContextRenderProps } from './view-context.vue';
@@ -0,0 +1,31 @@
1
+ import { View } from '../../lib/index.ts';
2
+ export interface ViewContextRenderProps {
3
+ view: View;
4
+ documentIds: string[];
5
+ activeDocumentId: string | null;
6
+ isFocused: boolean;
7
+ addDocument: (documentId: string, index?: number) => void;
8
+ removeDocument: (documentId: string) => void;
9
+ setActiveDocument: (documentId: string | null) => void;
10
+ moveDocumentWithinView: (documentId: string, index: number) => void;
11
+ focus: () => void;
12
+ }
13
+ interface ViewContextProps {
14
+ viewId: string;
15
+ autoCreate?: boolean;
16
+ }
17
+ declare var __VLS_1: any;
18
+ type __VLS_Slots = {} & {
19
+ default?: (props: typeof __VLS_1) => any;
20
+ };
21
+ declare const __VLS_base: import('vue').DefineComponent<ViewContextProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ViewContextProps> & Readonly<{}>, {
22
+ autoCreate: boolean;
23
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
24
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
25
+ declare const _default: typeof __VLS_export;
26
+ export default _default;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1 @@
1
+ export * from './use-view-manager';
@@ -0,0 +1,39 @@
1
+ import { MaybeRefOrGetter } from 'vue';
2
+ import { ViewManagerPlugin, View } from '../../lib/index.ts';
3
+ export declare const useViewManagerPlugin: () => import('@embedpdf/core/vue').PluginState<ViewManagerPlugin>;
4
+ export declare const useViewManagerCapability: () => import('@embedpdf/core/vue').CapabilityState<Readonly<import('../../lib/index.ts').ViewManagerCapability>>;
5
+ /**
6
+ * Hook for a specific view's state
7
+ * @param viewId View ID (can be ref, computed, getter, or plain value)
8
+ */
9
+ export declare const useView: (viewId: MaybeRefOrGetter<string>) => import('vue').Ref<{
10
+ id: string;
11
+ documentIds: string[];
12
+ activeDocumentId: string | null;
13
+ createdAt: number;
14
+ } | null, View | {
15
+ id: string;
16
+ documentIds: string[];
17
+ activeDocumentId: string | null;
18
+ createdAt: number;
19
+ } | null>;
20
+ /**
21
+ * Hook for focused view state
22
+ */
23
+ export declare const useFocusedView: () => {
24
+ focusedViewId: import('vue').Ref<string | null, string | null>;
25
+ };
26
+ /**
27
+ * Hook for all views
28
+ */
29
+ export declare const useAllViews: () => import('vue').Ref<{
30
+ id: string;
31
+ documentIds: string[];
32
+ activeDocumentId: string | null;
33
+ createdAt: number;
34
+ }[], View[] | {
35
+ id: string;
36
+ documentIds: string[];
37
+ activeDocumentId: string | null;
38
+ createdAt: number;
39
+ }[]>;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("@embedpdf/core/vue"),o=require("@embedpdf/plugin-view-manager"),u=()=>t.useCapability(o.ViewManagerPlugin.id),i=e.defineComponent({__name:"view-context",props:{viewId:{},autoCreate:{type:Boolean,default:!0}},setup(t){const o=t,{provides:i}=u(),n=e.ref(null),r=e.ref(!1);e.watch([i,()=>o.viewId,()=>o.autoCreate],([e,t,o],u,i)=>{if(!e)return n.value=null,void(r.value=!1);let d=e.getView(t);!d&&o&&(e.createView(t),d=e.getView(t)),n.value=d,r.value=e.getFocusedViewId()===t;const a=e.onViewFocusChanged(e=>{r.value=e.currentViewId===t}),v=e.onDocumentAddedToView(o=>{o.viewId===t&&(n.value=e.getView(t))}),l=e.onDocumentRemovedFromView(o=>{o.viewId===t&&(n.value=e.getView(t))}),c=e.onViewActiveDocumentChanged(o=>{o.viewId===t&&(n.value=e.getView(t))});i(()=>{a(),v(),l(),c()})},{immediate:!0});const d=e.computed(()=>n.value&&i.value?{view:n.value,documentIds:n.value.documentIds,activeDocumentId:n.value.activeDocumentId,isFocused:r.value,addDocument:(e,t)=>{var u;return null==(u=i.value)?void 0:u.addDocumentToView(o.viewId,e,t)},removeDocument:e=>{var t;return null==(t=i.value)?void 0:t.removeDocumentFromView(o.viewId,e)},setActiveDocument:e=>{var t;return null==(t=i.value)?void 0:t.setViewActiveDocument(o.viewId,e)},moveDocumentWithinView:(e,t)=>{var u;return null==(u=i.value)?void 0:u.moveDocumentWithinView(o.viewId,e,t)},focus:()=>{var e;return null==(e=i.value)?void 0:e.setFocusedView(o.viewId)}}:null);return(t,o)=>d.value?e.renderSlot(t.$slots,"default",e.normalizeProps(e.mergeProps({key:0},d.value))):e.createCommentVNode("",!0)}});exports.ViewContext=i,exports.useAllViews=()=>{const{provides:t}=u(),o=e.ref([]);return e.watch(t,(e,t,u)=>{if(!e)return void(o.value=[]);const i=()=>{o.value=e.getAllViews()};i();const n=e.onViewCreated(i),r=e.onViewRemoved(i),d=e.onDocumentAddedToView(i),a=e.onDocumentRemovedFromView(i),v=e.onDocumentReordered(i),l=e.onViewActiveDocumentChanged(i);u(()=>{n(),r(),d(),a(),v(),l()})},{immediate:!0}),o},exports.useFocusedView=()=>{const{provides:t}=u(),o=e.ref(null);return e.watch(t,(e,t,u)=>{if(!e)return void(o.value=null);o.value=e.getFocusedViewId();u(e.onViewFocusChanged(e=>{o.value=e.currentViewId}))},{immediate:!0}),{focusedViewId:o}},exports.useView=t=>{const{provides:o}=u(),i=e.ref(null);return e.watch([o,()=>e.toValue(t)],([e,t],o,u)=>{if(!e)return void(i.value=null);i.value=e.getView(t);const n=e.onDocumentAddedToView(o=>{o.viewId===t&&(i.value=e.getView(t))}),r=e.onDocumentRemovedFromView(o=>{o.viewId===t&&(i.value=e.getView(t))}),d=e.onDocumentReordered(o=>{o.viewId===t&&(i.value=e.getView(t))}),a=e.onViewActiveDocumentChanged(o=>{o.viewId===t&&(i.value=e.getView(t))});u(()=>{n(),r(),d(),a()})},{immediate:!0}),i},exports.useViewManagerCapability=u,exports.useViewManagerPlugin=()=>t.usePlugin(o.ViewManagerPlugin.id),Object.keys(o).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>o[e]})});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-view-manager.ts","../../src/vue/components/view-context.vue"],"sourcesContent":["import { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { ViewManagerPlugin } from '@embedpdf/plugin-view-manager';\nimport { 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 viewId View ID (can be ref, computed, getter, or plain value)\n */\nexport const useView = (viewId: MaybeRefOrGetter<string>) => {\n const { provides } = useViewManagerCapability();\n const view = ref<View | null>(null);\n\n watch(\n [provides, () => toValue(viewId)],\n ([providesValue, vId], _, onCleanup) => {\n if (!providesValue) {\n view.value = null;\n return;\n }\n\n // Get initial view\n view.value = providesValue.getView(vId);\n\n // Subscribe to all document events for this view\n const unsubAdded = providesValue.onDocumentAddedToView((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n const unsubRemoved = providesValue.onDocumentRemovedFromView((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n const unsubReordered = providesValue.onDocumentReordered((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n const unsubActiveChanged = providesValue.onViewActiveDocumentChanged((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n onCleanup(() => {\n unsubAdded();\n unsubRemoved();\n unsubReordered();\n unsubActiveChanged();\n });\n },\n { immediate: true },\n );\n\n return view;\n};\n\n/**\n * Hook for focused view state\n */\nexport const useFocusedView = () => {\n const { provides } = useViewManagerCapability();\n const focusedViewId = ref<string | null>(null);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) {\n focusedViewId.value = null;\n return;\n }\n\n focusedViewId.value = providesValue.getFocusedViewId();\n\n const unsubscribe = providesValue.onViewFocusChanged((event) => {\n focusedViewId.value = event.currentViewId;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { focusedViewId };\n};\n\n/**\n * Hook for all views\n */\nexport const useAllViews = () => {\n const { provides } = useViewManagerCapability();\n const views = ref<View[]>([]);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) {\n views.value = [];\n return;\n }\n\n const updateViews = () => {\n views.value = providesValue.getAllViews();\n };\n\n updateViews();\n\n const unsubCreated = providesValue.onViewCreated(updateViews);\n const unsubRemoved = providesValue.onViewRemoved(updateViews);\n const unsubAdded = providesValue.onDocumentAddedToView(updateViews);\n const unsubRemovedDoc = providesValue.onDocumentRemovedFromView(updateViews);\n const unsubReordered = providesValue.onDocumentReordered(updateViews);\n const unsubActiveChanged = providesValue.onViewActiveDocumentChanged(updateViews);\n\n onCleanup(() => {\n unsubCreated();\n unsubRemoved();\n unsubAdded();\n unsubRemovedDoc();\n unsubReordered();\n unsubActiveChanged();\n });\n },\n { immediate: true },\n );\n\n return views;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch, computed } from 'vue';\nimport { useViewManagerCapability } from '../hooks';\nimport type { View } from '@embedpdf/plugin-view-manager';\n\nexport interface ViewContextRenderProps {\n view: View;\n documentIds: string[];\n activeDocumentId: string | null;\n isFocused: boolean;\n addDocument: (documentId: string, index?: number) => void;\n removeDocument: (documentId: string) => void;\n setActiveDocument: (documentId: string | null) => void;\n moveDocumentWithinView: (documentId: string, index: number) => void;\n focus: () => void;\n}\n\ninterface ViewContextProps {\n viewId: string;\n autoCreate?: boolean;\n}\n\nconst props = withDefaults(defineProps<ViewContextProps>(), {\n autoCreate: true,\n});\n\nconst { provides } = useViewManagerCapability();\nconst view = ref<View | null>(null);\nconst isFocused = ref(false);\n\nwatch(\n [provides, () => props.viewId, () => props.autoCreate],\n ([providesValue, vId, autoCreateValue], _, onCleanup) => {\n if (!providesValue) {\n view.value = null;\n isFocused.value = false;\n return;\n }\n\n // Get or create view\n let v = providesValue.getView(vId);\n if (!v && autoCreateValue) {\n providesValue.createView(vId);\n v = providesValue.getView(vId);\n }\n view.value = v;\n isFocused.value = providesValue.getFocusedViewId() === vId;\n\n const unsubFocus = providesValue.onViewFocusChanged((event) => {\n isFocused.value = event.currentViewId === vId;\n });\n\n const unsubAdded = providesValue.onDocumentAddedToView((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n const unsubRemoved = providesValue.onDocumentRemovedFromView((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n const unsubActiveChanged = providesValue.onViewActiveDocumentChanged((event) => {\n if (event.viewId === vId) {\n view.value = providesValue.getView(vId);\n }\n });\n\n onCleanup(() => {\n unsubFocus();\n unsubAdded();\n unsubRemoved();\n unsubActiveChanged();\n });\n },\n { immediate: true },\n);\n\nconst slotProps = computed<ViewContextRenderProps | null>(() => {\n if (!view.value || !provides.value) return null;\n\n return {\n view: view.value,\n documentIds: view.value.documentIds,\n activeDocumentId: view.value.activeDocumentId,\n isFocused: isFocused.value,\n addDocument: (docId: string, index?: number) =>\n provides.value?.addDocumentToView(props.viewId, docId, index),\n removeDocument: (docId: string) => provides.value?.removeDocumentFromView(props.viewId, docId),\n setActiveDocument: (docId: string | null) =>\n provides.value?.setViewActiveDocument(props.viewId, docId),\n moveDocumentWithinView: (docId: string, index: number) =>\n provides.value?.moveDocumentWithinView(props.viewId, docId, index),\n focus: () => provides.value?.setFocusedView(props.viewId),\n };\n});\n</script>\n\n<template>\n <!--\n Headless component for managing a single view with multiple documents\n \n @example\n <ViewContext viewId=\"main-view\">\n <template #default=\"{ view, documentIds, activeDocumentId, isFocused, addDocument, removeDocument, setActiveDocument, focus }\">\n <div :class=\"{ focused: isFocused }\" @click=\"focus\">\n <button\n v-for=\"docId in documentIds\"\n :key=\"docId\"\n @click=\"setActiveDocument(docId)\"\n :class=\"{ active: docId === activeDocumentId }\"\n >\n {{ docId }}\n <button @click.stop=\"removeDocument(docId)\">×</button>\n </button>\n </div>\n </template>\n </ViewContext>\n -->\n <slot v-if=\"slotProps\" v-bind=\"slotProps\" />\n</template>\n"],"names":["useViewManagerCapability","useCapability","ViewManagerPlugin","id","props","__props","provides","view","ref","isFocused","watch","viewId","autoCreate","providesValue","vId","autoCreateValue","_","onCleanup","value","v","getView","createView","getFocusedViewId","unsubFocus","onViewFocusChanged","event","currentViewId","unsubAdded","onDocumentAddedToView","unsubRemoved","onDocumentRemovedFromView","unsubActiveChanged","onViewActiveDocumentChanged","immediate","slotProps","computed","documentIds","activeDocumentId","addDocument","docId","index","_a","addDocumentToView","removeDocument","removeDocumentFromView","setActiveDocument","setViewActiveDocument","moveDocumentWithinView","focus","setFocusedView","_renderSlot","_ctx","views","updateViews","getAllViews","unsubCreated","onViewCreated","onViewRemoved","unsubRemovedDoc","unsubReordered","onDocumentReordered","focusedViewId","toValue","usePlugin"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ViewContext, type ViewContextRenderProps } from './components';
2
+ export * from './hooks';
3
+ export * from '../lib/index.ts';