@embedpdf/plugin-fullscreen 1.5.0 → 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.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/fullscreen-plugin.d.ts +4 -1
- package/dist/lib/types.d.ts +14 -3
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +36 -9
- package/dist/preact/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +36 -9
- package/dist/react/index.js.map +1 -1
- package/dist/shared/utils/fullscreen-utils.d.ts +16 -0
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/shared-preact/utils/fullscreen-utils.d.ts +16 -0
- package/dist/shared-preact/utils/index.d.ts +1 -0
- package/dist/shared-react/utils/fullscreen-utils.d.ts +16 -0
- package/dist/shared-react/utils/index.d.ts +1 -0
- package/dist/shared-vue/utils/fullscreen-utils.d.ts +16 -0
- package/dist/svelte/components/FullscreenProvider.svelte.d.ts +4 -3
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.js +57 -22
- package/dist/svelte/index.js.map +1 -1
- package/dist/vue/components/fullscreen.vue.d.ts +3 -2
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +47 -27
- package/dist/vue/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t="fullscreen",s={id:t,name:"Fullscreen Plugin",version:"1.0.0",provides:["fullscreen"],requires:[],optional:[],defaultConfig:{enabled:!0}},l="SET_FULLSCREEN";function n(e){return{type:l,payload:e}}const r=class extends e.BasePlugin{constructor(t,s){super(t,s),this.onStateChange$=e.createBehaviorEmitter(),this.fullscreenRequest$=e.createEmitter()}async initialize(e){}buildCapability(){return{isFullscreen:()=>this.state.isFullscreen,enableFullscreen:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t="fullscreen",s={id:t,name:"Fullscreen Plugin",version:"1.0.0",provides:["fullscreen"],requires:[],optional:[],defaultConfig:{enabled:!0}},l="SET_FULLSCREEN";function n(e){return{type:l,payload:e}}const r=class extends e.BasePlugin{constructor(t,s,l){super(t,s),this.onStateChange$=e.createBehaviorEmitter(),this.fullscreenRequest$=e.createEmitter(),this.config=l}async initialize(e){}buildCapability(){return{isFullscreen:()=>this.state.isFullscreen,enableFullscreen:e=>this.enableFullscreen(e),exitFullscreen:()=>this.exitFullscreen(),toggleFullscreen:e=>this.toggleFullscreen(e),onRequest:this.fullscreenRequest$.on,onStateChange:this.onStateChange$.on}}getTargetSelector(){return this.currentTargetElement??this.config.targetElement}toggleFullscreen(e){this.state.isFullscreen?this.exitFullscreen():this.enableFullscreen(e)}enableFullscreen(e){this.currentTargetElement=e??this.config.targetElement,this.fullscreenRequest$.emit({action:"enter",targetElement:this.currentTargetElement})}exitFullscreen(){this.fullscreenRequest$.emit({action:"exit"}),this.currentTargetElement=void 0}onStoreUpdated(e,t){this.onStateChange$.emit(t)}setFullscreenState(e){this.dispatch(n(e))}async destroy(){this.fullscreenRequest$.clear(),super.destroy()}};r.id="fullscreen";let i=r;const c={isFullscreen:!1},u={manifest:s,create:(e,s)=>new i(t,e,s),reducer:(e,t)=>t.type===l?{...e,isFullscreen:t.payload}:e,initialState:c};exports.FULLSCREEN_PLUGIN_ID=t,exports.FullscreenPlugin=i,exports.FullscreenPluginPackage=u,exports.SET_FULLSCREEN=l,exports.initialState=c,exports.manifest=s,exports.setFullscreen=n;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/actions.ts","../src/lib/fullscreen-plugin.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { FullscreenPluginConfig } from './types';\n\nexport const FULLSCREEN_PLUGIN_ID = 'fullscreen';\n\nexport const manifest: PluginManifest<FullscreenPluginConfig> = {\n id: FULLSCREEN_PLUGIN_ID,\n name: 'Fullscreen Plugin',\n version: '1.0.0',\n provides: ['fullscreen'],\n requires: [],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Action } from '@embedpdf/core';\n\nexport const SET_FULLSCREEN = 'SET_FULLSCREEN';\n\nexport interface SetFullscreenAction extends Action {\n type: typeof SET_FULLSCREEN;\n payload: boolean;\n}\n\nexport type FullscreenAction = SetFullscreenAction;\n\nexport function setFullscreen(payload: boolean): SetFullscreenAction {\n return { type: SET_FULLSCREEN, payload };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport {
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/actions.ts","../src/lib/fullscreen-plugin.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { FullscreenPluginConfig } from './types';\n\nexport const FULLSCREEN_PLUGIN_ID = 'fullscreen';\n\nexport const manifest: PluginManifest<FullscreenPluginConfig> = {\n id: FULLSCREEN_PLUGIN_ID,\n name: 'Fullscreen Plugin',\n version: '1.0.0',\n provides: ['fullscreen'],\n requires: [],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Action } from '@embedpdf/core';\n\nexport const SET_FULLSCREEN = 'SET_FULLSCREEN';\n\nexport interface SetFullscreenAction extends Action {\n type: typeof SET_FULLSCREEN;\n payload: boolean;\n}\n\nexport type FullscreenAction = SetFullscreenAction;\n\nexport function setFullscreen(payload: boolean): SetFullscreenAction {\n return { type: SET_FULLSCREEN, payload };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport {\n FullscreenCapability,\n FullscreenPluginConfig,\n FullscreenState,\n FullscreenRequestEvent,\n} from './types';\nimport { FullscreenAction, setFullscreen } from './actions';\n\nexport class FullscreenPlugin extends BasePlugin<\n FullscreenPluginConfig,\n FullscreenCapability,\n FullscreenState,\n FullscreenAction\n> {\n static readonly id = 'fullscreen' as const;\n\n private readonly onStateChange$ = createBehaviorEmitter<FullscreenState>();\n private readonly fullscreenRequest$ = createEmitter<FullscreenRequestEvent>();\n private config: FullscreenPluginConfig;\n private currentTargetElement?: string;\n\n constructor(id: string, registry: PluginRegistry, config: FullscreenPluginConfig) {\n super(id, registry);\n this.config = config;\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: (targetElement?: string) => this.enableFullscreen(targetElement),\n exitFullscreen: () => this.exitFullscreen(),\n toggleFullscreen: (targetElement?: string) => this.toggleFullscreen(targetElement),\n onRequest: this.fullscreenRequest$.on,\n onStateChange: this.onStateChange$.on,\n };\n }\n\n public getTargetSelector(): string | undefined {\n // Return the current target (from last request) or fall back to config default\n return this.currentTargetElement ?? this.config.targetElement;\n }\n\n private toggleFullscreen(targetElement?: string): void {\n if (this.state.isFullscreen) {\n this.exitFullscreen();\n } else {\n this.enableFullscreen(targetElement);\n }\n }\n\n private enableFullscreen(targetElement?: string): void {\n // Store the target element for this request\n this.currentTargetElement = targetElement ?? this.config.targetElement;\n\n this.fullscreenRequest$.emit({\n action: 'enter',\n targetElement: this.currentTargetElement,\n });\n }\n\n private exitFullscreen(): void {\n this.fullscreenRequest$.emit({\n action: 'exit',\n });\n\n // Clear the current target when exiting\n this.currentTargetElement = undefined;\n }\n\n override onStoreUpdated(_: FullscreenState, newState: FullscreenState): void {\n this.onStateChange$.emit(newState);\n }\n\n public setFullscreenState(isFullscreen: boolean): void {\n this.dispatch(setFullscreen(isFullscreen));\n }\n\n async destroy(): Promise<void> {\n this.fullscreenRequest$.clear();\n super.destroy();\n }\n}\n","import { Reducer } from '@embedpdf/core';\nimport { FullscreenState } from './types';\nimport { FullscreenAction, SET_FULLSCREEN } from './actions';\n\nexport const initialState: FullscreenState = {\n isFullscreen: false,\n};\n\nexport const reducer: Reducer<FullscreenState, FullscreenAction> = (state, action) => {\n switch (action.type) {\n case SET_FULLSCREEN:\n return { ...state, isFullscreen: action.payload };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, FULLSCREEN_PLUGIN_ID } from './manifest';\nimport { FullscreenPluginConfig, FullscreenState } from './types';\nimport { FullscreenPlugin } from './fullscreen-plugin';\nimport { initialState } from './reducer';\nimport { reducer } from './reducer';\nimport { FullscreenAction } from './actions';\n\nexport const FullscreenPluginPackage: PluginPackage<\n FullscreenPlugin,\n FullscreenPluginConfig,\n FullscreenState,\n FullscreenAction\n> = {\n manifest,\n create: (registry, config) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry, config),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\nexport { initialState };\n"],"names":["FULLSCREEN_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","enabled","SET_FULLSCREEN","setFullscreen","payload","type","_FullscreenPlugin","BasePlugin","constructor","registry","config","super","this","onStateChange$","createBehaviorEmitter","fullscreenRequest$","createEmitter","initialize","_","buildCapability","isFullscreen","state","enableFullscreen","targetElement","exitFullscreen","toggleFullscreen","onRequest","on","onStateChange","getTargetSelector","currentTargetElement","emit","action","onStoreUpdated","newState","setFullscreenState","dispatch","destroy","clear","FullscreenPlugin","initialState","FullscreenPluginPackage","create","reducer"],"mappings":"kHAGaA,EAAuB,aAEvBC,EAAmD,CAC9DC,GAAIF,EACJG,KAAM,oBACNC,QAAS,QACTC,SAAU,CAAC,cACXC,SAAU,GACVC,SAAU,GACVC,cAAe,CACbC,SAAS,ICXAC,EAAiB,iBASvB,SAASC,EAAcC,GAC5B,MAAO,CAAEC,KAAMH,EAAgBE,UACjC,CCJO,MAAME,EAAN,cAA+BC,EAAAA,WAapC,WAAAC,CAAYd,EAAYe,EAA0BC,GAChDC,MAAMjB,EAAIe,GANZG,KAAiBC,eAAiBC,0BAClCF,KAAiBG,mBAAqBC,kBAMpCJ,KAAKF,OAASA,CAChB,CAEA,gBAAMO,CAAWC,GAA2C,CAElD,eAAAC,GACR,MAAO,CACLC,aAAc,IAAMR,KAAKS,MAAMD,aAC/BE,iBAAmBC,GAA2BX,KAAKU,iBAAiBC,GACpEC,eAAgB,IAAMZ,KAAKY,iBAC3BC,iBAAmBF,GAA2BX,KAAKa,iBAAiBF,GACpEG,UAAWd,KAAKG,mBAAmBY,GACnCC,cAAehB,KAAKC,eAAec,GAEvC,CAEO,iBAAAE,GAEL,OAAOjB,KAAKkB,sBAAwBlB,KAAKF,OAAOa,aAClD,CAEQ,gBAAAE,CAAiBF,GACnBX,KAAKS,MAAMD,aACbR,KAAKY,iBAELZ,KAAKU,iBAAiBC,EAE1B,CAEQ,gBAAAD,CAAiBC,GAEvBX,KAAKkB,qBAAuBP,GAAiBX,KAAKF,OAAOa,cAEzDX,KAAKG,mBAAmBgB,KAAK,CAC3BC,OAAQ,QACRT,cAAeX,KAAKkB,sBAExB,CAEQ,cAAAN,GACNZ,KAAKG,mBAAmBgB,KAAK,CAC3BC,OAAQ,SAIVpB,KAAKkB,0BAAuB,CAC9B,CAES,cAAAG,CAAef,EAAoBgB,GAC1CtB,KAAKC,eAAekB,KAAKG,EAC3B,CAEO,kBAAAC,CAAmBf,GACxBR,KAAKwB,SAASjC,EAAciB,GAC9B,CAEA,aAAMiB,GACJzB,KAAKG,mBAAmBuB,QACxB3B,MAAM0B,SACR,GApEA/B,EAAgBZ,GAAK,aANhB,IAAM6C,EAANjC,ECLA,MAAMkC,EAAgC,CAC3CpB,cAAc,GCGHqB,EAKT,CACFhD,WACAiD,OAAQ,CAACjC,EAAUC,IAAW,IAAI6B,EAAiB/C,EAAsBiB,EAAUC,GACnFiC,QDRiE,CAACtB,EAAOW,IACjEA,EAAO3B,OACRH,EACI,IAAKmB,EAAOD,aAAcY,EAAO5B,SAEjCiB,ECIXmB"}
|
package/dist/index.js
CHANGED
|
@@ -16,35 +16,46 @@ function setFullscreen(payload) {
|
|
|
16
16
|
return { type: SET_FULLSCREEN, payload };
|
|
17
17
|
}
|
|
18
18
|
const _FullscreenPlugin = class _FullscreenPlugin extends BasePlugin {
|
|
19
|
-
constructor(id, registry) {
|
|
19
|
+
constructor(id, registry, config) {
|
|
20
20
|
super(id, registry);
|
|
21
21
|
this.onStateChange$ = createBehaviorEmitter();
|
|
22
22
|
this.fullscreenRequest$ = createEmitter();
|
|
23
|
+
this.config = config;
|
|
23
24
|
}
|
|
24
25
|
async initialize(_) {
|
|
25
26
|
}
|
|
26
27
|
buildCapability() {
|
|
27
28
|
return {
|
|
28
29
|
isFullscreen: () => this.state.isFullscreen,
|
|
29
|
-
enableFullscreen: () => this.enableFullscreen(),
|
|
30
|
+
enableFullscreen: (targetElement) => this.enableFullscreen(targetElement),
|
|
30
31
|
exitFullscreen: () => this.exitFullscreen(),
|
|
31
|
-
toggleFullscreen: () => this.toggleFullscreen(),
|
|
32
|
+
toggleFullscreen: (targetElement) => this.toggleFullscreen(targetElement),
|
|
32
33
|
onRequest: this.fullscreenRequest$.on,
|
|
33
34
|
onStateChange: this.onStateChange$.on
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
getTargetSelector() {
|
|
38
|
+
return this.currentTargetElement ?? this.config.targetElement;
|
|
39
|
+
}
|
|
40
|
+
toggleFullscreen(targetElement) {
|
|
37
41
|
if (this.state.isFullscreen) {
|
|
38
42
|
this.exitFullscreen();
|
|
39
43
|
} else {
|
|
40
|
-
this.enableFullscreen();
|
|
44
|
+
this.enableFullscreen(targetElement);
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
|
-
enableFullscreen() {
|
|
44
|
-
this.
|
|
47
|
+
enableFullscreen(targetElement) {
|
|
48
|
+
this.currentTargetElement = targetElement ?? this.config.targetElement;
|
|
49
|
+
this.fullscreenRequest$.emit({
|
|
50
|
+
action: "enter",
|
|
51
|
+
targetElement: this.currentTargetElement
|
|
52
|
+
});
|
|
45
53
|
}
|
|
46
54
|
exitFullscreen() {
|
|
47
|
-
this.fullscreenRequest$.emit(
|
|
55
|
+
this.fullscreenRequest$.emit({
|
|
56
|
+
action: "exit"
|
|
57
|
+
});
|
|
58
|
+
this.currentTargetElement = void 0;
|
|
48
59
|
}
|
|
49
60
|
onStoreUpdated(_, newState) {
|
|
50
61
|
this.onStateChange$.emit(newState);
|
|
@@ -72,7 +83,7 @@ const reducer = (state, action) => {
|
|
|
72
83
|
};
|
|
73
84
|
const FullscreenPluginPackage = {
|
|
74
85
|
manifest,
|
|
75
|
-
create: (registry) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry),
|
|
86
|
+
create: (registry, config) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry, config),
|
|
76
87
|
reducer,
|
|
77
88
|
initialState
|
|
78
89
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/actions.ts","../src/lib/fullscreen-plugin.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { FullscreenPluginConfig } from './types';\n\nexport const FULLSCREEN_PLUGIN_ID = 'fullscreen';\n\nexport const manifest: PluginManifest<FullscreenPluginConfig> = {\n id: FULLSCREEN_PLUGIN_ID,\n name: 'Fullscreen Plugin',\n version: '1.0.0',\n provides: ['fullscreen'],\n requires: [],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Action } from '@embedpdf/core';\n\nexport const SET_FULLSCREEN = 'SET_FULLSCREEN';\n\nexport interface SetFullscreenAction extends Action {\n type: typeof SET_FULLSCREEN;\n payload: boolean;\n}\n\nexport type FullscreenAction = SetFullscreenAction;\n\nexport function setFullscreen(payload: boolean): SetFullscreenAction {\n return { type: SET_FULLSCREEN, payload };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/actions.ts","../src/lib/fullscreen-plugin.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { FullscreenPluginConfig } from './types';\n\nexport const FULLSCREEN_PLUGIN_ID = 'fullscreen';\n\nexport const manifest: PluginManifest<FullscreenPluginConfig> = {\n id: FULLSCREEN_PLUGIN_ID,\n name: 'Fullscreen Plugin',\n version: '1.0.0',\n provides: ['fullscreen'],\n requires: [],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Action } from '@embedpdf/core';\n\nexport const SET_FULLSCREEN = 'SET_FULLSCREEN';\n\nexport interface SetFullscreenAction extends Action {\n type: typeof SET_FULLSCREEN;\n payload: boolean;\n}\n\nexport type FullscreenAction = SetFullscreenAction;\n\nexport function setFullscreen(payload: boolean): SetFullscreenAction {\n return { type: SET_FULLSCREEN, payload };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport {\n FullscreenCapability,\n FullscreenPluginConfig,\n FullscreenState,\n FullscreenRequestEvent,\n} from './types';\nimport { FullscreenAction, setFullscreen } from './actions';\n\nexport class FullscreenPlugin extends BasePlugin<\n FullscreenPluginConfig,\n FullscreenCapability,\n FullscreenState,\n FullscreenAction\n> {\n static readonly id = 'fullscreen' as const;\n\n private readonly onStateChange$ = createBehaviorEmitter<FullscreenState>();\n private readonly fullscreenRequest$ = createEmitter<FullscreenRequestEvent>();\n private config: FullscreenPluginConfig;\n private currentTargetElement?: string;\n\n constructor(id: string, registry: PluginRegistry, config: FullscreenPluginConfig) {\n super(id, registry);\n this.config = config;\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: (targetElement?: string) => this.enableFullscreen(targetElement),\n exitFullscreen: () => this.exitFullscreen(),\n toggleFullscreen: (targetElement?: string) => this.toggleFullscreen(targetElement),\n onRequest: this.fullscreenRequest$.on,\n onStateChange: this.onStateChange$.on,\n };\n }\n\n public getTargetSelector(): string | undefined {\n // Return the current target (from last request) or fall back to config default\n return this.currentTargetElement ?? this.config.targetElement;\n }\n\n private toggleFullscreen(targetElement?: string): void {\n if (this.state.isFullscreen) {\n this.exitFullscreen();\n } else {\n this.enableFullscreen(targetElement);\n }\n }\n\n private enableFullscreen(targetElement?: string): void {\n // Store the target element for this request\n this.currentTargetElement = targetElement ?? this.config.targetElement;\n\n this.fullscreenRequest$.emit({\n action: 'enter',\n targetElement: this.currentTargetElement,\n });\n }\n\n private exitFullscreen(): void {\n this.fullscreenRequest$.emit({\n action: 'exit',\n });\n\n // Clear the current target when exiting\n this.currentTargetElement = undefined;\n }\n\n override onStoreUpdated(_: FullscreenState, newState: FullscreenState): void {\n this.onStateChange$.emit(newState);\n }\n\n public setFullscreenState(isFullscreen: boolean): void {\n this.dispatch(setFullscreen(isFullscreen));\n }\n\n async destroy(): Promise<void> {\n this.fullscreenRequest$.clear();\n super.destroy();\n }\n}\n","import { Reducer } from '@embedpdf/core';\nimport { FullscreenState } from './types';\nimport { FullscreenAction, SET_FULLSCREEN } from './actions';\n\nexport const initialState: FullscreenState = {\n isFullscreen: false,\n};\n\nexport const reducer: Reducer<FullscreenState, FullscreenAction> = (state, action) => {\n switch (action.type) {\n case SET_FULLSCREEN:\n return { ...state, isFullscreen: action.payload };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, FULLSCREEN_PLUGIN_ID } from './manifest';\nimport { FullscreenPluginConfig, FullscreenState } from './types';\nimport { FullscreenPlugin } from './fullscreen-plugin';\nimport { initialState } from './reducer';\nimport { reducer } from './reducer';\nimport { FullscreenAction } from './actions';\n\nexport const FullscreenPluginPackage: PluginPackage<\n FullscreenPlugin,\n FullscreenPluginConfig,\n FullscreenState,\n FullscreenAction\n> = {\n manifest,\n create: (registry, config) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry, config),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\nexport { initialState };\n"],"names":[],"mappings":";AAGO,MAAM,uBAAuB;AAE7B,MAAM,WAAmD;AAAA,EAC9D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,YAAY;AAAA,EACvB,UAAU,CAAA;AAAA,EACV,UAAU,CAAA;AAAA,EACV,eAAe;AAAA,IACb,SAAS;AAAA,EAAA;AAEb;ACbO,MAAM,iBAAiB;AASvB,SAAS,cAAc,SAAuC;AACnE,SAAO,EAAE,MAAM,gBAAgB,QAAA;AACjC;ACJO,MAAM,oBAAN,MAAM,0BAAyB,WAKpC;AAAA,EAQA,YAAY,IAAY,UAA0B,QAAgC;AAChF,UAAM,IAAI,QAAQ;AANpB,SAAiB,iBAAiB,sBAAA;AAClC,SAAiB,qBAAqB,cAAA;AAMpC,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,WAAW,GAA0C;AAAA,EAAC;AAAA,EAElD,kBAAwC;AAChD,WAAO;AAAA,MACL,cAAc,MAAM,KAAK,MAAM;AAAA,MAC/B,kBAAkB,CAAC,kBAA2B,KAAK,iBAAiB,aAAa;AAAA,MACjF,gBAAgB,MAAM,KAAK,eAAA;AAAA,MAC3B,kBAAkB,CAAC,kBAA2B,KAAK,iBAAiB,aAAa;AAAA,MACjF,WAAW,KAAK,mBAAmB;AAAA,MACnC,eAAe,KAAK,eAAe;AAAA,IAAA;AAAA,EAEvC;AAAA,EAEO,oBAAwC;AAE7C,WAAO,KAAK,wBAAwB,KAAK,OAAO;AAAA,EAClD;AAAA,EAEQ,iBAAiB,eAA8B;AACrD,QAAI,KAAK,MAAM,cAAc;AAC3B,WAAK,eAAA;AAAA,IACP,OAAO;AACL,WAAK,iBAAiB,aAAa;AAAA,IACrC;AAAA,EACF;AAAA,EAEQ,iBAAiB,eAA8B;AAErD,SAAK,uBAAuB,iBAAiB,KAAK,OAAO;AAEzD,SAAK,mBAAmB,KAAK;AAAA,MAC3B,QAAQ;AAAA,MACR,eAAe,KAAK;AAAA,IAAA,CACrB;AAAA,EACH;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,mBAAmB,KAAK;AAAA,MAC3B,QAAQ;AAAA,IAAA,CACT;AAGD,SAAK,uBAAuB;AAAA,EAC9B;AAAA,EAES,eAAe,GAAoB,UAAiC;AAC3E,SAAK,eAAe,KAAK,QAAQ;AAAA,EACnC;AAAA,EAEO,mBAAmB,cAA6B;AACrD,SAAK,SAAS,cAAc,YAAY,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAM,UAAyB;AAC7B,SAAK,mBAAmB,MAAA;AACxB,UAAM,QAAA;AAAA,EACR;AACF;AArEE,kBAAgB,KAAK;AANhB,IAAM,mBAAN;ACLA,MAAM,eAAgC;AAAA,EAC3C,cAAc;AAChB;AAEO,MAAM,UAAsD,CAAC,OAAO,WAAW;AACpF,UAAQ,OAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,OAAO,QAAA;AAAA,IAC1C;AACE,aAAO;AAAA,EAAA;AAEb;ACPO,MAAM,0BAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,UAAU,WAAW,IAAI,iBAAiB,sBAAsB,UAAU,MAAM;AAAA,EACzF;AAAA,EACA;AACF;"}
|
|
@@ -5,9 +5,12 @@ export declare class FullscreenPlugin extends BasePlugin<FullscreenPluginConfig,
|
|
|
5
5
|
static readonly id: "fullscreen";
|
|
6
6
|
private readonly onStateChange$;
|
|
7
7
|
private readonly fullscreenRequest$;
|
|
8
|
-
|
|
8
|
+
private config;
|
|
9
|
+
private currentTargetElement?;
|
|
10
|
+
constructor(id: string, registry: PluginRegistry, config: FullscreenPluginConfig);
|
|
9
11
|
initialize(_: FullscreenPluginConfig): Promise<void>;
|
|
10
12
|
protected buildCapability(): FullscreenCapability;
|
|
13
|
+
getTargetSelector(): string | undefined;
|
|
11
14
|
private toggleFullscreen;
|
|
12
15
|
private enableFullscreen;
|
|
13
16
|
private exitFullscreen;
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -3,12 +3,23 @@ export interface FullscreenState {
|
|
|
3
3
|
isFullscreen: boolean;
|
|
4
4
|
}
|
|
5
5
|
export interface FullscreenPluginConfig extends BasePluginConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Optional CSS selector to target a specific element for fullscreen.
|
|
8
|
+
* The element will be searched within the FullscreenProvider wrapper.
|
|
9
|
+
* Can be an ID (e.g., '#app'), a class (e.g., '.container'), or any CSS selector.
|
|
10
|
+
* If not provided or not found, the FullscreenProvider wrapper element will be used.
|
|
11
|
+
*/
|
|
12
|
+
targetElement?: string;
|
|
6
13
|
}
|
|
7
14
|
export interface FullscreenCapability {
|
|
8
15
|
isFullscreen: () => boolean;
|
|
9
|
-
enableFullscreen: () => void;
|
|
16
|
+
enableFullscreen: (targetElement?: string) => void;
|
|
10
17
|
exitFullscreen: () => void;
|
|
11
|
-
toggleFullscreen: () => void;
|
|
12
|
-
onRequest: EventHook<
|
|
18
|
+
toggleFullscreen: (targetElement?: string) => void;
|
|
19
|
+
onRequest: EventHook<FullscreenRequestEvent>;
|
|
13
20
|
onStateChange: EventHook<FullscreenState>;
|
|
14
21
|
}
|
|
22
|
+
export interface FullscreenRequestEvent {
|
|
23
|
+
action: 'enter' | 'exit';
|
|
24
|
+
targetElement?: string;
|
|
25
|
+
}
|
package/dist/preact/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen"),r=require("preact/jsx-runtime"),n=require("preact/hooks"),l=require("@embedpdf/core/preact"),u=()=>l.usePlugin(t.FullscreenPlugin.id),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen"),r=require("preact/jsx-runtime"),n=require("preact/hooks"),l=require("@embedpdf/core/preact"),u=()=>l.usePlugin(t.FullscreenPlugin.id),c=()=>l.useCapability(t.FullscreenPlugin.id);async function s(e,t,r){if("enter"===e.action){const n=function(e,t,r){if(!t||"enter"!==e.action)return t;let n=null;return r&&(n=t.querySelector(r),n||console.warn(`Fullscreen: Could not find element with selector "${r}" within the wrapper. Falling back to wrapper element.`)),n||(n=t),n}(e,t,r);n&&!document.fullscreenElement&&await n.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}function i({children:e,...t}){const{provides:l}=c(),{plugin:i}=u(),{plugin:o}=u(),a=n.useRef(null);return n.useEffect(()=>{if(!l||!i)return;return l.onRequest(async e=>{const t=i.getTargetSelector();await s(e,a.current,t)})},[l,i]),n.useEffect(()=>{if(!o)return;const e=()=>o.setFullscreenState(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[o]),r.jsx("div",{...t,style:{position:"relative",width:"100%",height:"100%",...t.style},ref:a,children:e})}const o=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(i).build();exports.FullscreenPluginPackage=o,exports.FullscreenProvider=i,exports.useFullscreen=()=>{const{provides:e}=c(),[r,l]=n.useState(t.initialState);return n.useEffect(()=>null==e?void 0:e.onStateChange(e=>{l(e)}),[e]),{provides:e,state:r}},exports.useFullscreenCapability=c,exports.useFullscreenPlugin=u,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\n};\n","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability) return;\n\n const unsub = fullscreenCapability.onRequest(async (
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\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","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../utils/fullscreen-utils';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin: fullscreenPlugin } = useFullscreenPlugin();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability || !fullscreenPlugin) return;\n\n const unsub = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, ref.current, targetSelector);\n });\n\n return unsub;\n }, [fullscreenCapability, fullscreenPlugin]);\n\n useEffect(() => {\n if (!plugin) return;\n const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n }, [plugin]);\n\n return (\n <div\n {...props}\n style={{ position: 'relative', width: '100%', height: '100%', ...props.style }}\n ref={ref}\n >\n {children}\n </div>\n );\n}\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","FullscreenProvider","children","props","provides","fullscreenCapability","plugin","fullscreenPlugin","ref","useRef","useEffect","onRequest","getTargetSelector","current","handler","setFullscreenState","addEventListener","removeEventListener","jsx","style","position","width","height","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","build","state","setState","useState","initialState","onStateChange"],"mappings":"wPAIaA,EAAsB,IAAMC,YAA4BC,EAAAA,iBAAiBC,IACzEC,EAA0B,IAAMC,gBAAgCH,EAAAA,iBAAiBC,ICuC9FG,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,CClDO,SAASC,GAAmBC,SAAEA,KAAaC,IAChD,MAAQC,SAAUC,GAAyBrB,KACnCsB,OAAQC,GAAqB3B,KAC/B0B,OAAEA,GAAW1B,IACb4B,EAAMC,EAAAA,OAAuB,MAoBnC,OAlBAC,EAAAA,UAAU,KACR,IAAKL,IAAyBE,EAAkB,OAOhD,OALcF,EAAqBM,UAAUzB,MAAOE,IAClD,MAAME,EAAiBiB,EAAiBK,0BAClCzB,EAAwBC,EAAOoB,EAAIK,QAASvB,MAInD,CAACe,EAAsBE,IAE1BG,EAAAA,UAAU,KACR,IAAKJ,EAAQ,OACb,MAAMQ,EAAU,IAAMR,EAAOS,qBAAqBlB,SAASC,mBAE3D,OADAD,SAASmB,iBAAiB,mBAAoBF,GACvC,IAAMjB,SAASoB,oBAAoB,mBAAoBH,IAC7D,CAACR,IAGFY,EAAAA,IAAC,MAAA,IACKf,EACJgB,MAAO,CAAEC,SAAU,WAAYC,MAAO,OAAQC,OAAQ,UAAWnB,EAAMgB,OACvEX,MAECN,YAGP,CClCO,MAAMqB,EAA0BC,EAAAA,oBAAoBC,EAAAA,yBACxDC,WAAWzB,GACX0B,6FHJ0B,KAC3B,MAAMvB,SAAEA,GAAapB,KACd4C,EAAOC,GAAYC,EAAAA,SAA0BC,EAAAA,cAQpD,OANArB,EAAAA,UAAU,IACD,MAAAN,OAAA,EAAAA,EAAU4B,cAAeJ,IAC9BC,EAASD,KAEV,CAACxB,IAEG,CACLA,WACAwB"}
|
package/dist/preact/index.js
CHANGED
|
@@ -19,22 +19,49 @@ const useFullscreen = () => {
|
|
|
19
19
|
state
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
|
+
function findFullscreenElement(event, containerElement, targetSelector) {
|
|
23
|
+
if (!containerElement || event.action !== "enter") {
|
|
24
|
+
return containerElement;
|
|
25
|
+
}
|
|
26
|
+
let elementToFullscreen = null;
|
|
27
|
+
if (targetSelector) {
|
|
28
|
+
elementToFullscreen = containerElement.querySelector(targetSelector);
|
|
29
|
+
if (!elementToFullscreen) {
|
|
30
|
+
console.warn(
|
|
31
|
+
`Fullscreen: Could not find element with selector "${targetSelector}" within the wrapper. Falling back to wrapper element.`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!elementToFullscreen) {
|
|
36
|
+
elementToFullscreen = containerElement;
|
|
37
|
+
}
|
|
38
|
+
return elementToFullscreen;
|
|
39
|
+
}
|
|
40
|
+
async function handleFullscreenRequest(event, containerElement, targetSelector) {
|
|
41
|
+
if (event.action === "enter") {
|
|
42
|
+
const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);
|
|
43
|
+
if (elementToFullscreen && !document.fullscreenElement) {
|
|
44
|
+
await elementToFullscreen.requestFullscreen();
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
if (document.fullscreenElement) {
|
|
48
|
+
await document.exitFullscreen();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
22
52
|
function FullscreenProvider({ children, ...props }) {
|
|
23
53
|
const { provides: fullscreenCapability } = useFullscreenCapability();
|
|
54
|
+
const { plugin: fullscreenPlugin } = useFullscreenPlugin();
|
|
24
55
|
const { plugin } = useFullscreenPlugin();
|
|
25
56
|
const ref = useRef(null);
|
|
26
57
|
useEffect(() => {
|
|
27
|
-
if (!fullscreenCapability) return;
|
|
28
|
-
const unsub = fullscreenCapability.onRequest(async (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (el && !document.fullscreenElement) await el.requestFullscreen();
|
|
32
|
-
} else {
|
|
33
|
-
if (document.fullscreenElement) await document.exitFullscreen();
|
|
34
|
-
}
|
|
58
|
+
if (!fullscreenCapability || !fullscreenPlugin) return;
|
|
59
|
+
const unsub = fullscreenCapability.onRequest(async (event) => {
|
|
60
|
+
const targetSelector = fullscreenPlugin.getTargetSelector();
|
|
61
|
+
await handleFullscreenRequest(event, ref.current, targetSelector);
|
|
35
62
|
});
|
|
36
63
|
return unsub;
|
|
37
|
-
}, [fullscreenCapability]);
|
|
64
|
+
}, [fullscreenCapability, fullscreenPlugin]);
|
|
38
65
|
useEffect(() => {
|
|
39
66
|
if (!plugin) return;
|
|
40
67
|
const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
|
package/dist/preact/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\n};\n","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability) return;\n\n const unsub = fullscreenCapability.onRequest(async (
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\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","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../utils/fullscreen-utils';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin: fullscreenPlugin } = useFullscreenPlugin();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability || !fullscreenPlugin) return;\n\n const unsub = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, ref.current, targetSelector);\n });\n\n return unsub;\n }, [fullscreenCapability, fullscreenPlugin]);\n\n useEffect(() => {\n if (!plugin) return;\n const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n }, [plugin]);\n\n return (\n <div\n {...props}\n style={{ position: 'relative', width: '100%', height: '100%', ...props.style }}\n ref={ref}\n >\n {children}\n </div>\n );\n}\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":["state","BaseFullscreenPackage"],"mappings":";;;;;;AAIO,MAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,MAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;AAEzF,MAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAA,IAAa,wBAAA;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACd,WAAO,qCAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;ACZO,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;AClDO,SAAS,mBAAmB,EAAE,UAAU,GAAG,SAAkC;AAClF,QAAM,EAAE,UAAU,qBAAA,IAAyB,wBAAA;AAC3C,QAAM,EAAE,QAAQ,iBAAA,IAAqB,oBAAA;AACrC,QAAM,EAAE,OAAA,IAAW,oBAAA;AACnB,QAAM,MAAM,OAAuB,IAAI;AAEvC,YAAU,MAAM;AACd,QAAI,CAAC,wBAAwB,CAAC,iBAAkB;AAEhD,UAAM,QAAQ,qBAAqB,UAAU,OAAO,UAAU;AAC5D,YAAM,iBAAiB,iBAAiB,kBAAA;AACxC,YAAM,wBAAwB,OAAO,IAAI,SAAS,cAAc;AAAA,IAClE,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,sBAAsB,gBAAgB,CAAC;AAE3C,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,UAAU,MAAM,OAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AAC5E,aAAS,iBAAiB,oBAAoB,OAAO;AACrD,WAAO,MAAM,SAAS,oBAAoB,oBAAoB,OAAO;AAAA,EACvE,GAAG,CAAC,MAAM,CAAC;AAEX,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAA;AAAA,MACvE;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;AClCO,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAA;"}
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen"),r=require("react/jsx-runtime"),n=require("react"),l=require("@embedpdf/core/react"),u=()=>l.usePlugin(t.FullscreenPlugin.id),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen"),r=require("react/jsx-runtime"),n=require("react"),l=require("@embedpdf/core/react"),u=()=>l.usePlugin(t.FullscreenPlugin.id),c=()=>l.useCapability(t.FullscreenPlugin.id);async function s(e,t,r){if("enter"===e.action){const n=function(e,t,r){if(!t||"enter"!==e.action)return t;let n=null;return r&&(n=t.querySelector(r),n||console.warn(`Fullscreen: Could not find element with selector "${r}" within the wrapper. Falling back to wrapper element.`)),n||(n=t),n}(e,t,r);n&&!document.fullscreenElement&&await n.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}function i({children:e,...t}){const{provides:l}=c(),{plugin:i}=u(),{plugin:o}=u(),a=n.useRef(null);return n.useEffect(()=>{if(!l||!i)return;return l.onRequest(async e=>{const t=i.getTargetSelector();await s(e,a.current,t)})},[l,i]),n.useEffect(()=>{if(!o)return;const e=()=>o.setFullscreenState(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[o]),r.jsx("div",{...t,style:{position:"relative",width:"100%",height:"100%",...t.style},ref:a,children:e})}const o=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(i).build();exports.FullscreenPluginPackage=o,exports.FullscreenProvider=i,exports.useFullscreen=()=>{const{provides:e}=c(),[r,l]=n.useState(t.initialState);return n.useEffect(()=>null==e?void 0:e.onStateChange(e=>{l(e)}),[e]),{provides:e,state:r}},exports.useFullscreenCapability=c,exports.useFullscreenPlugin=u,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\n};\n","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability) return;\n\n const unsub = fullscreenCapability.onRequest(async (
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\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","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../utils/fullscreen-utils';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin: fullscreenPlugin } = useFullscreenPlugin();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability || !fullscreenPlugin) return;\n\n const unsub = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, ref.current, targetSelector);\n });\n\n return unsub;\n }, [fullscreenCapability, fullscreenPlugin]);\n\n useEffect(() => {\n if (!plugin) return;\n const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n }, [plugin]);\n\n return (\n <div\n {...props}\n style={{ position: 'relative', width: '100%', height: '100%', ...props.style }}\n ref={ref}\n >\n {children}\n </div>\n );\n}\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","FullscreenProvider","children","props","provides","fullscreenCapability","plugin","fullscreenPlugin","ref","useRef","useEffect","onRequest","getTargetSelector","current","handler","setFullscreenState","addEventListener","removeEventListener","jsx","style","position","width","height","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","build","state","setState","useState","initialState","onStateChange"],"mappings":"+OAIaA,EAAsB,IAAMC,YAA4BC,EAAAA,iBAAiBC,IACzEC,EAA0B,IAAMC,gBAAgCH,EAAAA,iBAAiBC,ICuC9FG,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,CClDO,SAASC,GAAmBC,SAAEA,KAAaC,IAChD,MAAQC,SAAUC,GAAyBrB,KACnCsB,OAAQC,GAAqB3B,KAC/B0B,OAAEA,GAAW1B,IACb4B,EAAMC,EAAAA,OAAuB,MAoBnC,OAlBAC,EAAAA,UAAU,KACR,IAAKL,IAAyBE,EAAkB,OAOhD,OALcF,EAAqBM,UAAUzB,MAAOE,IAClD,MAAME,EAAiBiB,EAAiBK,0BAClCzB,EAAwBC,EAAOoB,EAAIK,QAASvB,MAInD,CAACe,EAAsBE,IAE1BG,EAAAA,UAAU,KACR,IAAKJ,EAAQ,OACb,MAAMQ,EAAU,IAAMR,EAAOS,qBAAqBlB,SAASC,mBAE3D,OADAD,SAASmB,iBAAiB,mBAAoBF,GACvC,IAAMjB,SAASoB,oBAAoB,mBAAoBH,IAC7D,CAACR,IAGFY,EAAAA,IAAC,MAAA,IACKf,EACJgB,MAAO,CAAEC,SAAU,WAAYC,MAAO,OAAQC,OAAQ,UAAWnB,EAAMgB,OACvEX,MAECN,YAGP,CClCO,MAAMqB,EAA0BC,EAAAA,oBAAoBC,EAAAA,yBACxDC,WAAWzB,GACX0B,6FHJ0B,KAC3B,MAAMvB,SAAEA,GAAapB,KACd4C,EAAOC,GAAYC,EAAAA,SAA0BC,EAAAA,cAQpD,OANArB,EAAAA,UAAU,IACD,MAAAN,OAAA,EAAAA,EAAU4B,cAAeJ,IAC9BC,EAASD,KAEV,CAACxB,IAEG,CACLA,WACAwB"}
|
package/dist/react/index.js
CHANGED
|
@@ -19,22 +19,49 @@ const useFullscreen = () => {
|
|
|
19
19
|
state
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
|
+
function findFullscreenElement(event, containerElement, targetSelector) {
|
|
23
|
+
if (!containerElement || event.action !== "enter") {
|
|
24
|
+
return containerElement;
|
|
25
|
+
}
|
|
26
|
+
let elementToFullscreen = null;
|
|
27
|
+
if (targetSelector) {
|
|
28
|
+
elementToFullscreen = containerElement.querySelector(targetSelector);
|
|
29
|
+
if (!elementToFullscreen) {
|
|
30
|
+
console.warn(
|
|
31
|
+
`Fullscreen: Could not find element with selector "${targetSelector}" within the wrapper. Falling back to wrapper element.`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!elementToFullscreen) {
|
|
36
|
+
elementToFullscreen = containerElement;
|
|
37
|
+
}
|
|
38
|
+
return elementToFullscreen;
|
|
39
|
+
}
|
|
40
|
+
async function handleFullscreenRequest(event, containerElement, targetSelector) {
|
|
41
|
+
if (event.action === "enter") {
|
|
42
|
+
const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);
|
|
43
|
+
if (elementToFullscreen && !document.fullscreenElement) {
|
|
44
|
+
await elementToFullscreen.requestFullscreen();
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
if (document.fullscreenElement) {
|
|
48
|
+
await document.exitFullscreen();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
22
52
|
function FullscreenProvider({ children, ...props }) {
|
|
23
53
|
const { provides: fullscreenCapability } = useFullscreenCapability();
|
|
54
|
+
const { plugin: fullscreenPlugin } = useFullscreenPlugin();
|
|
24
55
|
const { plugin } = useFullscreenPlugin();
|
|
25
56
|
const ref = useRef(null);
|
|
26
57
|
useEffect(() => {
|
|
27
|
-
if (!fullscreenCapability) return;
|
|
28
|
-
const unsub = fullscreenCapability.onRequest(async (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (el && !document.fullscreenElement) await el.requestFullscreen();
|
|
32
|
-
} else {
|
|
33
|
-
if (document.fullscreenElement) await document.exitFullscreen();
|
|
34
|
-
}
|
|
58
|
+
if (!fullscreenCapability || !fullscreenPlugin) return;
|
|
59
|
+
const unsub = fullscreenCapability.onRequest(async (event) => {
|
|
60
|
+
const targetSelector = fullscreenPlugin.getTargetSelector();
|
|
61
|
+
await handleFullscreenRequest(event, ref.current, targetSelector);
|
|
35
62
|
});
|
|
36
63
|
return unsub;
|
|
37
|
-
}, [fullscreenCapability]);
|
|
64
|
+
}, [fullscreenCapability, fullscreenPlugin]);
|
|
38
65
|
useEffect(() => {
|
|
39
66
|
if (!plugin) return;
|
|
40
67
|
const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\n};\n","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability) return;\n\n const unsub = fullscreenCapability.onRequest(async (
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/shared/components/fullscreen.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from '@framework';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n\nexport const useFullscreen = () => {\n const { provides } = useFullscreenCapability();\n const [state, setState] = useState<FullscreenState>(initialState);\n\n useEffect(() => {\n return provides?.onStateChange((state) => {\n setState(state);\n });\n }, [provides]);\n\n return {\n provides,\n state,\n };\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","import { useEffect, useRef, HTMLAttributes, CSSProperties, ReactNode } from '@framework';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../utils/fullscreen-utils';\n\ntype FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ReactNode;\n style?: CSSProperties;\n};\n\nexport function FullscreenProvider({ children, ...props }: FullscreenProviderProps) {\n const { provides: fullscreenCapability } = useFullscreenCapability();\n const { plugin: fullscreenPlugin } = useFullscreenPlugin();\n const { plugin } = useFullscreenPlugin();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!fullscreenCapability || !fullscreenPlugin) return;\n\n const unsub = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, ref.current, targetSelector);\n });\n\n return unsub;\n }, [fullscreenCapability, fullscreenPlugin]);\n\n useEffect(() => {\n if (!plugin) return;\n const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', handler);\n return () => document.removeEventListener('fullscreenchange', handler);\n }, [plugin]);\n\n return (\n <div\n {...props}\n style={{ position: 'relative', width: '100%', height: '100%', ...props.style }}\n ref={ref}\n >\n {children}\n </div>\n );\n}\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":["state","BaseFullscreenPackage"],"mappings":";;;;;;AAIO,MAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,MAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;AAEzF,MAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAA,IAAa,wBAAA;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACd,WAAO,qCAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;ACZO,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;AClDO,SAAS,mBAAmB,EAAE,UAAU,GAAG,SAAkC;AAClF,QAAM,EAAE,UAAU,qBAAA,IAAyB,wBAAA;AAC3C,QAAM,EAAE,QAAQ,iBAAA,IAAqB,oBAAA;AACrC,QAAM,EAAE,OAAA,IAAW,oBAAA;AACnB,QAAM,MAAM,OAAuB,IAAI;AAEvC,YAAU,MAAM;AACd,QAAI,CAAC,wBAAwB,CAAC,iBAAkB;AAEhD,UAAM,QAAQ,qBAAqB,UAAU,OAAO,UAAU;AAC5D,YAAM,iBAAiB,iBAAiB,kBAAA;AACxC,YAAM,wBAAwB,OAAO,IAAI,SAAS,cAAc;AAAA,IAClE,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,sBAAsB,gBAAgB,CAAC;AAE3C,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,UAAU,MAAM,OAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AAC5E,aAAS,iBAAiB,oBAAoB,OAAO;AACrD,WAAO,MAAM,SAAS,oBAAoB,oBAAoB,OAAO;AAAA,EACvE,GAAG,CAAC,MAAM,CAAC;AAEX,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAA;AAAA,MACvE;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;AClCO,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAA;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FullscreenRequestEvent } from '../../index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Find the element to fullscreen based on the event and container
|
|
4
|
+
* @param event The fullscreen request event
|
|
5
|
+
* @param containerElement The container element (fallback if no selector or element not found)
|
|
6
|
+
* @param targetSelector Optional target selector from plugin config
|
|
7
|
+
* @returns The element to fullscreen, or null if not found
|
|
8
|
+
*/
|
|
9
|
+
export declare function findFullscreenElement(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): HTMLElement | null;
|
|
10
|
+
/**
|
|
11
|
+
* Handle a fullscreen request event
|
|
12
|
+
* @param event The fullscreen request event
|
|
13
|
+
* @param containerElement The container element
|
|
14
|
+
* @param targetSelector Optional target selector from plugin config
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleFullscreenRequest(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './fullscreen-utils';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FullscreenRequestEvent } from '../../lib/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Find the element to fullscreen based on the event and container
|
|
4
|
+
* @param event The fullscreen request event
|
|
5
|
+
* @param containerElement The container element (fallback if no selector or element not found)
|
|
6
|
+
* @param targetSelector Optional target selector from plugin config
|
|
7
|
+
* @returns The element to fullscreen, or null if not found
|
|
8
|
+
*/
|
|
9
|
+
export declare function findFullscreenElement(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): HTMLElement | null;
|
|
10
|
+
/**
|
|
11
|
+
* Handle a fullscreen request event
|
|
12
|
+
* @param event The fullscreen request event
|
|
13
|
+
* @param containerElement The container element
|
|
14
|
+
* @param targetSelector Optional target selector from plugin config
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleFullscreenRequest(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './fullscreen-utils';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FullscreenRequestEvent } from '../../lib/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Find the element to fullscreen based on the event and container
|
|
4
|
+
* @param event The fullscreen request event
|
|
5
|
+
* @param containerElement The container element (fallback if no selector or element not found)
|
|
6
|
+
* @param targetSelector Optional target selector from plugin config
|
|
7
|
+
* @returns The element to fullscreen, or null if not found
|
|
8
|
+
*/
|
|
9
|
+
export declare function findFullscreenElement(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): HTMLElement | null;
|
|
10
|
+
/**
|
|
11
|
+
* Handle a fullscreen request event
|
|
12
|
+
* @param event The fullscreen request event
|
|
13
|
+
* @param containerElement The container element
|
|
14
|
+
* @param targetSelector Optional target selector from plugin config
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleFullscreenRequest(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './fullscreen-utils';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FullscreenRequestEvent } from '../../lib/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Find the element to fullscreen based on the event and container
|
|
4
|
+
* @param event The fullscreen request event
|
|
5
|
+
* @param containerElement The container element (fallback if no selector or element not found)
|
|
6
|
+
* @param targetSelector Optional target selector from plugin config
|
|
7
|
+
* @returns The element to fullscreen, or null if not found
|
|
8
|
+
*/
|
|
9
|
+
export declare function findFullscreenElement(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): HTMLElement | null;
|
|
10
|
+
/**
|
|
11
|
+
* Handle a fullscreen request event
|
|
12
|
+
* @param event The fullscreen request event
|
|
13
|
+
* @param containerElement The container element
|
|
14
|
+
* @param targetSelector Optional target selector from plugin config
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleFullscreenRequest(event: FullscreenRequestEvent, containerElement: HTMLElement | null, targetSelector?: string): Promise<void>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Snippet } from 'svelte';
|
|
2
|
-
|
|
2
|
+
import { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type FullscreenProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
3
4
|
children: Snippet;
|
|
4
5
|
class?: string;
|
|
5
6
|
style?: string;
|
|
6
|
-
}
|
|
7
|
-
declare const FullscreenProvider: import('svelte', { with: { "resolution-mode": "import" } }).Component<
|
|
7
|
+
};
|
|
8
|
+
declare const FullscreenProvider: import('svelte', { with: { "resolution-mode": "import" } }).Component<FullscreenProviderProps, {}, "">;
|
|
8
9
|
type FullscreenProvider = ReturnType<typeof FullscreenProvider>;
|
|
9
10
|
export default FullscreenProvider;
|
package/dist/svelte/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen");require("svelte/internal/disclose-version");const r=require("svelte/internal/client"),n=require("@embedpdf/core/svelte");function l(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const s=l(r),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen");require("svelte/internal/disclose-version");const r=require("svelte/internal/client"),n=require("@embedpdf/core/svelte");function l(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const s=l(r),c=()=>n.usePlugin(t.FullscreenPlugin.id),i=()=>n.useCapability(t.FullscreenPlugin.id);async function u(e,t,r){if("enter"===e.action){const n=function(e,t,r){if(!t||"enter"!==e.action)return t;let n=null;return r&&(n=t.querySelector(r),n||console.warn(`Fullscreen: Could not find element with selector "${r}" within the wrapper. Falling back to wrapper element.`)),n||(n=t),n}(e,t,r);n&&!document.fullscreenElement&&await n.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}var o=s.from_html("<div><!></div>");function a(e,t){s.push(t,!0);let r=s.rest_props(t,["$$slots","$$events","$$legacy","children","class","style"]);const n=i(),l=c();let a=s.state(null);s.user_effect(()=>{const e=n.provides,t=l.plugin;if(!e||!t)return;return e.onRequest(async e=>{const r=t.getTargetSelector();await u(e,s.get(a),r)})}),s.user_effect(()=>{const e=l.plugin;if(!e)return;const t=()=>{e.setFullscreenState(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",t),()=>document.removeEventListener("fullscreenchange",t)});var p=o();s.attribute_effect(p,()=>({...r,style:t.style,class:t.class,[s.STYLE]:{position:"relative",width:"100%",height:"100%"}}));var d=s.child(p);s.snippet(d,()=>t.children),s.reset(p),s.bind_this(p,e=>s.set(a,e),()=>s.get(a)),s.append(e,p),s.pop()}const p=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(a).build();exports.FullscreenPluginPackage=p,exports.FullscreenProvider=a,exports.useFullscreen=()=>{const e=i(),r=s.proxy({get provides(){return e.provides},state:t.initialState});return s.user_effect(()=>{if(e.provides)return e.provides.onStateChange(e=>{r.state=e})}),r},exports.useFullscreenCapability=i,exports.useFullscreenPlugin=c,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-fullscreen.svelte.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","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\n
|
|
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","bind_this","div","$$value","set","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","FullscreenProvider","build","state","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,IAE1B,IAAA2B,UAA6C,MAGjDL,EAAAM,YAAO,WACCC,EAAaJ,EAA0BK,SACvCC,EAASL,EAAsBK,OAEhC,IAAAF,IAAeE,EAAM,cAEZF,EAAWG,UAAS1B,MAAQE,UAClCE,EAAiBqB,EAAOE,0BACxB1B,EAAwBC,EAAKc,EAAAY,IAAEP,GAAcjB,OAOvDY,EAAAM,YAAO,WACCG,EAASL,EAAsBK,WAEhCA,EAAM,OAEL,MAAAI,EAAO,KACXJ,EAAOK,qBAAqBnB,SAASC,oBAI1B,OADbD,SAASoB,iBAAiB,mBAAoBF,GACjC,IAAAlB,SAASqB,oBAAoB,mBAAoBH,6CAK5Dd,oJACOC,EAAAiB,UAAAC,EAAAC,GAAAnB,EAAAoB,IAAAf,eAAAA,yBAJb,CC3CO,MAAMgB,EAA0BC,EAAAA,oBAAoBC,EAAAA,yBACxDC,WAAWC,GACXC,kGHJK,MAAAnB,EAAazB,IAEb6C,WACA,YAAAnB,GACK,OAAAD,EAAWC,QACpB,EACAmB,MAAOC,EAAAA,sBAGT5B,EAAAM,iBACO,GAAAC,EAAWC,SACT,OAAAD,EAAWC,SAASqB,cAAeC,IACxCH,EAAMA,MAAQG,MAIXH"}
|
package/dist/svelte/index.js
CHANGED
|
@@ -22,45 +22,80 @@ const useFullscreen = () => {
|
|
|
22
22
|
});
|
|
23
23
|
return state;
|
|
24
24
|
};
|
|
25
|
+
function findFullscreenElement(event, containerElement, targetSelector) {
|
|
26
|
+
if (!containerElement || event.action !== "enter") {
|
|
27
|
+
return containerElement;
|
|
28
|
+
}
|
|
29
|
+
let elementToFullscreen = null;
|
|
30
|
+
if (targetSelector) {
|
|
31
|
+
elementToFullscreen = containerElement.querySelector(targetSelector);
|
|
32
|
+
if (!elementToFullscreen) {
|
|
33
|
+
console.warn(
|
|
34
|
+
`Fullscreen: Could not find element with selector "${targetSelector}" within the wrapper. Falling back to wrapper element.`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!elementToFullscreen) {
|
|
39
|
+
elementToFullscreen = containerElement;
|
|
40
|
+
}
|
|
41
|
+
return elementToFullscreen;
|
|
42
|
+
}
|
|
43
|
+
async function handleFullscreenRequest(event, containerElement, targetSelector) {
|
|
44
|
+
if (event.action === "enter") {
|
|
45
|
+
const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);
|
|
46
|
+
if (elementToFullscreen && !document.fullscreenElement) {
|
|
47
|
+
await elementToFullscreen.requestFullscreen();
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
if (document.fullscreenElement) {
|
|
51
|
+
await document.exitFullscreen();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
25
55
|
var root = $.from_html(`<div><!></div>`);
|
|
26
56
|
function FullscreenProvider($$anchor, $$props) {
|
|
27
57
|
$.push($$props, true);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
58
|
+
let restProps = $.rest_props($$props, [
|
|
59
|
+
"$$slots",
|
|
60
|
+
"$$events",
|
|
61
|
+
"$$legacy",
|
|
62
|
+
"children",
|
|
63
|
+
"class",
|
|
64
|
+
"style"
|
|
65
|
+
]);
|
|
66
|
+
const fullscreenCapabilityState = useFullscreenCapability();
|
|
67
|
+
const fullscreenPluginState = useFullscreenPlugin();
|
|
68
|
+
let containerRef = $.state(null);
|
|
31
69
|
$.user_effect(() => {
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
if (document.fullscreenElement) {
|
|
41
|
-
await document.exitFullscreen();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
70
|
+
const capability = fullscreenCapabilityState.provides;
|
|
71
|
+
const plugin = fullscreenPluginState.plugin;
|
|
72
|
+
if (!capability || !plugin) return;
|
|
73
|
+
const unsub = capability.onRequest(async (event) => {
|
|
74
|
+
const targetSelector = plugin.getTargetSelector();
|
|
75
|
+
await handleFullscreenRequest(event, $.get(containerRef), targetSelector);
|
|
44
76
|
});
|
|
45
77
|
return unsub;
|
|
46
78
|
});
|
|
47
79
|
$.user_effect(() => {
|
|
48
|
-
|
|
80
|
+
const plugin = fullscreenPluginState.plugin;
|
|
81
|
+
if (!plugin) return;
|
|
49
82
|
const handler = () => {
|
|
50
|
-
|
|
83
|
+
plugin.setFullscreenState(!!document.fullscreenElement);
|
|
51
84
|
};
|
|
52
85
|
document.addEventListener("fullscreenchange", handler);
|
|
53
86
|
return () => document.removeEventListener("fullscreenchange", handler);
|
|
54
87
|
});
|
|
55
88
|
var div = root();
|
|
89
|
+
$.attribute_effect(div, () => ({
|
|
90
|
+
...restProps,
|
|
91
|
+
style: $$props.style,
|
|
92
|
+
class: $$props.class,
|
|
93
|
+
[$.STYLE]: { position: "relative", width: "100%", height: "100%" }
|
|
94
|
+
}));
|
|
56
95
|
var node = $.child(div);
|
|
57
96
|
$.snippet(node, () => $$props.children);
|
|
58
97
|
$.reset(div);
|
|
59
|
-
$.bind_this(div, ($$value) =>
|
|
60
|
-
$.template_effect(() => {
|
|
61
|
-
$.set_class(div, 1, $.clsx($$props.class));
|
|
62
|
-
$.set_style(div, `position: relative; width: 100%; height: 100%; ${($$props.style || "") ?? ""}`);
|
|
63
|
-
});
|
|
98
|
+
$.bind_this(div, ($$value) => $.set(containerRef, $$value), () => $.get(containerRef));
|
|
64
99
|
$.append($$anchor, div);
|
|
65
100
|
$.pop();
|
|
66
101
|
}
|
package/dist/svelte/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-fullscreen.svelte.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","<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\n
|
|
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;AAE7C,MAAA,uBAA6C,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;;;OAIG;AAAA;;;;;;;AACO,IAAA,UAAA,KAAA,CAAA,YAAA,EAAA,IAAA,oCAAA,YAAY,CAAA;;;AAJzB;AC3CO,MAAM,0BAA0B,oBAAoBA,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAA;"}
|
|
@@ -2,8 +2,9 @@ declare var __VLS_1: {};
|
|
|
2
2
|
type __VLS_Slots = {} & {
|
|
3
3
|
default?: (props: typeof __VLS_1) => any;
|
|
4
4
|
};
|
|
5
|
-
declare const
|
|
6
|
-
declare const
|
|
5
|
+
declare const __VLS_base: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
6
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
7
8
|
export default _default;
|
|
8
9
|
type __VLS_WithSlots<T, S> = T & {
|
|
9
10
|
new (): {
|
package/dist/vue/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-fullscreen"),n=require("vue"),l=require("@embedpdf/core/vue"),r=()=>l.usePlugin(t.FullscreenPlugin.id),u=()=>l.useCapability(t.FullscreenPlugin.id);async function o(e,t,n){if("enter"===e.action){const l=function(e,t,n){if(!t||"enter"!==e.action)return t;let l=null;return n&&(l=t.querySelector(n),l||console.warn(`Fullscreen: Could not find element with selector "${n}" within the wrapper. Falling back to wrapper element.`)),l||(l=t),l}(e,t,n);l&&!document.fullscreenElement&&await l.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}const c=n.defineComponent({__name:"fullscreen",setup(e){const{provides:t}=u(),{plugin:l}=r(),c=n.ref(null);let s=null,i=null;return n.onMounted(()=>{const e=t.value,n=l.value;e&&n&&(s=e.onRequest(async e=>{const t=n.getTargetSelector();await o(e,c.value,t)}));const r=l.value;if(r){const e=()=>{r.setFullscreenState(!!document.fullscreenElement)};document.addEventListener("fullscreenchange",e),i=()=>{document.removeEventListener("fullscreenchange",e)}}}),n.onUnmounted(()=>{s&&s(),i&&i()}),(e,t)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"containerRef",ref:c,style:{position:"relative",width:"100%",height:"100%"}},[n.renderSlot(e.$slots,"default")],512))}}),s=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(c).build();exports.FullscreenPluginPackage=s,exports.FullscreenProvider=c,exports.useFullscreen=()=>{const{provides:e}=u(),l=n.ref(t.initialState);return n.watchEffect(t=>{const n=e.value;if(n){const e=n.onStateChange(e=>{l.value=e});t(()=>{e()})}}),{provides:e,state:l}},exports.useFullscreenCapability=u,exports.useFullscreenPlugin=r,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/vue/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-fullscreen.ts","../../src/vue/components/fullscreen.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watchEffect
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/vue/components/fullscreen.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watchEffect } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\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 { provides: fullscreenProviderRef } = useFullscreenCapability();\n const state = ref<FullscreenState>(initialState);\n\n watchEffect((onCleanup) => {\n const fullscreenProvider = fullscreenProviderRef.value;\n\n if (fullscreenProvider) {\n const unsubscribe = fullscreenProvider.onStateChange((newState) => {\n state.value = newState;\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n }\n });\n\n return {\n provides: fullscreenProviderRef,\n state,\n };\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 setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\nconst { provides: fullscreenCapabilityRef } = useFullscreenCapability();\nconst { plugin: fullscreenPluginRef } = useFullscreenPlugin();\nconst containerRef = ref<HTMLDivElement | null>(null);\n\nlet unsubscribe: (() => void) | null = null;\nlet fullscreenChangeUnsubscribe: (() => void) | null = null;\n\nonMounted(() => {\n const fullscreenCapability = fullscreenCapabilityRef.value;\n const fullscreenPlugin = fullscreenPluginRef.value;\n\n if (fullscreenCapability && fullscreenPlugin) {\n unsubscribe = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef.value, targetSelector);\n });\n }\n\n // Handle fullscreen state changes\n const plugin = fullscreenPluginRef.value;\n if (plugin) {\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n document.addEventListener('fullscreenchange', handler);\n\n fullscreenChangeUnsubscribe = () => {\n document.removeEventListener('fullscreenchange', handler);\n };\n }\n});\n\nonUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n if (fullscreenChangeUnsubscribe) {\n fullscreenChangeUnsubscribe();\n }\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n :style=\"{\n position: 'relative',\n width: '100%',\n height: '100%',\n }\"\n >\n <slot />\n </div>\n</template>\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","provides","fullscreenCapabilityRef","plugin","fullscreenPluginRef","containerRef","ref","unsubscribe","fullscreenChangeUnsubscribe","onMounted","fullscreenCapability","value","fullscreenPlugin","onRequest","getTargetSelector","handler","setFullscreenState","addEventListener","removeEventListener","onUnmounted","_createElementBlock","style","_renderSlot","_ctx","$slots","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","FullscreenProvider","build","fullscreenProviderRef","state","initialState","watchEffect","onCleanup","fullscreenProvider","onStateChange","newState"],"mappings":"4MAIaA,EAAsB,IAAMC,YAA4BC,EAAAA,iBAAiBC,IACzEC,EAA0B,IAAMC,gBAAgCH,EAAAA,iBAAiBC,ICuC9FG,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,yDCvDA,MAAQC,SAAUC,GAA4BlB,KACtCmB,OAAQC,GAAwBxB,IAClCyB,EAAeC,EAAAA,IAA2B,MAEhD,IAAIC,EAAmC,KACnCC,EAAmD,YAEvDC,EAAAA,UAAU,KACR,MAAMC,EAAuBR,EAAwBS,MAC/CC,EAAmBR,EAAoBO,MAEzCD,GAAwBE,IAC1BL,EAAcG,EAAqBG,UAAU3B,MAAOE,IAClD,MAAME,EAAiBsB,EAAiBE,0BAClC3B,EAAwBC,EAAOiB,EAAaM,MAAOrB,MAK7D,MAAMa,EAASC,EAAoBO,MACnC,GAAIR,EAAQ,CACV,MAAMY,EAAU,KACdZ,EAAOa,qBAAqBnB,SAASC,oBAEvCD,SAASoB,iBAAiB,mBAAoBF,GAE9CP,EAA8B,KAC5BX,SAASqB,oBAAoB,mBAAoBH,GAErD,IAGFI,EAAAA,YAAY,KACNZ,GACFA,IAEEC,GACFA,4BAMFY,EAAAA,mBASM,MAAA,SARA,eAAJd,IAAID,EACHgB,MAAO,mDAMRC,aAAQC,EAAAC,OAAA,qBC/CCC,EAA0BC,EAAAA,oBAAoBC,EAAAA,yBACxDC,WAAWC,GACXC,6FHJ0B,KAC3B,MAAQ7B,SAAU8B,GAA0B/C,IACtCgD,EAAQ1B,EAAAA,IAAqB2B,gBAgBnC,OAdAC,EAAAA,YAAaC,IACX,MAAMC,EAAqBL,EAAsBpB,MAEjD,GAAIyB,EAAoB,CACtB,MAAM7B,EAAc6B,EAAmBC,cAAeC,IACpDN,EAAMrB,MAAQ2B,IAGhBH,EAAU,KACR5B,KAEJ,IAGK,CACLN,SAAU8B,EACVC"}
|
package/dist/vue/index.js
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
1
|
import { createPluginPackage } from "@embedpdf/core";
|
|
2
2
|
import { FullscreenPlugin, initialState, FullscreenPluginPackage as FullscreenPluginPackage$1 } from "@embedpdf/plugin-fullscreen";
|
|
3
3
|
export * from "@embedpdf/plugin-fullscreen";
|
|
4
|
-
import { ref, watchEffect,
|
|
4
|
+
import { ref, watchEffect, defineComponent, onMounted, onUnmounted, createElementBlock, openBlock, renderSlot } from "vue";
|
|
5
5
|
import { useCapability, usePlugin } from "@embedpdf/core/vue";
|
|
6
6
|
const useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
|
|
7
7
|
const useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
|
|
8
8
|
const useFullscreen = () => {
|
|
9
9
|
const { provides: fullscreenProviderRef } = useFullscreenCapability();
|
|
10
10
|
const state = ref(initialState);
|
|
11
|
-
|
|
12
|
-
watchEffect(() => {
|
|
11
|
+
watchEffect((onCleanup) => {
|
|
13
12
|
const fullscreenProvider = fullscreenProviderRef.value;
|
|
14
|
-
if (unsubscribe) {
|
|
15
|
-
unsubscribe();
|
|
16
|
-
unsubscribe = null;
|
|
17
|
-
}
|
|
18
13
|
if (fullscreenProvider) {
|
|
19
|
-
unsubscribe = fullscreenProvider.onStateChange((newState) => {
|
|
14
|
+
const unsubscribe = fullscreenProvider.onStateChange((newState) => {
|
|
20
15
|
state.value = newState;
|
|
21
16
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (unsubscribe) {
|
|
26
|
-
unsubscribe();
|
|
17
|
+
onCleanup(() => {
|
|
18
|
+
unsubscribe();
|
|
19
|
+
});
|
|
27
20
|
}
|
|
28
21
|
});
|
|
29
22
|
return {
|
|
@@ -31,6 +24,36 @@ const useFullscreen = () => {
|
|
|
31
24
|
state
|
|
32
25
|
};
|
|
33
26
|
};
|
|
27
|
+
function findFullscreenElement(event, containerElement, targetSelector) {
|
|
28
|
+
if (!containerElement || event.action !== "enter") {
|
|
29
|
+
return containerElement;
|
|
30
|
+
}
|
|
31
|
+
let elementToFullscreen = null;
|
|
32
|
+
if (targetSelector) {
|
|
33
|
+
elementToFullscreen = containerElement.querySelector(targetSelector);
|
|
34
|
+
if (!elementToFullscreen) {
|
|
35
|
+
console.warn(
|
|
36
|
+
`Fullscreen: Could not find element with selector "${targetSelector}" within the wrapper. Falling back to wrapper element.`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!elementToFullscreen) {
|
|
41
|
+
elementToFullscreen = containerElement;
|
|
42
|
+
}
|
|
43
|
+
return elementToFullscreen;
|
|
44
|
+
}
|
|
45
|
+
async function handleFullscreenRequest(event, containerElement, targetSelector) {
|
|
46
|
+
if (event.action === "enter") {
|
|
47
|
+
const elementToFullscreen = findFullscreenElement(event, containerElement, targetSelector);
|
|
48
|
+
if (elementToFullscreen && !document.fullscreenElement) {
|
|
49
|
+
await elementToFullscreen.requestFullscreen();
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
if (document.fullscreenElement) {
|
|
53
|
+
await document.exitFullscreen();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
34
57
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
35
58
|
__name: "fullscreen",
|
|
36
59
|
setup(__props) {
|
|
@@ -38,20 +61,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
38
61
|
const { plugin: fullscreenPluginRef } = useFullscreenPlugin();
|
|
39
62
|
const containerRef = ref(null);
|
|
40
63
|
let unsubscribe = null;
|
|
64
|
+
let fullscreenChangeUnsubscribe = null;
|
|
41
65
|
onMounted(() => {
|
|
42
66
|
const fullscreenCapability = fullscreenCapabilityRef.value;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
await el.requestFullscreen();
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
51
|
-
if (document.fullscreenElement) {
|
|
52
|
-
await document.exitFullscreen();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
67
|
+
const fullscreenPlugin = fullscreenPluginRef.value;
|
|
68
|
+
if (fullscreenCapability && fullscreenPlugin) {
|
|
69
|
+
unsubscribe = fullscreenCapability.onRequest(async (event) => {
|
|
70
|
+
const targetSelector = fullscreenPlugin.getTargetSelector();
|
|
71
|
+
await handleFullscreenRequest(event, containerRef.value, targetSelector);
|
|
55
72
|
});
|
|
56
73
|
}
|
|
57
74
|
const plugin = fullscreenPluginRef.value;
|
|
@@ -60,15 +77,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
60
77
|
plugin.setFullscreenState(!!document.fullscreenElement);
|
|
61
78
|
};
|
|
62
79
|
document.addEventListener("fullscreenchange", handler);
|
|
63
|
-
|
|
80
|
+
fullscreenChangeUnsubscribe = () => {
|
|
64
81
|
document.removeEventListener("fullscreenchange", handler);
|
|
65
|
-
}
|
|
82
|
+
};
|
|
66
83
|
}
|
|
67
84
|
});
|
|
68
85
|
onUnmounted(() => {
|
|
69
86
|
if (unsubscribe) {
|
|
70
87
|
unsubscribe();
|
|
71
88
|
}
|
|
89
|
+
if (fullscreenChangeUnsubscribe) {
|
|
90
|
+
fullscreenChangeUnsubscribe();
|
|
91
|
+
}
|
|
72
92
|
});
|
|
73
93
|
return (_ctx, _cache) => {
|
|
74
94
|
return openBlock(), createElementBlock("div", {
|
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-fullscreen.ts","../../src/vue/components/fullscreen.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watchEffect
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-fullscreen.ts","../../src/shared/utils/fullscreen-utils.ts","../../src/vue/components/fullscreen.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watchEffect } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\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 { provides: fullscreenProviderRef } = useFullscreenCapability();\n const state = ref<FullscreenState>(initialState);\n\n watchEffect((onCleanup) => {\n const fullscreenProvider = fullscreenProviderRef.value;\n\n if (fullscreenProvider) {\n const unsubscribe = fullscreenProvider.onStateChange((newState) => {\n state.value = newState;\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n }\n });\n\n return {\n provides: fullscreenProviderRef,\n state,\n };\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 setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\nimport { handleFullscreenRequest } from '../../shared/utils/fullscreen-utils';\n\nconst { provides: fullscreenCapabilityRef } = useFullscreenCapability();\nconst { plugin: fullscreenPluginRef } = useFullscreenPlugin();\nconst containerRef = ref<HTMLDivElement | null>(null);\n\nlet unsubscribe: (() => void) | null = null;\nlet fullscreenChangeUnsubscribe: (() => void) | null = null;\n\nonMounted(() => {\n const fullscreenCapability = fullscreenCapabilityRef.value;\n const fullscreenPlugin = fullscreenPluginRef.value;\n\n if (fullscreenCapability && fullscreenPlugin) {\n unsubscribe = fullscreenCapability.onRequest(async (event) => {\n const targetSelector = fullscreenPlugin.getTargetSelector();\n await handleFullscreenRequest(event, containerRef.value, targetSelector);\n });\n }\n\n // Handle fullscreen state changes\n const plugin = fullscreenPluginRef.value;\n if (plugin) {\n const handler = () => {\n plugin.setFullscreenState(!!document.fullscreenElement);\n };\n document.addEventListener('fullscreenchange', handler);\n\n fullscreenChangeUnsubscribe = () => {\n document.removeEventListener('fullscreenchange', handler);\n };\n }\n});\n\nonUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n if (fullscreenChangeUnsubscribe) {\n fullscreenChangeUnsubscribe();\n }\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n :style=\"{\n position: 'relative',\n width: '100%',\n height: '100%',\n }\"\n >\n <slot />\n </div>\n</template>\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":["_createElementBlock","_renderSlot","BaseFullscreenPackage","FullscreenProvider"],"mappings":";;;;;AAIO,MAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,MAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;AAEzF,MAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,UAAU,sBAAA,IAA0B,wBAAA;AAC5C,QAAM,QAAQ,IAAqB,YAAY;AAE/C,cAAY,CAAC,cAAc;AACzB,UAAM,qBAAqB,sBAAsB;AAEjD,QAAI,oBAAoB;AACtB,YAAM,cAAc,mBAAmB,cAAc,CAAC,aAAa;AACjE,cAAM,QAAQ;AAAA,MAChB,CAAC;AAED,gBAAU,MAAM;AACd,oBAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,UAAU;AAAA,IACV;AAAA,EAAA;AAEJ;ACpBO,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;;;;ACvDA,UAAM,EAAE,UAAU,wBAAA,IAA4B,wBAAA;AAC9C,UAAM,EAAE,QAAQ,oBAAA,IAAwB,oBAAA;AACxC,UAAM,eAAe,IAA2B,IAAI;AAEpD,QAAI,cAAmC;AACvC,QAAI,8BAAmD;AAEvD,cAAU,MAAM;AACd,YAAM,uBAAuB,wBAAwB;AACrD,YAAM,mBAAmB,oBAAoB;AAE7C,UAAI,wBAAwB,kBAAkB;AAC5C,sBAAc,qBAAqB,UAAU,OAAO,UAAU;AAC5D,gBAAM,iBAAiB,iBAAiB,kBAAA;AACxC,gBAAM,wBAAwB,OAAO,aAAa,OAAO,cAAc;AAAA,QACzE,CAAC;AAAA,MACH;AAGA,YAAM,SAAS,oBAAoB;AACnC,UAAI,QAAQ;AACV,cAAM,UAAU,MAAM;AACpB,iBAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AAAA,QACxD;AACA,iBAAS,iBAAiB,oBAAoB,OAAO;AAErD,sCAA8B,MAAM;AAClC,mBAAS,oBAAoB,oBAAoB,OAAO;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,UAAI,aAAa;AACf,oBAAA;AAAA,MACF;AACA,UAAI,6BAA6B;AAC/B,oCAAA;AAAA,MACF;AAAA,IACF,CAAC;;0BAICA,mBASM,OAAA;AAAA,iBARA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAO;AAAA;;;;MAIP;QAEDC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;AC/CL,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAWC,SAAkB,EAC7B,MAAA;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-fullscreen",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-next.0",
|
|
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": "
|
|
37
|
+
"@embedpdf/models": "2.0.0-next.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/react": "^18.2.0",
|
|
41
41
|
"typescript": "^5.0.0",
|
|
42
|
-
"@embedpdf/
|
|
43
|
-
"@embedpdf/
|
|
42
|
+
"@embedpdf/build": "1.1.0",
|
|
43
|
+
"@embedpdf/core": "2.0.0-next.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": "
|
|
51
|
+
"@embedpdf/core": "2.0.0-next.0"
|
|
52
52
|
},
|
|
53
53
|
"files": [
|
|
54
54
|
"dist",
|