@embedpdf/plugin-fullscreen 2.0.0-next.3 → 2.0.1
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-fullscreen.svelte.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/svelte/components/FullscreenProvider.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const capability = useFullscreenCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n state: initialState as FullscreenState,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onStateChange((newState) => {\n state.state = newState;\n });\n });\n\n return state;\n};\n","import { FullscreenRequestEvent } from '@embedpdf/plugin-fullscreen';\n\n/**\n * Find the element to fullscreen based on the event and container\n * @param event The fullscreen request event\n * @param containerElement The container element (fallback if no selector or element not found)\n * @param targetSelector Optional target selector from plugin config\n * @returns The element to fullscreen, or null if not found\n */\nexport function findFullscreenElement(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): HTMLElement | null {\n if (!containerElement || event.action !== 'enter') {\n return containerElement;\n }\n\n let elementToFullscreen: HTMLElement | null = null;\n\n if (targetSelector) {\n // Try to find the element within the wrapper element\n elementToFullscreen = containerElement.querySelector(targetSelector);\n if (!elementToFullscreen) {\n console.warn(\n `Fullscreen: Could not find element with selector \"${targetSelector}\" within the wrapper. Falling back to wrapper element.`,\n );\n }\n }\n\n // Fall back to the wrapper element if no selector or element not found\n if (!elementToFullscreen) {\n elementToFullscreen = containerElement;\n }\n\n return elementToFullscreen;\n}\n\n/**\n * Handle a fullscreen request event\n * @param event The fullscreen request event\n * @param containerElement The container element\n * @param targetSelector Optional target selector from plugin config\n */\nexport async function handleFullscreenRequest(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): Promise<void> {\n if (event.action === 'enter') {\n const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);\n\n if (elementToFullscreen && !document.fullscreenElement) {\n await elementToFullscreen.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\n}\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import type { HTMLAttributes } from 'svelte/elements';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n import { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\n type FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: Snippet;\n class?: string;\n style?: string;\n };\n\n let {\n children,\n class: propsClass,\n style: propsStyle,\n ...restProps\n }: FullscreenProviderProps = $props();\n\n const fullscreenCapabilityState = useFullscreenCapability();\n const fullscreenPluginState = useFullscreenPlugin();\n\n let containerRef = $state<HTMLDivElement | null>(null);\n\n // Handle fullscreen requests\n $effect(() => {\n const capability = fullscreenCapabilityState.provides;\n const plugin = fullscreenPluginState.plugin;\n\n if (!capability || !plugin) return;\n\n const unsub = capability.onRequest(async (event) => {\n const targetSelector = plugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef, targetSelector);\n });\n\n return unsub;\n });\n\n // Listen for fullscreen changes\n $effect(() => {\n const plugin = fullscreenPluginState.plugin;\n\n if (!plugin) return;\n\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n });\n</script>\n\n<div\n {...restProps}\n bind:this={containerRef}\n style:position=\"relative\"\n style:width=\"100%\"\n style:height=\"100%\"\n style={propsStyle}\n class={propsClass}\n>\n {@render children()}\n</div>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { FullscreenPluginPackage as BaseFullscreenPackage } from '@embedpdf/plugin-fullscreen';\nimport { FullscreenProvider } from './components';\n\nexport * from './hooks';\nexport * from './components';\n\nexport * from '@embedpdf/plugin-fullscreen';\n\nexport const FullscreenPluginPackage = createPluginPackage(BaseFullscreenPackage)\n .addWrapper(FullscreenProvider)\n .build();\n"],"names":["useFullscreenPlugin","usePlugin","FullscreenPlugin","id","useFullscreenCapability","useCapability","async","handleFullscreenRequest","event","containerElement","targetSelector","action","elementToFullscreen","querySelector","console","warn","findFullscreenElement","document","fullscreenElement","requestFullscreen","exitFullscreen","restProps","$","rest_props","$$props","fullscreenCapabilityState","fullscreenPluginState","containerRef","user_effect","capability","provides","plugin","onRequest","getTargetSelector","get","handler","setFullscreenState","addEventListener","removeEventListener","
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-fullscreen.svelte.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/svelte/components/FullscreenProvider.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const capability = useFullscreenCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n state: initialState as FullscreenState,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onStateChange((newState) => {\n state.state = newState;\n });\n });\n\n return state;\n};\n","import { FullscreenRequestEvent } from '@embedpdf/plugin-fullscreen';\n\n/**\n * Find the element to fullscreen based on the event and container\n * @param event The fullscreen request event\n * @param containerElement The container element (fallback if no selector or element not found)\n * @param targetSelector Optional target selector from plugin config\n * @returns The element to fullscreen, or null if not found\n */\nexport function findFullscreenElement(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): HTMLElement | null {\n if (!containerElement || event.action !== 'enter') {\n return containerElement;\n }\n\n let elementToFullscreen: HTMLElement | null = null;\n\n if (targetSelector) {\n // Try to find the element within the wrapper element\n elementToFullscreen = containerElement.querySelector(targetSelector);\n if (!elementToFullscreen) {\n console.warn(\n `Fullscreen: Could not find element with selector \"${targetSelector}\" within the wrapper. Falling back to wrapper element.`,\n );\n }\n }\n\n // Fall back to the wrapper element if no selector or element not found\n if (!elementToFullscreen) {\n elementToFullscreen = containerElement;\n }\n\n return elementToFullscreen;\n}\n\n/**\n * Handle a fullscreen request event\n * @param event The fullscreen request event\n * @param containerElement The container element\n * @param targetSelector Optional target selector from plugin config\n */\nexport async function handleFullscreenRequest(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): Promise<void> {\n if (event.action === 'enter') {\n const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);\n\n if (elementToFullscreen && !document.fullscreenElement) {\n await elementToFullscreen.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\n}\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import type { HTMLAttributes } from 'svelte/elements';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n import { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\n type FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: Snippet;\n class?: string;\n style?: string;\n };\n\n let {\n children,\n class: propsClass,\n style: propsStyle,\n ...restProps\n }: FullscreenProviderProps = $props();\n\n const fullscreenCapabilityState = useFullscreenCapability();\n const fullscreenPluginState = useFullscreenPlugin();\n\n let containerRef = $state<HTMLDivElement | null>(null);\n\n // Handle fullscreen requests\n $effect(() => {\n const capability = fullscreenCapabilityState.provides;\n const plugin = fullscreenPluginState.plugin;\n\n if (!capability || !plugin) return;\n\n const unsub = capability.onRequest(async (event) => {\n const targetSelector = plugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef, targetSelector);\n });\n\n return unsub;\n });\n\n // Listen for fullscreen changes\n $effect(() => {\n const plugin = fullscreenPluginState.plugin;\n\n if (!plugin) return;\n\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n });\n</script>\n\n<div\n {...restProps}\n bind:this={containerRef}\n style:position=\"relative\"\n style:width=\"100%\"\n style:height=\"100%\"\n style={propsStyle}\n class={propsClass}\n>\n {@render children()}\n</div>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { FullscreenPluginPackage as BaseFullscreenPackage } from '@embedpdf/plugin-fullscreen';\nimport { FullscreenProvider } from './components';\n\nexport * from './hooks';\nexport * from './components';\n\nexport * from '@embedpdf/plugin-fullscreen';\n\nexport const FullscreenPluginPackage = createPluginPackage(BaseFullscreenPackage)\n .addWrapper(FullscreenProvider)\n .build();\n"],"names":["useFullscreenPlugin","usePlugin","FullscreenPlugin","id","useFullscreenCapability","useCapability","async","handleFullscreenRequest","event","containerElement","targetSelector","action","elementToFullscreen","querySelector","console","warn","findFullscreenElement","document","fullscreenElement","requestFullscreen","exitFullscreen","restProps","$","rest_props","$$props","fullscreenCapabilityState","fullscreenPluginState","containerRef","state","user_effect","capability","provides","plugin","onRequest","getTargetSelector","get","handler","setFullscreenState","addEventListener","removeEventListener","div","root","$$value","set","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","FullscreenProvider","build","initialState","onStateChange","newState"],"mappings":"4iBAGaA,EAAA,IAA4BC,YAA4BC,EAAAA,iBAAiBC,IACzEC,EAAA,IAAgCC,gBAAgCH,EAAAA,iBAAiBC,ICwC9FG,eAAsBC,EACpBC,EACAC,EACAC,GAEA,GAAqB,UAAjBF,EAAMG,OAAoB,CAC5B,MAAMC,EAzCH,SACLJ,EACAC,EACAC,GAEA,IAAKD,GAAqC,UAAjBD,EAAMG,OAC7B,OAAOF,EAGT,IAAIG,EAA0C,KAiB9C,OAfIF,IAEFE,EAAsBH,EAAiBI,cAAcH,GAChDE,GACHE,QAAQC,KACN,qDAAqDL,4DAMtDE,IACHA,EAAsBH,GAGjBG,CACT,CAcgCI,CAAsBR,EAAOC,EAAkBC,GAEvEE,IAAwBK,SAASC,yBAC7BN,EAAoBO,mBAE9B,MACMF,SAASC,yBACLD,SAASG,gBAGrB,sEC5COC,EAAQC,EAAAC,WAAAC,EAAA,8DAGP,MAAAC,EAA4BrB,IAC5BsB,EAAwB1B,QAE1B2B,EAAeL,EAAAM,MAA8B,MAGjDN,EAAAO,YAAO,WACCC,EAAaL,EAA0BM,SACvCC,EAASN,EAAsBM,OAEhC,IAAAF,IAAeE,EAAM,cAEZF,EAAWG,UAAS3B,MAAQE,UAClCE,EAAiBsB,EAAOE,0BACxB3B,EAAwBC,EAAKc,EAAAa,IAAER,GAAcjB,OAOvDY,EAAAO,YAAO,WACCG,EAASN,EAAsBM,WAEhCA,EAAM,OAEL,MAAAI,EAAO,KACXJ,EAAOK,qBAAqBpB,SAASC,oBAI1B,OADbD,SAASqB,iBAAiB,mBAAoBF,GACjC,IAAAnB,SAASsB,oBAAoB,mBAAoBH,SAIjEI,EAAEC,uBAAFD,EAAE,KAAA,IACGnB,0GADLmB,uCAAAA,eAAAA,EAAEE,GAAApB,EAAAqB,IAEUhB,EAAYe,GAAA,IAAApB,EAAAa,IAAZR,eAFZa,UAFD,CC3CO,MAAMI,EAA0BC,EAAAA,oBAAoBC,EAAAA,yBACxDC,WAAWC,GACXC,kGHJK,MAAAnB,EAAa1B,IAEbwB,WACA,YAAAG,GACK,OAAAD,EAAWC,QACpB,EACAH,MAAOsB,EAAAA,sBAGT5B,EAAAO,iBACO,GAAAC,EAAWC,SACT,OAAAD,EAAWC,SAASoB,cAAeC,IACxCxB,EAAMA,MAAQwB,MAIXxB"}
|
package/dist/svelte/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-fullscreen.svelte.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/svelte/components/FullscreenProvider.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const capability = useFullscreenCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n state: initialState as FullscreenState,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onStateChange((newState) => {\n state.state = newState;\n });\n });\n\n return state;\n};\n","import { FullscreenRequestEvent } from '@embedpdf/plugin-fullscreen';\n\n/**\n * Find the element to fullscreen based on the event and container\n * @param event The fullscreen request event\n * @param containerElement The container element (fallback if no selector or element not found)\n * @param targetSelector Optional target selector from plugin config\n * @returns The element to fullscreen, or null if not found\n */\nexport function findFullscreenElement(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): HTMLElement | null {\n if (!containerElement || event.action !== 'enter') {\n return containerElement;\n }\n\n let elementToFullscreen: HTMLElement | null = null;\n\n if (targetSelector) {\n // Try to find the element within the wrapper element\n elementToFullscreen = containerElement.querySelector(targetSelector);\n if (!elementToFullscreen) {\n console.warn(\n `Fullscreen: Could not find element with selector \"${targetSelector}\" within the wrapper. Falling back to wrapper element.`,\n );\n }\n }\n\n // Fall back to the wrapper element if no selector or element not found\n if (!elementToFullscreen) {\n elementToFullscreen = containerElement;\n }\n\n return elementToFullscreen;\n}\n\n/**\n * Handle a fullscreen request event\n * @param event The fullscreen request event\n * @param containerElement The container element\n * @param targetSelector Optional target selector from plugin config\n */\nexport async function handleFullscreenRequest(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): Promise<void> {\n if (event.action === 'enter') {\n const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);\n\n if (elementToFullscreen && !document.fullscreenElement) {\n await elementToFullscreen.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\n}\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import type { HTMLAttributes } from 'svelte/elements';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n import { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\n type FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: Snippet;\n class?: string;\n style?: string;\n };\n\n let {\n children,\n class: propsClass,\n style: propsStyle,\n ...restProps\n }: FullscreenProviderProps = $props();\n\n const fullscreenCapabilityState = useFullscreenCapability();\n const fullscreenPluginState = useFullscreenPlugin();\n\n let containerRef = $state<HTMLDivElement | null>(null);\n\n // Handle fullscreen requests\n $effect(() => {\n const capability = fullscreenCapabilityState.provides;\n const plugin = fullscreenPluginState.plugin;\n\n if (!capability || !plugin) return;\n\n const unsub = capability.onRequest(async (event) => {\n const targetSelector = plugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef, targetSelector);\n });\n\n return unsub;\n });\n\n // Listen for fullscreen changes\n $effect(() => {\n const plugin = fullscreenPluginState.plugin;\n\n if (!plugin) return;\n\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n });\n</script>\n\n<div\n {...restProps}\n bind:this={containerRef}\n style:position=\"relative\"\n style:width=\"100%\"\n style:height=\"100%\"\n style={propsStyle}\n class={propsClass}\n>\n {@render children()}\n</div>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { FullscreenPluginPackage as BaseFullscreenPackage } from '@embedpdf/plugin-fullscreen';\nimport { FullscreenProvider } from './components';\n\nexport * from './hooks';\nexport * from './components';\n\nexport * from '@embedpdf/plugin-fullscreen';\n\nexport const FullscreenPluginPackage = createPluginPackage(BaseFullscreenPackage)\n .addWrapper(FullscreenProvider)\n .build();\n"],"names":["BaseFullscreenPackage"],"mappings":";;;;;;AAGa,MAAA,sBAAA,MAA4B,UAA4B,iBAAiB,EAAE;AAC3E,MAAA,0BAAA,MAAgC,cAAgC,iBAAiB,EAAE;AAEnF,MAAA,sBAAsB;AAC3B,QAAA,aAAa,wBAAA;QAEb;IACA,IAAA,WAAW;AACN,aAAA,WAAW;AAAA,IACpB;AAAA,IACA,OAAO;AAAA;AAGT,IAAA,kBAAc;AACP,QAAA,CAAA,WAAW,SAAA;AACT,WAAA,WAAW,SAAS,cAAA,CAAe,aAAa;AACrD,YAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;SAEM;AACT;ACfO,SAAS,sBACd,OACA,kBACA,gBACoB;AACpB,MAAI,CAAC,oBAAoB,MAAM,WAAW,SAAS;AACjD,WAAO;AAAA,EACT;AAEA,MAAI,sBAA0C;AAE9C,MAAI,gBAAgB;AAElB,0BAAsB,iBAAiB,cAAc,cAAc;AACnE,QAAI,CAAC,qBAAqB;AACxB,cAAQ;AAAA,QACN,qDAAqD,cAAc;AAAA,MAAA;AAAA,IAEvE;AAAA,EACF;AAGA,MAAI,CAAC,qBAAqB;AACxB,0BAAsB;AAAA,EACxB;AAEA,SAAO;AACT;AAQA,eAAsB,wBACpB,OACA,kBACA,gBACe;AACf,MAAI,MAAM,WAAW,SAAS;AAC5B,UAAM,sBAAsB,sBAAsB,OAAO,kBAAkB,cAAc;AAEzF,QAAI,uBAAuB,CAAC,SAAS,mBAAmB;AACtD,YAAM,oBAAoB,kBAAA;AAAA,IAC5B;AAAA,EACF,OAAO;AACL,QAAI,SAAS,mBAAmB;AAC9B,YAAM,SAAS,eAAA;AAAA,IACjB;AAAA,EACF;AACF;;+CC5DA;;MAgBO,YAAQ,EAAA,WAAA,SAAA;AAAA;;;;;;;AAGP,QAAA,4BAA4B,wBAAuB;AACnD,QAAA,wBAAwB,oBAAmB;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-fullscreen.svelte.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/svelte/components/FullscreenProvider.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const capability = useFullscreenCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n state: initialState as FullscreenState,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onStateChange((newState) => {\n state.state = newState;\n });\n });\n\n return state;\n};\n","import { FullscreenRequestEvent } from '@embedpdf/plugin-fullscreen';\n\n/**\n * Find the element to fullscreen based on the event and container\n * @param event The fullscreen request event\n * @param containerElement The container element (fallback if no selector or element not found)\n * @param targetSelector Optional target selector from plugin config\n * @returns The element to fullscreen, or null if not found\n */\nexport function findFullscreenElement(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): HTMLElement | null {\n if (!containerElement || event.action !== 'enter') {\n return containerElement;\n }\n\n let elementToFullscreen: HTMLElement | null = null;\n\n if (targetSelector) {\n // Try to find the element within the wrapper element\n elementToFullscreen = containerElement.querySelector(targetSelector);\n if (!elementToFullscreen) {\n console.warn(\n `Fullscreen: Could not find element with selector \"${targetSelector}\" within the wrapper. Falling back to wrapper element.`,\n );\n }\n }\n\n // Fall back to the wrapper element if no selector or element not found\n if (!elementToFullscreen) {\n elementToFullscreen = containerElement;\n }\n\n return elementToFullscreen;\n}\n\n/**\n * Handle a fullscreen request event\n * @param event The fullscreen request event\n * @param containerElement The container element\n * @param targetSelector Optional target selector from plugin config\n */\nexport async function handleFullscreenRequest(\n event: FullscreenRequestEvent,\n containerElement: HTMLElement | null,\n targetSelector?: string,\n): Promise<void> {\n if (event.action === 'enter') {\n const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);\n\n if (elementToFullscreen && !document.fullscreenElement) {\n await elementToFullscreen.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\n}\n","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import type { HTMLAttributes } from 'svelte/elements';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n import { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\n type FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: Snippet;\n class?: string;\n style?: string;\n };\n\n let {\n children,\n class: propsClass,\n style: propsStyle,\n ...restProps\n }: FullscreenProviderProps = $props();\n\n const fullscreenCapabilityState = useFullscreenCapability();\n const fullscreenPluginState = useFullscreenPlugin();\n\n let containerRef = $state<HTMLDivElement | null>(null);\n\n // Handle fullscreen requests\n $effect(() => {\n const capability = fullscreenCapabilityState.provides;\n const plugin = fullscreenPluginState.plugin;\n\n if (!capability || !plugin) return;\n\n const unsub = capability.onRequest(async (event) => {\n const targetSelector = plugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef, targetSelector);\n });\n\n return unsub;\n });\n\n // Listen for fullscreen changes\n $effect(() => {\n const plugin = fullscreenPluginState.plugin;\n\n if (!plugin) return;\n\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n });\n</script>\n\n<div\n {...restProps}\n bind:this={containerRef}\n style:position=\"relative\"\n style:width=\"100%\"\n style:height=\"100%\"\n style={propsStyle}\n class={propsClass}\n>\n {@render children()}\n</div>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { FullscreenPluginPackage as BaseFullscreenPackage } from '@embedpdf/plugin-fullscreen';\nimport { FullscreenProvider } from './components';\n\nexport * from './hooks';\nexport * from './components';\n\nexport * from '@embedpdf/plugin-fullscreen';\n\nexport const FullscreenPluginPackage = createPluginPackage(BaseFullscreenPackage)\n .addWrapper(FullscreenProvider)\n .build();\n"],"names":["BaseFullscreenPackage"],"mappings":";;;;;;AAGa,MAAA,sBAAA,MAA4B,UAA4B,iBAAiB,EAAE;AAC3E,MAAA,0BAAA,MAAgC,cAAgC,iBAAiB,EAAE;AAEnF,MAAA,sBAAsB;AAC3B,QAAA,aAAa,wBAAA;QAEb;IACA,IAAA,WAAW;AACN,aAAA,WAAW;AAAA,IACpB;AAAA,IACA,OAAO;AAAA;AAGT,IAAA,kBAAc;AACP,QAAA,CAAA,WAAW,SAAA;AACT,WAAA,WAAW,SAAS,cAAA,CAAe,aAAa;AACrD,YAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;SAEM;AACT;ACfO,SAAS,sBACd,OACA,kBACA,gBACoB;AACpB,MAAI,CAAC,oBAAoB,MAAM,WAAW,SAAS;AACjD,WAAO;AAAA,EACT;AAEA,MAAI,sBAA0C;AAE9C,MAAI,gBAAgB;AAElB,0BAAsB,iBAAiB,cAAc,cAAc;AACnE,QAAI,CAAC,qBAAqB;AACxB,cAAQ;AAAA,QACN,qDAAqD,cAAc;AAAA,MAAA;AAAA,IAEvE;AAAA,EACF;AAGA,MAAI,CAAC,qBAAqB;AACxB,0BAAsB;AAAA,EACxB;AAEA,SAAO;AACT;AAQA,eAAsB,wBACpB,OACA,kBACA,gBACe;AACf,MAAI,MAAM,WAAW,SAAS;AAC5B,UAAM,sBAAsB,sBAAsB,OAAO,kBAAkB,cAAc;AAEzF,QAAI,uBAAuB,CAAC,SAAS,mBAAmB;AACtD,YAAM,oBAAoB,kBAAA;AAAA,IAC5B;AAAA,EACF,OAAO;AACL,QAAI,SAAS,mBAAmB;AAC9B,YAAM,SAAS,eAAA;AAAA,IACjB;AAAA,EACF;AACF;;+CC5DA;;MAgBO,YAAQ,EAAA,WAAA,SAAA;AAAA;;;;;;;AAGP,QAAA,4BAA4B,wBAAuB;AACnD,QAAA,wBAAwB,oBAAmB;MAE7C,eAAe,EAAA,MAA8B,IAAI;AAGrD,IAAA,YAAO,MAAO;UACN,aAAa,0BAA0B;UACvC,SAAS,sBAAsB;AAEhC,QAAA,CAAA,eAAe,OAAM;AAEpB,UAAA,QAAQ,WAAW,UAAS,OAAQ,UAAU;YAC5C,iBAAiB,OAAO,kBAAiB;AACzC,YAAA,wBAAwB,OAAK,EAAA,IAAE,YAAY,GAAE,cAAc;AAAA,IACnE,CAAC;WAEM;AAAA,EACT,CAAC;AAGD,IAAA,YAAO,MAAO;UACN,SAAS,sBAAsB;SAEhC,OAAM;AAEL,UAAA,UAAO,MAAS;AACpB,aAAO,mBAAkB,CAAA,CAAG,SAAS,iBAAiB;AAAA,IACxD;AAEA,aAAS,iBAAiB,oBAAoB,OAAO;AACxC,WAAA,MAAA,SAAS,oBAAoB,oBAAoB,OAAO;AAAA,EACvE,CAAC;MAGF,MAAE,KAAA;qBAAF,KAAE,OAAA;AAAA,OACG;AAAA;;;;qBADL,GAAE;;UAAF,GAAE;cAAF,KAAE,CAAA,YAAA,EAAA,IAEU,cAAY,OAAA,GAAA,MAAA,EAAA,IAAZ,YAAY,CAAA;qBAFxB,GAAE;;AAFH;AC3CO,MAAM,0BAA0B,oBAAoBA,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAA;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-fullscreen",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@embedpdf/models": "2.0.
|
|
37
|
+
"@embedpdf/models": "2.0.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/react": "^18.2.0",
|
|
41
41
|
"typescript": "^5.0.0",
|
|
42
|
-
"@embedpdf/
|
|
43
|
-
"@embedpdf/
|
|
42
|
+
"@embedpdf/core": "2.0.1",
|
|
43
|
+
"@embedpdf/build": "1.1.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"react": ">=16.8.0",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"preact": "^10.26.4",
|
|
49
49
|
"vue": ">=3.2.0",
|
|
50
50
|
"svelte": ">=5 <6",
|
|
51
|
-
"@embedpdf/core": "2.0.
|
|
51
|
+
"@embedpdf/core": "2.0.1"
|
|
52
52
|
},
|
|
53
53
|
"files": [
|
|
54
54
|
"dist",
|