@embedpdf/plugin-scroll 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/index.cjs +2 -661
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +1 -204
  4. package/dist/index.js +33 -67
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/actions.d.ts +27 -0
  7. package/dist/lib/index.d.ts +9 -0
  8. package/dist/lib/manifest.d.ts +4 -0
  9. package/dist/lib/reducer.d.ts +6 -0
  10. package/dist/lib/scroll-plugin.d.ts +45 -0
  11. package/dist/lib/selectors.d.ts +2 -0
  12. package/dist/lib/strategies/base-strategy.d.ts +35 -0
  13. package/dist/lib/strategies/horizontal-strategy.d.ts +14 -0
  14. package/dist/lib/strategies/vertical-strategy.d.ts +14 -0
  15. package/dist/lib/types/virtual-item.d.ts +21 -0
  16. package/dist/lib/types.d.ts +112 -0
  17. package/dist/preact/adapter.d.ts +4 -0
  18. package/dist/preact/core.d.ts +1 -0
  19. package/dist/preact/index.cjs +2 -181
  20. package/dist/preact/index.cjs.map +1 -1
  21. package/dist/preact/index.d.ts +1 -54
  22. package/dist/preact/index.js +13 -18
  23. package/dist/preact/index.js.map +1 -1
  24. package/dist/react/adapter.d.ts +2 -0
  25. package/dist/react/core.d.ts +1 -0
  26. package/dist/react/index.cjs +2 -181
  27. package/dist/react/index.cjs.map +1 -1
  28. package/dist/react/index.d.ts +1 -53
  29. package/dist/react/index.js +12 -18
  30. package/dist/react/index.js.map +1 -1
  31. package/dist/shared-preact/components/index.d.ts +1 -0
  32. package/dist/shared-preact/components/scroller.d.ts +14 -0
  33. package/dist/shared-preact/hooks/index.d.ts +1 -0
  34. package/dist/shared-preact/hooks/use-scroll.d.ts +32 -0
  35. package/dist/shared-preact/index.d.ts +2 -0
  36. package/dist/shared-react/components/index.d.ts +1 -0
  37. package/dist/shared-react/components/scroller.d.ts +14 -0
  38. package/dist/shared-react/hooks/index.d.ts +1 -0
  39. package/dist/shared-react/hooks/use-scroll.d.ts +32 -0
  40. package/dist/shared-react/index.d.ts +2 -0
  41. package/dist/vue/components/index.d.ts +1 -0
  42. package/dist/vue/components/scroller.vue.d.ts +28 -0
  43. package/dist/vue/hooks/index.d.ts +1 -0
  44. package/dist/vue/hooks/use-scroll.d.ts +11 -0
  45. package/dist/vue/index.cjs +2 -0
  46. package/dist/vue/index.cjs.map +1 -0
  47. package/dist/vue/index.d.ts +2 -0
  48. package/dist/vue/index.js +136 -0
  49. package/dist/vue/index.js.map +1 -0
  50. package/package.json +22 -13
  51. package/dist/index.d.cts +0 -204
  52. package/dist/preact/index.d.cts +0 -54
  53. package/dist/react/index.d.cts +0 -53
