@embedpdf/plugin-fullscreen 1.0.1 → 1.0.3

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 CHANGED
@@ -24,6 +24,7 @@ __export(index_exports, {
24
24
  FullscreenPlugin: () => FullscreenPlugin,
25
25
  FullscreenPluginPackage: () => FullscreenPluginPackage,
26
26
  SET_FULLSCREEN: () => SET_FULLSCREEN,
27
+ initialState: () => initialState,
27
28
  manifest: () => manifest,
28
29
  setFullscreen: () => setFullscreen
29
30
  });
@@ -56,6 +57,7 @@ function setFullscreen(payload) {
56
57
  var FullscreenPlugin = class extends import_core.BasePlugin {
57
58
  constructor(id, registry) {
58
59
  super(id, registry);
60
+ this.onStateChange$ = (0, import_core.createBehaviorEmitter)();
59
61
  this.fullscreenRequest$ = (0, import_core.createEmitter)();
60
62
  }
61
63
  async initialize(_) {
@@ -63,11 +65,29 @@ var FullscreenPlugin = class extends import_core.BasePlugin {
63
65
  buildCapability() {
64
66
  return {
65
67
  isFullscreen: () => this.state.isFullscreen,
66
- enableFullscreen: () => this.fullscreenRequest$.emit("enter"),
67
- exitFullscreen: () => this.fullscreenRequest$.emit("exit"),
68
- onRequest: this.fullscreenRequest$.on
68
+ enableFullscreen: () => this.enableFullscreen(),
69
+ exitFullscreen: () => this.exitFullscreen(),
70
+ toggleFullscreen: () => this.toggleFullscreen(),
71
+ onRequest: this.fullscreenRequest$.on,
72
+ onStateChange: this.onStateChange$.on
69
73
  };
70
74
  }
75
+ toggleFullscreen() {
76
+ if (this.state.isFullscreen) {
77
+ this.exitFullscreen();
78
+ } else {
79
+ this.enableFullscreen();
80
+ }
81
+ }
82
+ enableFullscreen() {
83
+ this.fullscreenRequest$.emit("enter");
84
+ }
85
+ exitFullscreen() {
86
+ this.fullscreenRequest$.emit("exit");
87
+ }
88
+ onStoreUpdated(_, newState) {
89
+ this.onStateChange$.emit(newState);
90
+ }
71
91
  setFullscreenState(isFullscreen) {
72
92
  this.dispatch(setFullscreen(isFullscreen));
73
93
  }
@@ -104,6 +124,7 @@ var FullscreenPluginPackage = {
104
124
  FullscreenPlugin,
105
125
  FullscreenPluginPackage,
106
126
  SET_FULLSCREEN,
127
+ initialState,
107
128
  manifest,
108
129
  setFullscreen
109
130
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/lib/manifest.ts","../src/lib/fullscreen-plugin.ts","../src/lib/actions.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["export * from './lib';\n","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 { BasePlugin, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { FullscreenCapability, FullscreenPluginConfig, FullscreenState } 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 fullscreenRequest$ = createEmitter<'enter' | 'exit'>();\n\n constructor(id: string, registry: PluginRegistry) {\n super(id, registry);\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: () => this.fullscreenRequest$.emit('enter'),\n exitFullscreen: () => this.fullscreenRequest$.emit('exit'),\n onRequest: this.fullscreenRequest$.on,\n };\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 { 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 { 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) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,uBAAuB;AAE7B,IAAM,WAAmD;AAAA,EAC9D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,YAAY;AAAA,EACvB,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACfA,kBAA0D;;;ACEnD,IAAM,iBAAiB;AASvB,SAAS,cAAc,SAAuC;AACnE,SAAO,EAAE,MAAM,gBAAgB,QAAQ;AACzC;;;ADTO,IAAM,mBAAN,cAA+B,uBAKpC;AAAA,EAKA,YAAY,IAAY,UAA0B;AAChD,UAAM,IAAI,QAAQ;AAHpB,SAAiB,yBAAqB,2BAAgC;AAAA,EAItE;AAAA,EAEA,MAAM,WAAW,GAA0C;AAAA,EAAC;AAAA,EAElD,kBAAwC;AAChD,WAAO;AAAA,MACL,cAAc,MAAM,KAAK,MAAM;AAAA,MAC/B,kBAAkB,MAAM,KAAK,mBAAmB,KAAK,OAAO;AAAA,MAC5D,gBAAgB,MAAM,KAAK,mBAAmB,KAAK,MAAM;AAAA,MACzD,WAAW,KAAK,mBAAmB;AAAA,IACrC;AAAA,EACF;AAAA,EAEO,mBAAmB,cAA6B;AACrD,SAAK,SAAS,cAAc,YAAY,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAM,UAAyB;AAC7B,SAAK,mBAAmB,MAAM;AAC9B,UAAM,QAAQ;AAAA,EAChB;AACF;AAjCa,iBAMK,KAAK;;;AENhB,IAAM,eAAgC;AAAA,EAC3C,cAAc;AAChB;AAEO,IAAM,UAAsD,CAAC,OAAO,WAAW;AACpF,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,OAAO,QAAQ;AAAA,IAClD;AACE,aAAO;AAAA,EACX;AACF;;;ACPO,IAAM,0BAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,aAAa,IAAI,iBAAiB,sBAAsB,QAAQ;AAAA,EACzE;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/lib/manifest.ts","../src/lib/fullscreen-plugin.ts","../src/lib/actions.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["export * from './lib';\n","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 { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { FullscreenCapability, FullscreenPluginConfig, FullscreenState } 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<'enter' | 'exit'>();\n\n constructor(id: string, registry: PluginRegistry) {\n super(id, registry);\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: () => this.enableFullscreen(),\n exitFullscreen: () => this.exitFullscreen(),\n toggleFullscreen: () => this.toggleFullscreen(),\n onRequest: this.fullscreenRequest$.on,\n onStateChange: this.onStateChange$.on,\n };\n }\n\n private toggleFullscreen(): void {\n if (this.state.isFullscreen) {\n this.exitFullscreen();\n } else {\n this.enableFullscreen();\n }\n }\n\n private enableFullscreen(): void {\n this.fullscreenRequest$.emit('enter');\n }\n\n private exitFullscreen(): void {\n this.fullscreenRequest$.emit('exit');\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 { 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 { 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) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\nexport { initialState };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,uBAAuB;AAE7B,IAAM,WAAmD;AAAA,EAC9D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,YAAY;AAAA,EACvB,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACfA,kBAAiF;;;ACE1E,IAAM,iBAAiB;AASvB,SAAS,cAAc,SAAuC;AACnE,SAAO,EAAE,MAAM,gBAAgB,QAAQ;AACzC;;;ADTO,IAAM,mBAAN,cAA+B,uBAKpC;AAAA,EAMA,YAAY,IAAY,UAA0B;AAChD,UAAM,IAAI,QAAQ;AAJpB,SAAiB,qBAAiB,mCAAuC;AACzE,SAAiB,yBAAqB,2BAAgC;AAAA,EAItE;AAAA,EAEA,MAAM,WAAW,GAA0C;AAAA,EAAC;AAAA,EAElD,kBAAwC;AAChD,WAAO;AAAA,MACL,cAAc,MAAM,KAAK,MAAM;AAAA,MAC/B,kBAAkB,MAAM,KAAK,iBAAiB;AAAA,MAC9C,gBAAgB,MAAM,KAAK,eAAe;AAAA,MAC1C,kBAAkB,MAAM,KAAK,iBAAiB;AAAA,MAC9C,WAAW,KAAK,mBAAmB;AAAA,MACnC,eAAe,KAAK,eAAe;AAAA,IACrC;AAAA,EACF;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,MAAM,cAAc;AAC3B,WAAK,eAAe;AAAA,IACtB,OAAO;AACL,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,mBAAyB;AAC/B,SAAK,mBAAmB,KAAK,OAAO;AAAA,EACtC;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,mBAAmB,KAAK,MAAM;AAAA,EACrC;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,MAAM;AAC9B,UAAM,QAAQ;AAAA,EAChB;AACF;AAxDa,iBAMK,KAAK;;;AENhB,IAAM,eAAgC;AAAA,EAC3C,cAAc;AAChB;AAEO,IAAM,UAAsD,CAAC,OAAO,WAAW;AACpF,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,OAAO,QAAQ;AAAA,IAClD;AACE,aAAO;AAAA,EACX;AACF;;;ACPO,IAAM,0BAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,aAAa,IAAI,iBAAiB,sBAAsB,QAAQ;AAAA,EACzE;AAAA,EACA;AACF;","names":[]}
package/dist/index.d.cts CHANGED
@@ -9,7 +9,9 @@ interface FullscreenCapability {
9
9
  isFullscreen: () => boolean;
10
10
  enableFullscreen: () => void;
11
11
  exitFullscreen: () => void;
12
+ toggleFullscreen: () => void;
12
13
  onRequest: EventHook<'enter' | 'exit'>;
14
+ onStateChange: EventHook<FullscreenState>;
13
15
  }
14
16
 
15
17
  declare const SET_FULLSCREEN = "SET_FULLSCREEN";
@@ -22,17 +24,24 @@ declare function setFullscreen(payload: boolean): SetFullscreenAction;
22
24
 
23
25
  declare class FullscreenPlugin extends BasePlugin<FullscreenPluginConfig, FullscreenCapability, FullscreenState, FullscreenAction> {
24
26
  static readonly id: "fullscreen";
27
+ private readonly onStateChange$;
25
28
  private readonly fullscreenRequest$;
26
29
  constructor(id: string, registry: PluginRegistry);
27
30
  initialize(_: FullscreenPluginConfig): Promise<void>;
28
31
  protected buildCapability(): FullscreenCapability;
32
+ private toggleFullscreen;
33
+ private enableFullscreen;
34
+ private exitFullscreen;
35
+ onStoreUpdated(_: FullscreenState, newState: FullscreenState): void;
29
36
  setFullscreenState(isFullscreen: boolean): void;
30
37
  destroy(): Promise<void>;
31
38
  }
32
39
 
40
+ declare const initialState: FullscreenState;
41
+
33
42
  declare const FULLSCREEN_PLUGIN_ID = "fullscreen";
34
43
  declare const manifest: PluginManifest<FullscreenPluginConfig>;
35
44
 
36
45
  declare const FullscreenPluginPackage: PluginPackage<FullscreenPlugin, FullscreenPluginConfig, FullscreenState, FullscreenAction>;
37
46
 
38
- export { FULLSCREEN_PLUGIN_ID, type FullscreenAction, type FullscreenCapability, FullscreenPlugin, type FullscreenPluginConfig, FullscreenPluginPackage, type FullscreenState, SET_FULLSCREEN, type SetFullscreenAction, manifest, setFullscreen };
47
+ export { FULLSCREEN_PLUGIN_ID, type FullscreenAction, type FullscreenCapability, FullscreenPlugin, type FullscreenPluginConfig, FullscreenPluginPackage, type FullscreenState, SET_FULLSCREEN, type SetFullscreenAction, initialState, manifest, setFullscreen };
package/dist/index.d.ts CHANGED
@@ -9,7 +9,9 @@ interface FullscreenCapability {
9
9
  isFullscreen: () => boolean;
10
10
  enableFullscreen: () => void;
11
11
  exitFullscreen: () => void;
12
+ toggleFullscreen: () => void;
12
13
  onRequest: EventHook<'enter' | 'exit'>;
14
+ onStateChange: EventHook<FullscreenState>;
13
15
  }
14
16
 
15
17
  declare const SET_FULLSCREEN = "SET_FULLSCREEN";
@@ -22,17 +24,24 @@ declare function setFullscreen(payload: boolean): SetFullscreenAction;
22
24
 
23
25
  declare class FullscreenPlugin extends BasePlugin<FullscreenPluginConfig, FullscreenCapability, FullscreenState, FullscreenAction> {
24
26
  static readonly id: "fullscreen";
27
+ private readonly onStateChange$;
25
28
  private readonly fullscreenRequest$;
26
29
  constructor(id: string, registry: PluginRegistry);
27
30
  initialize(_: FullscreenPluginConfig): Promise<void>;
28
31
  protected buildCapability(): FullscreenCapability;
32
+ private toggleFullscreen;
33
+ private enableFullscreen;
34
+ private exitFullscreen;
35
+ onStoreUpdated(_: FullscreenState, newState: FullscreenState): void;
29
36
  setFullscreenState(isFullscreen: boolean): void;
30
37
  destroy(): Promise<void>;
31
38
  }
32
39
 
40
+ declare const initialState: FullscreenState;
41
+
33
42
  declare const FULLSCREEN_PLUGIN_ID = "fullscreen";
34
43
  declare const manifest: PluginManifest<FullscreenPluginConfig>;
35
44
 
36
45
  declare const FullscreenPluginPackage: PluginPackage<FullscreenPlugin, FullscreenPluginConfig, FullscreenState, FullscreenAction>;
37
46
 
38
- export { FULLSCREEN_PLUGIN_ID, type FullscreenAction, type FullscreenCapability, FullscreenPlugin, type FullscreenPluginConfig, FullscreenPluginPackage, type FullscreenState, SET_FULLSCREEN, type SetFullscreenAction, manifest, setFullscreen };
47
+ export { FULLSCREEN_PLUGIN_ID, type FullscreenAction, type FullscreenCapability, FullscreenPlugin, type FullscreenPluginConfig, FullscreenPluginPackage, type FullscreenState, SET_FULLSCREEN, type SetFullscreenAction, initialState, manifest, setFullscreen };
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var manifest = {
13
13
  };
14
14
 
15
15
  // src/lib/fullscreen-plugin.ts
16
- import { BasePlugin, createEmitter } from "@embedpdf/core";
16
+ import { BasePlugin, createBehaviorEmitter, createEmitter } from "@embedpdf/core";
17
17
 
18
18
  // src/lib/actions.ts
19
19
  var SET_FULLSCREEN = "SET_FULLSCREEN";
@@ -25,6 +25,7 @@ function setFullscreen(payload) {
25
25
  var FullscreenPlugin = class extends BasePlugin {
26
26
  constructor(id, registry) {
27
27
  super(id, registry);
28
+ this.onStateChange$ = createBehaviorEmitter();
28
29
  this.fullscreenRequest$ = createEmitter();
29
30
  }
30
31
  async initialize(_) {
@@ -32,11 +33,29 @@ var FullscreenPlugin = class extends BasePlugin {
32
33
  buildCapability() {
33
34
  return {
34
35
  isFullscreen: () => this.state.isFullscreen,
35
- enableFullscreen: () => this.fullscreenRequest$.emit("enter"),
36
- exitFullscreen: () => this.fullscreenRequest$.emit("exit"),
37
- onRequest: this.fullscreenRequest$.on
36
+ enableFullscreen: () => this.enableFullscreen(),
37
+ exitFullscreen: () => this.exitFullscreen(),
38
+ toggleFullscreen: () => this.toggleFullscreen(),
39
+ onRequest: this.fullscreenRequest$.on,
40
+ onStateChange: this.onStateChange$.on
38
41
  };
39
42
  }
43
+ toggleFullscreen() {
44
+ if (this.state.isFullscreen) {
45
+ this.exitFullscreen();
46
+ } else {
47
+ this.enableFullscreen();
48
+ }
49
+ }
50
+ enableFullscreen() {
51
+ this.fullscreenRequest$.emit("enter");
52
+ }
53
+ exitFullscreen() {
54
+ this.fullscreenRequest$.emit("exit");
55
+ }
56
+ onStoreUpdated(_, newState) {
57
+ this.onStateChange$.emit(newState);
58
+ }
40
59
  setFullscreenState(isFullscreen) {
41
60
  this.dispatch(setFullscreen(isFullscreen));
42
61
  }
@@ -72,6 +91,7 @@ export {
72
91
  FullscreenPlugin,
73
92
  FullscreenPluginPackage,
74
93
  SET_FULLSCREEN,
94
+ initialState,
75
95
  manifest,
76
96
  setFullscreen
77
97
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/manifest.ts","../src/lib/fullscreen-plugin.ts","../src/lib/actions.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 { BasePlugin, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { FullscreenCapability, FullscreenPluginConfig, FullscreenState } 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 fullscreenRequest$ = createEmitter<'enter' | 'exit'>();\n\n constructor(id: string, registry: PluginRegistry) {\n super(id, registry);\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: () => this.fullscreenRequest$.emit('enter'),\n exitFullscreen: () => this.fullscreenRequest$.emit('exit'),\n onRequest: this.fullscreenRequest$.on,\n };\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 { 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 { 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) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\n"],"mappings":";AAGO,IAAM,uBAAuB;AAE7B,IAAM,WAAmD;AAAA,EAC9D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,YAAY;AAAA,EACvB,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACfA,SAAS,YAAY,qBAAqC;;;ACEnD,IAAM,iBAAiB;AASvB,SAAS,cAAc,SAAuC;AACnE,SAAO,EAAE,MAAM,gBAAgB,QAAQ;AACzC;;;ADTO,IAAM,mBAAN,cAA+B,WAKpC;AAAA,EAKA,YAAY,IAAY,UAA0B;AAChD,UAAM,IAAI,QAAQ;AAHpB,SAAiB,qBAAqB,cAAgC;AAAA,EAItE;AAAA,EAEA,MAAM,WAAW,GAA0C;AAAA,EAAC;AAAA,EAElD,kBAAwC;AAChD,WAAO;AAAA,MACL,cAAc,MAAM,KAAK,MAAM;AAAA,MAC/B,kBAAkB,MAAM,KAAK,mBAAmB,KAAK,OAAO;AAAA,MAC5D,gBAAgB,MAAM,KAAK,mBAAmB,KAAK,MAAM;AAAA,MACzD,WAAW,KAAK,mBAAmB;AAAA,IACrC;AAAA,EACF;AAAA,EAEO,mBAAmB,cAA6B;AACrD,SAAK,SAAS,cAAc,YAAY,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAM,UAAyB;AAC7B,SAAK,mBAAmB,MAAM;AAC9B,UAAM,QAAQ;AAAA,EAChB;AACF;AAjCa,iBAMK,KAAK;;;AENhB,IAAM,eAAgC;AAAA,EAC3C,cAAc;AAChB;AAEO,IAAM,UAAsD,CAAC,OAAO,WAAW;AACpF,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,OAAO,QAAQ;AAAA,IAClD;AACE,aAAO;AAAA,EACX;AACF;;;ACPO,IAAM,0BAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,aAAa,IAAI,iBAAiB,sBAAsB,QAAQ;AAAA,EACzE;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/lib/manifest.ts","../src/lib/fullscreen-plugin.ts","../src/lib/actions.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 { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { FullscreenCapability, FullscreenPluginConfig, FullscreenState } 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<'enter' | 'exit'>();\n\n constructor(id: string, registry: PluginRegistry) {\n super(id, registry);\n }\n\n async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n protected buildCapability(): FullscreenCapability {\n return {\n isFullscreen: () => this.state.isFullscreen,\n enableFullscreen: () => this.enableFullscreen(),\n exitFullscreen: () => this.exitFullscreen(),\n toggleFullscreen: () => this.toggleFullscreen(),\n onRequest: this.fullscreenRequest$.on,\n onStateChange: this.onStateChange$.on,\n };\n }\n\n private toggleFullscreen(): void {\n if (this.state.isFullscreen) {\n this.exitFullscreen();\n } else {\n this.enableFullscreen();\n }\n }\n\n private enableFullscreen(): void {\n this.fullscreenRequest$.emit('enter');\n }\n\n private exitFullscreen(): void {\n this.fullscreenRequest$.emit('exit');\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 { 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 { 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) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry),\n reducer,\n initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\nexport { initialState };\n"],"mappings":";AAGO,IAAM,uBAAuB;AAE7B,IAAM,WAAmD;AAAA,EAC9D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,YAAY;AAAA,EACvB,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACfA,SAAS,YAAY,uBAAuB,qBAAqC;;;ACE1E,IAAM,iBAAiB;AASvB,SAAS,cAAc,SAAuC;AACnE,SAAO,EAAE,MAAM,gBAAgB,QAAQ;AACzC;;;ADTO,IAAM,mBAAN,cAA+B,WAKpC;AAAA,EAMA,YAAY,IAAY,UAA0B;AAChD,UAAM,IAAI,QAAQ;AAJpB,SAAiB,iBAAiB,sBAAuC;AACzE,SAAiB,qBAAqB,cAAgC;AAAA,EAItE;AAAA,EAEA,MAAM,WAAW,GAA0C;AAAA,EAAC;AAAA,EAElD,kBAAwC;AAChD,WAAO;AAAA,MACL,cAAc,MAAM,KAAK,MAAM;AAAA,MAC/B,kBAAkB,MAAM,KAAK,iBAAiB;AAAA,MAC9C,gBAAgB,MAAM,KAAK,eAAe;AAAA,MAC1C,kBAAkB,MAAM,KAAK,iBAAiB;AAAA,MAC9C,WAAW,KAAK,mBAAmB;AAAA,MACnC,eAAe,KAAK,eAAe;AAAA,IACrC;AAAA,EACF;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,MAAM,cAAc;AAC3B,WAAK,eAAe;AAAA,IACtB,OAAO;AACL,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,mBAAyB;AAC/B,SAAK,mBAAmB,KAAK,OAAO;AAAA,EACtC;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,mBAAmB,KAAK,MAAM;AAAA,EACrC;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,MAAM;AAC9B,UAAM,QAAQ;AAAA,EAChB;AACF;AAxDa,iBAMK,KAAK;;;AENhB,IAAM,eAAgC;AAAA,EAC3C,cAAc;AAChB;AAEO,IAAM,UAAsD,CAAC,OAAO,WAAW;AACpF,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,OAAO,QAAQ;AAAA,IAClD;AACE,aAAO;AAAA,EACX;AACF;;;ACPO,IAAM,0BAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,aAAa,IAAI,iBAAiB,sBAAsB,QAAQ;AAAA,EACzE;AAAA,EACA;AACF;","names":[]}
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var preact_exports = {};
22
22
  __export(preact_exports, {
23
23
  FullscreenProvider: () => FullscreenProvider,
24
+ useFullscreen: () => useFullscreen,
24
25
  useFullscreenCapability: () => useFullscreenCapability,
25
26
  useFullscreenPlugin: () => useFullscreenPlugin
26
27
  });
@@ -29,17 +30,31 @@ module.exports = __toCommonJS(preact_exports);
29
30
  // src/preact/hooks/use-fullscreen.ts
30
31
  var import_preact = require("@embedpdf/core/preact");
31
32
  var import_plugin_fullscreen = require("@embedpdf/plugin-fullscreen");
33
+ var import_hooks = require("preact/hooks");
32
34
  var useFullscreenPlugin = () => (0, import_preact.usePlugin)(import_plugin_fullscreen.FullscreenPlugin.id);
33
35
  var useFullscreenCapability = () => (0, import_preact.useCapability)(import_plugin_fullscreen.FullscreenPlugin.id);
36
+ var useFullscreen = () => {
37
+ const { provides } = useFullscreenCapability();
38
+ const [state, setState] = (0, import_hooks.useState)(import_plugin_fullscreen.initialState);
39
+ (0, import_hooks.useEffect)(() => {
40
+ return provides?.onStateChange((state2) => {
41
+ setState(state2);
42
+ });
43
+ }, [provides]);
44
+ return {
45
+ provides,
46
+ state
47
+ };
48
+ };
34
49
 
35
50
  // src/preact/components/fullscreen.tsx
36
- var import_hooks = require("preact/hooks");
51
+ var import_hooks2 = require("preact/hooks");
37
52
  var import_jsx_runtime = require("preact/jsx-runtime");
38
53
  function FullscreenProvider({ children, ...props }) {
39
54
  const { provides: fullscreenCapability } = useFullscreenCapability();
40
55
  const { plugin } = useFullscreenPlugin();
41
- const ref = (0, import_hooks.useRef)(null);
42
- (0, import_hooks.useEffect)(() => {
56
+ const ref = (0, import_hooks2.useRef)(null);
57
+ (0, import_hooks2.useEffect)(() => {
43
58
  if (!fullscreenCapability) return;
44
59
  const unsub = fullscreenCapability.onRequest(async (action) => {
45
60
  if (action === "enter") {
@@ -51,7 +66,7 @@ function FullscreenProvider({ children, ...props }) {
51
66
  });
52
67
  return unsub;
53
68
  }, [fullscreenCapability]);
54
- (0, import_hooks.useEffect)(() => {
69
+ (0, import_hooks2.useEffect)(() => {
55
70
  if (!plugin) return;
56
71
  const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
57
72
  document.addEventListener("fullscreenchange", handler);
@@ -70,6 +85,7 @@ function FullscreenProvider({ children, ...props }) {
70
85
  // Annotate the CommonJS export names for ESM import in node:
71
86
  0 && (module.exports = {
72
87
  FullscreenProvider,
88
+ useFullscreen,
73
89
  useFullscreenCapability,
74
90
  useFullscreenPlugin
75
91
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/preact/index.ts","../../src/preact/hooks/use-fullscreen.ts","../../src/preact/components/fullscreen.tsx"],"sourcesContent":["export * from './hooks';\nexport * from './components';\n","import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n","/** @jsxImportSource preact */\nimport { setFullscreen } from '@embedpdf/plugin-fullscreen';\nimport { ComponentChildren, JSX } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ComponentChildren;\n style?: JSX.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyC;AACzC,+BAAiC;AAE1B,IAAM,sBAAsB,UAAM,yBAA4B,0CAAiB,EAAE;AACjF,IAAM,0BAA0B,UAAM,6BAAgC,0CAAiB,EAAE;;;ACDhG,mBAAkC;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,UAAM,qBAAuB,IAAI;AAEvC,8BAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,8BAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/preact/index.ts","../../src/preact/hooks/use-fullscreen.ts","../../src/preact/components/fullscreen.tsx"],"sourcesContent":["export * from './hooks';\nexport * from './components';\n","import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from 'preact/hooks';\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","/** @jsxImportSource preact */\nimport { setFullscreen } from '@embedpdf/plugin-fullscreen';\nimport { ComponentChildren, JSX } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ComponentChildren;\n style?: JSX.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyC;AACzC,+BAAgE;AAChE,mBAAoC;AAE7B,IAAM,sBAAsB,UAAM,yBAA4B,0CAAiB,EAAE;AACjF,IAAM,0BAA0B,UAAM,6BAAgC,0CAAiB,EAAE;AAEzF,IAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAA0B,qCAAY;AAEhE,8BAAU,MAAM;AACd,WAAO,UAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AClBA,IAAAC,gBAAkC;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,UAAM,sBAAuB,IAAI;AAEvC,+BAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,+BAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["state","import_hooks"]}
@@ -1,5 +1,5 @@
1
1
  import * as _embedpdf_plugin_fullscreen from '@embedpdf/plugin-fullscreen';
2
- import { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';
2
+ import { FullscreenPlugin, FullscreenState } from '@embedpdf/plugin-fullscreen';
3
3
  import { JSX, ComponentChildren } from 'preact';
4
4
 
5
5
  declare const useFullscreenPlugin: () => {
@@ -12,6 +12,10 @@ declare const useFullscreenCapability: () => {
12
12
  isLoading: boolean;
13
13
  ready: Promise<void>;
14
14
  };
15
+ declare const useFullscreen: () => {
16
+ provides: Readonly<_embedpdf_plugin_fullscreen.FullscreenCapability> | null;
17
+ state: FullscreenState;
18
+ };
15
19
 
16
20
  type FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {
17
21
  children: ComponentChildren;
@@ -19,4 +23,4 @@ type FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'>
19
23
  };
20
24
  declare function FullscreenProvider({ children, ...props }: FullscreenProviderProps): JSX.Element;
21
25
 
22
- export { FullscreenProvider, useFullscreenCapability, useFullscreenPlugin };
26
+ export { FullscreenProvider, useFullscreen, useFullscreenCapability, useFullscreenPlugin };
@@ -1,5 +1,5 @@
1
1
  import * as _embedpdf_plugin_fullscreen from '@embedpdf/plugin-fullscreen';
2
- import { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';
2
+ import { FullscreenPlugin, FullscreenState } from '@embedpdf/plugin-fullscreen';
3
3
  import { JSX, ComponentChildren } from 'preact';
4
4
 
5
5
  declare const useFullscreenPlugin: () => {
@@ -12,6 +12,10 @@ declare const useFullscreenCapability: () => {
12
12
  isLoading: boolean;
13
13
  ready: Promise<void>;
14
14
  };
15
+ declare const useFullscreen: () => {
16
+ provides: Readonly<_embedpdf_plugin_fullscreen.FullscreenCapability> | null;
17
+ state: FullscreenState;
18
+ };
15
19
 
16
20
  type FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {
17
21
  children: ComponentChildren;
@@ -19,4 +23,4 @@ type FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'>
19
23
  };
20
24
  declare function FullscreenProvider({ children, ...props }: FullscreenProviderProps): JSX.Element;
21
25
 
22
- export { FullscreenProvider, useFullscreenCapability, useFullscreenPlugin };
26
+ export { FullscreenProvider, useFullscreen, useFullscreenCapability, useFullscreenPlugin };
@@ -1,17 +1,31 @@
1
1
  // src/preact/hooks/use-fullscreen.ts
2
2
  import { useCapability, usePlugin } from "@embedpdf/core/preact";
3
- import { FullscreenPlugin } from "@embedpdf/plugin-fullscreen";
3
+ import { FullscreenPlugin, initialState } from "@embedpdf/plugin-fullscreen";
4
+ import { useState, useEffect } from "preact/hooks";
4
5
  var useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
5
6
  var useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
7
+ var useFullscreen = () => {
8
+ const { provides } = useFullscreenCapability();
9
+ const [state, setState] = useState(initialState);
10
+ useEffect(() => {
11
+ return provides?.onStateChange((state2) => {
12
+ setState(state2);
13
+ });
14
+ }, [provides]);
15
+ return {
16
+ provides,
17
+ state
18
+ };
19
+ };
6
20
 
7
21
  // src/preact/components/fullscreen.tsx
8
- import { useEffect, useRef } from "preact/hooks";
22
+ import { useEffect as useEffect2, useRef } from "preact/hooks";
9
23
  import { jsx } from "preact/jsx-runtime";
10
24
  function FullscreenProvider({ children, ...props }) {
11
25
  const { provides: fullscreenCapability } = useFullscreenCapability();
12
26
  const { plugin } = useFullscreenPlugin();
13
27
  const ref = useRef(null);
14
- useEffect(() => {
28
+ useEffect2(() => {
15
29
  if (!fullscreenCapability) return;
16
30
  const unsub = fullscreenCapability.onRequest(async (action) => {
17
31
  if (action === "enter") {
@@ -23,7 +37,7 @@ function FullscreenProvider({ children, ...props }) {
23
37
  });
24
38
  return unsub;
25
39
  }, [fullscreenCapability]);
26
- useEffect(() => {
40
+ useEffect2(() => {
27
41
  if (!plugin) return;
28
42
  const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
29
43
  document.addEventListener("fullscreenchange", handler);
@@ -41,6 +55,7 @@ function FullscreenProvider({ children, ...props }) {
41
55
  }
42
56
  export {
43
57
  FullscreenProvider,
58
+ useFullscreen,
44
59
  useFullscreenCapability,
45
60
  useFullscreenPlugin
46
61
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/preact/hooks/use-fullscreen.ts","../../src/preact/components/fullscreen.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n","/** @jsxImportSource preact */\nimport { setFullscreen } from '@embedpdf/plugin-fullscreen';\nimport { ComponentChildren, JSX } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ComponentChildren;\n style?: JSX.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";AAAA,SAAS,eAAe,iBAAiB;AACzC,SAAS,wBAAwB;AAE1B,IAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,IAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;;;ACDhG,SAAS,WAAW,cAAc;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,MAAM,OAAuB,IAAI;AAEvC,YAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/preact/hooks/use-fullscreen.ts","../../src/preact/components/fullscreen.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from 'preact/hooks';\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","/** @jsxImportSource preact */\nimport { setFullscreen } from '@embedpdf/plugin-fullscreen';\nimport { ComponentChildren, JSX } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: ComponentChildren;\n style?: JSX.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";AAAA,SAAS,eAAe,iBAAiB;AACzC,SAAS,kBAAmC,oBAAoB;AAChE,SAAS,UAAU,iBAAiB;AAE7B,IAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,IAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;AAEzF,IAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACd,WAAO,UAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AClBA,SAAS,aAAAC,YAAW,cAAc;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,MAAM,OAAuB,IAAI;AAEvC,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,EAAAA,WAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["state","useEffect","useEffect"]}
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var react_exports = {};
22
22
  __export(react_exports, {
23
23
  FullscreenProvider: () => FullscreenProvider,
24
+ useFullscreen: () => useFullscreen,
24
25
  useFullscreenCapability: () => useFullscreenCapability,
25
26
  useFullscreenPlugin: () => useFullscreenPlugin
26
27
  });
@@ -29,17 +30,31 @@ module.exports = __toCommonJS(react_exports);
29
30
  // src/react/hooks/use-fullscreen.ts
30
31
  var import_react = require("@embedpdf/core/react");
31
32
  var import_plugin_fullscreen = require("@embedpdf/plugin-fullscreen");
33
+ var import_react2 = require("react");
32
34
  var useFullscreenPlugin = () => (0, import_react.usePlugin)(import_plugin_fullscreen.FullscreenPlugin.id);
33
35
  var useFullscreenCapability = () => (0, import_react.useCapability)(import_plugin_fullscreen.FullscreenPlugin.id);
36
+ var useFullscreen = () => {
37
+ const { provides } = useFullscreenCapability();
38
+ const [state, setState] = (0, import_react2.useState)(import_plugin_fullscreen.initialState);
39
+ (0, import_react2.useEffect)(() => {
40
+ return provides?.onStateChange((state2) => {
41
+ setState(state2);
42
+ });
43
+ }, [provides]);
44
+ return {
45
+ provides,
46
+ state
47
+ };
48
+ };
34
49
 
35
50
  // src/react/components/fullscreen.tsx
36
- var import_react2 = require("react");
51
+ var import_react3 = require("react");
37
52
  var import_jsx_runtime = require("react/jsx-runtime");
38
53
  function FullscreenProvider({ children, ...props }) {
39
54
  const { provides: fullscreenCapability } = useFullscreenCapability();
40
55
  const { plugin } = useFullscreenPlugin();
41
- const ref = (0, import_react2.useRef)(null);
42
- (0, import_react2.useEffect)(() => {
56
+ const ref = (0, import_react3.useRef)(null);
57
+ (0, import_react3.useEffect)(() => {
43
58
  if (!fullscreenCapability) return;
44
59
  const unsub = fullscreenCapability.onRequest(async (action) => {
45
60
  if (action === "enter") {
@@ -51,7 +66,7 @@ function FullscreenProvider({ children, ...props }) {
51
66
  });
52
67
  return unsub;
53
68
  }, [fullscreenCapability]);
54
- (0, import_react2.useEffect)(() => {
69
+ (0, import_react3.useEffect)(() => {
55
70
  if (!plugin) return;
56
71
  const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
57
72
  document.addEventListener("fullscreenchange", handler);
@@ -70,6 +85,7 @@ function FullscreenProvider({ children, ...props }) {
70
85
  // Annotate the CommonJS export names for ESM import in node:
71
86
  0 && (module.exports = {
72
87
  FullscreenProvider,
88
+ useFullscreen,
73
89
  useFullscreenCapability,
74
90
  useFullscreenPlugin
75
91
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/index.ts","../../src/react/hooks/use-fullscreen.ts","../../src/react/components/fullscreen.tsx"],"sourcesContent":["export * from './hooks';\nexport * from './components';\n","import { useCapability, usePlugin } from '@embedpdf/core/react';\nimport { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n","import { useEffect, useRef } from 'react';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: React.ReactNode;\n style?: React.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyC;AACzC,+BAAiC;AAE1B,IAAM,sBAAsB,UAAM,wBAA4B,0CAAiB,EAAE;AACjF,IAAM,0BAA0B,UAAM,4BAAgC,0CAAiB,EAAE;;;ACJhG,IAAAA,gBAAkC;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,UAAM,sBAAuB,IAAI;AAEvC,+BAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,+BAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["import_react"]}
1
+ {"version":3,"sources":["../../src/react/index.ts","../../src/react/hooks/use-fullscreen.ts","../../src/react/components/fullscreen.tsx"],"sourcesContent":["export * from './hooks';\nexport * from './components';\n","import { useCapability, usePlugin } from '@embedpdf/core/react';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from 'react';\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 } from 'react';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: React.ReactNode;\n style?: React.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyC;AACzC,+BAAgE;AAChE,IAAAA,gBAAoC;AAE7B,IAAM,sBAAsB,UAAM,wBAA4B,0CAAiB,EAAE;AACjF,IAAM,0BAA0B,UAAM,4BAAgC,0CAAiB,EAAE;AAEzF,IAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAA0B,qCAAY;AAEhE,+BAAU,MAAM;AACd,WAAO,UAAU,cAAc,CAACC,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACrBA,IAAAC,gBAAkC;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,UAAM,sBAAuB,IAAI;AAEvC,+BAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,+BAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["import_react","state","import_react"]}
@@ -1,5 +1,5 @@
1
1
  import * as _embedpdf_plugin_fullscreen from '@embedpdf/plugin-fullscreen';
2
- import { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';
2
+ import { FullscreenPlugin, FullscreenState } from '@embedpdf/plugin-fullscreen';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  declare const useFullscreenPlugin: () => {
@@ -12,6 +12,10 @@ declare const useFullscreenCapability: () => {
12
12
  isLoading: boolean;
13
13
  ready: Promise<void>;
14
14
  };
15
+ declare const useFullscreen: () => {
16
+ provides: Readonly<_embedpdf_plugin_fullscreen.FullscreenCapability> | null;
17
+ state: FullscreenState;
18
+ };
15
19
 
16
20
  type FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {
17
21
  children: React.ReactNode;
@@ -19,4 +23,4 @@ type FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style
19
23
  };
20
24
  declare function FullscreenProvider({ children, ...props }: FullscreenProviderProps): react_jsx_runtime.JSX.Element;
21
25
 
22
- export { FullscreenProvider, useFullscreenCapability, useFullscreenPlugin };
26
+ export { FullscreenProvider, useFullscreen, useFullscreenCapability, useFullscreenPlugin };
@@ -1,5 +1,5 @@
1
1
  import * as _embedpdf_plugin_fullscreen from '@embedpdf/plugin-fullscreen';
2
- import { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';
2
+ import { FullscreenPlugin, FullscreenState } from '@embedpdf/plugin-fullscreen';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  declare const useFullscreenPlugin: () => {
@@ -12,6 +12,10 @@ declare const useFullscreenCapability: () => {
12
12
  isLoading: boolean;
13
13
  ready: Promise<void>;
14
14
  };
15
+ declare const useFullscreen: () => {
16
+ provides: Readonly<_embedpdf_plugin_fullscreen.FullscreenCapability> | null;
17
+ state: FullscreenState;
18
+ };
15
19
 
16
20
  type FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {
17
21
  children: React.ReactNode;
@@ -19,4 +23,4 @@ type FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style
19
23
  };
20
24
  declare function FullscreenProvider({ children, ...props }: FullscreenProviderProps): react_jsx_runtime.JSX.Element;
21
25
 
22
- export { FullscreenProvider, useFullscreenCapability, useFullscreenPlugin };
26
+ export { FullscreenProvider, useFullscreen, useFullscreenCapability, useFullscreenPlugin };
@@ -1,17 +1,31 @@
1
1
  // src/react/hooks/use-fullscreen.ts
2
2
  import { useCapability, usePlugin } from "@embedpdf/core/react";
3
- import { FullscreenPlugin } from "@embedpdf/plugin-fullscreen";
3
+ import { FullscreenPlugin, initialState } from "@embedpdf/plugin-fullscreen";
4
+ import { useState, useEffect } from "react";
4
5
  var useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
5
6
  var useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
7
+ var useFullscreen = () => {
8
+ const { provides } = useFullscreenCapability();
9
+ const [state, setState] = useState(initialState);
10
+ useEffect(() => {
11
+ return provides?.onStateChange((state2) => {
12
+ setState(state2);
13
+ });
14
+ }, [provides]);
15
+ return {
16
+ provides,
17
+ state
18
+ };
19
+ };
6
20
 
7
21
  // src/react/components/fullscreen.tsx
8
- import { useEffect, useRef } from "react";
22
+ import { useEffect as useEffect2, useRef } from "react";
9
23
  import { jsx } from "react/jsx-runtime";
10
24
  function FullscreenProvider({ children, ...props }) {
11
25
  const { provides: fullscreenCapability } = useFullscreenCapability();
12
26
  const { plugin } = useFullscreenPlugin();
13
27
  const ref = useRef(null);
14
- useEffect(() => {
28
+ useEffect2(() => {
15
29
  if (!fullscreenCapability) return;
16
30
  const unsub = fullscreenCapability.onRequest(async (action) => {
17
31
  if (action === "enter") {
@@ -23,7 +37,7 @@ function FullscreenProvider({ children, ...props }) {
23
37
  });
24
38
  return unsub;
25
39
  }, [fullscreenCapability]);
26
- useEffect(() => {
40
+ useEffect2(() => {
27
41
  if (!plugin) return;
28
42
  const handler = () => plugin.setFullscreenState(!!document.fullscreenElement);
29
43
  document.addEventListener("fullscreenchange", handler);
@@ -41,6 +55,7 @@ function FullscreenProvider({ children, ...props }) {
41
55
  }
42
56
  export {
43
57
  FullscreenProvider,
58
+ useFullscreen,
44
59
  useFullscreenCapability,
45
60
  useFullscreenPlugin
46
61
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/hooks/use-fullscreen.ts","../../src/react/components/fullscreen.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/react';\nimport { FullscreenPlugin } from '@embedpdf/plugin-fullscreen';\n\nexport const useFullscreenPlugin = () => usePlugin<FullscreenPlugin>(FullscreenPlugin.id);\nexport const useFullscreenCapability = () => useCapability<FullscreenPlugin>(FullscreenPlugin.id);\n","import { useEffect, useRef } from 'react';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: React.ReactNode;\n style?: React.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";AAAA,SAAS,eAAe,iBAAiB;AACzC,SAAS,wBAAwB;AAE1B,IAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,IAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;;;ACJhG,SAAS,WAAW,cAAc;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,MAAM,OAAuB,IAAI;AAEvC,YAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/react/hooks/use-fullscreen.ts","../../src/react/components/fullscreen.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/react';\nimport { FullscreenPlugin, FullscreenState, initialState } from '@embedpdf/plugin-fullscreen';\nimport { useState, useEffect } from 'react';\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 } from 'react';\n\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\ntype FullscreenProviderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> & {\n children: React.ReactNode;\n style?: React.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 (action) => {\n if (action === 'enter') {\n const el = ref.current;\n if (el && !document.fullscreenElement) await el.requestFullscreen();\n } else {\n if (document.fullscreenElement) await document.exitFullscreen();\n }\n });\n\n return unsub;\n }, [fullscreenCapability]);\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"],"mappings":";AAAA,SAAS,eAAe,iBAAiB;AACzC,SAAS,kBAAmC,oBAAoB;AAChE,SAAS,UAAU,iBAAiB;AAE7B,IAAM,sBAAsB,MAAM,UAA4B,iBAAiB,EAAE;AACjF,IAAM,0BAA0B,MAAM,cAAgC,iBAAiB,EAAE;AAEzF,IAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACd,WAAO,UAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAChB,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACrBA,SAAS,aAAAC,YAAW,cAAc;AAqC9B;AA5BG,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AACnE,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,QAAM,MAAM,OAAuB,IAAI;AAEvC,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,qBAAsB;AAE3B,UAAM,QAAQ,qBAAqB,UAAU,OAAO,WAAW;AAC7D,UAAI,WAAW,SAAS;AACtB,cAAM,KAAK,IAAI;AACf,YAAI,MAAM,CAAC,SAAS,kBAAmB,OAAM,GAAG,kBAAkB;AAAA,MACpE,OAAO;AACL,YAAI,SAAS,kBAAmB,OAAM,SAAS,eAAe;AAAA,MAChE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,CAAC;AAEzB,EAAAA,WAAU,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;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["state","useEffect","useEffect"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embedpdf/plugin-fullscreen",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -27,14 +27,14 @@
27
27
  "@types/react": "^18.2.0",
28
28
  "tsup": "^8.0.0",
29
29
  "typescript": "^5.0.0",
30
- "@embedpdf/models": "1.0.1",
31
- "@embedpdf/plugin-loader": "1.0.1"
30
+ "@embedpdf/models": "1.0.3",
31
+ "@embedpdf/plugin-loader": "1.0.3"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": ">=16.8.0",
35
35
  "react-dom": ">=16.8.0",
36
36
  "preact": "^10.26.4",
37
- "@embedpdf/core": "1.0.1"
37
+ "@embedpdf/core": "1.0.3"
38
38
  },
39
39
  "files": [
40
40
  "dist",