@embedpdf/plugin-fullscreen 1.0.20 → 1.0.22
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/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +7 -3
- 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 +7 -3
- package/dist/react/index.js.map +1 -1
- package/dist/shared-preact/index.d.ts +2 -0
- package/dist/shared-react/index.d.ts +2 -0
- package/dist/vue/components/fullscreen.vue.d.ts +12 -0
- package/dist/vue/components/index.d.ts +1 -0
- package/dist/vue/hooks/index.d.ts +1 -0
- package/dist/vue/hooks/use-fullscreen.d.ts +11 -0
- package/dist/vue/index.cjs +2 -0
- package/dist/vue/index.cjs.map +1 -0
- package/dist/vue/index.d.ts +4 -0
- package/dist/vue/index.js +96 -0
- package/dist/vue/index.js.map +1 -0
- package/package.json +13 -6
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
|
|
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),s=()=>l.useCapability(t.FullscreenPlugin.id);function c({children:e,...t}){const{provides:l}=s(),{plugin:c}=u(),i=n.useRef(null);return n.useEffect((()=>{if(!l)return;return l.onRequest((async e=>{if("enter"===e){const e=i.current;e&&!document.fullscreenElement&&await e.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}))}),[l]),n.useEffect((()=>{if(!c)return;const e=()=>c.setFullscreenState(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)}),[c]),r.jsx("div",{...t,style:{position:"relative",width:"100%",height:"100%",...t.style},ref:i,children:e})}const i=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(c).build();exports.FullscreenPluginPackage=i,exports.FullscreenProvider=c,exports.useFullscreen=()=>{const{provides:e}=s(),[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=s,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"],"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 (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"],"names":["useFullscreenPlugin","usePlugin","FullscreenPlugin","id","useFullscreenCapability","useCapability","children","props","provides","fullscreenCapability","plugin","ref","useRef","useEffect","onRequest","async","action","el","current","document","fullscreenElement","requestFullscreen","exitFullscreen","handler","setFullscreenState","addEventListener","removeEventListener","jsxRuntime","jsx","style","position","width","height","state","setState","useState","initialState","onStateChange"],"mappings":"
|
|
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 (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","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","FullscreenProvider","children","props","provides","fullscreenCapability","plugin","ref","useRef","useEffect","onRequest","async","action","el","current","document","fullscreenElement","requestFullscreen","exitFullscreen","handler","setFullscreenState","addEventListener","removeEventListener","jsxRuntime","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,ICIvF,SAASG,GAAmBC,SAAEA,KAAaC,IAChD,MAAQC,SAAUC,GAAyBN,KACrCO,OAAEA,GAAWX,IACbY,EAAMC,SAAuB,MAyBjC,OAvBFC,EAAAA,WAAU,KACR,IAAKJ,EAAsB,OAWpB,OATOA,EAAqBK,WAAUC,MAAOC,IAClD,GAAe,UAAXA,EAAoB,CACtB,MAAMC,EAAKN,EAAIO,QACXD,IAAOE,SAASC,yBAAyBH,EAAGI,mBAAkB,MAE9DF,SAASC,yBAAyBD,SAASG,gBAAe,GAI3D,GACN,CAACb,IAEJI,EAAAA,WAAU,KACR,IAAKH,EAAQ,OACb,MAAMa,EAAU,IAAMb,EAAOc,qBAAqBL,SAASC,mBAE3D,OADSD,SAAAM,iBAAiB,mBAAoBF,GACvC,IAAMJ,SAASO,oBAAoB,mBAAoBH,EAAO,GACpE,CAACb,IAGFiB,EAAAC,IAAC,MAAA,IACKrB,EACJsB,MAAO,CAAEC,SAAU,WAAYC,MAAO,OAAQC,OAAQ,UAAWzB,EAAMsB,OACvElB,MAECL,YAGP,CCpCO,MAAM2B,EAA0BC,EAAoBA,oBAAAC,EAAqBF,yBAC7EG,WAAW/B,GACXgC,6FFJ0B,KACrB,MAAA7B,SAAEA,GAAaL,KACdmC,EAAOC,GAAYC,EAAAA,SAA0BC,EAAAA,cAQ7C,OANP5B,EAAAA,WAAU,IACD,MAAAL,OAAA,EAAAA,EAAUkC,eAAeJ,IAC9BC,EAASD,EAAK,KAEf,CAAC9B,IAEG,CACLA,WACA8B,QACF"}
|
package/dist/preact/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FullscreenPlugin, initialState } from "@embedpdf/plugin-fullscreen";
|
|
3
|
-
|
|
1
|
+
import { createPluginPackage } from "@embedpdf/core";
|
|
2
|
+
import { FullscreenPlugin, initialState, FullscreenPluginPackage as FullscreenPluginPackage$1 } from "@embedpdf/plugin-fullscreen";
|
|
3
|
+
export * from "@embedpdf/plugin-fullscreen";
|
|
4
4
|
import { jsx } from "preact/jsx-runtime";
|
|
5
|
+
import { useState, useEffect, useRef } from "preact/hooks";
|
|
6
|
+
import { useCapability, usePlugin } from "@embedpdf/core/preact";
|
|
5
7
|
const useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
|
|
6
8
|
const useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
|
|
7
9
|
const useFullscreen = () => {
|
|
@@ -49,7 +51,9 @@ function FullscreenProvider({ children, ...props }) {
|
|
|
49
51
|
}
|
|
50
52
|
);
|
|
51
53
|
}
|
|
54
|
+
const FullscreenPluginPackage = createPluginPackage(FullscreenPluginPackage$1).addWrapper(FullscreenProvider).build();
|
|
52
55
|
export {
|
|
56
|
+
FullscreenPluginPackage,
|
|
53
57
|
FullscreenProvider,
|
|
54
58
|
useFullscreen,
|
|
55
59
|
useFullscreenCapability,
|
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"],"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 (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"],"names":["state"],"mappings":"
|
|
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 (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","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;AAC3B,QAAA,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACP,WAAA,qCAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAAA;AAAA,EACf,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACZO,SAAS,mBAAmB,EAAE,UAAU,GAAG,SAAkC;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AAC7D,QAAA,EAAE,OAAO,IAAI,oBAAoB;AACjC,QAAA,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,MAAA,OAC7D;AACL,YAAI,SAAS,kBAAyB,OAAA,SAAS,eAAe;AAAA,MAAA;AAAA,IAChE,CACD;AAEM,WAAA;AAAA,EAAA,GACN,CAAC,oBAAoB,CAAC;AAEzB,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,UAAU,MAAM,OAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AACnE,aAAA,iBAAiB,oBAAoB,OAAO;AACrD,WAAO,MAAM,SAAS,oBAAoB,oBAAoB,OAAO;AAAA,EAAA,GACpE,CAAC,MAAM,CAAC;AAGT,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA,IAAA;AAAA,EACH;AAEJ;ACpCO,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAM;"}
|
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
|
|
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),s=()=>l.useCapability(t.FullscreenPlugin.id);function c({children:e,...t}){const{provides:l}=s(),{plugin:c}=u(),i=n.useRef(null);return n.useEffect((()=>{if(!l)return;return l.onRequest((async e=>{if("enter"===e){const e=i.current;e&&!document.fullscreenElement&&await e.requestFullscreen()}else document.fullscreenElement&&await document.exitFullscreen()}))}),[l]),n.useEffect((()=>{if(!c)return;const e=()=>c.setFullscreenState(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)}),[c]),r.jsx("div",{...t,style:{position:"relative",width:"100%",height:"100%",...t.style},ref:i,children:e})}const i=e.createPluginPackage(t.FullscreenPluginPackage).addWrapper(c).build();exports.FullscreenPluginPackage=i,exports.FullscreenProvider=c,exports.useFullscreen=()=>{const{provides:e}=s(),[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=s,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"],"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 (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"],"names":["useFullscreenPlugin","usePlugin","FullscreenPlugin","id","useFullscreenCapability","useCapability","children","props","provides","fullscreenCapability","plugin","ref","useRef","useEffect","onRequest","async","action","el","current","document","fullscreenElement","requestFullscreen","exitFullscreen","handler","setFullscreenState","addEventListener","removeEventListener","jsxRuntime","jsx","style","position","width","height","state","setState","useState","initialState","onStateChange"],"mappings":"
|
|
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 (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","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","FullscreenProvider","children","props","provides","fullscreenCapability","plugin","ref","useRef","useEffect","onRequest","async","action","el","current","document","fullscreenElement","requestFullscreen","exitFullscreen","handler","setFullscreenState","addEventListener","removeEventListener","jsxRuntime","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,ICIvF,SAASG,GAAmBC,SAAEA,KAAaC,IAChD,MAAQC,SAAUC,GAAyBN,KACrCO,OAAEA,GAAWX,IACbY,EAAMC,SAAuB,MAyBjC,OAvBFC,EAAAA,WAAU,KACR,IAAKJ,EAAsB,OAWpB,OATOA,EAAqBK,WAAUC,MAAOC,IAClD,GAAe,UAAXA,EAAoB,CACtB,MAAMC,EAAKN,EAAIO,QACXD,IAAOE,SAASC,yBAAyBH,EAAGI,mBAAkB,MAE9DF,SAASC,yBAAyBD,SAASG,gBAAe,GAI3D,GACN,CAACb,IAEJI,EAAAA,WAAU,KACR,IAAKH,EAAQ,OACb,MAAMa,EAAU,IAAMb,EAAOc,qBAAqBL,SAASC,mBAE3D,OADSD,SAAAM,iBAAiB,mBAAoBF,GACvC,IAAMJ,SAASO,oBAAoB,mBAAoBH,EAAO,GACpE,CAACb,IAGFiB,EAAAC,IAAC,MAAA,IACKrB,EACJsB,MAAO,CAAEC,SAAU,WAAYC,MAAO,OAAQC,OAAQ,UAAWzB,EAAMsB,OACvElB,MAECL,YAGP,CCpCO,MAAM2B,EAA0BC,EAAoBA,oBAAAC,EAAqBF,yBAC7EG,WAAW/B,GACXgC,6FFJ0B,KACrB,MAAA7B,SAAEA,GAAaL,KACdmC,EAAOC,GAAYC,EAAAA,SAA0BC,EAAAA,cAQ7C,OANP5B,EAAAA,WAAU,IACD,MAAAL,OAAA,EAAAA,EAAUkC,eAAeJ,IAC9BC,EAASD,EAAK,KAEf,CAAC9B,IAEG,CACLA,WACA8B,QACF"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FullscreenPlugin, initialState } from "@embedpdf/plugin-fullscreen";
|
|
3
|
-
|
|
1
|
+
import { createPluginPackage } from "@embedpdf/core";
|
|
2
|
+
import { FullscreenPlugin, initialState, FullscreenPluginPackage as FullscreenPluginPackage$1 } from "@embedpdf/plugin-fullscreen";
|
|
3
|
+
export * from "@embedpdf/plugin-fullscreen";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { useState, useEffect, useRef } from "react";
|
|
6
|
+
import { useCapability, usePlugin } from "@embedpdf/core/react";
|
|
5
7
|
const useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
|
|
6
8
|
const useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
|
|
7
9
|
const useFullscreen = () => {
|
|
@@ -49,7 +51,9 @@ function FullscreenProvider({ children, ...props }) {
|
|
|
49
51
|
}
|
|
50
52
|
);
|
|
51
53
|
}
|
|
54
|
+
const FullscreenPluginPackage = createPluginPackage(FullscreenPluginPackage$1).addWrapper(FullscreenProvider).build();
|
|
52
55
|
export {
|
|
56
|
+
FullscreenPluginPackage,
|
|
53
57
|
FullscreenProvider,
|
|
54
58
|
useFullscreen,
|
|
55
59
|
useFullscreenCapability,
|
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"],"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 (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"],"names":["state"],"mappings":"
|
|
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 (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","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;AAC3B,QAAA,EAAE,SAAS,IAAI,wBAAwB;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,YAAY;AAEhE,YAAU,MAAM;AACP,WAAA,qCAAU,cAAc,CAACA,WAAU;AACxC,eAASA,MAAK;AAAA,IAAA;AAAA,EACf,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACZO,SAAS,mBAAmB,EAAE,UAAU,GAAG,SAAkC;AAClF,QAAM,EAAE,UAAU,qBAAqB,IAAI,wBAAwB;AAC7D,QAAA,EAAE,OAAO,IAAI,oBAAoB;AACjC,QAAA,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,MAAA,OAC7D;AACL,YAAI,SAAS,kBAAyB,OAAA,SAAS,eAAe;AAAA,MAAA;AAAA,IAChE,CACD;AAEM,WAAA;AAAA,EAAA,GACN,CAAC,oBAAoB,CAAC;AAEzB,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,UAAU,MAAM,OAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AACnE,aAAA,iBAAiB,oBAAoB,OAAO;AACrD,WAAO,MAAM,SAAS,oBAAoB,oBAAoB,OAAO;AAAA,EAAA,GACpE,CAAC,MAAM,CAAC;AAGT,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC7E;AAAA,MAEC;AAAA,IAAA;AAAA,EACH;AAEJ;ACpCO,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAW,kBAAkB,EAC7B,MAAM;"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export * from './hooks';
|
|
2
2
|
export * from './components';
|
|
3
|
+
export * from '../lib/index.ts';
|
|
4
|
+
export declare const FullscreenPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').FullscreenPlugin, import('../lib/index.ts').FullscreenPluginConfig, import('../lib/index.ts').FullscreenState, import('../lib/index.ts').SetFullscreenAction>>;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export * from './hooks';
|
|
2
2
|
export * from './components';
|
|
3
|
+
export * from '../lib/index.ts';
|
|
4
|
+
export declare const FullscreenPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').FullscreenPlugin, import('../lib/index.ts').FullscreenPluginConfig, import('../lib/index.ts').FullscreenState, import('../lib/index.ts').SetFullscreenAction>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare var __VLS_1: {};
|
|
2
|
+
type __VLS_Slots = {} & {
|
|
3
|
+
default?: (props: typeof __VLS_1) => any;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
6
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
7
|
+
export default _default;
|
|
8
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
9
|
+
new (): {
|
|
10
|
+
$slots: S;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as FullscreenProvider } from './fullscreen.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-fullscreen';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FullscreenPlugin, FullscreenState } from '../../lib/index.ts';
|
|
2
|
+
export declare const useFullscreenPlugin: () => import('@embedpdf/core/vue').PluginState<FullscreenPlugin>;
|
|
3
|
+
export declare const useFullscreenCapability: () => import('@embedpdf/core/vue').CapabilityState<Readonly<import('../../lib/index.ts').FullscreenCapability>>;
|
|
4
|
+
export declare const useFullscreen: () => {
|
|
5
|
+
provides: import('vue').Ref<Readonly<import('../../lib/index.ts').FullscreenCapability> | null, Readonly<import('../../lib/index.ts').FullscreenCapability> | null>;
|
|
6
|
+
state: import('vue').Ref<{
|
|
7
|
+
isFullscreen: boolean;
|
|
8
|
+
}, FullscreenState | {
|
|
9
|
+
isFullscreen: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-fullscreen"),t=require("vue"),l=require("@embedpdf/core/vue"),r=()=>l.usePlugin(n.FullscreenPlugin.id),u=()=>l.useCapability(n.FullscreenPlugin.id),o=t.defineComponent({__name:"fullscreen",setup(e){const{provides:n}=u(),{plugin:l}=r(),o=t.ref(null);let s=null;return t.onMounted((()=>{const e=n.value;e&&(s=e.onRequest((async e=>{const n=o.value;"enter"===e?n&&!document.fullscreenElement&&await n.requestFullscreen():document.fullscreenElement&&await document.exitFullscreen()})));const r=l.value;if(r){const e=()=>{r.setFullscreenState(!!document.fullscreenElement)};document.addEventListener("fullscreenchange",e),t.onUnmounted((()=>{document.removeEventListener("fullscreenchange",e)}))}})),t.onUnmounted((()=>{s&&s()})),(e,n)=>(t.openBlock(),t.createElementBlock("div",{ref_key:"containerRef",ref:o,style:{position:"relative",width:"100%",height:"100%"}},[t.renderSlot(e.$slots,"default")],512))}}),s=e.createPluginPackage(n.FullscreenPluginPackage).addWrapper(o).build();exports.FullscreenPluginPackage=s,exports.FullscreenProvider=o,exports.useFullscreen=()=>{const{provides:e}=u(),l=t.ref(n.initialState);let r=null;return t.watchEffect((()=>{const n=e.value;r&&(r(),r=null),n&&(r=n.onStateChange((e=>{l.value=e})))})),t.onUnmounted((()=>{r&&r()})),{provides:e,state:l}},exports.useFullscreenCapability=u,exports.useFullscreenPlugin=r,Object.keys(n).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})}));
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +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, onUnmounted } 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 let unsubscribe: (() => void) | null = null;\n\n watchEffect(() => {\n const fullscreenProvider = fullscreenProviderRef.value;\n\n // Clean up previous subscription if it exists\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = null;\n }\n\n if (fullscreenProvider) {\n // Subscribe to state changes\n unsubscribe = fullscreenProvider.onStateChange((newState) => {\n state.value = newState;\n });\n }\n });\n\n // Clean up on unmount\n onUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n });\n\n return {\n provides: fullscreenProviderRef,\n state,\n };\n};\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, CSSProperties } from 'vue';\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\nconst { provides: fullscreenCapabilityRef } = useFullscreenCapability();\nconst { plugin: fullscreenPluginRef } = useFullscreenPlugin();\nconst containerRef = ref<HTMLDivElement | null>(null);\n\nlet unsubscribe: (() => void) | null = null;\n\nonMounted(() => {\n const fullscreenCapability = fullscreenCapabilityRef.value;\n\n if (fullscreenCapability) {\n unsubscribe = fullscreenCapability.onRequest(async (action) => {\n const el = containerRef.value;\n if (action === 'enter') {\n if (el && !document.fullscreenElement) {\n await el.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\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 onUnmounted(() => {\n document.removeEventListener('fullscreenchange', handler);\n });\n }\n});\n\nonUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\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","provides","fullscreenCapabilityRef","plugin","fullscreenPluginRef","containerRef","ref","unsubscribe","onMounted","fullscreenCapability","value","onRequest","async","action","el","document","fullscreenElement","requestFullscreen","exitFullscreen","handler","setFullscreenState","addEventListener","onUnmounted","removeEventListener","_createElementBlock","createElementBlock","style","_renderSlot","_ctx","$slots","FullscreenPluginPackage","createPluginPackage","BaseFullscreenPackage","addWrapper","FullscreenProvider","build","fullscreenProviderRef","state","initialState","watchEffect","fullscreenProvider","onStateChange","newState"],"mappings":"4MAIaA,EAAsB,IAAMC,YAA4BC,EAAAA,iBAAiBC,IACzEC,EAA0B,IAAMC,gBAAgCH,EAAAA,iBAAiBC,sDCD9F,MAAQG,SAAUC,GAA4BH,KACtCI,OAAQC,GAAwBT,IAClCU,EAAeC,MAA2B,MAEhD,IAAIC,EAAmC,YAEvCC,EAAAA,WAAU,KACR,MAAMC,EAAuBP,EAAwBQ,MAEjDD,IACYF,EAAAE,EAAqBE,WAAUC,MAAOC,IAClD,MAAMC,EAAKT,EAAaK,MACT,UAAXG,EACEC,IAAOC,SAASC,yBACZF,EAAGG,oBAGPF,SAASC,yBACLD,SAASG,gBACjB,KAMN,MAAMf,EAASC,EAAoBM,MACnC,GAAIP,EAAQ,CACV,MAAMgB,EAAU,KACdhB,EAAOiB,qBAAqBL,SAASC,kBAAiB,EAE/CD,SAAAM,iBAAiB,mBAAoBF,GAE9CG,EAAAA,aAAY,KACDP,SAAAQ,oBAAoB,mBAAoBJ,EAAO,GACzD,KAILG,EAAAA,aAAY,KACNf,GACUA,GAAA,0BAMdiB,EAAAC,mBASM,MAAA,SARA,eAAJnB,IAAID,EACHqB,MAAO,mDAMRC,aAAQC,EAAAC,OAAA,qBCjDCC,EAA0BC,EAAoBA,oBAAAC,EAAqBF,yBAC7EG,WAAWC,GACXC,6FFJ0B,KAC3B,MAAQlC,SAAUmC,GAA0BrC,IACtCsC,EAAQ/B,MAAqBgC,gBAEnC,IAAI/B,EAAmC,KA0BhC,OAxBPgC,EAAAA,aAAY,KACV,MAAMC,EAAqBJ,EAAsB1B,MAG7CH,IACUA,IACEA,EAAA,MAGZiC,IAEYjC,EAAAiC,EAAmBC,eAAeC,IAC9CL,EAAM3B,MAAQgC,CAAA,IACf,IAKLpB,EAAAA,aAAY,KACNf,GACUA,GAAA,IAIT,CACLN,SAAUmC,EACVC,QACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './hooks';
|
|
2
|
+
export * from './components';
|
|
3
|
+
export * from '../lib/index.ts';
|
|
4
|
+
export declare const FullscreenPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').FullscreenPlugin, import('../lib/index.ts').FullscreenPluginConfig, import('../lib/index.ts').FullscreenState, import('../lib/index.ts').SetFullscreenAction>>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { createPluginPackage } from "@embedpdf/core";
|
|
2
|
+
import { FullscreenPlugin, initialState, FullscreenPluginPackage as FullscreenPluginPackage$1 } from "@embedpdf/plugin-fullscreen";
|
|
3
|
+
export * from "@embedpdf/plugin-fullscreen";
|
|
4
|
+
import { ref, watchEffect, onUnmounted, defineComponent, onMounted, createElementBlock, openBlock, renderSlot } from "vue";
|
|
5
|
+
import { useCapability, usePlugin } from "@embedpdf/core/vue";
|
|
6
|
+
const useFullscreenPlugin = () => usePlugin(FullscreenPlugin.id);
|
|
7
|
+
const useFullscreenCapability = () => useCapability(FullscreenPlugin.id);
|
|
8
|
+
const useFullscreen = () => {
|
|
9
|
+
const { provides: fullscreenProviderRef } = useFullscreenCapability();
|
|
10
|
+
const state = ref(initialState);
|
|
11
|
+
let unsubscribe = null;
|
|
12
|
+
watchEffect(() => {
|
|
13
|
+
const fullscreenProvider = fullscreenProviderRef.value;
|
|
14
|
+
if (unsubscribe) {
|
|
15
|
+
unsubscribe();
|
|
16
|
+
unsubscribe = null;
|
|
17
|
+
}
|
|
18
|
+
if (fullscreenProvider) {
|
|
19
|
+
unsubscribe = fullscreenProvider.onStateChange((newState) => {
|
|
20
|
+
state.value = newState;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
onUnmounted(() => {
|
|
25
|
+
if (unsubscribe) {
|
|
26
|
+
unsubscribe();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
provides: fullscreenProviderRef,
|
|
31
|
+
state
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
35
|
+
__name: "fullscreen",
|
|
36
|
+
setup(__props) {
|
|
37
|
+
const { provides: fullscreenCapabilityRef } = useFullscreenCapability();
|
|
38
|
+
const { plugin: fullscreenPluginRef } = useFullscreenPlugin();
|
|
39
|
+
const containerRef = ref(null);
|
|
40
|
+
let unsubscribe = null;
|
|
41
|
+
onMounted(() => {
|
|
42
|
+
const fullscreenCapability = fullscreenCapabilityRef.value;
|
|
43
|
+
if (fullscreenCapability) {
|
|
44
|
+
unsubscribe = fullscreenCapability.onRequest(async (action) => {
|
|
45
|
+
const el = containerRef.value;
|
|
46
|
+
if (action === "enter") {
|
|
47
|
+
if (el && !document.fullscreenElement) {
|
|
48
|
+
await el.requestFullscreen();
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
if (document.fullscreenElement) {
|
|
52
|
+
await document.exitFullscreen();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const plugin = fullscreenPluginRef.value;
|
|
58
|
+
if (plugin) {
|
|
59
|
+
const handler = () => {
|
|
60
|
+
plugin.setFullscreenState(!!document.fullscreenElement);
|
|
61
|
+
};
|
|
62
|
+
document.addEventListener("fullscreenchange", handler);
|
|
63
|
+
onUnmounted(() => {
|
|
64
|
+
document.removeEventListener("fullscreenchange", handler);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
onUnmounted(() => {
|
|
69
|
+
if (unsubscribe) {
|
|
70
|
+
unsubscribe();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return (_ctx, _cache) => {
|
|
74
|
+
return openBlock(), createElementBlock("div", {
|
|
75
|
+
ref_key: "containerRef",
|
|
76
|
+
ref: containerRef,
|
|
77
|
+
style: {
|
|
78
|
+
position: "relative",
|
|
79
|
+
width: "100%",
|
|
80
|
+
height: "100%"
|
|
81
|
+
}
|
|
82
|
+
}, [
|
|
83
|
+
renderSlot(_ctx.$slots, "default")
|
|
84
|
+
], 512);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const FullscreenPluginPackage = createPluginPackage(FullscreenPluginPackage$1).addWrapper(_sfc_main).build();
|
|
89
|
+
export {
|
|
90
|
+
FullscreenPluginPackage,
|
|
91
|
+
_sfc_main as FullscreenProvider,
|
|
92
|
+
useFullscreen,
|
|
93
|
+
useFullscreenCapability,
|
|
94
|
+
useFullscreenPlugin
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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, onUnmounted } 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 let unsubscribe: (() => void) | null = null;\n\n watchEffect(() => {\n const fullscreenProvider = fullscreenProviderRef.value;\n\n // Clean up previous subscription if it exists\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = null;\n }\n\n if (fullscreenProvider) {\n // Subscribe to state changes\n unsubscribe = fullscreenProvider.onStateChange((newState) => {\n state.value = newState;\n });\n }\n });\n\n // Clean up on unmount\n onUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n });\n\n return {\n provides: fullscreenProviderRef,\n state,\n };\n};\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, CSSProperties } from 'vue';\nimport { useFullscreenPlugin, useFullscreenCapability } from '../hooks';\n\nconst { provides: fullscreenCapabilityRef } = useFullscreenCapability();\nconst { plugin: fullscreenPluginRef } = useFullscreenPlugin();\nconst containerRef = ref<HTMLDivElement | null>(null);\n\nlet unsubscribe: (() => void) | null = null;\n\nonMounted(() => {\n const fullscreenCapability = fullscreenCapabilityRef.value;\n\n if (fullscreenCapability) {\n unsubscribe = fullscreenCapability.onRequest(async (action) => {\n const el = containerRef.value;\n if (action === 'enter') {\n if (el && !document.fullscreenElement) {\n await el.requestFullscreen();\n }\n } else {\n if (document.fullscreenElement) {\n await document.exitFullscreen();\n }\n }\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 onUnmounted(() => {\n document.removeEventListener('fullscreenchange', handler);\n });\n }\n});\n\nonUnmounted(() => {\n if (unsubscribe) {\n unsubscribe();\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,sBAAsB,IAAI,wBAAwB;AAC9D,QAAA,QAAQ,IAAqB,YAAY;AAE/C,MAAI,cAAmC;AAEvC,cAAY,MAAM;AAChB,UAAM,qBAAqB,sBAAsB;AAGjD,QAAI,aAAa;AACH,kBAAA;AACE,oBAAA;AAAA,IAAA;AAGhB,QAAI,oBAAoB;AAER,oBAAA,mBAAmB,cAAc,CAAC,aAAa;AAC3D,cAAM,QAAQ;AAAA,MAAA,CACf;AAAA,IAAA;AAAA,EACH,CACD;AAGD,cAAY,MAAM;AAChB,QAAI,aAAa;AACH,kBAAA;AAAA,IAAA;AAAA,EACd,CACD;AAEM,SAAA;AAAA,IACL,UAAU;AAAA,IACV;AAAA,EACF;AACF;;;;ACrCA,UAAM,EAAE,UAAU,wBAAwB,IAAI,wBAAwB;AACtE,UAAM,EAAE,QAAQ,oBAAoB,IAAI,oBAAoB;AACtD,UAAA,eAAe,IAA2B,IAAI;AAEpD,QAAI,cAAmC;AAEvC,cAAU,MAAM;AACd,YAAM,uBAAuB,wBAAwB;AAErD,UAAI,sBAAsB;AACV,sBAAA,qBAAqB,UAAU,OAAO,WAAW;AAC7D,gBAAM,KAAK,aAAa;AACxB,cAAI,WAAW,SAAS;AAClB,gBAAA,MAAM,CAAC,SAAS,mBAAmB;AACrC,oBAAM,GAAG,kBAAkB;AAAA,YAAA;AAAA,UAC7B,OACK;AACL,gBAAI,SAAS,mBAAmB;AAC9B,oBAAM,SAAS,eAAe;AAAA,YAAA;AAAA,UAChC;AAAA,QACF,CACD;AAAA,MAAA;AAIH,YAAM,SAAS,oBAAoB;AACnC,UAAI,QAAQ;AACV,cAAM,UAAU,MAAM;AACpB,iBAAO,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;AAAA,QACxD;AACS,iBAAA,iBAAiB,oBAAoB,OAAO;AAErD,oBAAY,MAAM;AACP,mBAAA,oBAAoB,oBAAoB,OAAO;AAAA,QAAA,CACzD;AAAA,MAAA;AAAA,IACH,CACD;AAED,gBAAY,MAAM;AAChB,UAAI,aAAa;AACH,oBAAA;AAAA,MAAA;AAAA,IACd,CACD;;0BAICA,mBASM,OAAA;AAAA,iBARA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAO;AAAA;;;;MAIP;QAEDC,WAAQ,KAAA,QAAA,SAAA;AAAA;;;;ACjDL,MAAM,0BAA0B,oBAAoBC,yBAAqB,EAC7E,WAAWC,SAAkB,EAC7B,MAAM;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-fullscreen",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -20,22 +20,28 @@
|
|
|
20
20
|
"types": "./dist/react/index.d.ts",
|
|
21
21
|
"import": "./dist/react/index.js",
|
|
22
22
|
"require": "./dist/react/index.cjs"
|
|
23
|
+
},
|
|
24
|
+
"./vue": {
|
|
25
|
+
"types": "./dist/vue/index.d.ts",
|
|
26
|
+
"import": "./dist/vue/index.js",
|
|
27
|
+
"require": "./dist/vue/index.cjs"
|
|
23
28
|
}
|
|
24
29
|
},
|
|
25
30
|
"dependencies": {
|
|
26
|
-
"@embedpdf/models": "1.0.
|
|
31
|
+
"@embedpdf/models": "1.0.22"
|
|
27
32
|
},
|
|
28
33
|
"devDependencies": {
|
|
29
34
|
"@types/react": "^18.2.0",
|
|
30
35
|
"typescript": "^5.0.0",
|
|
31
|
-
"@embedpdf/
|
|
32
|
-
"@embedpdf/
|
|
36
|
+
"@embedpdf/build": "1.0.0",
|
|
37
|
+
"@embedpdf/core": "1.0.22"
|
|
33
38
|
},
|
|
34
39
|
"peerDependencies": {
|
|
35
40
|
"react": ">=16.8.0",
|
|
36
41
|
"react-dom": ">=16.8.0",
|
|
37
42
|
"preact": "^10.26.4",
|
|
38
|
-
"
|
|
43
|
+
"vue": ">=3.2.0",
|
|
44
|
+
"@embedpdf/core": "1.0.22"
|
|
39
45
|
},
|
|
40
46
|
"files": [
|
|
41
47
|
"dist",
|
|
@@ -57,7 +63,8 @@
|
|
|
57
63
|
"build:base": "vite build --mode base",
|
|
58
64
|
"build:react": "vite build --mode react",
|
|
59
65
|
"build:preact": "vite build --mode preact",
|
|
60
|
-
"build": "
|
|
66
|
+
"build:vue": "vite build --mode vue",
|
|
67
|
+
"build": "pnpm run clean && concurrently -c auto -n base,react,preact,vue \"vite build --mode base\" \"vite build --mode react\" \"vite build --mode preact\" \"vite build --mode vue\"",
|
|
61
68
|
"clean": "rimraf dist",
|
|
62
69
|
"lint": "eslint src --color",
|
|
63
70
|
"lint:fix": "eslint src --color --fix"
|