@@ -1,181 +1,2 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/preact/index.ts
21
- var preact_exports = {};
22
- __export(preact_exports, {
23
- Scroller: () => Scroller,
24
- useScroll: () => useScroll,
25
- useScrollCapability: () => useScrollCapability,
26
- useScrollPlugin: () => useScrollPlugin
27
- });
28
- module.exports = __toCommonJS(preact_exports);
29
-
30
- // src/preact/hooks/use-scroll.ts
31
- var import_preact = require("@embedpdf/core/preact");
32
- var import_plugin_scroll = require("@embedpdf/plugin-scroll");
33
- var import_hooks = require("preact/hooks");
34
- var useScrollPlugin = () => (0, import_preact.usePlugin)(import_plugin_scroll.ScrollPlugin.id);
35
- var useScrollCapability = () => (0, import_preact.useCapability)(import_plugin_scroll.ScrollPlugin.id);
36
- var useScroll = () => {
37
- const { provides: scroll } = useScrollCapability();
38
- const [currentPage, setCurrentPage] = (0, import_hooks.useState)(1);
39
- const [totalPages, setTotalPages] = (0, import_hooks.useState)(1);
40
- (0, import_hooks.useEffect)(() => {
41
- if (!scroll) return;
42
- return scroll.onPageChange(({ pageNumber, totalPages: totalPages2 }) => {
43
- setCurrentPage(pageNumber);
44
- setTotalPages(totalPages2);
45
- });
46
- }, [scroll]);
47
- return {
48
- ...scroll,
49
- currentPage,
50
- totalPages
51
- };
52
- };
53
-
54
- // src/preact/components/scroller.tsx
55
- var import_hooks2 = require("preact/hooks");
56
- var import_plugin_scroll2 = require("@embedpdf/plugin-scroll");
57
- var import_preact2 = require("@embedpdf/core/preact");
58
- var import_jsx_runtime = require("preact/jsx-runtime");
59
- function Scroller({ renderPage, overlayElements, ...props }) {
60
- const { provides: scrollProvides } = useScrollCapability();
61
- const { plugin: scrollPlugin } = useScrollPlugin();
62
- const { registry } = (0, import_preact2.useRegistry)();
63
- const [scrollerLayout, setScrollerLayout] = (0, import_hooks2.useState)(
64
- () => scrollProvides?.getScrollerLayout() ?? null
65
- );
66
- (0, import_hooks2.useEffect)(() => {
67
- if (!scrollProvides) return;
68
- return scrollProvides.onScrollerData(setScrollerLayout);
69
- }, [scrollProvides]);
70
- (0, import_hooks2.useEffect)(() => {
71
- if (!scrollPlugin) return;
72
- scrollPlugin.setLayoutReady();
73
- }, [scrollPlugin]);
74
- if (!scrollerLayout) return null;
75
- if (!registry) return null;
76
- const coreState = registry.getStore().getState();
77
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
78
- "div",
79
- {
80
- ...props,
81
- style: {
82
- width: `${scrollerLayout.totalWidth}px`,
83
- height: `${scrollerLayout.totalHeight}px`,
84
- position: "relative",
85
- boxSizing: "border-box",
86
- margin: "0 auto",
87
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal && {
88
- display: "flex",
89
- flexDirection: "row"
90
- }
91
- },
92
- children: [
93
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
94
- "div",
95
- {
96
- style: {
97
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
98
- width: scrollerLayout.startSpacing,
99
- height: "100%",
100
- flexShrink: 0
101
- } : {
102
- height: scrollerLayout.startSpacing,
103
- width: "100%"
104
- }
105
- }
106
- }
107
- ),
108
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
109
- "div",
110
- {
111
- style: {
112
- gap: scrollerLayout.pageGap,
113
- display: "flex",
114
- alignItems: "center",
115
- position: "relative",
116
- boxSizing: "border-box",
117
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
118
- flexDirection: "row",
119
- minHeight: "100%"
120
- } : {
121
- flexDirection: "column",
122
- minWidth: "fit-content"
123
- }
124
- },
125
- children: scrollerLayout.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
126
- "div",
127
- {
128
- style: {
129
- display: "flex",
130
- justifyContent: "center",
131
- gap: scrollerLayout.pageGap
132
- },
133
- children: item.pageLayouts.map((layout) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
- "div",
135
- {
136
- style: {
137
- width: `${layout.rotatedWidth}px`,
138
- height: `${layout.rotatedHeight}px`
139
- },
140
- children: renderPage({
141
- ...layout,
142
- rotation: coreState.core.rotation,
143
- scale: coreState.core.scale,
144
- document: coreState.core.document
145
- })
146
- },
147
- layout.pageNumber
148
- ))
149
- },
150
- item.pageNumbers[0]
151
- ))
152
- }
153
- ),
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
155
- "div",
156
- {
157
- style: {
158
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
159
- width: scrollerLayout.endSpacing,
160
- height: "100%",
161
- flexShrink: 0
162
- } : {
163
- height: scrollerLayout.endSpacing,
164
- width: "100%"
165
- }
166
- }
167
- }
168
- ),
169
- overlayElements
170
- ]
171
- }
172
- );
173
- }
174
- // Annotate the CommonJS export names for ESM import in node:
175
- 0 && (module.exports = {
176
- Scroller,
177
- useScroll,
178
- useScrollCapability,
179
- useScrollPlugin
180
- });
181
- //# sourceMappingURL=index.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/preact"),t=require("@embedpdf/plugin-scroll");require("preact");const r=require("preact/hooks"),i=require("preact/jsx-runtime"),o=()=>e.usePlugin(t.ScrollPlugin.id),l=()=>e.useCapability(t.ScrollPlugin.id);exports.Scroller=function({renderPage:a,overlayElements:n,...s}){const{provides:c}=l(),{plugin:g}=o(),{registry:u}=e.useRegistry(),[d,p]=r.useState((()=>(null==c?void 0:c.getScrollerLayout())??null));if(r.useEffect((()=>{if(c)return c.onScrollerData(p)}),[c]),r.useEffect((()=>{g&&g.setLayoutReady()}),[g]),!d)return null;if(!u)return null;const h=u.getStore().getState();return i.jsxs("div",{...s,style:{width:`${d.totalWidth}px`,height:`${d.totalHeight}px`,position:"relative",boxSizing:"border-box",margin:"0 auto",...d.strategy===t.ScrollStrategy.Horizontal&&{display:"flex",flexDirection:"row"}},children:[i.jsx("div",{style:{...d.strategy===t.ScrollStrategy.Horizontal?{width:d.startSpacing,height:"100%",flexShrink:0}:{height:d.startSpacing,width:"100%"}}}),i.jsx("div",{style:{gap:d.pageGap,display:"flex",alignItems:"center",position:"relative",boxSizing:"border-box",...d.strategy===t.ScrollStrategy.Horizontal?{flexDirection:"row",minHeight:"100%"}:{flexDirection:"column",minWidth:"fit-content"}},children:d.items.map((e=>i.jsx("div",{style:{display:"flex",justifyContent:"center",gap:d.pageGap},children:e.pageLayouts.map((e=>i.jsx("div",{style:{width:`${e.rotatedWidth}px`,height:`${e.rotatedHeight}px`},children:a({...e,rotation:h.core.rotation,scale:h.core.scale,document:h.core.document})},e.pageNumber)))},e.pageNumbers[0])))}),i.jsx("div",{style:{...d.strategy===t.ScrollStrategy.Horizontal?{width:d.endSpacing,height:"100%",flexShrink:0}:{height:d.endSpacing,width:"100%"}}}),n]})},exports.useScroll=()=>{const{provides:e}=l(),[t,i]=r.useState(1),[o,a]=r.useState(1);return r.useEffect((()=>{if(e)return e.onPageChange((({pageNumber:e,totalPages:t})=>{i(e),a(t)}))}),[e]),{...e,currentPage:t,totalPages:o}},exports.useScrollCapability=l,exports.useScrollPlugin=o;
2
+ //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/preact/index.ts","../../src/preact/hooks/use-scroll.ts","../../src/preact/components/scroller.tsx"],"sourcesContent":["export * from './hooks';\nexport * from './components';\n","import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { ScrollPlugin } from '@embedpdf/plugin-scroll';\nimport { useEffect, useState } from 'preact/hooks';\n\nexport const useScrollPlugin = () => usePlugin<ScrollPlugin>(ScrollPlugin.id);\nexport const useScrollCapability = () => useCapability<ScrollPlugin>(ScrollPlugin.id);\n\nexport const useScroll = () => {\n const { provides: scroll } = useScrollCapability();\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n useEffect(() => {\n if (!scroll) return;\n return scroll.onPageChange(({ pageNumber, totalPages }) => {\n setCurrentPage(pageNumber);\n setTotalPages(totalPages);\n });\n }, [scroll]);\n\n return {\n ...scroll,\n currentPage,\n totalPages,\n };\n};\n","/** @jsxImportSource preact */\nimport { JSX } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport { ScrollStrategy, ScrollerLayout, PageLayout } from '@embedpdf/plugin-scroll';\nimport { useRegistry } from '@embedpdf/core/preact';\nimport { PdfDocumentObject, Rotation } from '@embedpdf/models';\n\nimport { useScrollCapability, useScrollPlugin } from '../hooks';\n\ninterface RenderPageProps extends PageLayout {\n rotation: Rotation;\n scale: number;\n document: PdfDocumentObject | null;\n}\n\ntype ScrollerProps = JSX.HTMLAttributes<HTMLDivElement> & {\n renderPage: (props: RenderPageProps) => JSX.Element;\n overlayElements?: JSX.Element[];\n};\n\nexport function Scroller({ renderPage, overlayElements, ...props }: ScrollerProps) {\n const { provides: scrollProvides } = useScrollCapability();\n const { plugin: scrollPlugin } = useScrollPlugin();\n const { registry } = useRegistry();\n const [scrollerLayout, setScrollerLayout] = useState<ScrollerLayout | null>(\n () => scrollProvides?.getScrollerLayout() ?? null,\n );\n\n useEffect(() => {\n if (!scrollProvides) return;\n\n return scrollProvides.onScrollerData(setScrollerLayout);\n }, [scrollProvides]);\n\n useEffect(() => {\n if (!scrollPlugin) return;\n\n scrollPlugin.setLayoutReady();\n }, [scrollPlugin]);\n\n if (!scrollerLayout) return null;\n if (!registry) return null;\n\n const coreState = registry.getStore().getState();\n\n return (\n <div\n {...props}\n style={{\n width: `${scrollerLayout.totalWidth}px`,\n height: `${scrollerLayout.totalHeight}px`,\n position: 'relative',\n boxSizing: 'border-box',\n margin: '0 auto',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal && {\n display: 'flex',\n flexDirection: 'row',\n }),\n }}\n >\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.startSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.startSpacing,\n width: '100%',\n }),\n }}\n />\n <div\n style={{\n gap: scrollerLayout.pageGap,\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n flexDirection: 'row',\n minHeight: '100%',\n }\n : {\n flexDirection: 'column',\n minWidth: 'fit-content',\n }),\n }}\n >\n {scrollerLayout.items.map((item) => (\n <div\n key={item.pageNumbers[0]}\n style={{\n display: 'flex',\n justifyContent: 'center',\n gap: scrollerLayout.pageGap,\n }}\n >\n {item.pageLayouts.map((layout) => (\n <div\n key={layout.pageNumber}\n style={{\n width: `${layout.rotatedWidth}px`,\n height: `${layout.rotatedHeight}px`,\n }}\n >\n {renderPage({\n ...layout,\n rotation: coreState.core.rotation,\n scale: coreState.core.scale,\n document: coreState.core.document,\n })}\n </div>\n ))}\n </div>\n ))}\n </div>\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.endSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.endSpacing,\n width: '100%',\n }),\n }}\n />\n {overlayElements}\n </div>\n );\n}\n"],"mappings":"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","names":["totalPages","import_hooks","import_plugin_scroll","import_preact"]}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-scroll.ts","../../src/shared/components/scroller.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { ScrollPlugin } from '@embedpdf/plugin-scroll';\nimport { useEffect, useState } from '@framework';\n\nexport const useScrollPlugin = () => usePlugin<ScrollPlugin>(ScrollPlugin.id);\nexport const useScrollCapability = () => useCapability<ScrollPlugin>(ScrollPlugin.id);\n\nexport const useScroll = () => {\n const { provides: scroll } = useScrollCapability();\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n useEffect(() => {\n if (!scroll) return;\n return scroll.onPageChange(({ pageNumber, totalPages }) => {\n setCurrentPage(pageNumber);\n setTotalPages(totalPages);\n });\n }, [scroll]);\n\n return {\n ...scroll,\n currentPage,\n totalPages,\n };\n};\n","import { ReactNode, useEffect, useState, HTMLAttributes } from '@framework';\nimport { ScrollStrategy, ScrollerLayout, PageLayout } from '@embedpdf/plugin-scroll';\nimport { useRegistry } from '@embedpdf/core/@framework';\nimport { PdfDocumentObject, Rotation } from '@embedpdf/models';\n\nimport { useScrollCapability, useScrollPlugin } from '../hooks';\n\ninterface RenderPageProps extends PageLayout {\n rotation: Rotation;\n scale: number;\n document: PdfDocumentObject | null;\n}\n\ntype ScrollerProps = HTMLAttributes<HTMLDivElement> & {\n renderPage: (props: RenderPageProps) => ReactNode;\n overlayElements?: ReactNode[];\n};\n\nexport function Scroller({ renderPage, overlayElements, ...props }: ScrollerProps) {\n const { provides: scrollProvides } = useScrollCapability();\n const { plugin: scrollPlugin } = useScrollPlugin();\n const { registry } = useRegistry();\n const [scrollerLayout, setScrollerLayout] = useState<ScrollerLayout | null>(\n () => scrollProvides?.getScrollerLayout() ?? null,\n );\n\n useEffect(() => {\n if (!scrollProvides) return;\n\n return scrollProvides.onScrollerData(setScrollerLayout);\n }, [scrollProvides]);\n\n useEffect(() => {\n if (!scrollPlugin) return;\n\n scrollPlugin.setLayoutReady();\n }, [scrollPlugin]);\n\n if (!scrollerLayout) return null;\n if (!registry) return null;\n\n const coreState = registry.getStore().getState();\n\n return (\n <div\n {...props}\n style={{\n width: `${scrollerLayout.totalWidth}px`,\n height: `${scrollerLayout.totalHeight}px`,\n position: 'relative',\n boxSizing: 'border-box',\n margin: '0 auto',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal && {\n display: 'flex',\n flexDirection: 'row',\n }),\n }}\n >\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.startSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.startSpacing,\n width: '100%',\n }),\n }}\n />\n <div\n style={{\n gap: scrollerLayout.pageGap,\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n flexDirection: 'row',\n minHeight: '100%',\n }\n : {\n flexDirection: 'column',\n minWidth: 'fit-content',\n }),\n }}\n >\n {scrollerLayout.items.map((item) => (\n <div\n key={item.pageNumbers[0]}\n style={{\n display: 'flex',\n justifyContent: 'center',\n gap: scrollerLayout.pageGap,\n }}\n >\n {item.pageLayouts.map((layout) => (\n <div\n key={layout.pageNumber}\n style={{\n width: `${layout.rotatedWidth}px`,\n height: `${layout.rotatedHeight}px`,\n }}\n >\n {renderPage({\n ...layout,\n rotation: coreState.core.rotation,\n scale: coreState.core.scale,\n document: coreState.core.document,\n })}\n </div>\n ))}\n </div>\n ))}\n </div>\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.endSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.endSpacing,\n width: '100%',\n }),\n }}\n />\n {overlayElements}\n </div>\n );\n}\n"],"names":["useScrollPlugin","usePlugin","ScrollPlugin","id","useScrollCapability","useCapability","renderPage","overlayElements","props","provides","scrollProvides","plugin","scrollPlugin","registry","useRegistry","scrollerLayout","setScrollerLayout","useState","getScrollerLayout","useEffect","onScrollerData","setLayoutReady","coreState","getStore","getState","jsxRuntime","jsxs","style","width","totalWidth","height","totalHeight","position","boxSizing","margin","strategy","ScrollStrategy","Horizontal","display","flexDirection","children","jsx","startSpacing","flexShrink","gap","pageGap","alignItems","minHeight","minWidth","items","map","item","justifyContent","pageLayouts","layout","rotatedWidth","rotatedHeight","rotation","core","scale","document","pageNumber","pageNumbers","endSpacing","scroll","currentPage","setCurrentPage","totalPages","setTotalPages","onPageChange"],"mappings":"gPAIaA,EAAkB,IAAMC,YAAwBC,EAAAA,aAAaC,IAC7DC,EAAsB,IAAMC,gBAA4BH,EAAAA,aAAaC,qBCa3E,UAAkBG,WAAEA,EAAAC,gBAAYA,KAAoBC,IACzD,MAAQC,SAAUC,GAAmBN,KAC7BO,OAAQC,GAAiBZ,KAC3Ba,SAAEA,GAAaC,iBACdC,EAAgBC,GAAqBC,EAAAA,UAC1C,WAAMP,WAAgBQ,sBAAuB,OAe3C,GAZJC,EAAAA,WAAU,KACR,GAAKT,EAEE,OAAAA,EAAeU,eAAeJ,EAAiB,GACrD,CAACN,IAEJS,EAAAA,WAAU,KACHP,GAELA,EAAaS,gBAAe,GAC3B,CAACT,KAECG,EAAuB,OAAA,KACxB,IAACF,EAAiB,OAAA,KAEtB,MAAMS,EAAYT,EAASU,WAAWC,WAGpC,OAAAC,EAAAC,KAAC,MAAA,IACKlB,EACJmB,MAAO,CACLC,MAAO,GAAGb,EAAec,eACzBC,OAAQ,GAAGf,EAAegB,gBAC1BC,SAAU,WACVC,UAAW,aACXC,OAAQ,YACJnB,EAAeoB,WAAaC,EAAAA,eAAeC,YAAc,CAC3DC,QAAS,OACTC,cAAe,QAInBC,SAAA,CAAAf,EAAAgB,IAAC,MAAA,CACCd,MAAO,IACDZ,EAAeoB,WAAaC,EAAAA,eAAeC,WAC3C,CACET,MAAOb,EAAe2B,aACtBZ,OAAQ,OACRa,WAAY,GAEd,CACEb,OAAQf,EAAe2B,aACvBd,MAAO,WAIjBH,EAAAgB,IAAC,MAAA,CACCd,MAAO,CACLiB,IAAK7B,EAAe8B,QACpBP,QAAS,OACTQ,WAAY,SACZd,SAAU,WACVC,UAAW,gBACPlB,EAAeoB,WAAaC,EAAAA,eAAeC,WAC3C,CACEE,cAAe,MACfQ,UAAW,QAEb,CACER,cAAe,SACfS,SAAU,gBAIjBR,SAAezB,EAAAkC,MAAMC,KAAKC,GACzB1B,EAAAgB,IAAC,MAAA,CAECd,MAAO,CACLW,QAAS,OACTc,eAAgB,SAChBR,IAAK7B,EAAe8B,SAGrBL,SAAKW,EAAAE,YAAYH,KAAKI,GACrB7B,EAAAgB,IAAC,MAAA,CAECd,MAAO,CACLC,MAAO,GAAG0B,EAAOC,iBACjBzB,OAAQ,GAAGwB,EAAOE,mBAGnBhB,SAAWlC,EAAA,IACPgD,EACHG,SAAUnC,EAAUoC,KAAKD,SACzBE,MAAOrC,EAAUoC,KAAKC,MACtBC,SAAUtC,EAAUoC,KAAKE,YAVtBN,EAAOO,eATXV,EAAKW,YAAY,QA0B5BrC,EAAAgB,IAAC,MAAA,CACCd,MAAO,IACDZ,EAAeoB,WAAaC,EAAAA,eAAeC,WAC3C,CACET,MAAOb,EAAegD,WACtBjC,OAAQ,OACRa,WAAY,GAEd,CACEb,OAAQf,EAAegD,WACvBnC,MAAO,WAIhBrB,IAGP,oBDhIyB,KACvB,MAAQE,SAAUuD,GAAW5D,KACtB6D,EAAaC,GAAkBjD,EAAAA,SAAS,IACxCkD,EAAYC,GAAiBnD,EAAAA,SAAS,GAUtC,OARPE,EAAAA,WAAU,KACR,GAAK6C,EACL,OAAOA,EAAOK,cAAa,EAAGR,aAAYM,WAAAA,MACxCD,EAAeL,GACfO,EAAcD,EAAU,GACzB,GACA,CAACH,IAEG,IACFA,EACHC,cACAE,aACF"}
@@ -1,54 +1 @@
1
- import * as _embedpdf_models from '@embedpdf/models';
2
- import { Rotation, PdfDocumentObject } from '@embedpdf/models';
3
- import * as _embedpdf_plugin_viewport from '@embedpdf/plugin-viewport';
4
- import * as _embedpdf_core from '@embedpdf/core';
5
- import * as _embedpdf_plugin_scroll from '@embedpdf/plugin-scroll';
6
- import { ScrollPlugin, PageLayout } from '@embedpdf/plugin-scroll';
7
- import { JSX } from 'preact';
8
-
9
- declare const useScrollPlugin: () => {
10
- plugin: ScrollPlugin | null;
11
- isLoading: boolean;
12
- ready: Promise<void>;
13
- };
14
- declare const useScrollCapability: () => {
15
- provides: Readonly<_embedpdf_plugin_scroll.ScrollCapability> | null;
16
- isLoading: boolean;
17
- ready: Promise<void>;
18
- };
19
- declare const useScroll: () => {
20
- currentPage: number;
21
- totalPages: number;
22
- onScrollerData?: _embedpdf_core.EventHook<_embedpdf_plugin_scroll.ScrollerLayout> | undefined;
23
- onStateChange?: _embedpdf_core.EventHook<_embedpdf_plugin_scroll.ScrollState> | undefined;
24
- onScroll?: _embedpdf_core.EventHook<_embedpdf_plugin_scroll.ScrollMetrics> | undefined;
25
- getCurrentPage?: (() => number) | undefined;
26
- getTotalPages?: (() => number) | undefined;
27
- onPageChange?: _embedpdf_core.EventHook<_embedpdf_plugin_scroll.PageChangePayload> | undefined;
28
- onLayoutChange?: _embedpdf_core.EventHook<_embedpdf_plugin_scroll.LayoutChangePayload> | undefined;
29
- onLayoutReady?: _embedpdf_core.EventHook<boolean> | undefined;
30
- scrollToPage?: ((options: _embedpdf_plugin_scroll.ScrollToPageOptions) => void) | undefined;
31
- scrollToNextPage?: ((behavior?: ScrollBehavior) => void) | undefined;
32
- scrollToPreviousPage?: ((behavior?: ScrollBehavior) => void) | undefined;
33
- getMetrics?: ((viewport?: _embedpdf_plugin_viewport.ViewportMetrics) => _embedpdf_plugin_scroll.ScrollMetrics) | undefined;
34
- getLayout?: (() => _embedpdf_plugin_scroll.LayoutChangePayload) | undefined;
35
- getScrollerLayout?: (() => _embedpdf_plugin_scroll.ScrollerLayout) | undefined;
36
- getRectPositionForPage?: ((page: number, rect: _embedpdf_models.Rect, scale?: number, rotation?: _embedpdf_models.Rotation) => _embedpdf_models.Rect | null) | undefined;
37
- setScrollStrategy?: ((strategy: _embedpdf_plugin_scroll.ScrollStrategy) => void) | undefined;
38
- getPageGap?: (() => number) | undefined;
39
- };
40
-
41
- /** @jsxImportSource preact */
42
-
43
- interface RenderPageProps extends PageLayout {
44
- rotation: Rotation;
45
- scale: number;
46
- document: PdfDocumentObject | null;
47
- }
48
- type ScrollerProps = JSX.HTMLAttributes<HTMLDivElement> & {
49
- renderPage: (props: RenderPageProps) => JSX.Element;
50
- overlayElements?: JSX.Element[];
51
- };
52
- declare function Scroller({ renderPage, overlayElements, ...props }: ScrollerProps): JSX.Element | null;
53
-
54
- export { Scroller, useScroll, useScrollCapability, useScrollPlugin };
1
+ export * from '../shared-preact';
@@ -1,10 +1,11 @@
1
- // src/preact/hooks/use-scroll.ts
2
- import { useCapability, usePlugin } from "@embedpdf/core/preact";
3
- import { ScrollPlugin } from "@embedpdf/plugin-scroll";
4
- import { useEffect, useState } from "preact/hooks";
5
- var useScrollPlugin = () => usePlugin(ScrollPlugin.id);
6
- var useScrollCapability = () => useCapability(ScrollPlugin.id);
7
- var useScroll = () => {
1
+ import { usePlugin, useCapability, useRegistry } from "@embedpdf/core/preact";
2
+ import { ScrollPlugin, ScrollStrategy } from "@embedpdf/plugin-scroll";
3
+ import "preact";
4
+ import { useState, useEffect } from "preact/hooks";
5
+ import { jsxs, jsx } from "preact/jsx-runtime";
6
+ const useScrollPlugin = () => usePlugin(ScrollPlugin.id);
7
+ const useScrollCapability = () => useCapability(ScrollPlugin.id);
8
+ const useScroll = () => {
8
9
  const { provides: scroll } = useScrollCapability();
9
10
  const [currentPage, setCurrentPage] = useState(1);
10
11
  const [totalPages, setTotalPages] = useState(1);
@@ -21,24 +22,18 @@ var useScroll = () => {
21
22
  totalPages
22
23
  };
23
24
  };
24
-
25
- // src/preact/components/scroller.tsx
26
- import { useEffect as useEffect2, useState as useState2 } from "preact/hooks";
27
- import { ScrollStrategy } from "@embedpdf/plugin-scroll";
28
- import { useRegistry } from "@embedpdf/core/preact";
29
- import { jsx, jsxs } from "preact/jsx-runtime";
30
25
  function Scroller({ renderPage, overlayElements, ...props }) {
31
26
  const { provides: scrollProvides } = useScrollCapability();
32
27
  const { plugin: scrollPlugin } = useScrollPlugin();
33
28
  const { registry } = useRegistry();
34
- const [scrollerLayout, setScrollerLayout] = useState2(
35
- () => scrollProvides?.getScrollerLayout() ?? null
29
+ const [scrollerLayout, setScrollerLayout] = useState(
30
+ () => (scrollProvides == null ? void 0 : scrollProvides.getScrollerLayout()) ?? null
36
31
  );
37
- useEffect2(() => {
32
+ useEffect(() => {
38
33
  if (!scrollProvides) return;
39
34
  return scrollProvides.onScrollerData(setScrollerLayout);
40
35
  }, [scrollProvides]);
41
- useEffect2(() => {
36
+ useEffect(() => {
42
37
  if (!scrollPlugin) return;
43
38
  scrollPlugin.setLayoutReady();
44
39
  }, [scrollPlugin]);
@@ -148,4 +143,4 @@ export {
148
143
  useScrollCapability,
149
144
  useScrollPlugin
150
145
  };
151
- //# sourceMappingURL=index.js.map
146
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/preact/hooks/use-scroll.ts","../../src/preact/components/scroller.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/preact';\nimport { ScrollPlugin } from '@embedpdf/plugin-scroll';\nimport { useEffect, useState } from 'preact/hooks';\n\nexport const useScrollPlugin = () => usePlugin<ScrollPlugin>(ScrollPlugin.id);\nexport const useScrollCapability = () => useCapability<ScrollPlugin>(ScrollPlugin.id);\n\nexport const useScroll = () => {\n const { provides: scroll } = useScrollCapability();\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n useEffect(() => {\n if (!scroll) return;\n return scroll.onPageChange(({ pageNumber, totalPages }) => {\n setCurrentPage(pageNumber);\n setTotalPages(totalPages);\n });\n }, [scroll]);\n\n return {\n ...scroll,\n currentPage,\n totalPages,\n };\n};\n","/** @jsxImportSource preact */\nimport { JSX } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport { ScrollStrategy, ScrollerLayout, PageLayout } from '@embedpdf/plugin-scroll';\nimport { useRegistry } from '@embedpdf/core/preact';\nimport { PdfDocumentObject, Rotation } from '@embedpdf/models';\n\nimport { useScrollCapability, useScrollPlugin } from '../hooks';\n\ninterface RenderPageProps extends PageLayout {\n rotation: Rotation;\n scale: number;\n document: PdfDocumentObject | null;\n}\n\ntype ScrollerProps = JSX.HTMLAttributes<HTMLDivElement> & {\n renderPage: (props: RenderPageProps) => JSX.Element;\n overlayElements?: JSX.Element[];\n};\n\nexport function Scroller({ renderPage, overlayElements, ...props }: ScrollerProps) {\n const { provides: scrollProvides } = useScrollCapability();\n const { plugin: scrollPlugin } = useScrollPlugin();\n const { registry } = useRegistry();\n const [scrollerLayout, setScrollerLayout] = useState<ScrollerLayout | null>(\n () => scrollProvides?.getScrollerLayout() ?? null,\n );\n\n useEffect(() => {\n if (!scrollProvides) return;\n\n return scrollProvides.onScrollerData(setScrollerLayout);\n }, [scrollProvides]);\n\n useEffect(() => {\n if (!scrollPlugin) return;\n\n scrollPlugin.setLayoutReady();\n }, [scrollPlugin]);\n\n if (!scrollerLayout) return null;\n if (!registry) return null;\n\n const coreState = registry.getStore().getState();\n\n return (\n <div\n {...props}\n style={{\n width: `${scrollerLayout.totalWidth}px`,\n height: `${scrollerLayout.totalHeight}px`,\n position: 'relative',\n boxSizing: 'border-box',\n margin: '0 auto',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal && {\n display: 'flex',\n flexDirection: 'row',\n }),\n }}\n >\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.startSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.startSpacing,\n width: '100%',\n }),\n }}\n />\n <div\n style={{\n gap: scrollerLayout.pageGap,\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n flexDirection: 'row',\n minHeight: '100%',\n }\n : {\n flexDirection: 'column',\n minWidth: 'fit-content',\n }),\n }}\n >\n {scrollerLayout.items.map((item) => (\n <div\n key={item.pageNumbers[0]}\n style={{\n display: 'flex',\n justifyContent: 'center',\n gap: scrollerLayout.pageGap,\n }}\n >\n {item.pageLayouts.map((layout) => (\n <div\n key={layout.pageNumber}\n style={{\n width: `${layout.rotatedWidth}px`,\n height: `${layout.rotatedHeight}px`,\n }}\n >\n {renderPage({\n ...layout,\n rotation: coreState.core.rotation,\n scale: coreState.core.scale,\n document: coreState.core.document,\n })}\n </div>\n ))}\n </div>\n ))}\n </div>\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.endSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.endSpacing,\n width: '100%',\n }),\n }}\n />\n {overlayElements}\n </div>\n );\n}\n"],"mappings":"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","names":["totalPages","useEffect","useState","useState","useEffect"]}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-scroll.ts","../../src/shared/components/scroller.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { ScrollPlugin } from '@embedpdf/plugin-scroll';\nimport { useEffect, useState } from '@framework';\n\nexport const useScrollPlugin = () => usePlugin<ScrollPlugin>(ScrollPlugin.id);\nexport const useScrollCapability = () => useCapability<ScrollPlugin>(ScrollPlugin.id);\n\nexport const useScroll = () => {\n const { provides: scroll } = useScrollCapability();\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n useEffect(() => {\n if (!scroll) return;\n return scroll.onPageChange(({ pageNumber, totalPages }) => {\n setCurrentPage(pageNumber);\n setTotalPages(totalPages);\n });\n }, [scroll]);\n\n return {\n ...scroll,\n currentPage,\n totalPages,\n };\n};\n","import { ReactNode, useEffect, useState, HTMLAttributes } from '@framework';\nimport { ScrollStrategy, ScrollerLayout, PageLayout } from '@embedpdf/plugin-scroll';\nimport { useRegistry } from '@embedpdf/core/@framework';\nimport { PdfDocumentObject, Rotation } from '@embedpdf/models';\n\nimport { useScrollCapability, useScrollPlugin } from '../hooks';\n\ninterface RenderPageProps extends PageLayout {\n rotation: Rotation;\n scale: number;\n document: PdfDocumentObject | null;\n}\n\ntype ScrollerProps = HTMLAttributes<HTMLDivElement> & {\n renderPage: (props: RenderPageProps) => ReactNode;\n overlayElements?: ReactNode[];\n};\n\nexport function Scroller({ renderPage, overlayElements, ...props }: ScrollerProps) {\n const { provides: scrollProvides } = useScrollCapability();\n const { plugin: scrollPlugin } = useScrollPlugin();\n const { registry } = useRegistry();\n const [scrollerLayout, setScrollerLayout] = useState<ScrollerLayout | null>(\n () => scrollProvides?.getScrollerLayout() ?? null,\n );\n\n useEffect(() => {\n if (!scrollProvides) return;\n\n return scrollProvides.onScrollerData(setScrollerLayout);\n }, [scrollProvides]);\n\n useEffect(() => {\n if (!scrollPlugin) return;\n\n scrollPlugin.setLayoutReady();\n }, [scrollPlugin]);\n\n if (!scrollerLayout) return null;\n if (!registry) return null;\n\n const coreState = registry.getStore().getState();\n\n return (\n <div\n {...props}\n style={{\n width: `${scrollerLayout.totalWidth}px`,\n height: `${scrollerLayout.totalHeight}px`,\n position: 'relative',\n boxSizing: 'border-box',\n margin: '0 auto',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal && {\n display: 'flex',\n flexDirection: 'row',\n }),\n }}\n >\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.startSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.startSpacing,\n width: '100%',\n }),\n }}\n />\n <div\n style={{\n gap: scrollerLayout.pageGap,\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n flexDirection: 'row',\n minHeight: '100%',\n }\n : {\n flexDirection: 'column',\n minWidth: 'fit-content',\n }),\n }}\n >\n {scrollerLayout.items.map((item) => (\n <div\n key={item.pageNumbers[0]}\n style={{\n display: 'flex',\n justifyContent: 'center',\n gap: scrollerLayout.pageGap,\n }}\n >\n {item.pageLayouts.map((layout) => (\n <div\n key={layout.pageNumber}\n style={{\n width: `${layout.rotatedWidth}px`,\n height: `${layout.rotatedHeight}px`,\n }}\n >\n {renderPage({\n ...layout,\n rotation: coreState.core.rotation,\n scale: coreState.core.scale,\n document: coreState.core.document,\n })}\n </div>\n ))}\n </div>\n ))}\n </div>\n <div\n style={{\n ...(scrollerLayout.strategy === ScrollStrategy.Horizontal\n ? {\n width: scrollerLayout.endSpacing,\n height: '100%',\n flexShrink: 0,\n }\n : {\n height: scrollerLayout.endSpacing,\n width: '100%',\n }),\n }}\n />\n {overlayElements}\n </div>\n );\n}\n"],"names":["totalPages"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { Fragment, useEffect, useRef, useState } from 'react';
2
+ export type { ReactNode, HTMLAttributes } from 'react';
@@ -0,0 +1 @@
1
+ export * from '@embedpdf/core/react';
@@ -1,181 +1,2 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/react/index.ts
21
- var react_exports = {};
22
- __export(react_exports, {
23
- Scroller: () => Scroller,
24
- useScroll: () => useScroll,
25
- useScrollCapability: () => useScrollCapability,
26
- useScrollPlugin: () => useScrollPlugin
27
- });
28
- module.exports = __toCommonJS(react_exports);
29
-
30
- // src/react/hooks/use-scroll.ts
31
- var import_react = require("@embedpdf/core/react");
32
- var import_plugin_scroll = require("@embedpdf/plugin-scroll");
33
- var import_react2 = require("react");
34
- var useScrollPlugin = () => (0, import_react.usePlugin)(import_plugin_scroll.ScrollPlugin.id);
35
- var useScrollCapability = () => (0, import_react.useCapability)(import_plugin_scroll.ScrollPlugin.id);
36
- var useScroll = () => {
37
- const { provides: scroll } = useScrollCapability();
38
- const [currentPage, setCurrentPage] = (0, import_react2.useState)(1);
39
- const [totalPages, setTotalPages] = (0, import_react2.useState)(1);
40
- (0, import_react2.useEffect)(() => {
41
- if (!scroll) return;
42
- return scroll.onPageChange(({ pageNumber, totalPages: totalPages2 }) => {
43
- setCurrentPage(pageNumber);
44
- setTotalPages(totalPages2);
45
- });
46
- }, [scroll]);
47
- return {
48
- ...scroll,
49
- currentPage,
50
- totalPages
51
- };
52
- };
53
-
54
- // src/react/components/scroller.tsx
55
- var import_react3 = require("react");
56
- var import_plugin_scroll2 = require("@embedpdf/plugin-scroll");
57
- var import_react4 = require("@embedpdf/core/react");
58
- var import_jsx_runtime = require("react/jsx-runtime");
59
- function Scroller({ renderPage, overlayElements, ...props }) {
60
- const { provides: scrollProvides } = useScrollCapability();
61
- const { plugin: scrollPlugin } = useScrollPlugin();
62
- const { registry } = (0, import_react4.useRegistry)();
63
- const [scrollerLayout, setScrollerLayout] = (0, import_react3.useState)(
64
- () => scrollProvides?.getScrollerLayout() ?? null
65
- );
66
- (0, import_react3.useEffect)(() => {
67
- if (!scrollProvides) return;
68
- return scrollProvides.onScrollerData(setScrollerLayout);
69
- }, [scrollProvides]);
70
- (0, import_react3.useEffect)(() => {
71
- if (!scrollPlugin) return;
72
- scrollPlugin.setLayoutReady();
73
- }, [scrollPlugin]);
74
- if (!scrollerLayout) return null;
75
- if (!registry) return null;
76
- const coreState = registry.getStore().getState();
77
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
78
- "div",
79
- {
80
- ...props,
81
- style: {
82
- width: `${scrollerLayout.totalWidth}px`,
83
- height: `${scrollerLayout.totalHeight}px`,
84
- position: "relative",
85
- boxSizing: "border-box",
86
- margin: "0 auto",
87
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal && {
88
- display: "flex",
89
- flexDirection: "row"
90
- }
91
- },
92
- children: [
93
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
94
- "div",
95
- {
96
- style: {
97
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
98
- width: scrollerLayout.startSpacing,
99
- height: "100%",
100
- flexShrink: 0
101
- } : {
102
- height: scrollerLayout.startSpacing,
103
- width: "100%"
104
- }
105
- }
106
- }
107
- ),
108
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
109
- "div",
110
- {
111
- style: {
112
- gap: scrollerLayout.pageGap,
113
- display: "flex",
114
- alignItems: "center",
115
- position: "relative",
116
- boxSizing: "border-box",
117
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
118
- flexDirection: "row",
119
- minHeight: "100%"
120
- } : {
121
- flexDirection: "column",
122
- minWidth: "fit-content"
123
- }
124
- },
125
- children: scrollerLayout.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
126
- "div",
127
- {
128
- style: {
129
- display: "flex",
130
- justifyContent: "center",
131
- gap: scrollerLayout.pageGap
132
- },
133
- children: item.pageLayouts.map((layout) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
- "div",
135
- {
136
- style: {
137
- width: `${layout.rotatedWidth}px`,
138
- height: `${layout.rotatedHeight}px`
139
- },
140
- children: renderPage({
141
- ...layout,
142
- rotation: coreState.core.rotation,
143
- scale: coreState.core.scale,
144
- document: coreState.core.document
145
- })
146
- },
147
- layout.pageNumber
148
- ))
149
- },
150
- item.pageNumbers[0]
151
- ))
152
- }
153
- ),
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
155
- "div",
156
- {
157
- style: {
158
- ...scrollerLayout.strategy === import_plugin_scroll2.ScrollStrategy.Horizontal ? {
159
- width: scrollerLayout.endSpacing,
160
- height: "100%",
161
- flexShrink: 0
162
- } : {
163
- height: scrollerLayout.endSpacing,
164
- width: "100%"
165
- }
166
- }
167
- }
168
- ),
169
- overlayElements
170
- ]
171
- }
172
- );
173
- }
174
- // Annotate the CommonJS export names for ESM import in node:
175
- 0 && (module.exports = {
176
- Scroller,
177
- useScroll,
178
- useScrollCapability,
179
- useScrollPlugin
180
- });
181
- //# sourceMappingURL=index.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/react"),t=require("@embedpdf/plugin-scroll"),r=require("react"),i=require("react/jsx-runtime"),l=()=>e.usePlugin(t.ScrollPlugin.id),o=()=>e.useCapability(t.ScrollPlugin.id);exports.Scroller=function({renderPage:a,overlayElements:n,...s}){const{provides:g}=o(),{plugin:c}=l(),{registry:u}=e.useRegistry(),[d,p]=r.useState((()=>(null==g?void 0:g.getScrollerLayout())??null));if(r.useEffect((()=>{if(g)return g.onScrollerData(p)}),[g]),r.useEffect((()=>{c&&c.setLayoutReady()}),[c]),!d)return null;if(!u)return null;const h=u.getStore().getState();return i.jsxs("div",{...s,style:{width:`${d.totalWidth}px`,height:`${d.totalHeight}px`,position:"relative",boxSizing:"border-box",margin:"0 auto",...d.strategy===t.ScrollStrategy.Horizontal&&{display:"flex",flexDirection:"row"}},children:[i.jsx("div",{style:{...d.strategy===t.ScrollStrategy.Horizontal?{width:d.startSpacing,height:"100%",flexShrink:0}:{height:d.startSpacing,width:"100%"}}}),i.jsx("div",{style:{gap:d.pageGap,display:"flex",alignItems:"center",position:"relative",boxSizing:"border-box",...d.strategy===t.ScrollStrategy.Horizontal?{flexDirection:"row",minHeight:"100%"}:{flexDirection:"column",minWidth:"fit-content"}},children:d.items.map((e=>i.jsx("div",{style:{display:"flex",justifyContent:"center",gap:d.pageGap},children:e.pageLayouts.map((e=>i.jsx("div",{style:{width:`${e.rotatedWidth}px`,height:`${e.rotatedHeight}px`},children:a({...e,rotation:h.core.rotation,scale:h.core.scale,document:h.core.document})},e.pageNumber)))},e.pageNumbers[0])))}),i.jsx("div",{style:{...d.strategy===t.ScrollStrategy.Horizontal?{width:d.endSpacing,height:"100%",flexShrink:0}:{height:d.endSpacing,width:"100%"}}}),n]})},exports.useScroll=()=>{const{provides:e}=o(),[t,i]=r.useState(1),[l,a]=r.useState(1);return r.useEffect((()=>{if(e)return e.onPageChange((({pageNumber:e,totalPages:t})=>{i(e),a(t)}))}),[e]),{...e,currentPage:t,totalPages:l}},exports.useScrollCapability=o,exports.useScrollPlugin=l;
2
+ //# sourceMappingURL=index.cjs.map